Issue more dequeue commands if the gap between enqueued
and dequeued packets is more than burst size *8

Signed-off-by: Gagandeep Singh <g.si...@nxp.com>
---
 app/test-crypto-perf/cperf_test_throughput.c | 42 +++++++++++---------
 1 file changed, 23 insertions(+), 19 deletions(-)

diff --git a/app/test-crypto-perf/cperf_test_throughput.c 
b/app/test-crypto-perf/cperf_test_throughput.c
index cecf30e470..5cd8919c91 100644
--- a/app/test-crypto-perf/cperf_test_throughput.c
+++ b/app/test-crypto-perf/cperf_test_throughput.c
@@ -223,26 +223,30 @@ cperf_throughput_test_runner(void *test_ctx)
                        ops_unused = burst_size - ops_enqd;
                        ops_enqd_total += ops_enqd;
 
-
                        /* Dequeue processed burst of ops from crypto device */
-                       ops_deqd = rte_cryptodev_dequeue_burst(ctx->dev_id, 
ctx->qp_id,
-                                       ops_processed, test_burst_size);
-
-                       if (likely(ops_deqd))  {
-                               /* Free crypto ops so they can be reused. */
-                               rte_mempool_put_bulk(ctx->pool,
-                                               (void **)ops_processed, 
ops_deqd);
-
-                               ops_deqd_total += ops_deqd;
-                       } else {
-                               /**
-                                * Count dequeue polls which didn't return any
-                                * processed operations. This statistic is 
mainly
-                                * relevant to hw accelerators.
-                                */
-                               ops_deqd_failed++;
-                       }
-
+                       do {
+                               ops_deqd = rte_cryptodev_dequeue_burst(
+                                               ctx->dev_id, ctx->qp_id,
+                                               ops_processed, test_burst_size);
+
+                               if (likely(ops_deqd))  {
+                                       /* Free crypto ops for reuse */
+                                       rte_mempool_put_bulk(ctx->pool,
+                                                       (void **)ops_processed,
+                                                       ops_deqd);
+
+                                       ops_deqd_total += ops_deqd;
+                               } else {
+                                       /**
+                                        * Count dequeue polls which didn't
+                                        * return any processed operations.
+                                        * This statistic is mainly relevant
+                                        * to hw accelerators.
+                                        */
+                                       ops_deqd_failed++;
+                               }
+                       } while (ops_enqd_total - ops_deqd_total >
+                                       test_burst_size * 8);
                }
 
                /* Dequeue any operations still in the crypto device */
-- 
2.25.1

Reply via email to