RE: [EXTERNAL] [PATCH] test/crypto: remove PMD specific asym testsuites

2026-02-10 Thread Akhil Goyal
Hi Kai/Pablo,

Any feedback on this or we can merge?

> Change PMD specific asymmetric testsuites to
> capabilities based testsuites
> 
> Signed-off-by: Rupesh Chiluka 
> ---
Acked-by: Akhil Goyal 



[PATCH] test/crypto: remove PMD specific asym testsuites

2025-12-30 Thread Rupesh Chiluka
Change PMD specific asymmetric testsuites to
capabilities based testsuites

Signed-off-by: Rupesh Chiluka 
---
 app/test/test_cryptodev_asym.c | 516 ++---
 1 file changed, 340 insertions(+), 176 deletions(-)

diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index 111f675c94..cff71dc700 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -39,6 +39,10 @@
 #define TEST_VECTOR_SIZE 256
 #define DEQ_TIMEOUT 1
 
+#define ADD_ASYM_TESTSUITE(index, parent_ts, child_ts, num_child_ts)   \
+   for (j = 0; j < num_child_ts; index++, j++) \
+   parent_ts.unit_test_suites[index] = child_ts[j]
+
 static int gbl_driver_id;
 static struct crypto_testsuite_params_asym {
struct rte_mempool *op_mpool;
@@ -3113,6 +3117,9 @@ test_sm2_enc(void)
capa = rte_cryptodev_asym_capability_get(dev_id, &idx);
if (capa == NULL)
return -ENOTSUP;
+   if (!rte_cryptodev_asym_xform_capability_check_opcap(capa,
+   RTE_CRYPTO_ASYM_OP_ENCRYPT, 0))
+   return TEST_SKIPPED;
 
/* Setup crypto op data structure */
op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);
@@ -3297,6 +3304,9 @@ test_sm2_dec(void)
capa = rte_cryptodev_asym_capability_get(dev_id, &idx);
if (capa == NULL)
return -ENOTSUP;
+   if (!rte_cryptodev_asym_xform_capability_check_opcap(capa,
+   RTE_CRYPTO_ASYM_OP_DECRYPT, 0))
+   return TEST_SKIPPED;
 
/* Setup crypto op data structure */
op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);
@@ -4995,27 +5005,230 @@ test_sm2_partial_decryption(const void *data)
return 0;
 }
 
-static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {
-   .suite_name = "Crypto Device OPENSSL ASYM Unit Test Suite",
-   .setup = testsuite_setup,
-   .teardown = testsuite_teardown,
+static int
+check_asym_capabilities_supported(const enum rte_crypto_asym_xform_type 
xform_type)
+{
+   uint8_t dev_id = testsuite_params.valid_devs[0];
+   struct rte_cryptodev_asym_capability_idx idx = {xform_type};
+
+   if (rte_cryptodev_asym_capability_get(dev_id, &idx) == NULL)
+   return TEST_SKIPPED;
+   return 0;
+}
+
+static int
+crypto_asym_dh_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_DH) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_dsa_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_DSA) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_ecdh_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_ECDH) != 0) 
{
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_ecdsa_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_ECDSA) != 
0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_ecpm_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_ECPM) != 0) 
{
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_eddsa_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_EDDSA) != 
0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_mod_ex_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_MODEX) != 
0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_mod_inv_testsuite_setup(void)
+{
+   if (check_asym_capabilities_supported(RTE_CRYPTO_ASYM_XFORM_MODINV) != 
0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required A

[PATCH] test/crypto: remove PMD specific asym testsuites

2025-12-18 Thread Rupesh Chiluka
Change PMD specific asymmetric testsuites to
capabilities based testsuites

Signed-off-by: Rupesh Chiluka 
---
 app/test/test_cryptodev_asym.c | 540 ++---
 1 file changed, 364 insertions(+), 176 deletions(-)

diff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c
index 111f675c94..cc4590a500 100644
--- a/app/test/test_cryptodev_asym.c
+++ b/app/test/test_cryptodev_asym.c
@@ -39,6 +39,10 @@
 #define TEST_VECTOR_SIZE 256
 #define DEQ_TIMEOUT 1
 
+#define ADD_ASYM_TESTSUITE(index, parent_ts, child_ts, num_child_ts)   \
+   for (j = 0; j < num_child_ts; index++, j++) \
+   parent_ts.unit_test_suites[index] = child_ts[j]
+
 static int gbl_driver_id;
 static struct crypto_testsuite_params_asym {
struct rte_mempool *op_mpool;
@@ -3113,6 +3117,9 @@ test_sm2_enc(void)
capa = rte_cryptodev_asym_capability_get(dev_id, &idx);
if (capa == NULL)
return -ENOTSUP;
+   if (!rte_cryptodev_asym_xform_capability_check_opcap(capa,
+   RTE_CRYPTO_ASYM_OP_ENCRYPT, 0))
+   return TEST_SKIPPED;
 
/* Setup crypto op data structure */
op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);
@@ -3297,6 +3304,9 @@ test_sm2_dec(void)
capa = rte_cryptodev_asym_capability_get(dev_id, &idx);
if (capa == NULL)
return -ENOTSUP;
+   if (!rte_cryptodev_asym_xform_capability_check_opcap(capa,
+   RTE_CRYPTO_ASYM_OP_DECRYPT, 0))
+   return TEST_SKIPPED;
 
/* Setup crypto op data structure */
op = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);
@@ -4995,27 +5005,254 @@ test_sm2_partial_decryption(const void *data)
return 0;
 }
 
