net/sfc: allow to control the represented entity MAC address
[dpdk.git] / app / test / test_cryptodev_asym.c
index 283b38e..7bd7cde 100644 (file)
@@ -46,7 +46,7 @@ struct crypto_testsuite_params_asym {
 };
 
 struct crypto_unittest_params {
-       struct rte_cryptodev_asym_session *sess;
+       void *sess;
        struct rte_crypto_op *op;
 };
 
@@ -67,7 +67,7 @@ static uint32_t test_index;
 static struct crypto_testsuite_params_asym testsuite_params = { NULL };
 
 static int
-queue_ops_rsa_sign_verify(struct rte_cryptodev_asym_session *sess)
+queue_ops_rsa_sign_verify(void *sess)
 {
        struct crypto_testsuite_params_asym *ts_params = &testsuite_params;
        struct rte_mempool *op_mpool = ts_params->op_mpool;
@@ -94,7 +94,7 @@ queue_ops_rsa_sign_verify(struct rte_cryptodev_asym_session *sess)
        asym_op->rsa.message.length = rsaplaintext.len;
        asym_op->rsa.sign.length = 0;
        asym_op->rsa.sign.data = output_buf;
-       asym_op->rsa.pad = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
+       asym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
 
        debug_hexdump(stdout, "message", asym_op->rsa.message.data,
                      asym_op->rsa.message.length);
@@ -126,7 +126,7 @@ queue_ops_rsa_sign_verify(struct rte_cryptodev_asym_session *sess)
 
        /* Verify sign */
        asym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_VERIFY;
-       asym_op->rsa.pad = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
+       asym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
 
        /* Process crypto operation */
        if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {
@@ -158,7 +158,7 @@ error_exit:
 }
 
 static int
-queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess)
+queue_ops_rsa_enc_dec(void *sess)
 {
        struct crypto_testsuite_params_asym *ts_params = &testsuite_params;
        struct rte_mempool *op_mpool = ts_params->op_mpool;
@@ -185,7 +185,7 @@ queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess)
        asym_op->rsa.cipher.data = cipher_buf;
        asym_op->rsa.cipher.length = 0;
        asym_op->rsa.message.length = rsaplaintext.len;
-       asym_op->rsa.pad = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
+       asym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
 
        debug_hexdump(stdout, "message", asym_op->rsa.message.data,
                      asym_op->rsa.message.length);
@@ -217,7 +217,7 @@ queue_ops_rsa_enc_dec(struct rte_cryptodev_asym_session *sess)
        asym_op = result_op->asym;
        asym_op->rsa.message.length = 0;
        asym_op->rsa.op_type = RTE_CRYPTO_ASYM_OP_DECRYPT;
