common/cnxk: fix missing RTE Flow counter deletion
PATCH 1/1 common/cnxk: fix missing RTE Flow counter deletion
From: Satheesh Paul <[email protected]>
Added code to clear and delete counters upon flow deletion.
Fixes a07f7ced43 ("common/cnxk: add NPC init and fini")
Signed-off-by Satheesh Paul <[email protected]>
Reviewed-by Jerin Jacob Kollanukkaran <[email protected]>
--- drivers/common/cnxk/roc_npc.c | 10 ++++++++++ 1 file changed, 10 insertions(+)
drivers/common/cnxk/roc_npc.c +10 -0
@@ -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;
Signature · 1 line
2.25.4
Quoted 10 lines · On Tue, Jan 25, 2022 at 9:45 AM <[email protected]> wrote:
From: Satheesh Paul <[email protected]>
Added code to clear and delete counters upon flow deletion.
Fixes a07f7ced43 ("common/cnxk: add NPC init and fini")Signed-off-by Satheesh Paul <[email protected]>Reviewed-by Jerin Jacob Kollanukkaran <[email protected]>
Updated the comment as follows and applied to
dpdk-next-net-mrvl/for-next-net. Thanks
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 a07f7ced43 ("common/cnxk: add NPC init and fini")
Signed-off-by Satheesh Paul <[email protected]>
Reviewed-by Jerin Jacob <[email protected]>
Quoted 28 lines
--- drivers/common/cnxk/roc_npc.c | 10 ++++++++++ 1 file changed, 10 insertions(+)drivers/common/cnxk/roc_npc.c +10
-1@@ -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; --2.25.4