From: Eli Britstein <el...@mellanox.com>

There might be a condition where the fte found is not active yet. In
this case we should not use it, but continue to search for another, or
allocate a new one.

Fixes: bd71b08ec2ee ("net/mlx5: Support multiple updates of steering rules in 
parallel")
Signed-off-by: Eli Britstein <el...@mellanox.com>
Reviewed-by: Maor Gottlieb <ma...@mellanox.com>
Signed-off-by: Saeed Mahameed <sae...@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/fs_core.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c 
b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
index f2cfa012315e..86f986308a90 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
@@ -491,6 +491,7 @@ static void del_hw_fte(struct fs_node *node)
                        mlx5_core_warn(dev,
                                       "flow steering can't delete fte in index 
%d of flow group id %d\n",
                                       fte->index, fg->id);
+               node->active = 0;
        }
 }
 
@@ -1601,6 +1602,11 @@ lookup_fte_locked(struct mlx5_flow_group *g,
                fte_tmp = NULL;
                goto out;
        }
+       if (!fte_tmp->node.active) {
+               tree_put_node(&fte_tmp->node);
+               fte_tmp = NULL;
+               goto out;
+       }
 
        nested_down_write_ref_node(&fte_tmp->node, FS_LOCK_CHILD);
 out:
-- 
2.20.1

Reply via email to