]> git.droids-corp.org - dpdk.git/commitdiff
common/cnxk: fix flow deletion
authorSatheesh Paul <psatheesh@marvell.com>
Tue, 25 Jan 2022 04:15:26 +0000 (09:45 +0530)
committerJerin Jacob <jerinj@marvell.com>
Thu, 17 Feb 2022 06:33:16 +0000 (07:33 +0100)
When a flow is deleted, the counters are deleted without
being cleared first. This results in counter values being
retained and shown in flows created later. Hence, counter
is cleared before being deleted.

Updated driver to clear and delete counters upon flow deletion.

Fixes: a07f7ced436d ("common/cnxk: add NPC init and fini")
Cc: stable@dpdk.org
Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Reviewed-by: Jerin Jacob <jerinj@marvell.com>
drivers/common/cnxk/roc_npc.c

index e3961bfbc6a75f2e27879dd4aad37ca5952a9104..df3016f5388bb125031a368e63c7e8711e7d9948 100644 (file)
@@ -1259,6 +1259,16 @@ roc_npc_flow_destroy(struct roc_npc *roc_npc, struct roc_npc_flow *flow)
                        return rc;
        }
 
+       if (flow->ctr_id != NPC_COUNTER_NONE) {
+               rc = roc_npc_mcam_clear_counter(roc_npc, flow->ctr_id);
+               if (rc != 0)
+                       return rc;
+
+               rc = npc_mcam_free_counter(npc, flow->ctr_id);
+               if (rc != 0)
+                       return rc;
+       }
+
        rc = npc_mcam_free_entry(npc, flow->mcam_id);
        if (rc != 0)
                return rc;