patch 'net/ixgbe: fix good octets 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:57 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/2ce7c6dcdb2dd645f86b8662324720ee7f4a395e
Thanks.
Luca Boccassi
---
>From 2ce7c6dcdb2dd645f86b8662324720ee7f4a395e Mon Sep 17 00:00:00 2001
From: Daniil Iskhakov <dish at amicon.ru>
Date: Mon, 4 May 2026 17:15:24 +0300
Subject: [PATCH] net/ixgbe: fix good octets CRC adjustment
[ upstream commit 77889afaf11f52a5e13f9077688c5e9ad501bbbb ]
On some devices, such as 82599, GORC is a 36-bit clear-on-read counter,
while GPRC is a 32-bit clear-on-read counter.
ixgbe_read_stats_registers() accumulates GORC in a 64-bit software
counter and, when CRC stripping is disabled, subtracts the CRC bytes
accounted for each received packet.
The driver does not read GPRC directly. Due to an erratum, it derives
the good packet delta from the sum of per-queue packet receives instead.
The 32-bit QPRC registers are used for this purpose.
delta_gprc is used as an accumulator for those per-queue deltas and is
then used to compute the CRC-byte adjustment. Keeping it 32-bit may wrap
the accumulated packet delta before it is used to adjust the 64-bit GORC
counter.
Make delta_gprc 64-bit so the accumulated packet delta and the CRC-byte
adjustment are computed without 32-bit overflow.
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 95c628e065..5de8da3207 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3181,7 +3181,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
uint64_t *total_qprc, uint64_t *total_qprdc)
{
uint32_t bprc, lxon, lxoff, total;
- uint32_t delta_gprc = 0;
+ uint64_t delta_gprc = 0;
unsigned i;
/* Workaround for RX byte count not including CRC bytes when CRC
* strip is enabled. CRC bytes are removed from counters when crc_strip
--
2.47.3
---
Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- - 2026-06-11 14:20:03.226701284 +0100
+++ 0048-net-ixgbe-fix-good-octets-CRC-adjustment.patch 2026-06-11 14:20:01.238746566 +0100
@@ -1 +1 @@
-From 77889afaf11f52a5e13f9077688c5e9ad501bbbb Mon Sep 17 00:00:00 2001
+From 2ce7c6dcdb2dd645f86b8662324720ee7f4a395e Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 77889afaf11f52a5e13f9077688c5e9ad501bbbb ]
+
@@ -27 +28,0 @@
-Cc: stable at dpdk.org
@@ -32 +33 @@
- drivers/net/intel/ixgbe/ixgbe_ethdev.c | 2 +-
+ drivers/net/ixgbe/ixgbe_ethdev.c | 2 +-
@@ -35,5 +36,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-index 991ec6e870..cfb2d94852 100644
---- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-@@ -3191,7 +3191,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 95c628e065..5de8da3207 100644
+--- a/drivers/net/ixgbe/ixgbe_ethdev.c
++++ b/drivers/net/ixgbe/ixgbe_ethdev.c
+@@ -3181,7 +3181,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
More information about the stable
mailing list