patch 'net/ixgbe: fix flow control frame byte adjustment' has been queued to stable release 24.11.7

luca.boccassi at gmail.com luca.boccassi at gmail.com
Thu Jun 11 15:20:00 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/f58a00d46a90beeb9a35a6e56e79e25ecfb0fc25

Thanks.

Luca Boccassi

---
>From f58a00d46a90beeb9a35a6e56e79e25ecfb0fc25 Mon Sep 17 00:00:00 2001
From: Daniil Iskhakov <dish at amicon.ru>
Date: Mon, 4 May 2026 17:55:02 +0300
Subject: [PATCH] net/ixgbe: fix flow control frame byte adjustment

[ upstream commit bdf860855952f9bee1ba7f443e3041f19c997d79 ]

LXONTXC and LXOFFTXC are 32-bit counters for transmitted XON and
XOFF packets. ixgbe_read_stats_registers() sums their deltas and uses
the result to adjust the transmitted byte counters by the minimum
Ethernet frame length.

The sum is currently computed as:

	total = lxon + lxoff

Since both operands are 32-bit, the addition is performed in 32 bits
and may wrap before the result is stored in total. The wrapped value is
then used in the byte adjustment, which may make the software byte
counters incorrect.

Make total 64-bit and cast lxon before the addition so the XON/XOFF
packet sum and the following byte adjustment are computed without
32-bit overflow.

Found by Linux Verification Center (linuxtesting.org) with SVACE.

Fixes: af75078fece3 ("first public release")

Signed-off-by: Daniil Iskhakov <dish at amicon.ru>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
 drivers/net/ixgbe/ixgbe_ethdev.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
index 5de8da3207..1dc5bb0fb4 100644
--- a/drivers/net/ixgbe/ixgbe_ethdev.c
+++ b/drivers/net/ixgbe/ixgbe_ethdev.c
@@ -3180,7 +3180,8 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
 			   uint64_t *total_missed_rx, uint64_t *total_qbrc,
 			   uint64_t *total_qprc, uint64_t *total_qprdc)
 {
-	uint32_t bprc, lxon, lxoff, total;
+	uint32_t bprc, lxon, lxoff;
+	uint64_t total;
 	uint64_t delta_gprc = 0;
 	unsigned i;
 	/* Workaround for RX byte count not including CRC bytes when CRC
@@ -3309,7 +3310,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
 	hw_stats->lxontxc += lxon;
 	lxoff = IXGBE_READ_REG(hw, IXGBE_LXOFFTXC);
 	hw_stats->lxofftxc += lxoff;
-	total = lxon + lxoff;
+	total = (uint64_t)lxon + lxoff;
 
 	hw_stats->mptc += IXGBE_READ_REG(hw, IXGBE_MPTC);
 	hw_stats->ptc64 += IXGBE_READ_REG(hw, IXGBE_PTC64);
-- 
2.47.3

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-06-11 14:20:03.347870814 +0100
+++ 0051-net-ixgbe-fix-flow-control-frame-byte-adjustment.patch	2026-06-11 14:20:01.246746761 +0100
@@ -1 +1 @@
-From bdf860855952f9bee1ba7f443e3041f19c997d79 Mon Sep 17 00:00:00 2001
+From f58a00d46a90beeb9a35a6e56e79e25ecfb0fc25 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit bdf860855952f9bee1ba7f443e3041f19c997d79 ]
+
@@ -27 +28,0 @@
-Cc: stable at dpdk.org
@@ -32 +33 @@
- drivers/net/intel/ixgbe/ixgbe_ethdev.c | 5 +++--
+ drivers/net/ixgbe/ixgbe_ethdev.c | 5 +++--
@@ -35,5 +36,5 @@
-diff --git a/drivers/net/intel/ixgbe/ixgbe_ethdev.c b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-index cfb2d94852..57c65cd73d 100644
---- a/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-+++ b/drivers/net/intel/ixgbe/ixgbe_ethdev.c
-@@ -3190,7 +3190,8 @@ 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 5de8da3207..1dc5bb0fb4 100644
+--- a/drivers/net/ixgbe/ixgbe_ethdev.c
++++ b/drivers/net/ixgbe/ixgbe_ethdev.c
+@@ -3180,7 +3180,8 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
@@ -49 +50 @@
-@@ -3319,7 +3320,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,
+@@ -3309,7 +3310,7 @@ ixgbe_read_stats_registers(struct ixgbe_hw *hw,


More information about the stable mailing list