-static struct unit_test_suite cryptodev_openssl_asym_testsuite  = {
-   .suite_name = "Crypto Device OPENSSL ASYM Unit Test Suite",
-   .setup = testsuite_setup,
-   .teardown = testsuite_teardown,
+static int
+check_asym_capabilities_supported(const enum rte_crypto_asym_xform_type 
xform_type)
+{
+   uint8_t dev_id = testsuite_params.valid_devs[0];
+   struct rte_cryptodev_asym_capability_idx idx = {xform_type};
+
+   if (rte_cryptodev_asym_capability_get(dev_id, &idx) == NULL)
+   return TEST_SKIPPED;
+   return 0;
+}
+
+static int
+crypto_asym_dh_testsuite_setup(void)
+{
+   const enum rte_crypto_asym_xform_type xform_type = 
RTE_CRYPTO_ASYM_XFORM_DH;
+
+   if (check_asym_capabilities_supported(xform_type) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_dsa_testsuite_setup(void)
+{
+   const enum rte_crypto_asym_xform_type xform_type = 
RTE_CRYPTO_ASYM_XFORM_DSA;
+
+   if (check_asym_capabilities_supported(xform_type) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_ecdh_testsuite_setup(void)
+{
+   const enum rte_crypto_asym_xform_type xform_type = 
RTE_CRYPTO_ASYM_XFORM_ECDH;
+
+   if (check_asym_capabilities_supported(xform_type) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_ecdsa_testsuite_setup(void)
+{
+   const enum rte_crypto_asym_xform_type xform_type = 
RTE_CRYPTO_ASYM_XFORM_ECDSA;
+
+   if (check_asym_capabilities_supported(xform_type) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_ecpm_testsuite_setup(void)
+{
+   const enum rte_crypto_asym_xform_type xform_type = 
RTE_CRYPTO_ASYM_XFORM_ECPM;
+
+   if (check_asym_capabilities_supported(xform_type) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_eddsa_testsuite_setup(void)
+{
+   const enum rte_crypto_asym_xform_type xform_type = 
RTE_CRYPTO_ASYM_XFORM_EDDSA;
+
+   if (check_asym_capabilities_supported(xform_type) != 0) {
+   RTE_LOG(INFO, USER1,
+   "Device doesn't support required ASYM capabilities. 
Test skipped\n");
+   return TEST_SKIPPED;
+   }
+   return 0;
+}
+
+static int
+crypto_asym_mod_ex_testsuite_setup(void)
+{
+   const enum rte_crypto_asym_xform_type xform_type = 
RTE_CRYPTO_ASYM_XFORM_MO