From d91869302fa2f79eefbc0ce02d52de54fdcd55de Mon Sep 17 00:00:00 2001 From: Satheesh Paul Date: Tue, 25 Jan 2022 09:45:26 +0530 Subject: [PATCH] common/cnxk: fix flow deletion [ upstream commit 40257b81b8ae239c630e27cfa81e136ad3a25dc3 ] 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") Signed-off-by: Satheesh Paul Reviewed-by: Jerin Jacob --- drivers/common/cnxk/roc_npc.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/drivers/common/cnxk/roc_npc.c b/drivers/common/cnxk/roc_npc.c index 503c74748f..8386e0e956 100644 --- a/drivers/common/cnxk/roc_npc.c +++ b/drivers/common/cnxk/roc_npc.c @@ -1246,6 +1246,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;