common/cnxk: fix missing RTE Flow counter deletion

Message ID 20220125041526.905808-1-psatheesh@marvell.com (mailing list archive)
State Accepted, archived
Delegated to: Jerin Jacob
Headers
Series common/cnxk: fix missing RTE Flow counter deletion |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/github-robot: build success github build: passed
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-x86_64-compile-testing success Testing PASS
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-x86_64-unit-testing success Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/Intel-compilation fail Compilation issues
ci/intel-Testing success Testing PASS
ci/iol-aarch64-unit-testing success Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-aarch64-compile-testing success Testing PASS
ci/iol-abi-testing warning Testing issues

Commit Message

Satheesh Paul Antonysamy Jan. 25, 2022, 4:15 a.m. UTC
  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

Jerin Jacob Feb. 17, 2022, 6:36 a.m. UTC | #1
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
>
  

Patch

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;