The counter set should be destroyed only after the flow was destroyed.

Fixes: 9a761de ("net/mlx5: flow counter support")
Cc: or...@mellanox.com

Signed-off-by: Ori Kam <or...@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow.c |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
index 3999b84..e810a3a 100644
--- a/drivers/net/mlx5/mlx5_flow.c
+++ b/drivers/net/mlx5/mlx5_flow.c
@@ -2001,10 +2001,6 @@ struct rte_flow *
 {
        unsigned int i;
 
-       if (flow->cs) {
-               claim_zero(ibv_destroy_counter_set(flow->cs));
-               flow->cs = NULL;
-       }
        if (flow->drop || !flow->mark)
                goto free;
        for (i = 0; i != flow->queues_n; ++i) {
@@ -2053,6 +2049,10 @@ struct rte_flow *
                                rte_free(frxq->ibv_attr);
                }
        }
+       if (flow->cs) {
+               claim_zero(ibv_destroy_counter_set(flow->cs));
+               flow->cs = NULL;
+       }
        TAILQ_REMOVE(list, flow, next);
        DEBUG("Flow destroyed %p", (void *)flow);
        rte_free(flow);
-- 
1.7.1

Reply via email to