From: Hamdan Igbaria <hamd...@nvidia.com>

Only allow rule updates for rules with their status value equal to
MLX5DR_RULE_STATUS_CREATED.
Otherwise, the rule may be in an unstable stage like deleting and
this will result in a faulty unexpected scenario.

Signed-off-by: Hamdan Igbaria <hamd...@nvidia.com>
Acked-by: Matan Azrad <ma...@nvidia.com>
---
 drivers/net/mlx5/hws/mlx5dr_rule.c | 6 ++++++
 1 file changed, 6 insertions(+)

diff --git a/drivers/net/mlx5/hws/mlx5dr_rule.c 
b/drivers/net/mlx5/hws/mlx5dr_rule.c
index 6bf087e187..aa00c54e53 100644
--- a/drivers/net/mlx5/hws/mlx5dr_rule.c
+++ b/drivers/net/mlx5/hws/mlx5dr_rule.c
@@ -977,6 +977,12 @@ int mlx5dr_rule_action_update(struct mlx5dr_rule 
*rule_handle,
        if (unlikely(mlx5dr_rule_enqueue_precheck_update(rule_handle, attr)))
                return -rte_errno;
 
+       if (rule_handle->status != MLX5DR_RULE_STATUS_CREATED) {
+               DR_LOG(ERR, "Current rule status does not allow update");
+               rte_errno = EBUSY;
+               return -rte_errno;
+       }
+
        ret = mlx5dr_rule_create_hws(rule_handle,
                                     attr,
                                     0,
-- 
2.39.3

Reply via email to