[PATCH 1/2] net/i40e: preserve RSS RETA across port stop and start

Ciara Loftus <[email protected]>
Newsgroups org.dpdk.dev
Message-ID <[email protected]>
Currently, updating the RSS redirection table and then stopping and
starting a port loses the update. The port comes back with the default
table. The ethdev API requires RSS settings to be retained across
stop/start.

The `rss_reta_updated` flag protects a user-provided RETA from being
overwritten by the default table when the device is started. However
`i40e_dev_stop()` clears this flag, so a subsequent `i40e_dev_start()`
treats the RETA as untouched and resets it to the default.

Fix it by clearing `rss_reta_updated` in `i40e_dev_configure()` instead of
`i40e_dev_stop()`. A reconfiguration still reverts to the default table,
while a plain stop/start now preserves the RETA.

Bugzilla ID: 1127

Fixes: 36c5dc8e5d3c ("net/i40e: fix overwriting RSS RETA")
Cc: [email protected]

Signed-off-by: Ciara Loftus <[email protected]>
---
 drivers/net/intel/i40e/i40e_ethdev.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/drivers/net/intel/i40e/i40e_ethdev.c b/drivers/net/intel/i40e/i40e_ethdev.c
index b6b2d291ee..3de3423634 100644
--- a/drivers/net/intel/i40e/i40e_ethdev.c
+++ b/drivers/net/intel/i40e/i40e_ethdev.c
@@ -1992,6 +1992,9 @@ i40e_dev_configure(struct rte_eth_dev *dev)
 	if (dev->data->dev_conf.rxmode.mq_mode & RTE_ETH_MQ_RX_RSS_FLAG)
 		dev->data->dev_conf.rxmode.offloads |= RTE_ETH_RX_OFFLOAD_RSS_HASH;
 
+	/* A new configuration reverts the RETA to the driver default. */
+	pf->adapter->rss_reta_updated = 0;
+
 	ret = i40e_dev_init_vlan(dev);
 	if (ret < 0)
 		goto err;
@@ -2676,8 +2679,6 @@ i40e_dev_stop(struct rte_eth_dev *dev)
 	hw->adapter_stopped = 1;
 	dev->data->dev_started = 0;
 
-	pf->adapter->rss_reta_updated = 0;
-
 	return 0;
 }
 
-- 
2.43.0
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.