Thread (17 messages) 17 messages, 6 authors, 2017-04-03

Re: [PATCH 3/3] net/mlx5: rebuild flows on updating RETA

From: Yongseok Koh <hidden>
Date: 2017-03-17 17:15:09

Hi Nelio,

On Fri, Mar 17, 2017 at 02:11:43AM -0700, Nélio Laranjeiro wrote:
On Thu, Mar 16, 2017 at 03:40:56PM -0700, Yongseok Koh wrote:
quoted
Currently mlx5_dev_rss_reta_update() just updates tables in the host,
therefore it isn't immediately effective until restarting the device by
calling mlx5_dev_stop()/mlx5_dev_start() to update the changes in the
device side. This patch adds rebuilding the device-specific datastructure
and applying it to the device right away.

Signed-off-by: Yongseok Koh <redacted>
---
 drivers/net/mlx5/mlx5_rss.c | 3 +++
 1 file changed, 3 insertions(+)
diff --git a/drivers/net/mlx5/mlx5_rss.c b/drivers/net/mlx5/mlx5_rss.c
index 0702f1a63..30e59faa5 100644
--- a/drivers/net/mlx5/mlx5_rss.c
+++ b/drivers/net/mlx5/mlx5_rss.c
@@ -357,8 +357,11 @@ mlx5_dev_rss_reta_update(struct rte_eth_dev *dev,
       int ret;
       struct priv *priv = dev->data->dev_private;

+     mlx5_dev_stop(dev);
       priv_lock(priv);
       ret = priv_dev_rss_reta_update(priv, reta_conf, reta_size);
       priv_unlock(priv);
+     if (!ret)
+             ret = (unsigned int)mlx5_dev_start(dev);
       return -ret;
 }
--
2.11.0
Hi Yongseok,

I don't understand why you need the cast for the returned value of
mlx5_dev_start() as it already returns an int and your final variable is
also an int.
For some reason, in mlx5 PMD code, priv_* calls return positive error numbers
and corresponding mlx5_* APIs return negative values by adding (-) sign the the
return value from priv_* calls.

To follow this tacit rule in the existing code, I casted the return value to
unsigned.

Thanks,
Yongseok
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help