On Fri, Oct 30, 2026 at 3:43 PM Nawal Kishor <[email protected]> wrote:
>
> For legacy (non-halo) pools, DPC was enabled on both the pool and the
> aura contexts, so each operation was counted twice.
>
> Enable and disable DPC only on the aura context.
>
> Fixes: 28d65f12ac77 ("common/cnxk: add NPA diagnostic counter")
>
> Signed-off-by: Nawal Kishor <[email protected]>

Series applied to dpdk-next-net-mrvl/for-main. Thanks

> ---
>  drivers/common/cnxk/roc_npa.c | 70 +++++------------------------------
>  1 file changed, 10 insertions(+), 60 deletions(-)
>
> diff --git a/drivers/common/cnxk/roc_npa.c b/drivers/common/cnxk/roc_npa.c
> index ebeebf1205..484fe47465 100644
> --- a/drivers/common/cnxk/roc_npa.c
> +++ b/drivers/common/cnxk/roc_npa.c
> @@ -1952,13 +1952,13 @@ roc_npa_pool_dpc_enable(uint64_t aura_handle, uint8_t 
> counter_id, uint32_t flags
>         req->aura_id = roc_npa_aura_handle_to_aura(aura_handle);
>         req->op = NPA_AQ_INSTOP_WRITE;
>         if (!(flags & ROC_NPA_HALO_F)) {
> -               /* Enable DPC in Pool */
> -               req->ctype = NPA_AQ_CTYPE_POOL;
> -               req->pool.op_dpc_ena = 1;
> -               req->pool.op_dpc_set = counter_id;
> -               req->pool_mask.op_dpc_ena = 1;
> -               req->pool_mask.op_dpc_set = 0;
> -               req->pool_mask.op_dpc_set = ~req->pool_mask.op_dpc_set;
> +               /* Enable DPC in Aura */
> +               req->ctype = NPA_AQ_CTYPE_AURA;
> +               req->aura.op_dpc_ena = 1;
> +               req->aura.op_dpc_set = counter_id;
> +               req->aura_mask.op_dpc_ena = 1;
> +               req->aura_mask.op_dpc_set = 0;
> +               req->aura_mask.op_dpc_set = ~req->aura_mask.op_dpc_set;
>         } else {
>                 /* Enable DPC in Halo */
>                 req->ctype = NPA_AQ_CTYPE_HALO;
> @@ -1979,36 +1979,7 @@ roc_npa_pool_dpc_enable(uint64_t aura_handle, uint8_t 
> counter_id, uint32_t flags
>         if (rsp->hdr.rc != 0)
>                 goto exit;
>
> -       if (!(flags & ROC_NPA_HALO_F)) {
> -               req = mbox_alloc_msg_npa_cn20k_aq_enq(mbox);
> -               if (req == NULL)
> -                       goto disable;
> -
> -               /* Enable DPC in Aura */
> -               req->aura_id = roc_npa_aura_handle_to_aura(aura_handle);
> -               req->op = NPA_AQ_INSTOP_WRITE;
> -               req->ctype = NPA_AQ_CTYPE_AURA;
> -               req->aura.op_dpc_ena = 1;
> -               req->aura.op_dpc_set = counter_id;
> -               req->aura_mask.op_dpc_ena = 1;
> -               req->aura_mask.op_dpc_set = 0;
> -               req->aura_mask.op_dpc_set = ~req->aura_mask.op_dpc_set;
> -
> -               rc = mbox_process(mbox);
> -               if (rc < 0)
> -                       goto disable;
> -
> -               off = mbox->rx_start +
> -                     PLT_ALIGN(sizeof(struct mbox_hdr), MBOX_MSG_ALIGN);
> -               rsp = (struct npa_cn20k_aq_enq_rsp *)((uintptr_t)mdev->mbase 
> + off);
> -               if (rsp->hdr.rc != 0)
> -                       goto disable;
> -       }
>         rc = 0;
> -       goto exit;
> -
> -disable:
> -       roc_npa_pool_dpc_disable(aura_handle, flags);
>  exit:
>         mbox_put(mbox);
>         return rc;
> @@ -2038,9 +2009,9 @@ roc_npa_pool_dpc_disable(uint64_t aura_handle, uint32_t 
> flags)
>         req->aura_id = roc_npa_aura_handle_to_aura(aura_handle);
>         req->op = NPA_AQ_INSTOP_WRITE;
>         if (!(flags & ROC_NPA_HALO_F)) {
> -               req->ctype = NPA_AQ_CTYPE_POOL;
> -               req->pool.op_dpc_ena = 0;
> -               req->pool_mask.op_dpc_ena = 1;
> +               req->ctype = NPA_AQ_CTYPE_AURA;
> +               req->aura.op_dpc_ena = 0;
> +               req->aura_mask.op_dpc_ena = 1;
>         } else {
>                 req->ctype = NPA_AQ_CTYPE_HALO;
>                 req->halo.op_dpc_ena = 0;
> @@ -2057,28 +2028,7 @@ roc_npa_pool_dpc_disable(uint64_t aura_handle, 
> uint32_t flags)
>         if (rsp->hdr.rc != 0)
>                 goto exit;
>
> -       if (!(flags & ROC_NPA_HALO_F)) {
> -               req = mbox_alloc_msg_npa_cn20k_aq_enq(mbox);
> -               if (req == NULL)
> -                       goto exit;
> -
> -               req->aura_id = roc_npa_aura_handle_to_aura(aura_handle);
> -               req->op = NPA_AQ_INSTOP_WRITE;
> -               req->ctype = NPA_AQ_CTYPE_AURA;
> -               req->aura.op_dpc_ena = 0;
> -               req->aura_mask.op_dpc_ena = 1;
> -               rc = mbox_process(mbox);
> -               if (rc < 0)
> -                       goto exit;
> -
> -               off = mbox->rx_start + PLT_ALIGN(sizeof(struct mbox_hdr), 
> MBOX_MSG_ALIGN);
> -               rsp = (struct npa_cn20k_aq_enq_rsp *)((uintptr_t)mdev->mbase 
> + off);
> -               if (rsp->hdr.rc != 0)
> -                       goto exit;
> -       }
> -
>         rc = 0;
> -
>  exit:
>         mbox_put(mbox);
>         return rc;
> --
> 2.48.1
>

Reply via email to