net/mlx5: fix counter set destroy order
authorOri Kam <orika@mellanox.com>
Mon, 30 Oct 2017 12:46:54 +0000 (14:46 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 1 Nov 2017 21:17:06 +0000 (22:17 +0100)
The counter set should be destroyed only after the flow was destroyed.

Fixes: 9a761de8ea14 ("net/mlx5: flow counter support")

Signed-off-by: Ori Kam <orika@mellanox.com>
Acked-by: Yongseok Koh <yskoh@mellanox.com>
drivers/net/mlx5/mlx5_flow.c

index 29c8e89..c9e6c52 100644 (file)
@@ -2011,10 +2011,6 @@ priv_flow_destroy(struct priv *priv,
 {
        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) {
@@ -2063,6 +2059,10 @@ free:
                                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);