-       asym_op->rsa.pad = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
+       asym_op->rsa.padding.type = RTE_CRYPTO_RSA_PADDING_PKCS1_5;
 
        /* Process crypto operation */
        if (rte_cryptodev_enqueue_burst(dev_id, 0, &op, 1) != 1) {
@@ -310,14 +310,14 @@ test_cryptodev_asym_op(struct crypto_testsuite_params_asym *ts_params,
        struct rte_crypto_op *op = NULL;
        struct rte_crypto_op *result_op = NULL;
        struct rte_crypto_asym_xform xform_tc;
-       struct rte_cryptodev_asym_session *sess = NULL;
+       void *sess = NULL;
        struct rte_cryptodev_asym_capability_idx cap_idx;
        const struct rte_cryptodev_asymmetric_xform_capability *capability;
        uint8_t dev_id = ts_params->valid_devs[0];
        uint8_t input[TEST_DATA_SIZE] = {0};
        uint8_t *result = NULL;
 
-       int status = TEST_SUCCESS;
+       int ret, status = TEST_SUCCESS;
 
        xform_tc.next = NULL;
        xform_tc.xform_type = data_tc->modex.xform_type;
@@ -414,7 +414,7 @@ test_cryptodev_asym_op(struct crypto_testsuite_params_asym *ts_params,
                }
 
                xform_tc.rsa.key_type = key_type;
-               op->asym->rsa.pad = data_tc->rsa_data.padding;
+               op->asym->rsa.padding.type = data_tc->rsa_data.padding;
 
                if (op->asym->rsa.op_type == RTE_CRYPTO_ASYM_OP_ENCRYPT) {
                        asym_op->rsa.message.data = data_tc->rsa_data.pt.data;
@@ -452,14 +452,14 @@ test_cryptodev_asym_op(struct crypto_testsuite_params_asym *ts_params,
        }
 
        if (!sessionless) {
-               sess = rte_cryptodev_asym_session_create(dev_id, &xform_tc,
-                               ts_params->session_mpool);
-               if (!sess) {
+               ret = rte_cryptodev_asym_session_create(dev_id, &xform_tc,
+                               ts_params->session_mpool, &sess);
+               if (ret < 0) {
                        snprintf(test_msg, ASYM_TEST_MSG_LEN,
                                        "line %u "
                                        "FAILED: %s", __LINE__,
                                        "Session creation failed");
-                       status = TEST_FAILED;
+                       status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                        goto error_exit;
                }
 
@@ -549,7 +549,7 @@ test_one_case(const void *test_case, int sessionless)
                                                status = test_cryptodev_asym_op(
                                                        &testsuite_params,
                                                        &tc, test_msg, sessionless, i,
-                                                       RTE_RSA_KET_TYPE_QT);
+                                                       RTE_RSA_KEY_TYPE_QT);
                                        }
                                        if (status)
                                                break;
@@ -643,9 +643,9 @@ test_rsa_sign_verify(void)
        struct crypto_testsuite_params_asym *ts_params = &testsuite_params;
        struct rte_mempool *sess_mpool = ts_params->session_mpool;
        uint8_t dev_id = ts_params->valid_devs[0];
-       struct rte_cryptodev_asym_session *sess;
+       void *sess = NULL;
        struct rte_cryptodev_info dev_info;
-       int status = TEST_SUCCESS;
+       int ret, status = TEST_SUCCESS;
 
        /* Test case supports op with exponent key only,
         * Check in PMD feature flag for RSA exponent key type support.
@@ -658,12 +658,12 @@ test_rsa_sign_verify(void)
                return TEST_SKIPPED;
        }
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool);
+       ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);
 
-       if (!sess) {
+       if (ret < 0) {
                RTE_LOG(ERR, USER1, "Session creation failed for "
                        "sign_verify\n");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -683,9 +683,9 @@ test_rsa_enc_dec(void)
        struct crypto_testsuite_params_asym *ts_params = &testsuite_params;
        struct rte_mempool *sess_mpool = ts_params->session_mpool;
        uint8_t dev_id = ts_params->valid_devs[0];
-       struct rte_cryptodev_asym_session *sess;
+       void *sess = NULL;
        struct rte_cryptodev_info dev_info;
-       int status = TEST_SUCCESS;
+       int ret, status = TEST_SUCCESS;
 
        /* Test case supports op with exponent key only,
         * Check in PMD feature flag for RSA exponent key type support.
@@ -698,11 +698,11 @@ test_rsa_enc_dec(void)
                return TEST_SKIPPED;
        }
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool);
+       ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform, sess_mpool, &sess);
 
-       if (!sess) {
+       if (ret < 0) {
                RTE_LOG(ERR, USER1, "Session creation failed for enc_dec\n");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -723,9 +723,9 @@ test_rsa_sign_verify_crt(void)
        struct crypto_testsuite_params_asym *ts_params = &testsuite_params;
        struct rte_mempool *sess_mpool = ts_params->session_mpool;
        uint8_t dev_id = ts_params->valid_devs[0];
-       struct rte_cryptodev_asym_session *sess;
+       void *sess = NULL;
        struct rte_cryptodev_info dev_info;
-       int status = TEST_SUCCESS;
+       int ret, status = TEST_SUCCESS;
 
        /* Test case supports op with quintuple format key only,
         * Check im PMD feature flag for RSA quintuple key type support.
@@ -737,12 +737,12 @@ test_rsa_sign_verify_crt(void)
                return TEST_SKIPPED;
        }
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool);
+       ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess);
 
-       if (!sess) {
+       if (ret < 0) {
                RTE_LOG(ERR, USER1, "Session creation failed for "
                        "sign_verify_crt\n");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -763,9 +763,9 @@ test_rsa_enc_dec_crt(void)
        struct crypto_testsuite_params_asym *ts_params = &testsuite_params;
        struct rte_mempool *sess_mpool = ts_params->session_mpool;
        uint8_t dev_id = ts_params->valid_devs[0];
-       struct rte_cryptodev_asym_session *sess;
+       void *sess = NULL;
        struct rte_cryptodev_info dev_info;
-       int status = TEST_SUCCESS;
+       int ret, status = TEST_SUCCESS;
 
        /* Test case supports op with quintuple format key only,
         * Check in PMD feature flag for RSA quintuple key type support.
@@ -777,12 +777,12 @@ test_rsa_enc_dec_crt(void)
                return TEST_SKIPPED;
        }
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool);
+       ret = rte_cryptodev_asym_session_create(dev_id, &rsa_xform_crt, sess_mpool, &sess);
 
-       if (!sess) {
+       if (ret < 0) {
                RTE_LOG(ERR, USER1, "Session creation failed for "
                        "enc_dec_crt\n");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -893,7 +893,7 @@ testsuite_setup(void)
        }
 
        ts_params->session_mpool = rte_cryptodev_asym_session_pool_create(
-                       "test_asym_sess_mp", TEST_NUM_SESSIONS, 0,
+                       "test_asym_sess_mp", TEST_NUM_SESSIONS, 0, 0,
                        SOCKET_ID_ANY);
 
        TEST_ASSERT_NOT_NULL(ts_params->session_mpool,
@@ -976,27 +976,30 @@ static inline void print_asym_capa(
 
        for (i = 0; i < RTE_CRYPTO_ASYM_OP_LIST_END; i++) {
                /* check supported operations */
-               if (rte_cryptodev_asym_xform_capability_check_optype(capa, i))
-                       printf(" %s",
-                                       rte_crypto_asym_op_strings[i]);
+               if (rte_cryptodev_asym_xform_capability_check_optype(capa, i)) {
+                       if (capa->xform_type == RTE_CRYPTO_ASYM_XFORM_DH)
+                               printf(" %s", rte_crypto_asym_ke_strings[i]);
+                       else
+                               printf(" %s", rte_crypto_asym_op_strings[i]);
                }
-               switch (capa->xform_type) {
-               case RTE_CRYPTO_ASYM_XFORM_RSA:
-               case RTE_CRYPTO_ASYM_XFORM_MODINV:
-               case RTE_CRYPTO_ASYM_XFORM_MODEX:
-               case RTE_CRYPTO_ASYM_XFORM_DH:
-               case RTE_CRYPTO_ASYM_XFORM_DSA:
-                       printf(" modlen: min %d max %d increment %d",
-                                       capa->modlen.min,
-                                       capa->modlen.max,
-                                       capa->modlen.increment);
+       }
+       switch (capa->xform_type) {
+       case RTE_CRYPTO_ASYM_XFORM_RSA:
+       case RTE_CRYPTO_ASYM_XFORM_MODINV:
+       case RTE_CRYPTO_ASYM_XFORM_MODEX:
+       case RTE_CRYPTO_ASYM_XFORM_DH:
+       case RTE_CRYPTO_ASYM_XFORM_DSA:
+               printf(" modlen: min %d max %d increment %d",
+                               capa->modlen.min,
+                               capa->modlen.max,
+                               capa->modlen.increment);
+       break;
+       case RTE_CRYPTO_ASYM_XFORM_ECDSA:
+       case RTE_CRYPTO_ASYM_XFORM_ECPM:
+       default:
                break;
-               case RTE_CRYPTO_ASYM_XFORM_ECDSA:
-               case RTE_CRYPTO_ASYM_XFORM_ECPM:
-               default:
-                       break;
-               }
-               printf("\n");
+       }
+       printf("\n");
 }
 
 static int
@@ -1045,8 +1048,8 @@ test_dh_gen_shared_sec(struct rte_crypto_asym_xform *xfrm)
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_asym_op *asym_op = NULL;
        struct rte_crypto_op *op = NULL, *result_op = NULL;
-       struct rte_cryptodev_asym_session *sess = NULL;
-       int status = TEST_SUCCESS;
+       void *sess = NULL;
+       int ret, status = TEST_SUCCESS;
        uint8_t output[TEST_DH_MOD_LEN];
        struct rte_crypto_asym_xform xform = *xfrm;
        uint8_t peer[] = "01234567890123456789012345678901234567890123456789";
@@ -1064,8 +1067,8 @@ test_dh_gen_shared_sec(struct rte_crypto_asym_xform *xfrm)
        asym_op = op->asym;
 
        /* Setup a xform and op to generate private key only */
-       xform.dh.type = RTE_CRYPTO_ASYM_OP_SHARED_SECRET_COMPUTE;
        xform.next = NULL;
+       asym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_SHARED_SECRET_COMPUTE;
        asym_op->dh.priv_key.data = dh_test_params.priv_key.data;
        asym_op->dh.priv_key.length = dh_test_params.priv_key.length;
        asym_op->dh.pub_key.data = (uint8_t *)peer;
@@ -1073,12 +1076,12 @@ test_dh_gen_shared_sec(struct rte_crypto_asym_xform *xfrm)
        asym_op->dh.shared_secret.data = output;
        asym_op->dh.shared_secret.length = sizeof(output);
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool);
-       if (sess == NULL) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                "line %u FAILED: %s", __LINE__,
                                "Session creation failed");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -1128,8 +1131,8 @@ test_dh_gen_priv_key(struct rte_crypto_asym_xform *xfrm)
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_asym_op *asym_op = NULL;
        struct rte_crypto_op *op = NULL, *result_op = NULL;
