[1/7] bus/fslmc: fix to use ci value for qbman 5.0

Message ID 20210120142723.14090-2-hemant.agrawal@nxp.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers
Series NXP DPAAx ethernet PMD changes |

Checks

Context Check Description
ci/checkpatch success coding style OK

Commit Message

Hemant Agrawal Jan. 20, 2021, 2:27 p.m. UTC
  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

Ferruh Yigit Feb. 2, 2021, 11:36 a.m. UTC | #1
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>

<...>
  
Hemant Agrawal Feb. 4, 2021, 12:42 p.m. UTC | #2
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>
>
> <...>
  

Patch

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;