common/cnxk: fix missing RTE Flow counter deletion
Checks
Commit Message
From: Satheesh Paul <psatheesh@marvell.com>
Added code to clear and delete counters upon flow deletion.
Fixes: a07f7ced43 ("common/cnxk: add NPC init and fini")
Cc: stable@dpdk.org
Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
Reviewed-by: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
---
drivers/common/cnxk/roc_npc.c | 10 ++++++++++
1 file changed, 10 insertions(+)
Comments
On Tue, Jan 25, 2022 at 9:45 AM <psatheesh@marvell.com> wrote:
>
> From: Satheesh Paul <psatheesh@marvell.com>
>
> Added code to clear and delete counters upon flow deletion.
>
> Fixes: a07f7ced43 ("common/cnxk: add NPC init and fini")
> Cc: stable@dpdk.org
>
> Signed-off-by: Satheesh Paul <psatheesh@marvell.com>
> Reviewed-by: Jerin Jacob Kollanukkaran <jerinj@marvell.com>
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")
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 | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> 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;
> --
> 2.25.4
>
@@ -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;