app/crypto-perf: check crypto result

Message ID 20230420103224.830-1-anoobj@marvell.com (mailing list archive)
State Superseded, archived
Delegated to: akhil goyal
Headers
Series app/crypto-perf: check crypto result |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/loongarch-compilation success Compilation OK
ci/loongarch-unit-testing success Unit Testing PASS
ci/github-robot: build success github build: passed
ci/Intel-compilation success Compilation OK
ci/intel-Testing success Testing PASS

Commit Message

Anoob Joseph April 20, 2023, 10:32 a.m. UTC
  Check crypto result in latency tests. Checking result won't affect the
test results as latency is calculated using timestamps which are done
before enqueue and after dequeue. Ignoring result means the data can be
false positive.

Signed-off-by: Anoob Joseph <anoobj@marvell.com>
---
 app/test-crypto-perf/cperf_test_latency.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)
  

Patch

diff --git a/app/test-crypto-perf/cperf_test_latency.c b/app/test-crypto-perf/cperf_test_latency.c
index 406e082e4e..64bef2cc0e 100644
--- a/app/test-crypto-perf/cperf_test_latency.c
+++ b/app/test-crypto-perf/cperf_test_latency.c
@@ -134,6 +134,7 @@  cperf_latency_test_runner(void *arg)
 	uint16_t test_burst_size;
 	uint8_t burst_size_idx = 0;
 	uint32_t imix_idx = 0;
+	int ret = 0;
 
 	static uint16_t display_once;
 
@@ -258,10 +259,16 @@  cperf_latency_test_runner(void *arg)
 			}
 
 			if (likely(ops_deqd))  {
-				/* Free crypto ops so they can be reused. */
-				for (i = 0; i < ops_deqd; i++)
+				for (i = 0; i < ops_deqd; i++) {
+					struct rte_crypto_op *op = ops_processed[i];
+
+					if (op->status == RTE_CRYPTO_OP_STATUS_ERROR)
+						ret = -1;
+
 					store_timestamp(ops_processed[i], tsc_end);
+				}
 
+				/* Free crypto ops so they can be reused. */
 				rte_mempool_put_bulk(ctx->pool,
 						(void **)ops_processed, ops_deqd);
 
@@ -289,8 +296,14 @@  cperf_latency_test_runner(void *arg)
 			tsc_end = rte_rdtsc_precise();
 
 			if (ops_deqd != 0) {
-				for (i = 0; i < ops_deqd; i++)
+				for (i = 0; i < ops_deqd; i++) {
+					struct rte_crypto_op *op = ops_processed[i];
+
+					if (op->status == RTE_CRYPTO_OP_STATUS_ERROR)
+						ret = -1;
+
 					store_timestamp(ops_processed[i], tsc_end);
+				}
 
 				rte_mempool_put_bulk(ctx->pool,
 						(void **)ops_processed, ops_deqd);
@@ -301,6 +314,10 @@  cperf_latency_test_runner(void *arg)
 			}
 		}
 
+		/* If there was any failure in crypto op, exit */
+		if (ret)
+			return ret;
+
 		for (i = 0; i < tsc_idx; i++) {
 			tsc_val = ctx->res[i].tsc_end - ctx->res[i].tsc_start;
 			tsc_max = RTE_MAX(tsc_val, tsc_max);