-       struct rte_cryptodev_asym_session *sess = NULL;
-       int status = TEST_SUCCESS;
+       void *sess = NULL;
+       int ret, status = TEST_SUCCESS;
        uint8_t output[TEST_DH_MOD_LEN];
        struct rte_crypto_asym_xform xform = *xfrm;
 
@@ -1146,17 +1149,17 @@ test_dh_gen_priv_key(struct rte_crypto_asym_xform *xfrm)
        asym_op = op->asym;
 
        /* Setup a xform and op to generate private key only */
-       xform.dh.type = RTE_CRYPTO_ASYM_OP_PRIVATE_KEY_GENERATE;
        xform.next = NULL;
+       asym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_PRIV_KEY_GENERATE;
        asym_op->dh.priv_key.data = output;
        asym_op->dh.priv_key.length = sizeof(output);
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool);
-       if (sess == NULL) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                "line %u FAILED: %s", __LINE__,
                                "Session creation failed");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -1209,8 +1212,8 @@ test_dh_gen_pub_key(struct rte_crypto_asym_xform *xfrm)
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_asym_op *asym_op = NULL;
        struct rte_crypto_op *op = NULL, *result_op = NULL;
-       struct rte_cryptodev_asym_session *sess = NULL;
-       int status = TEST_SUCCESS;
+       void *sess = NULL;
+       int ret, status = TEST_SUCCESS;
        uint8_t output[TEST_DH_MOD_LEN];
        struct rte_crypto_asym_xform xform = *xfrm;
 
