Skip to contentSkip to conversation

app/crypto-perf: check crypto result

PATCH Superseded Anoob Joseph 3 participants 4 messages Apr 20, 2023 – May 24, 2023

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 app/crypto-perf: check crypto result

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.

---
 app/test-crypto-perf/cperf_test_latency.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)
app/test-crypto-perf/cperf_test_latency.c +20 -3
index 406e082e4e..64bef2cc0e 100644
@@ -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);
Signature · 1 line
2.25.1
#1 lore raw

PATCH v2 1/1 app/crypto-perf: check crypto result

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.

---
v2:
- Improved result check (treat all non success as errors)

 app/test-crypto-perf/cperf_test_latency.c | 23 ++++++++++++++++++++---
 1 file changed, 20 insertions(+), 3 deletions(-)
app/test-crypto-perf/cperf_test_latency.c +20 -3
index 406e082e4e..f1676a9aa9 100644
@@ -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_SUCCESS)
+						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_SUCCESS)
+						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);
Signature · 1 line
2.25.1
Acked-by on v2 1/1
#2 lore raw
Quoted 20 lines

-----Original Message-----
From: Anoob Joseph <[email protected]>
Sent: Thursday 20 April 2023 13:23
To: Power, Ciara <[email protected]>; Akhil Goyal <[email protected]>
Cc: Jerin Jacob <[email protected]>; Tejasree Kondoj <[email protected]>; [email protected]
Subject: [PATCH v2] app/crypto-perf: check crypto result

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.

---
v2:
- Improved result check (treat all non success as errors)

<snip>

Applied
#3 lore raw
Quoted 9 lines
Quoted 8 lines

Subject: [PATCH v2] app/crypto-perf: check crypto result

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.

Applied to dpdk-next-crypto
Thanks.