get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 64917,
    "url": "http://patches.dpdk.org/api/patches/64917/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20200120131146.1135-3-adamx.dybkowski@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.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": "<20200120131146.1135-3-adamx.dybkowski@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200120131146.1135-3-adamx.dybkowski@intel.com",
    "date": "2020-01-20T13:11:45",
    "name": "[v7,2/3] test/crypto: add capability checks",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "efeaa608ec7c63efd2e15f6aeaea1df32af70631",
    "submitter": {
        "id": 1322,
        "url": "http://patches.dpdk.org/api/people/1322/?format=api",
        "name": "Dybkowski, AdamX",
        "email": "adamx.dybkowski@intel.com"
    },
    "delegate": {
        "id": 6690,
        "url": "http://patches.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20200120131146.1135-3-adamx.dybkowski@intel.com/mbox/",
    "series": [
        {
            "id": 8218,
            "url": "http://patches.dpdk.org/api/series/8218/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8218",
            "date": "2020-01-20T13:11:43",
            "name": "Refactor crypto unit tests.",
            "version": 7,
            "mbox": "http://patches.dpdk.org/series/8218/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/64917/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/64917/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 4F8CAA0528;\n\tMon, 20 Jan 2020 14:12:12 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 2AE2D3772;\n\tMon, 20 Jan 2020 14:11:57 +0100 (CET)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by dpdk.org (Postfix) with ESMTP id 197B12F4F\n for <dev@dpdk.org>; Mon, 20 Jan 2020 14:11:53 +0100 (CET)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n by fmsmga104.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n 20 Jan 2020 05:11:53 -0800",
            "from adamdybx-mobl.ger.corp.intel.com (HELO localhost.localdomain)\n ([10.104.125.17])\n by fmsmga002.fm.intel.com with ESMTP; 20 Jan 2020 05:11:51 -0800"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.70,342,1574150400\"; d=\"scan'208\";a=\"258704568\"",
        "From": "Adam Dybkowski <adamx.dybkowski@intel.com>",
        "To": "dev@dpdk.org,\n\tfiona.trahe@intel.com,\n\takhil.goyal@nxp.com",
        "Cc": "Adam Dybkowski <adamx.dybkowski@intel.com>",
        "Date": "Mon, 20 Jan 2020 14:11:45 +0100",
        "Message-Id": "<20200120131146.1135-3-adamx.dybkowski@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20200120131146.1135-1-adamx.dybkowski@intel.com>",
        "References": "<20200117144651.26804-1-adamx.dybkowski@intel.com>\n <20200120131146.1135-1-adamx.dybkowski@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v7 2/3] test/crypto: add capability checks",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch adds capability checks to many tests meant to be run\nin the future on various PMDs. This way the code is prepared for\nmore thorough refactoring in order to create one big central\nunit tests array.\n\nSigned-off-by: Adam Dybkowski <adamx.dybkowski@intel.com>\n---\n app/test/test_cryptodev.c | 637 ++++++++++++++++++++++++++++++++++++--\n 1 file changed, 609 insertions(+), 28 deletions(-)",
    "diff": "diff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c\nindex 45a8dbacf..928b0e2cf 100644\n--- a/app/test/test_cryptodev.c\n+++ b/app/test/test_cryptodev.c\n@@ -674,6 +674,13 @@ test_device_configure_invalid_queue_pair_ids(void)\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tuint16_t orig_nb_qps = ts_params->conf.nb_queue_pairs;\n \n+\t/* This test is for QAT and NITROX PMDs only */\n+\tif (gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)) &&\n+\t    gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_NITROX_PMD)))\n+\t\treturn -ENOTSUP;\n+\n \t/* Stop the device in case it's started so it can be configured */\n \trte_cryptodev_stop(ts_params->valid_devs[0]);\n \n@@ -745,6 +752,11 @@ test_queue_pair_descriptor_setup(void)\n \n \tuint16_t qp_id;\n \n+\t/* This test is for QAT PMD only */\n+\tif (gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)))\n+\t\treturn -ENOTSUP;\n+\n \t/* Stop the device in case it's started so it can be configured */\n \trte_cryptodev_stop(ts_params->valid_devs[0]);\n \n@@ -1353,6 +1365,19 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SHA1_HMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_AES_CBC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Generate test mbuf data and space for digest */\n \tut_params->ibuf = setup_test_string(ts_params->mbuf_pool,\n \t\t\tcatch_22_quote,\tQUOTE_512_BYTES, 0);\n@@ -2333,6 +2358,20 @@ test_snow3g_authentication(const struct snow3g_hash_test_data *tdata)\n \tunsigned plaintext_len;\n \tuint8_t *plaintext;\n \n+\t/* QAT PMD supports byte-aligned data only */\n+\tif ((tdata->validAuthLenInBits.len % 8 != 0) &&\n+\t\t\t(gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\t\tRTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD))))\n+\t\treturn -ENOTSUP;\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SNOW3G_UIA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_hash_session(ts_params->valid_devs[0],\n \t\t\ttdata->key.data, tdata->key.len,\n@@ -2393,6 +2432,20 @@ test_snow3g_authentication_verify(const struct snow3g_hash_test_data *tdata)\n \tunsigned plaintext_len;\n \tuint8_t *plaintext;\n \n+\t/* QAT PMD supports byte-aligned data only */\n+\tif ((tdata->validAuthLenInBits.len % 8 != 0) &&\n+\t\t\t(gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\t\tRTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD))))\n+\t\treturn -ENOTSUP;\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SNOW3G_UIA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_hash_session(ts_params->valid_devs[0],\n \t\t\t\ttdata->key.data, tdata->key.len,\n@@ -2453,6 +2506,14 @@ test_kasumi_authentication(const struct kasumi_hash_test_data *tdata)\n \tunsigned plaintext_len;\n \tuint8_t *plaintext;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_KASUMI_F9;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create KASUMI session */\n \tretval = create_wireless_algo_hash_session(ts_params->valid_devs[0],\n \t\t\ttdata->key.data, tdata->key.len,\n@@ -2513,6 +2574,14 @@ test_kasumi_authentication_verify(const struct kasumi_hash_test_data *tdata)\n \tunsigned plaintext_len;\n \tuint8_t *plaintext;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_KASUMI_F9;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create KASUMI session */\n \tretval = create_wireless_algo_hash_session(ts_params->valid_devs[0],\n \t\t\t\ttdata->key.data, tdata->key.len,\n@@ -2712,6 +2781,14 @@ test_kasumi_encryption(const struct kasumi_test_data *tdata)\n \tunsigned plaintext_pad_len;\n \tunsigned plaintext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create KASUMI session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_ENCRYPT,\n@@ -2784,6 +2861,14 @@ test_kasumi_encryption_sgl(const struct kasumi_test_data *tdata)\n \n \tstruct rte_cryptodev_info dev_info;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -2862,6 +2947,14 @@ test_kasumi_encryption_oop(const struct kasumi_test_data *tdata)\n \tunsigned plaintext_pad_len;\n \tunsigned plaintext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create KASUMI session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_ENCRYPT,\n@@ -2935,6 +3028,14 @@ test_kasumi_encryption_oop_sgl(const struct kasumi_test_data *tdata)\n \n \tstruct rte_cryptodev_info dev_info;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -3012,6 +3113,14 @@ test_kasumi_decryption_oop(const struct kasumi_test_data *tdata)\n \tunsigned ciphertext_pad_len;\n \tunsigned ciphertext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create KASUMI session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_DECRYPT,\n@@ -3081,6 +3190,14 @@ test_kasumi_decryption(const struct kasumi_test_data *tdata)\n \tunsigned ciphertext_pad_len;\n \tunsigned ciphertext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create KASUMI session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_DECRYPT,\n@@ -3148,6 +3265,14 @@ test_snow3g_encryption(const struct snow3g_test_data *tdata)\n \tunsigned plaintext_pad_len;\n \tunsigned plaintext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_ENCRYPT,\n@@ -3214,6 +3339,14 @@ test_snow3g_encryption_oop(const struct snow3g_test_data *tdata)\n \tunsigned plaintext_pad_len;\n \tunsigned plaintext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_ENCRYPT,\n@@ -3289,6 +3422,14 @@ test_snow3g_encryption_oop_sgl(const struct snow3g_test_data *tdata)\n \n \tstruct rte_cryptodev_info dev_info;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -3390,6 +3531,19 @@ test_snow3g_encryption_offset_oop(const struct snow3g_test_data *tdata)\n \tuint8_t extra_offset = 4;\n \tuint8_t *expected_ciphertext_shifted;\n \n+\t/* QAT PMD supports byte-aligned data only */\n+\tif (gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)))\n+\t\treturn -ENOTSUP;\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_ENCRYPT,\n@@ -3481,6 +3635,14 @@ static int test_snow3g_decryption(const struct snow3g_test_data *tdata)\n \tunsigned ciphertext_pad_len;\n \tunsigned ciphertext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_DECRYPT,\n@@ -3544,6 +3706,14 @@ static int test_snow3g_decryption_oop(const struct snow3g_test_data *tdata)\n \tunsigned ciphertext_pad_len;\n \tunsigned ciphertext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_cipher_session(ts_params->valid_devs[0],\n \t\t\t\t\tRTE_CRYPTO_CIPHER_OP_DECRYPT,\n@@ -3704,6 +3874,19 @@ test_snow3g_cipher_auth(const struct snow3g_test_data *tdata)\n \tunsigned plaintext_pad_len;\n \tunsigned plaintext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SNOW3G_UIA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create SNOW 3G session */\n \tretval = create_wireless_algo_cipher_auth_session(ts_params->valid_devs[0],\n \t\t\tRTE_CRYPTO_CIPHER_OP_ENCRYPT,\n@@ -3791,6 +3974,19 @@ test_snow3g_auth_cipher(const struct snow3g_test_data *tdata,\n \n \tstruct rte_cryptodev_info dev_info;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SNOW3G_UIA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -3955,6 +4151,19 @@ test_snow3g_auth_cipher_sgl(const struct snow3g_test_data *tdata,\n \n \tstruct rte_cryptodev_info dev_info;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SNOW3G_UIA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_SNOW3G_UEA2;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -4135,6 +4344,19 @@ test_kasumi_auth_cipher(const struct kasumi_test_data *tdata,\n \n \tstruct rte_cryptodev_info dev_info;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_KASUMI_F9;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -4301,6 +4523,19 @@ test_kasumi_auth_cipher_sgl(const struct kasumi_test_data *tdata,\n \n \tstruct rte_cryptodev_info dev_info;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_KASUMI_F9;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -4476,6 +4711,19 @@ test_kasumi_cipher_auth(const struct kasumi_test_data *tdata)\n \tunsigned plaintext_pad_len;\n \tunsigned plaintext_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_KASUMI_F9;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_KASUMI_F8;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create KASUMI session */\n \tretval = create_wireless_algo_cipher_auth_session(\n \t\t\tts_params->valid_devs[0],\n@@ -4730,6 +4978,12 @@ test_zuc_authentication(const struct wireless_test_data *tdata)\n \n \tstruct rte_cryptodev_sym_capability_idx cap_idx;\n \n+\t/* QAT PMD supports byte-aligned data only */\n+\tif ((tdata->validAuthLenInBits.len % 8 != 0) &&\n+\t\t\t(gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\t\tRTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD))))\n+\t\treturn -ENOTSUP;\n+\n \t/* Check if device supports ZUC EIA3 */\n \tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n \tcap_idx.algo.auth = RTE_CRYPTO_AUTH_ZUC_EIA3;\n@@ -4781,7 +5035,7 @@ test_zuc_authentication(const struct wireless_test_data *tdata)\n \tTEST_ASSERT_BUFFERS_ARE_EQUAL(\n \tut_params->digest,\n \ttdata->digest.data,\n-\tDIGEST_BYTE_LENGTH_KASUMI_F9,\n+\ttdata->digest.len,\n \t\"ZUC Generated auth tag not as expected\");\n \n \treturn 0;\n@@ -5671,6 +5925,11 @@ test_zuc_hash_generate_test_case_6(void)\n static int\n test_zuc_hash_generate_test_case_7(void)\n {\n+\t/* This test is not for SW ZUC PMD */\n+\tif (gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_ZUC_PMD)))\n+\t\treturn -ENOTSUP;\n+\n \treturn test_zuc_authentication(&zuc_test_case_auth_2080b);\n }\n \n@@ -5695,6 +5954,11 @@ test_zuc_cipher_auth_test_case_2(void)\n static int\n test_zuc_auth_cipher_test_case_1(void)\n {\n+\t/* This test is not for SW ZUC PMD */\n+\tif (gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_ZUC_PMD)))\n+\t\treturn -ENOTSUP;\n+\n \treturn test_zuc_auth_cipher(\n \t\t&zuc_auth_cipher_test_case_1, IN_PLACE, 0);\n }\n@@ -6625,13 +6889,26 @@ test_authenticated_encryption(const struct aead_test_data *tdata)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n-\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n \n \tint retval;\n \tuint8_t *ciphertext, *auth_tag;\n \tuint16_t plaintext_pad_len;\n \tuint32_t i;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tconst struct rte_cryptodev_symmetric_capability *capability;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n+\tcap_idx.algo.aead = tdata->algo;\n+\tcapability = rte_cryptodev_sym_capability_get(\n+\t\t\tts_params->valid_devs[0], &cap_idx);\n+\tif (capability == NULL)\n+\t\treturn -ENOTSUP;\n+\tif (rte_cryptodev_sym_capability_check_aead(\n+\t\t\tcapability, tdata->key.len, tdata->auth_tag.len,\n+\t\t\ttdata->aad.len, tdata->iv.len))\n+\t\treturn -ENOTSUP;\n+\n \t/* Create AEAD session */\n \tretval = create_aead_session(ts_params->valid_devs[0],\n \t\t\ttdata->algo,\n@@ -6639,15 +6916,6 @@ test_authenticated_encryption(const struct aead_test_data *tdata)\n \t\t\ttdata->key.data, tdata->key.len,\n \t\t\ttdata->aad.len, tdata->auth_tag.len,\n \t\t\ttdata->iv.len);\n-\n-\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n-\tcap_idx.algo.aead = tdata->algo;\n-\n-\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n-\t\t\t&cap_idx) == NULL) {\n-\t\treturn -ENOTSUP;\n-\t}\n-\n \tif (retval < 0)\n \t\treturn retval;\n \n@@ -6732,6 +7000,18 @@ test_pdcp_proto(int i, int oop,\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \tuint8_t *plaintext;\n \tint ret = TEST_SUCCESS;\n+\tstruct rte_security_ctx *ctx = (struct rte_security_ctx *)\n+\t\t\t\trte_cryptodev_get_sec_ctx(\n+\t\t\t\tts_params->valid_devs[0]);\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_security_capability_idx sec_cap_idx;\n+\n+\tsec_cap_idx.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL;\n+\tsec_cap_idx.protocol = RTE_SECURITY_PROTOCOL_PDCP;\n+\tsec_cap_idx.pdcp.domain = pdcp_test_params[i].domain;\n+\tif (rte_security_capability_get(ctx, &sec_cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n \n \t/* Generate test mbuf data */\n \tut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);\n@@ -6794,10 +7074,6 @@ test_pdcp_proto(int i, int oop,\n \t\t.crypto_xform = &ut_params->cipher_xform\n \t};\n \n-\tstruct rte_security_ctx *ctx = (struct rte_security_ctx *)\n-\t\t\t\trte_cryptodev_get_sec_ctx(\n-\t\t\t\tts_params->valid_devs[0]);\n-\n \t/* Create security session */\n \tut_params->sec_session = rte_security_session_create(ctx,\n \t\t\t\t&sess_conf, ts_params->session_priv_mpool);\n@@ -6898,6 +7174,18 @@ test_pdcp_proto_SGL(int i, int oop,\n \tint to_trn_tbl[16];\n \tint segs = 1;\n \tunsigned int trn_data = 0;\n+\tstruct rte_security_ctx *ctx = (struct rte_security_ctx *)\n+\t\t\t\trte_cryptodev_get_sec_ctx(\n+\t\t\t\tts_params->valid_devs[0]);\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_security_capability_idx sec_cap_idx;\n+\n+\tsec_cap_idx.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL;\n+\tsec_cap_idx.protocol = RTE_SECURITY_PROTOCOL_PDCP;\n+\tsec_cap_idx.pdcp.domain = pdcp_test_params[i].domain;\n+\tif (rte_security_capability_get(ctx, &sec_cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n \n \tif (fragsz > input_vec_len)\n \t\tfragsz = input_vec_len;\n@@ -7043,10 +7331,6 @@ test_pdcp_proto_SGL(int i, int oop,\n \t\t.crypto_xform = &ut_params->cipher_xform\n \t};\n \n-\tstruct rte_security_ctx *ctx = (struct rte_security_ctx *)\n-\t\t\t\trte_cryptodev_get_sec_ctx(\n-\t\t\t\tts_params->valid_devs[0]);\n-\n \t/* Create security session */\n \tut_params->sec_session = rte_security_session_create(ctx,\n \t\t\t\t&sess_conf, ts_params->session_priv_mpool);\n@@ -7443,6 +7727,8 @@ test_AES_GCM_auth_encryption_fail_iv_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.iv.data[0] += 1;\n \tres = test_authenticated_encryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7457,6 +7743,8 @@ test_AES_GCM_auth_encryption_fail_in_data_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.plaintext.data[0] += 1;\n \tres = test_authenticated_encryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7471,6 +7759,8 @@ test_AES_GCM_auth_encryption_fail_out_data_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.ciphertext.data[0] += 1;\n \tres = test_authenticated_encryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7485,6 +7775,8 @@ test_AES_GCM_auth_encryption_fail_aad_len_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.aad.len += 1;\n \tres = test_authenticated_encryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7502,6 +7794,8 @@ test_AES_GCM_auth_encryption_fail_aad_corrupt(void)\n \taad[0] += 1;\n \ttdata.aad.data = aad;\n \tres = test_authenticated_encryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7516,6 +7810,8 @@ test_AES_GCM_auth_encryption_fail_tag_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.auth_tag.data[0] += 1;\n \tres = test_authenticated_encryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"encryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7525,12 +7821,25 @@ test_authenticated_decryption(const struct aead_test_data *tdata)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n-\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n \n \tint retval;\n \tuint8_t *plaintext;\n \tuint32_t i;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tconst struct rte_cryptodev_symmetric_capability *capability;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n+\tcap_idx.algo.aead = tdata->algo;\n+\tcapability = rte_cryptodev_sym_capability_get(\n+\t\t\tts_params->valid_devs[0], &cap_idx);\n+\tif (capability == NULL)\n+\t\treturn -ENOTSUP;\n+\tif (rte_cryptodev_sym_capability_check_aead(\n+\t\t\tcapability, tdata->key.len, tdata->auth_tag.len,\n+\t\t\ttdata->aad.len, tdata->iv.len))\n+\t\treturn -ENOTSUP;\n+\n \t/* Create AEAD session */\n \tretval = create_aead_session(ts_params->valid_devs[0],\n \t\t\ttdata->algo,\n@@ -7541,14 +7850,6 @@ test_authenticated_decryption(const struct aead_test_data *tdata)\n \tif (retval < 0)\n \t\treturn retval;\n \n-\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n-\tcap_idx.algo.aead = tdata->algo;\n-\n-\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n-\t\t\t&cap_idx) == NULL) {\n-\t\treturn -ENOTSUP;\n-\t}\n-\n \t/* alloc mbuf and set payload */\n \tif (tdata->aad.len > MBUF_SIZE) {\n \t\tut_params->ibuf = rte_pktmbuf_alloc(ts_params->large_mbuf_pool);\n@@ -7766,6 +8067,8 @@ test_AES_GCM_auth_decryption_fail_iv_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.iv.data[0] += 1;\n \tres = test_authenticated_decryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7780,6 +8083,8 @@ test_AES_GCM_auth_decryption_fail_in_data_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.plaintext.data[0] += 1;\n \tres = test_authenticated_decryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7793,6 +8098,8 @@ test_AES_GCM_auth_decryption_fail_out_data_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.ciphertext.data[0] += 1;\n \tres = test_authenticated_decryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7806,6 +8113,8 @@ test_AES_GCM_auth_decryption_fail_aad_len_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.aad.len += 1;\n \tres = test_authenticated_decryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7822,6 +8131,8 @@ test_AES_GCM_auth_decryption_fail_aad_corrupt(void)\n \taad[0] += 1;\n \ttdata.aad.data = aad;\n \tres = test_authenticated_decryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"decryption not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7835,6 +8146,8 @@ test_AES_GCM_auth_decryption_fail_tag_corrupt(void)\n \tmemcpy(&tdata, &gcm_test_case_7, sizeof(struct aead_test_data));\n \ttdata.auth_tag.data[0] += 1;\n \tres = test_authenticated_decryption(&tdata);\n+\tif (res == -ENOTSUP)\n+\t\treturn res;\n \tTEST_ASSERT_EQUAL(res, TEST_FAILED, \"authentication not failed\");\n \treturn TEST_SUCCESS;\n }\n@@ -7849,6 +8162,14 @@ test_authenticated_encryption_oop(const struct aead_test_data *tdata)\n \tuint8_t *ciphertext, *auth_tag;\n \tuint16_t plaintext_pad_len;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n+\tcap_idx.algo.aead = tdata->algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create AEAD session */\n \tretval = create_aead_session(ts_params->valid_devs[0],\n \t\t\ttdata->algo,\n@@ -7926,6 +8247,14 @@ test_authenticated_decryption_oop(const struct aead_test_data *tdata)\n \tint retval;\n \tuint8_t *plaintext;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n+\tcap_idx.algo.aead = tdata->algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create AEAD session */\n \tretval = create_aead_session(ts_params->valid_devs[0],\n \t\t\ttdata->algo,\n@@ -7998,6 +8327,21 @@ test_authenticated_encryption_sessionless(\n \tuint16_t plaintext_pad_len;\n \tuint8_t key[tdata->key.len + 1];\n \n+\t/* This test is for AESNI MB and AESNI GCM PMDs only */\n+\tif ((gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD))) &&\n+\t\t\t(gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\t\tRTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD))))\n+\t\treturn -ENOTSUP;\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n+\tcap_idx.algo.aead = tdata->algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \tut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);\n \n \t/* clear mbuf payload */\n@@ -8079,6 +8423,21 @@ test_authenticated_decryption_sessionless(\n \tuint8_t *plaintext;\n \tuint8_t key[tdata->key.len + 1];\n \n+\t/* This test is for AESNI MB and AESNI GCM PMDs only */\n+\tif ((gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_AESNI_MB_PMD))) &&\n+\t\t\t(gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\t\tRTE_STR(CRYPTODEV_NAME_AESNI_GCM_PMD))))\n+\t\treturn -ENOTSUP;\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n+\tcap_idx.algo.aead = tdata->algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* alloc mbuf and set payload */\n \tut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);\n \n@@ -8257,6 +8616,19 @@ test_stats(void)\n \tstruct rte_cryptodev *dev;\n \tcryptodev_stats_get_t temp_pfn;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SHA1_HMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_AES_CBC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_stats_reset(ts_params->valid_devs[0]);\n \tTEST_ASSERT((rte_cryptodev_stats_get(ts_params->valid_devs[0] + 600,\n \t\t\t&stats) == -ENODEV),\n@@ -8391,6 +8763,14 @@ test_MD5_HMAC_generate(const struct HMAC_MD5_vector *test_case)\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_MD5_HMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \tif (MD5_HMAC_create_session(ts_params, ut_params,\n \t\t\tRTE_CRYPTO_AUTH_OP_GENERATE, test_case))\n \t\treturn TEST_FAILED;\n@@ -8437,6 +8817,14 @@ test_MD5_HMAC_verify(const struct HMAC_MD5_vector *test_case)\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_MD5_HMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \tif (MD5_HMAC_create_session(ts_params, ut_params,\n \t\t\tRTE_CRYPTO_AUTH_OP_VERIFY, test_case)) {\n \t\treturn TEST_FAILED;\n@@ -8495,6 +8883,19 @@ test_multi_session(void)\n \n \tuint16_t i;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SHA512_HMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_AES_CBC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \ttest_AES_CBC_HMAC_SHA512_decrypt_create_session_params(ut_params,\n \t\t\taes_cbc_key, hmac_sha512_key);\n \n@@ -8610,6 +9011,19 @@ test_multi_session_random_usage(void)\n \n \t};\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_SHA512_HMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_AES_CBC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \n \tsessions = rte_malloc(NULL,\n@@ -8692,6 +9106,14 @@ test_null_cipher_only_operation(void)\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_NULL;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Generate test mbuf data and space for digest */\n \tut_params->ibuf = setup_test_string(ts_params->mbuf_pool,\n \t\t\tcatch_22_quote, QUOTE_512_BYTES, 0);\n@@ -8758,6 +9180,14 @@ test_null_auth_only_operation(void)\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \tuint8_t *digest;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_NULL;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Generate test mbuf data and space for digest */\n \tut_params->ibuf = setup_test_string(ts_params->mbuf_pool,\n \t\t\tcatch_22_quote, QUOTE_512_BYTES, 0);\n@@ -8830,6 +9260,19 @@ test_null_cipher_auth_operation(void)\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \tuint8_t *digest;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_NULL;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_NULL;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Generate test mbuf data and space for digest */\n \tut_params->ibuf = setup_test_string(ts_params->mbuf_pool,\n \t\t\tcatch_22_quote, QUOTE_512_BYTES, 0);\n@@ -8918,6 +9361,19 @@ test_null_auth_cipher_operation(void)\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \tuint8_t *digest;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_NULL;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = RTE_CRYPTO_CIPHER_NULL;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Generate test mbuf data */\n \tut_params->ibuf = setup_test_string(ts_params->mbuf_pool,\n \t\t\tcatch_22_quote, QUOTE_512_BYTES, 0);\n@@ -9007,6 +9463,11 @@ test_null_invalid_operation(void)\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \tint ret;\n \n+\t/* This test is for NULL PMD only */\n+\tif (gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_NULL_PMD)))\n+\t\treturn -ENOTSUP;\n+\n \t/* Setup Cipher Parameters */\n \tut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n \tut_params->cipher_xform.next = NULL;\n@@ -9059,6 +9520,11 @@ test_null_burst_operation(void)\n \tstruct rte_crypto_op *burst[NULL_BURST_LENGTH] = { NULL };\n \tstruct rte_crypto_op *burst_dequeued[NULL_BURST_LENGTH] = { NULL };\n \n+\t/* This test is for NULL PMD only */\n+\tif (gbl_driver_id != rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_NULL_PMD)))\n+\t\treturn -ENOTSUP;\n+\n \t/* Setup Cipher Parameters */\n \tut_params->cipher_xform.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n \tut_params->cipher_xform.next = &ut_params->auth_xform;\n@@ -9235,6 +9701,14 @@ test_AES_GMAC_authentication(const struct gmac_test_data *tdata)\n \tTEST_ASSERT_NOT_EQUAL(tdata->gmac_tag.len, 0,\n \t\t\t      \"No GMAC length in the source data\");\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_AES_GMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \tretval = create_gmac_session(ts_params->valid_devs[0],\n \t\t\ttdata, RTE_CRYPTO_AUTH_OP_GENERATE);\n \n@@ -9338,6 +9812,14 @@ test_AES_GMAC_authentication_verify(const struct gmac_test_data *tdata)\n \tTEST_ASSERT_NOT_EQUAL(tdata->gmac_tag.len, 0,\n \t\t\t      \"No GMAC length in the source data\");\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = RTE_CRYPTO_AUTH_AES_GMAC;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \tretval = create_gmac_session(ts_params->valid_devs[0],\n \t\t\ttdata, RTE_CRYPTO_AUTH_OP_VERIFY);\n \n@@ -9896,6 +10378,14 @@ test_authentication_verify_fail_when_data_corruption(\n \n \tuint8_t *plaintext;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = reference->auth_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create session */\n \tretval = create_auth_session(ut_params,\n \t\t\tts_params->valid_devs[0],\n@@ -9949,6 +10439,14 @@ test_authentication_verify_GMAC_fail_when_corruption(\n \tint retval;\n \tuint8_t *plaintext;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = reference->auth_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create session */\n \tretval = create_auth_cipher_session(ut_params,\n \t\t\tts_params->valid_devs[0],\n@@ -10006,6 +10504,19 @@ test_authenticated_decryption_fail_when_corruption(\n \n \tuint8_t *ciphertext;\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = reference->auth_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = reference->crypto_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create session */\n \tretval = create_auth_cipher_session(ut_params,\n \t\t\tts_params->valid_devs[0],\n@@ -10063,6 +10574,19 @@ test_authenticated_encryt_with_esn(\n \tuint8_t cipher_key[reference->cipher_key.len + 1];\n \tuint8_t auth_key[reference->auth_key.len + 1];\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = reference->auth_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = reference->crypto_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create session */\n \tmemcpy(cipher_key, reference->cipher_key.data,\n \t\t\treference->cipher_key.len);\n@@ -10166,6 +10690,19 @@ test_authenticated_decrypt_with_esn(\n \tuint8_t cipher_key[reference->cipher_key.len + 1];\n \tuint8_t auth_key[reference->auth_key.len + 1];\n \n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n+\tcap_idx.algo.auth = reference->auth_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_CIPHER;\n+\tcap_idx.algo.cipher = reference->crypto_algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n \t/* Create session */\n \tmemcpy(cipher_key, reference->cipher_key.data,\n \t\t\treference->cipher_key.len);\n@@ -10341,6 +10878,41 @@ test_authenticated_encryption_SGL(const struct aead_test_data *tdata,\n \tint segs = 1;\n \tunsigned int trn_data = 0;\n \tuint8_t *plaintext, *ciphertext, *auth_tag;\n+\tstruct rte_cryptodev_info dev_info;\n+\n+\t/* Verify the capabilities */\n+\tstruct rte_cryptodev_sym_capability_idx cap_idx;\n+\tcap_idx.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n+\tcap_idx.algo.aead = tdata->algo;\n+\tif (rte_cryptodev_sym_capability_get(ts_params->valid_devs[0],\n+\t\t\t&cap_idx) == NULL)\n+\t\treturn -ENOTSUP;\n+\n+\t/* Detailed check for the particular SGL support flag */\n+\trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n+\tif (!oop) {\n+\t\tunsigned int sgl_in = fragsz < tdata->plaintext.len;\n+\t\tif (sgl_in && (!(dev_info.feature_flags &\n+\t\t\t\tRTE_CRYPTODEV_FF_IN_PLACE_SGL)))\n+\t\t\treturn -ENOTSUP;\n+\t} else {\n+\t\tunsigned int sgl_in = fragsz < tdata->plaintext.len;\n+\t\tunsigned int sgl_out = (fragsz_oop ? fragsz_oop : fragsz) <\n+\t\t\t\ttdata->plaintext.len;\n+\t\tif (sgl_in && !sgl_out) {\n+\t\t\tif (!(dev_info.feature_flags &\n+\t\t\t\t\tRTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT))\n+\t\t\t\treturn -ENOTSUP;\n+\t\t} else if (!sgl_in && sgl_out) {\n+\t\t\tif (!(dev_info.feature_flags &\n+\t\t\t\t\tRTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT))\n+\t\t\t\treturn -ENOTSUP;\n+\t\t} else if (sgl_in && sgl_out) {\n+\t\t\tif (!(dev_info.feature_flags &\n+\t\t\t\t\tRTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT))\n+\t\t\t\treturn -ENOTSUP;\n+\t\t}\n+\t}\n \n \tif (fragsz > tdata->plaintext.len)\n \t\tfragsz = tdata->plaintext.len;\n@@ -10590,6 +11162,11 @@ test_AES_GCM_auth_encrypt_SGL_out_of_place_1500B_2000B(void)\n static int\n test_AES_GCM_auth_encrypt_SGL_out_of_place_400B_1seg(void)\n {\n+\t/* This test is not for QAT PMD */\n+\tif (gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_QAT_SYM_PMD)))\n+\t\treturn -ENOTSUP;\n+\n \treturn test_authenticated_encryption_SGL(\n \t\t\t&gcm_test_case_8, OUT_OF_PLACE, 400,\n \t\t\tgcm_test_case_8.plaintext.len);\n@@ -10598,6 +11175,10 @@ test_AES_GCM_auth_encrypt_SGL_out_of_place_400B_1seg(void)\n static int\n test_AES_GCM_auth_encrypt_SGL_in_place_1500B(void)\n {\n+\t/* This test is not for OPENSSL PMD */\n+\tif (gbl_driver_id == rte_cryptodev_driver_id_get(\n+\t\t\tRTE_STR(CRYPTODEV_NAME_OPENSSL_PMD)))\n+\t\treturn -ENOTSUP;\n \n \treturn test_authenticated_encryption_SGL(\n \t\t\t&gcm_test_case_SGL_1, IN_PLACE, 1500, 0);\n",
    "prefixes": [
        "v7",
        "2/3"
    ]
}