@@ -1229,9 +1232,9 @@ test_dh_gen_pub_key(struct rte_crypto_asym_xform *xfrm)
         * using test private key
         *
         */
-       xform.dh.type = RTE_CRYPTO_ASYM_OP_PUBLIC_KEY_GENERATE;
        xform.next = NULL;
 
+       asym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE;
        asym_op->dh.pub_key.data = output;
        asym_op->dh.pub_key.length = sizeof(output);
        /* load pre-defined private key */
@@ -1240,12 +1243,12 @@ test_dh_gen_pub_key(struct rte_crypto_asym_xform *xfrm)
                                        0);
        asym_op->dh.priv_key = dh_test_params.priv_key;
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool);
-       if (sess == NULL) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                "line %u FAILED: %s", __LINE__,
                                "Session creation failed");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -1298,8 +1301,8 @@ test_dh_gen_kp(struct rte_crypto_asym_xform *xfrm)
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_asym_op *asym_op = NULL;
        struct rte_crypto_op *op = NULL, *result_op = NULL;
-       struct rte_cryptodev_asym_session *sess = NULL;
-       int status = TEST_SUCCESS;
+       void *sess = NULL;
+       int ret, status = TEST_SUCCESS;
        uint8_t out_pub_key[TEST_DH_MOD_LEN];
        uint8_t out_prv_key[TEST_DH_MOD_LEN];
        struct rte_crypto_asym_xform pub_key_xform;
