get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/106352/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 106352,
    "url": "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"
    ]
}