[PATCH v2] app/crypto-perf-test: fix unset crc algorithm

Arkadiusz Kusztal arkadiuszx.kusztal at intel.com
Fri Mar 15 11:44:34 CET 2024


Because net crc api is not thread-safe, setting crc algorithm
by the application will prevent race condition in the calc function.
Race condition still may occur when any of the threads will call this
function again. Function is called with the highest possible SIMD
extension, which is AVX512, but if this is not found, CRC API will
pick the other highest possible extension, or scalar if no SIMD
available.

Signed-off-by: Arkadiusz Kusztal <arkadiuszx.kusztal at intel.com>
---
v2:
- narrowed down the case to the docsis only

 app/test-crypto-perf/main.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c
index 40c0b4b54f..1b23dd5fb2 100644
--- a/app/test-crypto-perf/main.c
+++ b/app/test-crypto-perf/main.c
@@ -11,6 +11,7 @@
 #include <rte_eal.h>
 #include <rte_errno.h>
 #include <rte_cryptodev.h>
+#include <rte_net_crc.h>
 #ifdef RTE_CRYPTO_SCHEDULER
 #include <rte_cryptodev_scheduler.h>
 #endif
@@ -599,6 +600,9 @@ main(int argc, char **argv)
 		goto err;
 	}
 
+	if (opts.op_type == CPERF_DOCSIS)
+		rte_net_crc_set_alg(RTE_NET_CRC_AVX512);
+
 	ret = cperf_verify_devices_capabilities(&opts, enabled_cdevs,
 			nb_cryptodevs);
 	if (ret) {
-- 
2.13.6



More information about the dev mailing list