@@ -1319,22 +1322,22 @@ test_dh_gen_kp(struct rte_crypto_asym_xform *xfrm)
        /* Setup a xform chain to generate
         * private key first followed by
         * public key
-        */xform.dh.type = RTE_CRYPTO_ASYM_OP_PRIVATE_KEY_GENERATE;
+        */
        pub_key_xform.xform_type = RTE_CRYPTO_ASYM_XFORM_DH;
-       pub_key_xform.dh.type = RTE_CRYPTO_ASYM_OP_PUBLIC_KEY_GENERATE;
        xform.next = &pub_key_xform;
 
+       asym_op->dh.ke_type = RTE_CRYPTO_ASYM_KE_PUB_KEY_GENERATE;
        asym_op->dh.pub_key.data = out_pub_key;
        asym_op->dh.pub_key.length = sizeof(out_pub_key);
        asym_op->dh.priv_key.data = out_prv_key;
-       asym_op->dh.priv_key.length = sizeof(out_prv_key);
+       asym_op->dh.priv_key.length = 0;
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool);
-       if (sess == NULL) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                "line %u FAILED: %s", __LINE__,
                                "Session creation failed");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -1385,7 +1388,7 @@ test_mod_inv(void)
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_asym_op *asym_op = NULL;
        struct rte_crypto_op *op = NULL, *result_op = NULL;
-       struct rte_cryptodev_asym_session *sess = NULL;
+       void *sess = NULL;
        int status = TEST_SUCCESS;
        struct rte_cryptodev_asym_capability_idx cap_idx;
        const struct rte_cryptodev_asymmetric_xform_capability *capability;
@@ -1418,12 +1421,12 @@ test_mod_inv(void)
                                return TEST_SKIPPED;
                }
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &modinv_xform, sess_mpool);
-       if (!sess) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &modinv_xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1, "line %u "
                                "FAILED: %s", __LINE__,
                                "Session creation failed");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -1498,7 +1501,7 @@ test_mod_exp(void)
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_asym_op *asym_op = NULL;
        struct rte_crypto_op *op = NULL, *result_op = NULL;
-       struct rte_cryptodev_asym_session *sess = NULL;
+       void *sess = NULL;
        int status = TEST_SUCCESS;
        struct rte_cryptodev_asym_capability_idx cap_idx;
        const struct rte_cryptodev_asymmetric_xform_capability *capability;
