Message ID | 20200716104320.10582-1-maxime.leroy@6wind.com |
---|---|
State | Accepted, archived |
Delegated to: | Raslan Darawsheh |
Headers | show |
Series |
|
Related | show |
Context | Check | Description |
---|---|---|
ci/iol-testing | success | Testing PASS |
ci/iol-intel-Performance | success | Performance Testing PASS |
ci/iol-broadcom-Performance | success | Performance Testing PASS |
ci/travis-robot | success | Travis build: passed |
ci/Intel-compilation | success | Compilation OK |
ci/checkpatch | success | coding style OK |
Hi Raslan, Any comment/review on the fix ? Regards, Maxime On Thu, Jul 16, 2020 at 12:43 PM Maxime Leroy <maxime.leroy@6wind.com> wrote: > > 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") > Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com> > --- > 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 653b0691..6f75ece2 100644 > --- a/drivers/net/mlx5/mlx5_rss.c > +++ b/drivers/net/mlx5/mlx5_rss.c > @@ -220,9 +220,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.27.0 >
> -----Original Message----- > From: dev <dev-bounces@dpdk.org> On Behalf Of Maxime Leroy > > Hi Raslan, > > Any comment/review on the fix ? > > Regards, > > Maxime > > On Thu, Jul 16, 2020 at 12:43 PM Maxime Leroy <maxime.leroy@6wind.com> > wrote: > > > > 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") > > Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com> > > --- Acked-by: Ori Kam <orika@nvidia.com> Thanks, Ori
Hi, > -----Original Message----- > From: Maxime Leroy <maxime.leroy@6wind.com> > Sent: Thursday, July 16, 2020 1:43 PM > To: dev@dpdk.org > Cc: stable@dpdk.org; Raslan Darawsheh <rasland@mellanox.com> > Subject: [PATCH] net/mlx5: fix rss reta is reset when device is started > > 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") > Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com> > --- > 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 653b0691..6f75ece2 100644 > --- a/drivers/net/mlx5/mlx5_rss.c > +++ b/drivers/net/mlx5/mlx5_rss.c > @@ -220,9 +220,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.27.0 Patch applied to next-net-mlx, Kindest regards, Raslan Darawsheh
diff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c index 653b0691..6f75ece2 100644 --- a/drivers/net/mlx5/mlx5_rss.c +++ b/drivers/net/mlx5/mlx5_rss.c @@ -220,9 +220,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;
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") Signed-off-by: Maxime Leroy <maxime.leroy@6wind.com> --- drivers/net/mlx5/mlx5_rss.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-)