From: Sunil Kumar Kori <sk...@marvell.com>

Current macro to calculate BP threshold were evaluating incorrect
threshold because aura_limit is first shifted by shift then percentage
is calculated.

While first percentage should be calculated and the resultant should be
shifted by shift.

So formula is updated accordingly.

Fixes: cb4bfd6e7bdf ("event/cnxk: support Rx adapter")

Signed-off-by: Sunil Kumar Kori <sk...@marvell.com>
---
 drivers/common/cnxk/roc_nix_fc.c   | 2 +-
 drivers/common/cnxk/roc_nix_priv.h | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/common/cnxk/roc_nix_fc.c b/drivers/common/cnxk/roc_nix_fc.c
index d58b35268e..0f9b5cbbc0 100644
--- a/drivers/common/cnxk/roc_nix_fc.c
+++ b/drivers/common/cnxk/roc_nix_fc.c
@@ -496,7 +496,7 @@ roc_nix_fc_npa_bp_cfg(struct roc_nix *roc_nix, uint64_t 
pool_id, uint8_t ena, ui
        aura_attr = &lf->aura_attr[aura_id];
 
        bp_intf = 1 << nix->is_nix1;
-       bp_thresh = NIX_RQ_AURA_THRESH(drop_percent, aura_attr->limit >> 
aura_attr->shift);
+       bp_thresh = NIX_RQ_AURA_BP_THRESH(drop_percent, aura_attr->limit, 
aura_attr->shift);
 
        bpid = (aura_attr->bp_ena & 0x1) ? aura_attr->nix0_bpid : 
aura_attr->nix1_bpid;
        /* BP is already enabled. */
diff --git a/drivers/common/cnxk/roc_nix_priv.h 
b/drivers/common/cnxk/roc_nix_priv.h
index f82e411b70..a582b9df33 100644
--- a/drivers/common/cnxk/roc_nix_priv.h
+++ b/drivers/common/cnxk/roc_nix_priv.h
@@ -20,7 +20,7 @@
 /* Apply LBP at 75% of actual BP */
 #define NIX_CQ_LPB_THRESH_FRAC (75 * 16 / 100)
 #define NIX_CQ_FULL_ERRATA_SKID (1024ull * 256)
-#define NIX_RQ_AURA_THRESH(percent, val) (((val) * (percent)) / 100)
+#define NIX_RQ_AURA_BP_THRESH(percent, limit, shift) ((((limit) * (percent)) / 
100) >> (shift))
 
 /* IRQ triggered when NIX_LF_CINTX_CNT[QCOUNT] crosses this value */
 #define CQ_CQE_THRESH_DEFAULT  0x1ULL
-- 
2.25.1

Reply via email to