This patch adds the logic in the DPAA2 QDMA packet enqueue API
Fixes: 4d9a3f2a0159 ("raw/dpaa2_qdma: support RBP mode")
Cc: [email protected]
Signed-off-by: Nipun Gupta <[email protected]>
Acked-by: Hemant Agrawal <[email protected]>
---
drivers/raw/dpaa2_qdma/dpaa2_qdma.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
diff --git a/drivers/raw/dpaa2_qdma/dpaa2_qdma.c
b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c
index a391913b0..af678273d 100644
--- a/drivers/raw/dpaa2_qdma/dpaa2_qdma.c
+++ b/drivers/raw/dpaa2_qdma/dpaa2_qdma.c
@@ -541,13 +541,21 @@ dpdmai_dev_enqueue_multi(struct dpaa2_dpdmai_dev
*dpdmai_dev,
}
/* Enqueue the packet to the QBMAN */
- uint32_t enqueue_loop = 0;
+ uint32_t enqueue_loop = 0, retry_count = 0;
while (enqueue_loop < loop) {
- enqueue_loop += qbman_swp_enqueue_multiple(swp,
+ ret = qbman_swp_enqueue_multiple(swp,
&eqdesc,
&fd[enqueue_loop],
NULL,
loop - enqueue_loop);
+ if (unlikely(ret < 0)) {
+ retry_count++;
+ if (retry_count > DPAA2_MAX_TX_RETRY_COUNT)
+ return num_tx - (loop - enqueue_loop);
+ } else {
+ enqueue_loop += ret;
+ retry_count = 0;
+ }
}
nb_jobs -= loop;
}
--
2.17.1