From: Sunil Kumar Kori <skori@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 <skori@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(-)
@@ -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. */
@@ -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