For cn20k, Rx chan bpid config range increased to 10 bit from 8 bits. These extra bits are reserved in cn10k platform so separate platform specific bpid range mask is not required.
Signed-off-by: Rahul Bhansali <[email protected]> --- drivers/common/cnxk/roc_nix_fc.c | 30 +++++++++++++++-------------- drivers/common/cnxk/roc_nix_queue.c | 1 + 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/drivers/common/cnxk/roc_nix_fc.c b/drivers/common/cnxk/roc_nix_fc.c index ddabd15a5d..abf923b722 100644 --- a/drivers/common/cnxk/roc_nix_fc.c +++ b/drivers/common/cnxk/roc_nix_fc.c @@ -51,7 +51,7 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool enable) nix->chan_cnt = rsp->chan_cnt; for (i = 0; i < rsp->chan_cnt; i++) - nix->bpid[i] = rsp->chan_bpid[i] & 0x1FF; + nix->bpid[i] = rsp->chan_bpid[i] & 0x7FF; } else { req = mbox_alloc_msg_nix_bp_disable(mbox); if (req == NULL) @@ -86,7 +86,7 @@ nix_fc_rxchan_bpid_set(struct roc_nix *roc_nix, bool enable) rc = mbox_process_msg(mbox, (void *)&rsp); if (rc) goto exit; - nix->cpt_lbpid = rsp->chan_bpid[0] & 0x1FF; + nix->cpt_lbpid = rsp->chan_bpid[0] & 0x7FF; } /* CPT to NIX BP on all channels */ @@ -333,6 +333,8 @@ nix_fc_cq_config_set(struct roc_nix *roc_nix, struct roc_nix_fc_cfg *fc_cfg) if (fc_cfg->cq_cfg.enable) { aq->cq.bpid = nix->bpid[fc_cfg->cq_cfg.tc]; aq->cq_mask.bpid = ~(aq->cq_mask.bpid); + aq->cq.bpid_ext = (nix->bpid[fc_cfg->cq_cfg.tc] >> 9) & 0x3; + aq->cq_mask.bpid_ext = ~(aq->cq_mask.bpid_ext); aq->cq.bp = fc_cfg->cq_cfg.cq_bp; aq->cq_mask.bp = ~(aq->cq_mask.bp); } @@ -903,33 +905,33 @@ roc_nix_chan_bpid_set(struct roc_nix *roc_nix, uint16_t chan, uint64_t bpid, int return rc; if (ena) { - if ((((cfg >> NIX_BPID1_OFF) & GENMASK_ULL(8, 0)) == bpid) || - (((cfg >> NIX_BPID2_OFF) & GENMASK_ULL(8, 0)) == bpid) || - (((cfg >> NIX_BPID3_OFF) & GENMASK_ULL(8, 0)) == bpid)) + if ((((cfg >> NIX_BPID1_OFF) & GENMASK_ULL(10, 0)) == bpid) || + (((cfg >> NIX_BPID2_OFF) & GENMASK_ULL(10, 0)) == bpid) || + (((cfg >> NIX_BPID3_OFF) & GENMASK_ULL(10, 0)) == bpid)) return 0; if (!(cfg & BIT_ULL(NIX_BPID1_ENA))) { - cfg &= ~GENMASK_ULL(NIX_BPID1_OFF + 8, NIX_BPID1_OFF); + cfg &= ~GENMASK_ULL(NIX_BPID1_OFF + 10, NIX_BPID1_OFF); cfg |= (((uint64_t)bpid << NIX_BPID1_OFF) | BIT_ULL(NIX_BPID1_ENA)); } else if (!(cfg & BIT_ULL(NIX_BPID2_ENA))) { - cfg &= ~GENMASK_ULL(NIX_BPID2_OFF + 8, NIX_BPID2_OFF); + cfg &= ~GENMASK_ULL(NIX_BPID2_OFF + 10, NIX_BPID2_OFF); cfg |= (((uint64_t)bpid << NIX_BPID2_OFF) | BIT_ULL(NIX_BPID2_ENA)); } else if (!(cfg & BIT_ULL(NIX_BPID3_ENA))) { - cfg &= ~GENMASK_ULL(NIX_BPID3_OFF + 8, NIX_BPID3_OFF); + cfg &= ~GENMASK_ULL(NIX_BPID3_OFF + 10, NIX_BPID3_OFF); cfg |= (((uint64_t)bpid << NIX_BPID3_OFF) | BIT_ULL(NIX_BPID3_ENA)); } else { plt_nix_dbg("Exceed maximum BPIDs"); return -ENOSPC; } } else { - if (((cfg >> NIX_BPID1_OFF) & GENMASK_ULL(8, 0)) == bpid) { - cfg &= ~(GENMASK_ULL(NIX_BPID1_OFF + 8, NIX_BPID1_OFF) | + if (((cfg >> NIX_BPID1_OFF) & GENMASK_ULL(10, 0)) == bpid) { + cfg &= ~(GENMASK_ULL(NIX_BPID1_OFF + 10, NIX_BPID1_OFF) | BIT_ULL(NIX_BPID1_ENA)); - } else if (((cfg >> NIX_BPID2_OFF) & GENMASK_ULL(8, 0)) == bpid) { - cfg &= ~(GENMASK_ULL(NIX_BPID2_OFF + 8, NIX_BPID2_OFF) | + } else if (((cfg >> NIX_BPID2_OFF) & GENMASK_ULL(10, 0)) == bpid) { + cfg &= ~(GENMASK_ULL(NIX_BPID2_OFF + 10, NIX_BPID2_OFF) | BIT_ULL(NIX_BPID2_ENA)); - } else if (((cfg >> NIX_BPID3_OFF) & GENMASK_ULL(8, 0)) == bpid) { - cfg &= ~(GENMASK_ULL(NIX_BPID3_OFF + 8, NIX_BPID3_OFF) | + } else if (((cfg >> NIX_BPID3_OFF) & GENMASK_ULL(10, 0)) == bpid) { + cfg &= ~(GENMASK_ULL(NIX_BPID3_OFF + 10, NIX_BPID3_OFF) | BIT_ULL(NIX_BPID3_ENA)); } else { plt_nix_dbg("BPID not found"); diff --git a/drivers/common/cnxk/roc_nix_queue.c b/drivers/common/cnxk/roc_nix_queue.c index ad8f62f38f..8e7e597be2 100644 --- a/drivers/common/cnxk/roc_nix_queue.c +++ b/drivers/common/cnxk/roc_nix_queue.c @@ -1258,6 +1258,7 @@ roc_nix_cn20k_cq_init(struct roc_nix *roc_nix, struct roc_nix_cq *cq) cq_ctx->lbpid_low = cpt_lbpid & 0x7; cq_ctx->lbpid_med = (cpt_lbpid >> 3) & 0x7; cq_ctx->lbpid_high = (cpt_lbpid >> 6) & 0x7; + cq_ctx->lbpid_ext = (cpt_lbpid >> 9) & 0x3; cq_ctx->lbp_frac = NIX_CQ_LBP_THRESH_FRAC; } drop_thresh = NIX_CQ_SEC_BP_THRESH_LEVEL; -- 2.34.1

