From 8bd11d45d53d66da5e2adb7faf2ea64b36120f60 Mon Sep 17 00:00:00 2001 From: Youri Querry Date: Thu, 24 Sep 2020 09:32:04 +0530 Subject: [PATCH] bus/fslmc: fix atomic queues on NXP LX2 platform Traffic was stalling after few packet while running l2fwd-event in atomic mode on LX2 platform. It was due to wrong dca setting while enqueuing packets to EQCR. This patch fixes the issue by writing correct dca setting. Fixes: 1b49352f41be ("bus/fslmc: rename portal pi index to consumer index") Cc: stable@dpdk.org Signed-off-by: Youri Querry Signed-off-by: Rohit Raj Acked-by: Nipun Gupta --- drivers/bus/fslmc/qbman/qbman_portal.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/bus/fslmc/qbman/qbman_portal.c b/drivers/bus/fslmc/qbman/qbman_portal.c index 0a2af7be4c..77c9d508c4 100644 --- a/drivers/bus/fslmc/qbman/qbman_portal.c +++ b/drivers/bus/fslmc/qbman/qbman_portal.c @@ -1201,6 +1201,8 @@ static int qbman_swp_enqueue_multiple_mem_back(struct qbman_swp *s, QBMAN_CENA_SWP_EQCR(eqcr_pi & half_mask)); memcpy(&p[1], &cl[1], 28); memcpy(&p[8], &fd[i], sizeof(*fd)); + p[0] = cl[0] | s->eqcr.pi_vb; + if (flags && (flags[i] & QBMAN_ENQUEUE_FLAG_DCA)) { struct qbman_eq_desc *d = (struct qbman_eq_desc *)p; @@ -1208,7 +1210,6 @@ static int qbman_swp_enqueue_multiple_mem_back(struct qbman_swp *s, ((flags[i]) & QBMAN_EQCR_DCA_IDXMASK); } eqcr_pi++; - p[0] = cl[0] | s->eqcr.pi_vb; if (!(eqcr_pi & half_mask)) s->eqcr.pi_vb ^= QB_VALID_BIT; -- 2.20.1