Skip to contentSkip to conversation

test/crypto: allow retries with stats test

PATCH Applied Anoob Joseph 2 participants 3 messages Aug 26, 2024 – Sep 18, 2024 Crypto API

lore
Share & tools
lore
#0 lore raw

PATCH 1/2 test/crypto: allow retries with stats test

Stats need not be reflected instantly after the operation. Relax the test case to have retries to allow slower updates.

---
 app/test/test_cryptodev.h                |  1 +
 app/test/test_cryptodev_security_ipsec.c | 11 ++++++++++-
 2 files changed, 11 insertions(+), 1 deletion(-)
app/test/test_cryptodev.h +1 -0
index b479ab8a2a..bb54a33d62 100644
@@ -9,6 +9,7 @@
 #define MAX_NUM_OPS_INFLIGHT            (4096)
 #define MIN_NUM_OPS_INFLIGHT            (128)
 #define DEFAULT_NUM_OPS_INFLIGHT        (128)
+#define TEST_STATS_RETRIES              (100)
 
 #define DEFAULT_NUM_XFORMS              (2)
 #define NUM_MBUFS                       (8191)
app/test/test_cryptodev_security_ipsec.c +10 -1
index 1aba1ad993..e6a81ca186 100644
@@ -1103,9 +1103,12 @@ test_ipsec_stats_verify(void *ctx,
 			enum rte_security_ipsec_sa_direction dir)
 {
 	struct rte_security_stats stats = {0};
-	int ret = TEST_SUCCESS;
+	int retries = 0, ret = TEST_SUCCESS;
 
 	if (flags->stats_success) {
+stats_get:
+		ret = TEST_SUCCESS;
+
 		if (rte_security_session_stats_get(ctx, sess, &stats) < 0)
 			return TEST_FAILED;
 
@@ -1118,6 +1121,12 @@ test_ipsec_stats_verify(void *ctx,
 			    stats.ipsec.ierrors != 0)
 				ret = TEST_FAILED;
 		}
+
+		if (ret == TEST_FAILED && retries < TEST_STATS_RETRIES) {
+			retries++;
+			rte_delay_ms(1);
+			goto stats_get;
+		}
 	}
 
 	return ret;
Signature · 1 line
2.45.2
#1 lore raw

PATCH 2/2 crypto/cnxk: remove delay in stats

Having 1 ms delay for retrieving stats per session would mean significant delay for a system with large number of sessions. If accurate stats are required, application can call stats again after a delay and get most updated stats.

---
 drivers/crypto/cnxk/cn10k_ipsec.c | 2 --
 1 file changed, 2 deletions(-)
drivers/crypto/cnxk/cn10k_ipsec.c +0 -2
index 7517602fa4..8123a5f97b 100644
@@ -350,13 +350,11 @@ cn10k_ipsec_stats_get(struct cnxk_cpt_qp *qp, struct cn10k_sec_session *sess,
 	if (sess->ipsec.is_outbound) {
 		out_sa = &sa->out_sa;
 		roc_cpt_lf_ctx_flush(&qp->lf, out_sa, false);
-		rte_delay_ms(1);
 		stats->ipsec.opackets = out_sa->ctx.mib_pkts;
 		stats->ipsec.obytes = out_sa->ctx.mib_octs;
 	} else {
 		in_sa = &sa->in_sa;
 		roc_cpt_lf_ctx_flush(&qp->lf, in_sa, false);
-		rte_delay_ms(1);
 		stats->ipsec.ipackets = in_sa->ctx.mib_pkts;
 		stats->ipsec.ibytes = in_sa->ctx.mib_octs;
 	}
Signature · 1 line
2.45.2