@@ -1542,13 +1545,13 @@ test_mod_exp(void)
                goto error_exit;
        }
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &modex_xform, sess_mpool);
-       if (!sess) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &modex_xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                 "line %u "
                                "FAILED: %s", __LINE__,
                                "Session creation failed");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
 
@@ -1647,18 +1650,19 @@ test_dsa_sign(void)
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_asym_op *asym_op = NULL;
        struct rte_crypto_op *op = NULL, *result_op = NULL;
-       struct rte_cryptodev_asym_session *sess = NULL;
+       void *sess = NULL;
        int status = TEST_SUCCESS;
        uint8_t r[TEST_DH_MOD_LEN];
        uint8_t s[TEST_DH_MOD_LEN];
        uint8_t dgst[] = "35d81554afaad2cf18f3a1770d5fedc4ea5be344";
+       int ret;
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &dsa_xform, sess_mpool);
-       if (sess == NULL) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &dsa_xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                 "line %u FAILED: %s", __LINE__,
                                "Session creation failed");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto error_exit;
        }
        /* set up crypto op data structure */
@@ -1778,7 +1782,7 @@ test_ecdsa_sign_verify(enum curve curve_id)
        struct rte_mempool *sess_mpool = ts_params->session_mpool;
        struct rte_mempool *op_mpool = ts_params->op_mpool;
        struct crypto_testsuite_ecdsa_params input_params;
-       struct rte_cryptodev_asym_session *sess = NULL;
+       void *sess = NULL;
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_op *result_op = NULL;
        uint8_t output_buf_r[TEST_DATA_SIZE];
@@ -1787,7 +1791,7 @@ test_ecdsa_sign_verify(enum curve curve_id)
        struct rte_crypto_asym_op *asym_op;
        struct rte_cryptodev_info dev_info;
        struct rte_crypto_op *op = NULL;
-       int status = TEST_SUCCESS, ret;
+       int ret, status = TEST_SUCCESS;
 
        switch (curve_id) {
        case SECP192R1:
@@ -1832,12 +1836,12 @@ test_ecdsa_sign_verify(enum curve curve_id)
        xform.xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA;
        xform.ec.curve_id = input_params.curve;
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool);
-       if (sess == NULL) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                "line %u FAILED: %s", __LINE__,
                                "Session creation failed\n");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto exit;
        }
 
@@ -1980,7 +1984,7 @@ test_ecpm(enum curve curve_id)
        struct rte_mempool *sess_mpool = ts_params->session_mpool;
        struct rte_mempool *op_mpool = ts_params->op_mpool;
        struct crypto_testsuite_ecpm_params input_params;
-       struct rte_cryptodev_asym_session *sess = NULL;
+       void *sess = NULL;
        uint8_t dev_id = ts_params->valid_devs[0];
        struct rte_crypto_op *result_op = NULL;
        uint8_t output_buf_x[TEST_DATA_SIZE];
@@ -1989,7 +1993,7 @@ test_ecpm(enum curve curve_id)
        struct rte_crypto_asym_op *asym_op;
        struct rte_cryptodev_info dev_info;
        struct rte_crypto_op *op = NULL;
-       int status = TEST_SUCCESS, ret;
+       int ret, status = TEST_SUCCESS;
 
        switch (curve_id) {
        case SECP192R1:
@@ -2034,12 +2038,12 @@ test_ecpm(enum curve curve_id)
        xform.xform_type = RTE_CRYPTO_ASYM_XFORM_ECPM;
        xform.ec.curve_id = input_params.curve;
 
-       sess = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool);
-       if (sess == NULL) {
+       ret = rte_cryptodev_asym_session_create(dev_id, &xform, sess_mpool, &sess);
+       if (ret < 0) {
                RTE_LOG(ERR, USER1,
                                "line %u FAILED: %s", __LINE__,
                                "Session creation failed\n");
-               status = TEST_FAILED;
+               status = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;
                goto exit;
        }