From: Youri Querry <youri.querr...@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: sta...@dpdk.org

Signed-off-by: Youri Querry <youri.querr...@nxp.com>
Acked-by: Hemant Agrawal <hemant.agra...@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

Reply via email to