Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/106352/?format=api
http://patchwork.dpdk.org/api/patches/106352/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20220124150339.280090-5-ciara.power@intel.com/", "project": { "id": 1, "url": "http://patchwork.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20220124150339.280090-5-ciara.power@intel.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20220124150339.280090-5-ciara.power@intel.com", "date": "2022-01-24T15:03:39", "name": "[v2,4/4] crypto: modify return value for asym session create", "commit_ref": null, "pull_url": null, "state": "superseded", "archived": true, "hash": "8e187b061b2aa6d8b39fa24515e789f25b94d874", "submitter": { "id": 978, "url": "http://patchwork.dpdk.org/api/people/978/?format=api", "name": "Power, Ciara", "email": "ciara.power@intel.com" }, "delegate": { "id": 6690, "url": "http://patchwork.dpdk.org/api/users/6690/?format=api", "username": "akhil", "first_name": "akhil", "last_name": "goyal", "email": "gakhil@marvell.com" }, "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20220124150339.280090-5-ciara.power@intel.com/mbox/", "series": [ { "id": 21331, "url": "http://patchwork.dpdk.org/api/series/21331/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=21331", "date": "2022-01-24T15:03:39", "name": "crypto: improve asym session usage", "version": 2, "mbox": "http://patchwork.dpdk.org/series/21331/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/106352/comments/", "check": "success", "checks": "http://patchwork.dpdk.org/api/patches/106352/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "X-Original-To": "patchwork@inbox.dpdk.org", "Delivered-To": "patchwork@inbox.dpdk.org", "Received": [ "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 62CA5A04A8;\n\tMon, 24 Jan 2022 16:04:24 +0100 (CET)", "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D7ECD427C7;\n\tMon, 24 Jan 2022 16:04:23 +0100 (CET)", "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n by mails.dpdk.org (Postfix) with ESMTP id 9282940040\n for <dev@dpdk.org>; Mon, 24 Jan 2022 16:04:22 +0100 (CET)", "from orsmga003.jf.intel.com ([10.7.209.27])\n by orsmga101.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Jan 2022 07:03:59 -0800", "from silpixa00400355.ir.intel.com (HELO\n silpixa00400355.ger.corp.intel.com) ([10.237.222.49])\n by orsmga003.jf.intel.com with ESMTP; 24 Jan 2022 07:03:57 -0800" ], "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1643036662; x=1674572662;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=g6L/ri2eghrjFmve/nHxWThzHUlekELsNQctQO6lZYo=;\n b=Y61ihas/izYftS6DrdkIqP1zVv4m3BqlPWYyZRv/BETAQ/Xb3Zdg2y4A\n mLu1PthI9mjU9nAcKbT0HzQpgVsA7DRlXFj+PjGTndoO5C0ZQzvrB6IVP\n Vq17BVMDx/zDf1YT08Wh97hioNHCgH5t4lg7wP+ciyOmrZ9eYF43a8Wqz\n MecfRBa3XIZScGN2WJk1U/EQL0iDjcQGnDIcPkBg65D1k3hupDx4iBrXu\n gyoxoFkJQibM5anfWfyjiXpKqpfDlOpla41btn63EiJRcKjYTn5jAadfe\n Gx0zXDg1ezP5sRvo2nxPS0BjxJ8DxuM5+S9Siaxbr15YwT2tgK/HMjsTT Q==;", "X-IronPort-AV": [ "E=McAfee;i=\"6200,9189,10236\"; a=\"233424045\"", "E=Sophos;i=\"5.88,311,1635231600\"; d=\"scan'208\";a=\"233424045\"", "E=Sophos;i=\"5.88,311,1635231600\"; d=\"scan'208\";a=\"476744151\"" ], "X-ExtLoop1": "1", "From": "Ciara Power <ciara.power@intel.com>", "To": "dev@dpdk.org", "Cc": "roy.fan.zhang@intel.com, gakhil@marvell.com, anoobj@marvell.com,\n mdr@ashroe.eu, Ciara Power <ciara.power@intel.com>,\n Declan Doherty <declan.doherty@intel.com>", "Subject": "[PATCH v2 4/4] crypto: modify return value for asym session create", "Date": "Mon, 24 Jan 2022 15:03:39 +0000", "Message-Id": "<20220124150339.280090-5-ciara.power@intel.com>", "X-Mailer": "git-send-email 2.25.1", "In-Reply-To": "<20220124150339.280090-1-ciara.power@intel.com>", "References": "<20220124150339.280090-1-ciara.power@intel.com>", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-BeenThere": "dev@dpdk.org", "X-Mailman-Version": "2.1.29", "Precedence": "list", "List-Id": "DPDK patches and discussions <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org" }, "content": "Rather than the asym session create function returning a session on\nsuccess, and a NULL value on error, it is modified to now return int\nvalues - 0 on success or -EINVAL/-ENOTSUP/-ENOMEM on failure.\nThe session to be used is passed as input.\n\nThis adds clarity on the failure of the create function, which enables\ntreating the -ENOTSUP return as TEST_SKIPPED in test apps.\n\nSigned-off-by: Ciara Power <ciara.power@intel.com>\n---\n app/test-crypto-perf/cperf_ops.c | 12 ++-\n app/test/test_cryptodev_asym.c | 122 +++++++++++++++++--------------\n lib/cryptodev/rte_cryptodev.c | 27 +++----\n lib/cryptodev/rte_cryptodev.h | 11 ++-\n 4 files changed, 97 insertions(+), 75 deletions(-)", "diff": "diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c\nindex 948dc0f608..737a47150d 100644\n--- a/app/test-crypto-perf/cperf_ops.c\n+++ b/app/test-crypto-perf/cperf_ops.c\n@@ -734,7 +734,9 @@ cperf_create_session(struct rte_mempool *sess_mp,\n \tstruct rte_crypto_sym_xform auth_xform;\n \tstruct rte_crypto_sym_xform aead_xform;\n \tstruct rte_cryptodev_sym_session *sess = NULL;\n+\tvoid *asym_sess = NULL;\n \tstruct rte_crypto_asym_xform xform = {0};\n+\tint ret;\n \n \tif (options->op_type == CPERF_ASYM_MODEX) {\n \t\txform.next = NULL;\n@@ -744,11 +746,13 @@ cperf_create_session(struct rte_mempool *sess_mp,\n \t\txform.modex.exponent.data = perf_mod_e;\n \t\txform.modex.exponent.length = sizeof(perf_mod_e);\n \n-\t\tsess = (void *)rte_cryptodev_asym_session_create(sess_mp, dev_id, &xform);\n-\t\tif (sess == NULL)\n+\t\tret = rte_cryptodev_asym_session_create(&asym_sess,\n+\t\t\t\tsess_mp, dev_id, &xform);\n+\t\tif (ret < 0) {\n+\t\t\tRTE_LOG(ERR, USER1, \"Asym session create failed\");\n \t\t\treturn NULL;\n-\n-\t\treturn sess;\n+\t\t}\n+\t\treturn asym_sess;\n \t}\n #ifdef RTE_LIB_SECURITY\n \t/*\ndiff --git a/app/test/test_cryptodev_asym.c b/app/test/test_cryptodev_asym.c\nindex a81d6292f6..f47d3555b5 100644\n--- a/app/test/test_cryptodev_asym.c\n+++ b/app/test/test_cryptodev_asym.c\n@@ -314,6 +314,7 @@ test_cryptodev_asym_op(struct crypto_testsuite_params_asym *ts_params,\n \tuint8_t dev_id = ts_params->valid_devs[0];\n \tuint8_t input[TEST_DATA_SIZE] = {0};\n \tuint8_t *result = NULL;\n+\tint ret;\n \n \tint status = TEST_SUCCESS;\n \n@@ -450,14 +451,14 @@ test_cryptodev_asym_op(struct crypto_testsuite_params_asym *ts_params,\n \t}\n \n \tif (!sessionless) {\n-\t\tsess = rte_cryptodev_asym_session_create(ts_params->session_mpool,\n-\t\t\t\tdev_id, &xform_tc);\n-\t\tif (!sess) {\n+\t\tret = rte_cryptodev_asym_session_create(&sess,\n+\t\t\t\tts_params->session_mpool, dev_id, &xform_tc);\n+\t\tif (ret < 0) {\n \t\t\tsnprintf(test_msg, ASYM_TEST_MSG_LEN,\n \t\t\t\t\t\"line %u \"\n \t\t\t\t\t\"FAILED: %s\", __LINE__,\n \t\t\t\t\t\"Session creation failed\");\n-\t\t\tstatus = TEST_FAILED;\n+\t\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\t\tgoto error_exit;\n \t\t}\n \n@@ -644,9 +645,9 @@ test_rsa_sign_verify(void)\n \tstruct crypto_testsuite_params_asym *ts_params = &testsuite_params;\n \tstruct rte_mempool *sess_mpool = ts_params->session_mpool;\n \tuint8_t dev_id = ts_params->valid_devs[0];\n-\tvoid *sess;\n+\tvoid *sess = NULL;\n \tstruct rte_cryptodev_info dev_info;\n-\tint status = TEST_SUCCESS;\n+\tint status = TEST_SUCCESS, ret;\n \n \t/* Test case supports op with exponent key only,\n \t * Check in PMD feature flag for RSA exponent key type support.\n@@ -659,12 +660,12 @@ test_rsa_sign_verify(void)\n \t\treturn TEST_SKIPPED;\n \t}\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &rsa_xform);\n-\n-\tif (!sess) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &rsa_xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1, \"Session creation failed for \"\n \t\t\t\"sign_verify\\n\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -685,9 +686,9 @@ test_rsa_enc_dec(void)\n \tstruct crypto_testsuite_params_asym *ts_params = &testsuite_params;\n \tstruct rte_mempool *sess_mpool = ts_params->session_mpool;\n \tuint8_t dev_id = ts_params->valid_devs[0];\n-\tvoid *sess;\n+\tvoid *sess = NULL;\n \tstruct rte_cryptodev_info dev_info;\n-\tint status = TEST_SUCCESS;\n+\tint status = TEST_SUCCESS, ret;\n \n \t/* Test case supports op with exponent key only,\n \t * Check in PMD feature flag for RSA exponent key type support.\n@@ -700,11 +701,11 @@ test_rsa_enc_dec(void)\n \t\treturn TEST_SKIPPED;\n \t}\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &rsa_xform);\n-\n-\tif (!sess) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &rsa_xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1, \"Session creation failed for enc_dec\\n\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -726,9 +727,9 @@ test_rsa_sign_verify_crt(void)\n \tstruct crypto_testsuite_params_asym *ts_params = &testsuite_params;\n \tstruct rte_mempool *sess_mpool = ts_params->session_mpool;\n \tuint8_t dev_id = ts_params->valid_devs[0];\n-\tvoid *sess;\n+\tvoid *sess = NULL;\n \tstruct rte_cryptodev_info dev_info;\n-\tint status = TEST_SUCCESS;\n+\tint status = TEST_SUCCESS, ret;\n \n \t/* Test case supports op with quintuple format key only,\n \t * Check im PMD feature flag for RSA quintuple key type support.\n@@ -740,12 +741,12 @@ test_rsa_sign_verify_crt(void)\n \t\treturn TEST_SKIPPED;\n \t}\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &rsa_xform_crt);\n-\n-\tif (!sess) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &rsa_xform_crt);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1, \"Session creation failed for \"\n \t\t\t\"sign_verify_crt\\n\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -767,9 +768,10 @@ test_rsa_enc_dec_crt(void)\n \tstruct crypto_testsuite_params_asym *ts_params = &testsuite_params;\n \tstruct rte_mempool *sess_mpool = ts_params->session_mpool;\n \tuint8_t dev_id = ts_params->valid_devs[0];\n-\tvoid *sess;\n+\tvoid *sess = NULL;\n \tstruct rte_cryptodev_info dev_info;\n \tint status = TEST_SUCCESS;\n+\tint ret;\n \n \t/* Test case supports op with quintuple format key only,\n \t * Check in PMD feature flag for RSA quintuple key type support.\n@@ -781,12 +783,12 @@ test_rsa_enc_dec_crt(void)\n \t\treturn TEST_SKIPPED;\n \t}\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &rsa_xform_crt);\n-\n-\tif (!sess) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &rsa_xform_crt);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1, \"Session creation failed for \"\n \t\t\t\"enc_dec_crt\\n\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -1054,6 +1056,7 @@ test_dh_gen_shared_sec(struct rte_crypto_asym_xform *xfrm)\n \tuint8_t output[TEST_DH_MOD_LEN];\n \tstruct rte_crypto_asym_xform xform = *xfrm;\n \tuint8_t peer[] = \"01234567890123456789012345678901234567890123456789\";\n+\tint ret;\n \n \t/* set up crypto op data structure */\n \top = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n@@ -1077,12 +1080,13 @@ test_dh_gen_shared_sec(struct rte_crypto_asym_xform *xfrm)\n \tasym_op->dh.shared_secret.data = output;\n \tasym_op->dh.shared_secret.length = sizeof(output);\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &xform);\n-\tif (sess == NULL) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t\"line %u FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -1138,6 +1142,7 @@ test_dh_gen_priv_key(struct rte_crypto_asym_xform *xfrm)\n \tint status = TEST_SUCCESS;\n \tuint8_t output[TEST_DH_MOD_LEN];\n \tstruct rte_crypto_asym_xform xform = *xfrm;\n+\tint ret;\n \n \t/* set up crypto op data structure */\n \top = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n@@ -1157,12 +1162,13 @@ test_dh_gen_priv_key(struct rte_crypto_asym_xform *xfrm)\n \tasym_op->dh.priv_key.data = output;\n \tasym_op->dh.priv_key.length = sizeof(output);\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &xform);\n-\tif (sess == NULL) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t\"line %u FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -1221,6 +1227,7 @@ test_dh_gen_pub_key(struct rte_crypto_asym_xform *xfrm)\n \tint status = TEST_SUCCESS;\n \tuint8_t output[TEST_DH_MOD_LEN];\n \tstruct rte_crypto_asym_xform xform = *xfrm;\n+\tint ret;\n \n \t/* set up crypto op data structure */\n \top = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n@@ -1248,12 +1255,13 @@ test_dh_gen_pub_key(struct rte_crypto_asym_xform *xfrm)\n \t\t\t\t\t0);\n \tasym_op->dh.priv_key = dh_test_params.priv_key;\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &xform);\n-\tif (sess == NULL) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t\"line %u FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -1314,6 +1322,7 @@ test_dh_gen_kp(struct rte_crypto_asym_xform *xfrm)\n \tuint8_t out_prv_key[TEST_DH_MOD_LEN];\n \tstruct rte_crypto_asym_xform pub_key_xform;\n \tstruct rte_crypto_asym_xform xform = *xfrm;\n+\tint ret;\n \n \t/* set up crypto op data structure */\n \top = rte_crypto_op_alloc(op_mpool, RTE_CRYPTO_OP_TYPE_ASYMMETRIC);\n@@ -1339,12 +1348,13 @@ test_dh_gen_kp(struct rte_crypto_asym_xform *xfrm)\n \tasym_op->dh.priv_key.data = out_prv_key;\n \tasym_op->dh.priv_key.length = sizeof(out_prv_key);\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &xform);\n-\tif (sess == NULL) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t\"line %u FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -1430,12 +1440,13 @@ test_mod_inv(void)\n \t\t\t\treturn TEST_SKIPPED;\n \t\t}\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &modinv_xform);\n-\tif (!sess) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &modinv_xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1, \"line %u \"\n \t\t\t\t\"FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -1556,13 +1567,14 @@ test_mod_exp(void)\n \t\tgoto error_exit;\n \t}\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &modex_xform);\n-\tif (!sess) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &modex_xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t \"line %u \"\n \t\t\t\t\"FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \n@@ -1668,13 +1680,14 @@ test_dsa_sign(void)\n \tuint8_t r[TEST_DH_MOD_LEN];\n \tuint8_t s[TEST_DH_MOD_LEN];\n \tuint8_t dgst[] = \"35d81554afaad2cf18f3a1770d5fedc4ea5be344\";\n+\tint ret;\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &dsa_xform);\n-\tif (sess == NULL) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool, dev_id, &dsa_xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t \"line %u FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto error_exit;\n \t}\n \t/* set up crypto op data structure */\n@@ -1850,12 +1863,13 @@ test_ecdsa_sign_verify(enum curve curve_id)\n \txform.xform_type = RTE_CRYPTO_ASYM_XFORM_ECDSA;\n \txform.ec.curve_id = input_params.curve;\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &xform);\n-\tif (sess == NULL) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool,\n+\t\t\tdev_id, &xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t\"line %u FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\\n\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto exit;\n \t}\n \n@@ -2054,12 +2068,12 @@ test_ecpm(enum curve curve_id)\n \txform.xform_type = RTE_CRYPTO_ASYM_XFORM_ECPM;\n \txform.ec.curve_id = input_params.curve;\n \n-\tsess = rte_cryptodev_asym_session_create(sess_mpool, dev_id, &xform);\n-\tif (sess == NULL) {\n+\tret = rte_cryptodev_asym_session_create(&sess, sess_mpool, dev_id, &xform);\n+\tif (ret < 0) {\n \t\tRTE_LOG(ERR, USER1,\n \t\t\t\t\"line %u FAILED: %s\", __LINE__,\n \t\t\t\t\"Session creation failed\\n\");\n-\t\tstatus = TEST_FAILED;\n+\t\tstatus = (ret == -ENOTSUP) ? TEST_SKIPPED : TEST_FAILED;\n \t\tgoto exit;\n \t}\n \ndiff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.c\nindex 2a591930de..a26a025f9d 100644\n--- a/lib/cryptodev/rte_cryptodev.c\n+++ b/lib/cryptodev/rte_cryptodev.c\n@@ -1911,9 +1911,9 @@ rte_cryptodev_sym_session_create(struct rte_mempool *mp)\n \treturn sess;\n }\n \n-void *\n-rte_cryptodev_asym_session_create(struct rte_mempool *mp, uint8_t dev_id,\n-\t\tstruct rte_crypto_asym_xform *xforms)\n+int\n+rte_cryptodev_asym_session_create(void **session, struct rte_mempool *mp,\n+\t\tuint8_t dev_id, struct rte_crypto_asym_xform *xforms)\n {\n \tstruct rte_cryptodev_asym_session *sess;\n \tuint32_t session_priv_data_sz;\n@@ -1925,18 +1925,18 @@ rte_cryptodev_asym_session_create(struct rte_mempool *mp, uint8_t dev_id,\n \n \tif (!rte_cryptodev_is_valid_dev(dev_id)) {\n \t\tCDEV_LOG_ERR(\"Invalid dev_id=%\" PRIu8, dev_id);\n-\t\treturn NULL;\n+\t\treturn -EINVAL;\n \t}\n \tsession_priv_data_sz = rte_cryptodev_asym_get_private_session_size(\n \t\t\tdev_id);\n \tdev = rte_cryptodev_pmd_get_dev(dev_id);\n \n \tif (dev == NULL)\n-\t\treturn NULL;\n+\t\treturn -EINVAL;\n \n \tif (!mp) {\n \t\tCDEV_LOG_ERR(\"invalid mempool\\n\");\n-\t\treturn NULL;\n+\t\treturn -EINVAL;\n \t}\n \n \tpool_priv = rte_mempool_get_priv(mp);\n@@ -1944,22 +1944,23 @@ rte_cryptodev_asym_session_create(struct rte_mempool *mp, uint8_t dev_id,\n \tif (pool_priv->max_priv_session_sz < session_priv_data_sz) {\n \t\tCDEV_LOG_DEBUG(\n \t\t\t\"The private session data size used when creating the mempool is smaller than this device's private session data.\");\n-\t\treturn NULL;\n+\t\treturn -EINVAL;\n \t}\n \n \t/* Verify if provided mempool can hold elements big enough. */\n \tif (mp->elt_size < session_header_size + session_priv_data_sz) {\n \t\tCDEV_LOG_ERR(\n \t\t\t\"mempool elements too small to hold session objects\");\n-\t\treturn NULL;\n+\t\treturn -EINVAL;\n \t}\n \n \t/* Allocate a session structure from the session pool */\n-\tif (rte_mempool_get(mp, (void **)&sess)) {\n+\tif (rte_mempool_get(mp, session)) {\n \t\tCDEV_LOG_ERR(\"couldn't get object from session mempool\");\n-\t\treturn NULL;\n+\t\treturn -ENOMEM;\n \t}\n \n+\tsess = *session;\n \tsess->driver_id = dev->driver_id;\n \tsess->user_data_sz = pool_priv->user_data_sz;\n \tsess->max_priv_session_sz = pool_priv->max_priv_session_sz;\n@@ -1969,7 +1970,7 @@ rte_cryptodev_asym_session_create(struct rte_mempool *mp, uint8_t dev_id,\n \t */\n \tmemset(sess->sess_private_data, 0, session_priv_data_sz + sess->user_data_sz);\n \n-\tRTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->asym_session_configure, NULL);\n+\tRTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->asym_session_configure, -ENOTSUP);\n \n \tif (sess->sess_private_data[0] == 0) {\n \t\tret = dev->dev_ops->asym_session_configure(dev,\n@@ -1979,12 +1980,12 @@ rte_cryptodev_asym_session_create(struct rte_mempool *mp, uint8_t dev_id,\n \t\t\tCDEV_LOG_ERR(\n \t\t\t\t\"dev_id %d failed to configure session details\",\n \t\t\t\tdev_id);\n-\t\t\treturn NULL;\n+\t\t\treturn ret;\n \t\t}\n \t}\n \n \trte_cryptodev_trace_asym_session_create(mp, sess);\n-\treturn sess;\n+\treturn 0;\n }\n \n int\ndiff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h\nindex 6a4d6d9934..89739def91 100644\n--- a/lib/cryptodev/rte_cryptodev.h\n+++ b/lib/cryptodev/rte_cryptodev.h\n@@ -990,18 +990,21 @@ rte_cryptodev_sym_session_create(struct rte_mempool *mempool);\n /**\n * Create asymmetric crypto session header (generic with no private data)\n *\n+ * @param session void ** for session to be used\n * @param mempool mempool to allocate asymmetric session\n * objects from\n * @param dev_id ID of device that we want the session to be used on\n * @param xforms Asymmetric crypto transform operations to apply on flow\n * processed with this session\n * @return\n- * - On success return pointer to asym-session\n- * - On failure returns NULL\n+ * - 0 on success.\n+ * - -EINVAL on invalid device ID, or invalid mempool.\n+ * - -ENOMEM on memory error for session allocation.\n+ * - -ENOTSUP if device doesn't support session configuration.\n */\n __rte_experimental\n-void *\n-rte_cryptodev_asym_session_create(struct rte_mempool *mempool,\n+int\n+rte_cryptodev_asym_session_create(void **session, struct rte_mempool *mempool,\n \t\tuint8_t dev_id, struct rte_crypto_asym_xform *xforms);\n \n /**\n", "prefixes": [ "v2", "4/4" ] }{ "id": 106352, "url": "