[1/7] bus/fslmc: fix to use ci value for qbman 5.0
Checks
Commit Message
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.
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>
---
drivers/bus/fslmc/qbman/qbman_portal.c | 14 +++-----------
1 file changed, 3 insertions(+), 11 deletions(-)
Comments
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>
>
> <...>
@@ -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;