patch 'net/ixgbe: fix queue received bytes CRC adjustment' has been queued to stable release 25.11.3

Kevin Traynor ktraynor at redhat.com
Thu Jul 23 19:15:11 CEST 2026


Hi,

FYI, your patch has been queued to stable release 25.11.3

Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet.
It will be pushed if I get no objections before 07/27/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/kevintraynor/dpdk-stable

This queued commit can be viewed at:
https://github.com/kevintraynor/dpdk-stable/commit/eaf7a1e038eb2161fa57b57136f7d890dac7d026

Thanks.

Kevin

---
>From eaf7a1e038eb2161fa57b57136f7d890dac7d026 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/intel/ixgbe/ixgbe_ethdev.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
index 7bfb8f1fed..0c2b9f8d20 100644
--- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
@@ -3246,5 +3246,5 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
 		    ((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));
-- 
2.55.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-07-23 17:58:00.046842519 +0100
+++ 0048-net-ixgbe-fix-queue-received-bytes-CRC-adjustment.patch	2026-07-23 17:57:58.659918593 +0100
@@ -1 +1 @@
-From 5168e13017d5c6fbeb90ab307c7a620bd9e457c8 Mon Sep 17 00:00:00 2001
+From eaf7a1e038eb2161fa57b57136f7d890dac7d026 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 5168e13017d5c6fbeb90ab307c7a620bd9e457c8 ]
+
@@ -26 +27,0 @@
-Cc: stable at dpdk.org
@@ -35 +36 @@
-index d4122107ac..991ec6e870 100644
+index 7bfb8f1fed..0c2b9f8d20 100644
@@ -38 +39 @@
-@@ -3247,5 +3247,5 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
+@@ -3246,5 +3246,5 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,



More information about the stable mailing list