patch 'net/e1000: fix igc RSS redirection table' has been queued to stable release 25.11.3

Kevin Traynor ktraynor at redhat.com
Tue Jul 28 17:56:42 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 08/01/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/2fe4bf22bfb0c20b3f515b96be6a20c88edee828

Thanks.

Kevin

---
>From 2fe4bf22bfb0c20b3f515b96be6a20c88edee828 Mon Sep 17 00:00:00 2001
From: Shuzo Ichiyoshi <deadcafe.beef at gmail.com>
Date: Mon, 29 Jun 2026 13:51:13 +0900
Subject: [PATCH] net/e1000: fix igc RSS redirection table

[ upstream commit 7679118b012e455cd9faed4c7f27103483802103 ]

The IGC RETA register stores four 8-bit queue indexes.
igc_rss_configure() and igc_add_rss_filter() used a fresh
uninitialized union for each table entry and wrote the register only
every fourth entry. As a result, three bytes of each RETA register
came from stack garbage.

Build the register a word at a time and initialize all four queue
indexes before writing it.

Fixes: a5aeb2b9e225 ("net/igc: support Rx and Tx")
Fixes: 746664d546fb ("net/igc: support flow API")

Signed-off-by: Shuzo Ichiyoshi <deadcafe.beef at gmail.com>
Acked-by: Bruce Richardson <bruce.richardson at intel.com>
---
 .mailmap                           |  1 +
 drivers/net/intel/e1000/igc_txrx.c | 45 ++++++++++++++++--------------
 2 files changed, 25 insertions(+), 21 deletions(-)

diff --git a/.mailmap b/.mailmap
index ec79b76bcc..b287bb073c 100644
--- a/.mailmap
+++ b/.mailmap
@@ -1531,4 +1531,5 @@ Shuki Katzenelson <shuki at lightbitslabs.com>
 Shun Hao <shunh at nvidia.com>
 Shuo Li <lishuo02 at baidu.com>
+Shuzo Ichiyoshi <deadcafe.beef at gmail.com>
 Shweta Choudaha <shweta.choudaha at att.com>
 Shy Shyman <shys at nvidia.com> <shys at mellanox.com>
diff --git a/drivers/net/intel/e1000/igc_txrx.c b/drivers/net/intel/e1000/igc_txrx.c
index c13460f381..1ab8f2079d 100644
--- a/drivers/net/intel/e1000/igc_txrx.c
+++ b/drivers/net/intel/e1000/igc_txrx.c
@@ -829,15 +829,18 @@ igc_rss_configure(struct rte_eth_dev *dev)
 
 	/* Fill in redirection table. */
-	for (i = 0; i < IGC_RSS_RDT_SIZD; i++) {
-		union igc_rss_reta_reg reta;
-		uint16_t q_idx, reta_idx;
+	for (i = 0; i < IGC_RSS_RDT_SIZD; i += IGC_RSS_RDT_REG_SIZE) {
+		union igc_rss_reta_reg reta = { .dword = 0 };
+		uint16_t reta_idx;
 
-		q_idx = (uint8_t)((dev->data->nb_rx_queues > 1) ?
-				   i % dev->data->nb_rx_queues : 0);
-		reta_idx = i % sizeof(reta);
-		reta.bytes[reta_idx] = q_idx;
-		if (reta_idx == sizeof(reta) - 1)
-			E1000_WRITE_REG_LE_VALUE(hw,
-				E1000_RETA(i / sizeof(reta)), reta.dword);
+		RTE_BUILD_BUG_ON(sizeof(reta.bytes) != IGC_RSS_RDT_REG_SIZE);
+		for (reta_idx = 0; reta_idx < IGC_RSS_RDT_REG_SIZE; reta_idx++) {
+			uint16_t q_idx;
+
+			q_idx = (uint8_t)((dev->data->nb_rx_queues > 1) ?
+				(i + reta_idx) % dev->data->nb_rx_queues : 0);
+			reta.bytes[reta_idx] = q_idx;
+		}
+		E1000_WRITE_REG_LE_VALUE(hw,
+			E1000_RETA(i / IGC_RSS_RDT_REG_SIZE), reta.dword);
 	}
 
@@ -945,16 +948,16 @@ igc_add_rss_filter(struct rte_eth_dev *dev, struct igc_rss_filter *rss)
 
 	/* Fill in redirection table. */
-	for (i = 0, j = 0; i < IGC_RSS_RDT_SIZD; i++, j++) {
-		union igc_rss_reta_reg reta;
-		uint16_t q_idx, reta_idx;
+	for (i = 0, j = 0; i < IGC_RSS_RDT_SIZD; i += IGC_RSS_RDT_REG_SIZE) {
+		union igc_rss_reta_reg reta = { .dword = 0 };
+		uint16_t reta_idx;
 
-		if (j == rss->conf.queue_num)
-			j = 0;
-		q_idx = rss->conf.queue[j];
-		reta_idx = i % sizeof(reta);
-		reta.bytes[reta_idx] = q_idx;
-		if (reta_idx == sizeof(reta) - 1)
-			E1000_WRITE_REG_LE_VALUE(hw,
-				E1000_RETA(i / sizeof(reta)), reta.dword);
+		RTE_BUILD_BUG_ON(sizeof(reta.bytes) != IGC_RSS_RDT_REG_SIZE);
+		for (reta_idx = 0; reta_idx < IGC_RSS_RDT_REG_SIZE; reta_idx++, j++) {
+			if (j == rss->conf.queue_num)
+				j = 0;
+			reta.bytes[reta_idx] = rss->conf.queue[j];
+		}
+		E1000_WRITE_REG_LE_VALUE(hw,
+			E1000_RETA(i / IGC_RSS_RDT_REG_SIZE), reta.dword);
 	}
 
-- 
2.55.0

---
  Diff of the applied patch vs upstream commit (please double-check if non-empty:
---
--- -	2026-07-28 16:54:52.902808746 +0100
+++ 0072-net-e1000-fix-igc-RSS-redirection-table.patch	2026-07-28 16:54:50.831729001 +0100
@@ -1 +1 @@
-From 7679118b012e455cd9faed4c7f27103483802103 Mon Sep 17 00:00:00 2001
+From 2fe4bf22bfb0c20b3f515b96be6a20c88edee828 Mon Sep 17 00:00:00 2001
@@ -5,0 +6,2 @@
+[ upstream commit 7679118b012e455cd9faed4c7f27103483802103 ]
+
@@ -17 +18,0 @@
-Cc: stable at dpdk.org
@@ -27 +28 @@
-index d6a1a92a57..4b5eb0c841 100644
+index ec79b76bcc..b287bb073c 100644
@@ -30 +31 @@
-@@ -1545,4 +1545,5 @@ Shuki Katzenelson <shuki at lightbitslabs.com>
+@@ -1531,4 +1531,5 @@ Shuki Katzenelson <shuki at lightbitslabs.com>



More information about the stable mailing list