Message ID | 20210120142723.14090-2-hemant.agrawal@nxp.com |
---|---|
State | Superseded |
Headers | show |
Series | NXP DPAAx ethernet PMD changes | expand |
On 1/20/2021 2:27 PM, Hemant Agrawal wrote: > From: Youri Querry <youri.querry_1@nxp.com> > > since for qbman 5.0 generally, pi == ci, no need for extra checks. > They are causing issue. It would be nice to document the issues, in case users encounter them, they will know this patch is fixing it. Can you please send details? btw, is the understanding correct that this patch is fixing issues only seen with qbman 5.0? > This fixes few random packet hang issues in event mode. > > Fixes: 1b49352f41be ("bus/fslmc: rename portal pi index to consumer index") > Cc: stable@dpdk.org > > Signed-off-by: Youri Querry <youri.querry_1@nxp.com> > Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> <...>
On 2/2/2021 5:06 PM, Ferruh Yigit wrote: > On 1/20/2021 2:27 PM, Hemant Agrawal wrote: >> From: Youri Querry <youri.querry_1@nxp.com> >> >> since for qbman 5.0 generally, pi == ci, no need for extra checks. >> They are causing issue. > > It would be nice to document the issues, in case users encounter them, > they will know this patch is fixing it. Can you please send details? 1. Portal was incorrectly initialized. PI was getting assigned to CI incorrectly. This avoided few un-explained issues when using event mode. 2. This provided minor performance improvement > > btw, is the understanding correct that this patch is fixing issues > only seen with qbman 5.0? yes. > >> This fixes few random packet hang issues in event mode. >> >> Fixes: 1b49352f41be ("bus/fslmc: rename portal pi index to consumer >> index") >> Cc: stable@dpdk.org >> >> Signed-off-by: Youri Querry <youri.querry_1@nxp.com> >> Acked-by: Hemant Agrawal <hemant.agrawal@nxp.com> > > <...>
diff --git a/drivers/bus/fslmc/qbman/qbman_portal.c b/drivers/bus/fslmc/qbman/qbman_portal.c index 77c9d508c4..aedcad9258 100644 --- a/drivers/bus/fslmc/qbman/qbman_portal.c +++ b/drivers/bus/fslmc/qbman/qbman_portal.c @@ -339,17 +339,9 @@ struct qbman_swp *qbman_swp_init(const struct qbman_swp_desc *d) eqcr_pi = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_PI); p->eqcr.pi = eqcr_pi & p->eqcr.pi_ci_mask; p->eqcr.pi_vb = eqcr_pi & QB_VALID_BIT; - if ((p->desc.qman_version & QMAN_REV_MASK) >= QMAN_REV_5000 - && (d->cena_access_mode == qman_cena_fastest_access)) - p->eqcr.ci = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_PI) - & p->eqcr.pi_ci_mask; - else - p->eqcr.ci = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_CI) - & p->eqcr.pi_ci_mask; - p->eqcr.available = p->eqcr.pi_ring_size - - qm_cyc_diff(p->eqcr.pi_ring_size, - p->eqcr.ci & (p->eqcr.pi_ci_mask<<1), - p->eqcr.pi & (p->eqcr.pi_ci_mask<<1)); + p->eqcr.ci = qbman_cinh_read(&p->sys, QBMAN_CINH_SWP_EQCR_CI) + & p->eqcr.pi_ci_mask; + p->eqcr.available = p->eqcr.pi_ring_size; portal_idx_map[p->desc.idx] = p; return p;