From: Satheesh Paul Date: Tue, 25 Jan 2022 04:15:26 +0000 (+0530) Subject: common/cnxk: fix flow deletion X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=40257b81b8ae239c630e27cfa81e136ad3a25dc3;p=dpdk.git common/cnxk: fix flow deletion 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 Reviewed-by: Jerin Jacob --- diff --git a/drivers/common/cnxk/roc_npc.c b/drivers/common/cnxk/roc_npc.c index e3961bfbc6..df3016f538 100644 --- a/drivers/common/cnxk/roc_npc.c +++ b/drivers/common/cnxk/roc_npc.c @@ -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;