[dpdk-stable] [PATCH v3 01/23] bus/fslmc: fix to use ci value for qbman 5.0
Hemant Agrawal
hemant.agrawal at nxp.com
Wed Feb 24 13:42:49 CET 2021
From: Youri Querry <youri.querry_1 at nxp.com>
Random portal hangs observed on device with QBMAN 5.0
This fixes few random packet hang issues in event mode.
Few things fixed it.
1. Generally, pi == ci, no need for extra checks.
2. The proper initializations in init with ci
Fixes: 1b49352f41be ("bus/fslmc: rename portal pi index to consumer index")
Cc: stable at dpdk.org
Signed-off-by: Youri Querry <youri.querry_1 at nxp.com>
Acked-by: Hemant Agrawal <hemant.agrawal at nxp.com>
---
drivers/bus/fslmc/qbman/qbman_portal.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
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;
--
2.17.1
More information about the stable
mailing list