From e0d449513bcab58d9ab40bfeeb113b0db3093cad Mon Sep 17 00:00:00 2001 From: Maxime Leroy Date: Thu, 16 Jul 2020 12:43:20 +0200 Subject: [PATCH] net/mlx5: fix RSS RETA reset on start The following sequences was working fine on mlx5: rte_eth_dev_configure(portid, ...); for (queueid = 0; queueid < nb_txq; queueid++) rte_eth_tx_queue_setup(portid, queueid, ...); for (queueid = 0; queueid < nb_rxq; queueid++) rte_eth_rx_queue_setup(portid, queueid, ...); // use a custom reta configuration rte_eth_dev_rss_reta_update(portid, reta_conf, reta_size); rte_eth_dev_start(portid); We were able to configure a custom reta before starting the port. The commit "net/mlx5: support RSS on hairpin" breaks this logic by moving the code initializing the RSS reta from rte_eth_dev_configure into rte_eth_dev_start. To fix the issue, the skip_default_rss_reta is always set to 1 in rte_eth_dev_rss_reta to avoid reconfigure the rss reta when the device is started. Fixes: 63bd16292c3a ("net/mlx5: support RSS on hairpin") Cc: stable@dpdk.org Signed-off-by: Maxime Leroy Acked-by: Ori Kam --- drivers/net/mlx5/mlx5_rss.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c index a63cc8df9a..845cebe2e8 100644 --- a/drivers/net/mlx5/mlx5_rss.c +++ b/drivers/net/mlx5/mlx5_rss.c @@ -215,9 +215,11 @@ mlx5_dev_rss_reta_update(struct rte_eth_dev *dev, MLX5_ASSERT(reta_conf[idx].reta[pos] < priv->rxqs_n); (*priv->reta_idx)[i] = reta_conf[idx].reta[pos]; } + + priv->skip_default_rss_reta = 1; + if (dev->data->dev_started) { mlx5_dev_stop(dev); - priv->skip_default_rss_reta = 1; return mlx5_dev_start(dev); } return 0; -- 2.20.1