patch 'net/ixgbe: fix queue received bytes CRC adjustment' has been queued to stable release 24.11.7
luca.boccassi at gmail.com
luca.boccassi at gmail.com
Thu Jun 11 15:19:56 CEST 2026
Hi,
FYI, your patch has been queued to stable release 24.11.7
Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 06/13/26. So please
shout if anyone has objections.
Also note that after the patch there's a diff of the upstream commit vs the
patch applied to the branch. This will indicate if there was any rebasing
needed to apply to the stable branch. If there were code changes for rebasing
(ie: not only metadata diffs), please double check that the rebase was
correctly done.
Queued patches are on a temporary branch at:
https://github.com/bluca/dpdk-stable
This queued commit can be viewed at:
https://github.com/bluca/dpdk-stable/commit/c12d48a748cffa7fb74e5516166db34b8f15c03e
Thanks.
Luca Boccassi
---
>From c12d48a748cffa7fb74e5516166db34b8f15c03e Mon Sep 17 00:00:00 2001
From: Daniil Iskhakov <dish at amicon.ru>
Date: Mon, 4 May 2026 15:26:23 +0300
Subject: [PATCH] net/ixgbe: fix queue received bytes CRC adjustment
[ upstream commit 5168e13017d5c6fbeb90ab307c7a620bd9e457c8 ]
For 82599, QBRC is a 36-bit clear-on-read counter, while
QPRC is a 32-bit clear-on-read counter. ixgbe_read_stats_registers()
accumulates QBRC in a 64-bit software counter and, when CRC stripping
is disabled, subtracts the CRC bytes accounted for each received packet.
The CRC adjustment is computed as:
delta_qprc * RTE_ETHER_CRC_LEN
Since delta_qprc is 32-bit, the multiplication is performed in 32 bits
and may wrap before the result is subtracted from the 64-bit QBRC
accumulator. A full 32-bit packet delta needs more than 32 bits to
represent the CRC-byte adjustment.
Cast delta_qprc to uint64_t before the multiplication so the adjustment
is computed with the same effective width as the byte counter.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
Fixes: c03fcee9abbd ("ixgbe: remove CRC size from byte counters")
Signed-off-by: Daniil Iskhakov <dish at amicon.ru>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 025e72d4ad..95c628e065 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3236,7 +3236,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
hw_stats->qbrc[i] +=
((uint64_t)IXGBE_READ_REG(hw, IXGBE_QBRC_H(i)) << 32);
if (crc_strip == 0)
- hw_stats->qbrc[i] -= delta_qprc * RTE_ETHER_CRC_LEN;
+ hw_stats->qbrc[i] -= (uint64_t)delta_qprc * RTE_ETHER_CRC_LEN;
hw_stats->qbtc[i] += IXGBE_READ_REG(hw, IXGBE_QBTC_L(i));
hw_stats->qbtc[i] +=
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-06-11 14:20:03.185188994 +0100
+++ 0047-net-ixgbe-fix-queue-received-bytes-CRC-adjustment.patch 2026-06-11 14:20:01.234746468 +0100
@@ -1 +1 @@
-From 5168e13017d5c6fbeb90ab307c7a620bd9e457c8 Mon Sep 17 00:00:00 2001
+From c12d48a748cffa7fb74e5516166db34b8f15c03e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5168e13017d5c6fbeb90ab307c7a620bd9e457c8 ]
+
@@ -26 +27,0 @@
-Cc: stable at dpdk.org
@@ -31 +32 @@
- drivers/net/intel/ixgbe/ixgbe_ethdev.c | 2 +-
+ drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
@@ -34,5 +35,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-index d4122107ac..991ec6e870 100644
---- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-@@ -3246,7 +3246,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
+diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
+index 025e72d4ad..95c628e065 100644
+--- a/drivers/net/ixgbe/ixgbe_ethdev.c
++++ b/drivers/net/ixgbe/ixgbe_ethdev.c
+@@ -3236,7 +3236,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
More information about the stable
mailing list