get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 103725,
    "url": "http://patches.dpdk.org/api/patches/103725/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20211104103457.20264-9-kai.ji@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": "<20211104103457.20264-9-kai.ji@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211104103457.20264-9-kai.ji@intel.com",
    "date": "2021-11-04T10:34:56",
    "name": "[v8,8/9] crypto/qat: define gen specific structs and functions",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "c57800091a824912547e4332c24fcee9d5c026c4",
    "submitter": {
        "id": 2202,
        "url": "http://patches.dpdk.org/api/people/2202/?format=api",
        "name": "Ji, Kai",
        "email": "kai.ji@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/20211104103457.20264-9-kai.ji@intel.com/mbox/",
    "series": [
        {
            "id": 20302,
            "url": "http://patches.dpdk.org/api/series/20302/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=20302",
            "date": "2021-11-04T10:34:48",
            "name": "drivers/qat: isolate implementations of qat generations",
            "version": 8,
            "mbox": "http://patches.dpdk.org/series/20302/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/103725/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/103725/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 2F3BAA0548;\n\tThu,  4 Nov 2021 11:36:09 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B8A55426EE;\n\tThu,  4 Nov 2021 11:35:19 +0100 (CET)",
            "from mga17.intel.com (mga17.intel.com [192.55.52.151])\n by mails.dpdk.org (Postfix) with ESMTP id EA855426EC\n for <dev@dpdk.org>; Thu,  4 Nov 2021 11:35:17 +0100 (CET)",
            "from fmsmga008.fm.intel.com ([10.253.24.58])\n by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 04 Nov 2021 03:35:17 -0700",
            "from silpixa00400272.ir.intel.com (HELO\n silpixa00400272.ger.corp.intel.com) ([10.237.223.111])\n by fmsmga008.fm.intel.com with ESMTP; 04 Nov 2021 03:35:15 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10157\"; a=\"212426621\"",
            "E=Sophos;i=\"5.87,208,1631602800\"; d=\"scan'208\";a=\"212426621\"",
            "E=Sophos;i=\"5.87,208,1631602800\"; d=\"scan'208\";a=\"542020271\""
        ],
        "X-ExtLoop1": "1",
        "From": "Kai Ji <kai.ji@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "gakhil@marvell.com, Fan Zhang <roy.fan.zhang@intel.com>,\n Arek Kusztal <arkadiuszx.kusztal@intel.com>, Kai Ji <kai.ji@intel.com>",
        "Date": "Thu,  4 Nov 2021 10:34:56 +0000",
        "Message-Id": "<20211104103457.20264-9-kai.ji@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20211104103457.20264-1-kai.ji@intel.com>",
        "References": "<20211027155055.32264-1-kai.ji@intel.com>\n <20211104103457.20264-1-kai.ji@intel.com>",
        "Subject": "[dpdk-dev] [dpdk-dev v8 8/9] crypto/qat: define gen specific\n structs and functions",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Fan Zhang <roy.fan.zhang@intel.com>\n\nThis patch adds the symmetric and asymmetric crypto data\nstructure and function prototypes for different QAT\ngenerations.\n\nSigned-off-by: Arek Kusztal <arkadiuszx.kusztal@intel.com>\nSigned-off-by: Fan Zhang <roy.fan.zhang@intel.com>\nSigned-off-by: Kai Ji <kai.ji@intel.com>\nAcked-by: Ciara Power <ciara.power@intel.com>\n---\n drivers/crypto/qat/README                  |    7 -\n drivers/crypto/qat/meson.build             |   32 -\n drivers/crypto/qat/qat_asym_capabilities.h |   63 -\n drivers/crypto/qat/qat_asym_pmd.c          |   64 +-\n drivers/crypto/qat/qat_asym_pmd.h          |   25 +\n drivers/crypto/qat/qat_crypto.h            |   16 +\n drivers/crypto/qat/qat_sym_capabilities.h  | 1248 --------------------\n drivers/crypto/qat/qat_sym_pmd.c           |  186 +--\n drivers/crypto/qat/qat_sym_pmd.h           |   57 +-\n 9 files changed, 167 insertions(+), 1531 deletions(-)\n delete mode 100644 drivers/crypto/qat/README\n delete mode 100644 drivers/crypto/qat/meson.build\n delete mode 100644 drivers/crypto/qat/qat_asym_capabilities.h\n delete mode 100644 drivers/crypto/qat/qat_sym_capabilities.h\n\n--\n2.17.1",
    "diff": "diff --git a/drivers/crypto/qat/README b/drivers/crypto/qat/README\ndeleted file mode 100644\nindex 444ae605f0..0000000000\n--- a/drivers/crypto/qat/README\n+++ /dev/null\n@@ -1,7 +0,0 @@\n-# SPDX-License-Identifier: BSD-3-Clause\n-# Copyright(c) 2015-2018 Intel Corporation\n-\n-Makefile for crypto QAT PMD is in common/qat directory.\n-The build for the QAT driver is done from there as only one library is built for the\n-whole QAT pci device and that library includes all the services (crypto, compression)\n-which are enabled on the device.\ndiff --git a/drivers/crypto/qat/meson.build b/drivers/crypto/qat/meson.build\ndeleted file mode 100644\nindex c7c7daf3ac..0000000000\n--- a/drivers/crypto/qat/meson.build\n+++ /dev/null\n@@ -1,32 +0,0 @@\n-# SPDX-License-Identifier: BSD-3-Clause\n-# Copyright(c) 2017-2018 Intel Corporation\n-\n-if is_windows\n-    build = false\n-    reason = 'not supported on Windows'\n-    subdir_done()\n-endif\n-\n-# this does not build the QAT driver, instead that is done in the compression\n-# driver which comes later. Here we just add our sources files to the list\n-build = false\n-reason = '' # sentinal value to suppress printout\n-dep = dependency('libcrypto', required: false, method: 'pkg-config')\n-qat_includes += include_directories('.')\n-qat_deps += 'cryptodev'\n-qat_deps += 'net'\n-qat_deps += 'security'\n-if dep.found()\n-    # Add our sources files to the list\n-    qat_sources += files(\n-            'qat_asym.c',\n-            'qat_asym_pmd.c',\n-            'qat_sym.c',\n-            'qat_sym_hw_dp.c',\n-            'qat_sym_pmd.c',\n-            'qat_sym_session.c',\n-    )\n-    qat_ext_deps += dep\n-    qat_cflags += '-DBUILD_QAT_SYM'\n-    qat_cflags += '-DBUILD_QAT_ASYM'\n-endif\ndiff --git a/drivers/crypto/qat/qat_asym_capabilities.h b/drivers/crypto/qat/qat_asym_capabilities.h\ndeleted file mode 100644\nindex 523b4da6d3..0000000000\n--- a/drivers/crypto/qat/qat_asym_capabilities.h\n+++ /dev/null\n@@ -1,63 +0,0 @@\n-/* SPDX-License-Identifier: BSD-3-Clause\n- * Copyright(c) 2019 Intel Corporation\n- */\n-\n-#ifndef _QAT_ASYM_CAPABILITIES_H_\n-#define _QAT_ASYM_CAPABILITIES_H_\n-\n-#define QAT_BASE_GEN1_ASYM_CAPABILITIES\t\t\t\t\t\t\\\n-\t{\t/* modexp */\t\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,\t\t\t\t\\\n-\t\t{.asym = {\t\t\t\t\t\t\t\\\n-\t\t\t.xform_capa = {\t\t\t\t\t\t\\\n-\t\t\t\t.xform_type = RTE_CRYPTO_ASYM_XFORM_MODEX,\t\\\n-\t\t\t\t.op_types = 0,\t\t\t\t\t\\\n-\t\t\t\t{\t\t\t\t\t\t\\\n-\t\t\t\t.modlen = {\t\t\t\t\t\\\n-\t\t\t\t.min = 1,\t\t\t\t\t\\\n-\t\t\t\t.max = 512,\t\t\t\t\t\\\n-\t\t\t\t.increment = 1\t\t\t\t\t\\\n-\t\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t\t}\t\t\t\t\t\t\t\\\n-\t\t},\t\t\t\t\t\t\t\t\\\n-\t\t}\t\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\t\\\n-\t{\t/* modinv */\t\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,\t\t\t\t\\\n-\t\t{.asym = {\t\t\t\t\t\t\t\\\n-\t\t\t.xform_capa = {\t\t\t\t\t\t\\\n-\t\t\t\t.xform_type = RTE_CRYPTO_ASYM_XFORM_MODINV,\t\\\n-\t\t\t\t.op_types = 0,\t\t\t\t\t\\\n-\t\t\t\t{\t\t\t\t\t\t\\\n-\t\t\t\t.modlen = {\t\t\t\t\t\\\n-\t\t\t\t.min = 1,\t\t\t\t\t\\\n-\t\t\t\t.max = 512,\t\t\t\t\t\\\n-\t\t\t\t.increment = 1\t\t\t\t\t\\\n-\t\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t\t}\t\t\t\t\t\t\t\\\n-\t\t},\t\t\t\t\t\t\t\t\\\n-\t\t}\t\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\t\\\n-\t{\t/* RSA */\t\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,\t\t\t\t\\\n-\t\t{.asym = {\t\t\t\t\t\t\t\\\n-\t\t\t.xform_capa = {\t\t\t\t\t\t\\\n-\t\t\t\t.xform_type = RTE_CRYPTO_ASYM_XFORM_RSA,\t\\\n-\t\t\t\t.op_types = ((1 << RTE_CRYPTO_ASYM_OP_SIGN) |\t\\\n-\t\t\t\t\t(1 << RTE_CRYPTO_ASYM_OP_VERIFY) |\t\\\n-\t\t\t\t\t(1 << RTE_CRYPTO_ASYM_OP_ENCRYPT) |\t\\\n-\t\t\t\t\t(1 << RTE_CRYPTO_ASYM_OP_DECRYPT)),\t\\\n-\t\t\t\t{\t\t\t\t\t\t\\\n-\t\t\t\t.modlen = {\t\t\t\t\t\\\n-\t\t\t\t/* min length is based on openssl rsa keygen */\t\\\n-\t\t\t\t.min = 64,\t\t\t\t\t\\\n-\t\t\t\t/* value 0 symbolizes no limit on max length */\t\\\n-\t\t\t\t.max = 512,\t\t\t\t\t\\\n-\t\t\t\t.increment = 64\t\t\t\t\t\\\n-\t\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t\t}\t\t\t\t\t\t\t\\\n-\t\t},\t\t\t\t\t\t\t\t\\\n-\t\t}\t\t\t\t\t\t\t\t\\\n-\t}\t\t\t\t\t\t\t\t\t\\\n-\n-#endif /* _QAT_ASYM_CAPABILITIES_H_ */\ndiff --git a/drivers/crypto/qat/qat_asym_pmd.c b/drivers/crypto/qat/qat_asym_pmd.c\nindex 042f39ddcc..addee384e3 100644\n--- a/drivers/crypto/qat/qat_asym_pmd.c\n+++ b/drivers/crypto/qat/qat_asym_pmd.c\n@@ -9,15 +9,9 @@\n #include \"qat_crypto.h\"\n #include \"qat_asym.h\"\n #include \"qat_asym_pmd.h\"\n-#include \"qat_sym_capabilities.h\"\n-#include \"qat_asym_capabilities.h\"\n\n uint8_t qat_asym_driver_id;\n-\n-static const struct rte_cryptodev_capabilities qat_gen1_asym_capabilities[] = {\n-\tQAT_BASE_GEN1_ASYM_CAPABILITIES,\n-\tRTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()\n-};\n+struct qat_crypto_gen_dev_ops qat_asym_gen_dev_ops[QAT_N_GENS];\n\n void\n qat_asym_init_op_cookie(void *op_cookie)\n@@ -101,23 +95,26 @@ qat_asym_dev_create(struct qat_pci_device *qat_pci_dev,\n \t\t.socket_id = qat_dev_instance->pci_dev->device.numa_node,\n \t\t.private_data_size = sizeof(struct qat_cryptodev_private)\n \t};\n+\tstruct qat_capabilities_info capa_info;\n+\tconst struct rte_cryptodev_capabilities *capabilities;\n+\tconst struct qat_crypto_gen_dev_ops *gen_dev_ops =\n+\t\t&qat_asym_gen_dev_ops[qat_pci_dev->qat_dev_gen];\n \tchar name[RTE_CRYPTODEV_NAME_MAX_LEN];\n \tchar capa_memz_name[RTE_CRYPTODEV_NAME_MAX_LEN];\n \tstruct rte_cryptodev *cryptodev;\n \tstruct qat_cryptodev_private *internals;\n+\tuint64_t capa_size;\n\n-\tif (qat_pci_dev->qat_dev_gen == QAT_GEN4) {\n-\t\tQAT_LOG(ERR, \"Asymmetric crypto PMD not supported on QAT 4xxx\");\n-\t\treturn -EFAULT;\n-\t}\n-\tif (qat_pci_dev->qat_dev_gen == QAT_GEN3) {\n-\t\tQAT_LOG(ERR, \"Asymmetric crypto PMD not supported on QAT c4xxx\");\n-\t\treturn -EFAULT;\n-\t}\n \tsnprintf(name, RTE_CRYPTODEV_NAME_MAX_LEN, \"%s_%s\",\n \t\t\tqat_pci_dev->name, \"asym\");\n \tQAT_LOG(DEBUG, \"Creating QAT ASYM device %s\\n\", name);\n\n+\tif (gen_dev_ops->cryptodev_ops == NULL) {\n+\t\tQAT_LOG(ERR, \"Device %s does not support asymmetric crypto\",\n+\t\t\t\tname);\n+\t\treturn -EFAULT;\n+\t}\n+\n \tif (rte_eal_process_type() == RTE_PROC_PRIMARY) {\n \t\tqat_pci_dev->qat_asym_driver_id =\n \t\t\t\tqat_asym_driver_id;\n@@ -150,11 +147,8 @@ qat_asym_dev_create(struct qat_pci_device *qat_pci_dev,\n \tcryptodev->enqueue_burst = qat_asym_pmd_enqueue_op_burst;\n \tcryptodev->dequeue_burst = qat_asym_pmd_dequeue_op_burst;\n\n-\tcryptodev->feature_flags = RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO |\n-\t\t\tRTE_CRYPTODEV_FF_HW_ACCELERATED |\n-\t\t\tRTE_CRYPTODEV_FF_ASYM_SESSIONLESS |\n-\t\t\tRTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_EXP |\n-\t\t\tRTE_CRYPTODEV_FF_RSA_PRIV_OP_KEY_QT;\n+\n+\tcryptodev->feature_flags = gen_dev_ops->get_feature_flags(qat_pci_dev);\n\n \tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n \t\treturn 0;\n@@ -166,27 +160,29 @@ qat_asym_dev_create(struct qat_pci_device *qat_pci_dev,\n \tinternals = cryptodev->data->dev_private;\n \tinternals->qat_dev = qat_pci_dev;\n \tinternals->dev_id = cryptodev->data->dev_id;\n-\tinternals->qat_dev_capabilities = qat_gen1_asym_capabilities;\n \tinternals->service_type = QAT_SERVICE_ASYMMETRIC;\n\n+\tcapa_info = gen_dev_ops->get_capabilities(qat_pci_dev);\n+\tcapabilities = capa_info.data;\n+\tcapa_size = capa_info.size;\n+\n \tinternals->capa_mz = rte_memzone_lookup(capa_memz_name);\n \tif (internals->capa_mz == NULL) {\n \t\tinternals->capa_mz = rte_memzone_reserve(capa_memz_name,\n-\t\t\tsizeof(qat_gen1_asym_capabilities),\n-\t\t\trte_socket_id(), 0);\n-\t}\n-\tif (internals->capa_mz == NULL) {\n-\t\tQAT_LOG(DEBUG,\n-\t\t\t\"Error allocating memzone for capabilities, destroying PMD for %s\",\n-\t\t\tname);\n-\t\trte_cryptodev_pmd_destroy(cryptodev);\n-\t\tmemset(&qat_dev_instance->asym_rte_dev, 0,\n-\t\t\tsizeof(qat_dev_instance->asym_rte_dev));\n-\t\treturn -EFAULT;\n+\t\t\t\tcapa_size, rte_socket_id(), 0);\n+\t\tif (internals->capa_mz == NULL) {\n+\t\t\tQAT_LOG(DEBUG,\n+\t\t\t\t\"Error allocating memzone for capabilities, \"\n+\t\t\t\t\"destroying PMD for %s\",\n+\t\t\t\tname);\n+\t\t\trte_cryptodev_pmd_destroy(cryptodev);\n+\t\t\tmemset(&qat_dev_instance->asym_rte_dev, 0,\n+\t\t\t\tsizeof(qat_dev_instance->asym_rte_dev));\n+\t\t\treturn -EFAULT;\n+\t\t}\n \t}\n\n-\tmemcpy(internals->capa_mz->addr, qat_gen1_asym_capabilities,\n-\t\t\tsizeof(qat_gen1_asym_capabilities));\n+\tmemcpy(internals->capa_mz->addr, capabilities, capa_size);\n \tinternals->qat_dev_capabilities = internals->capa_mz->addr;\n\n \twhile (1) {\ndiff --git a/drivers/crypto/qat/qat_asym_pmd.h b/drivers/crypto/qat/qat_asym_pmd.h\nindex c493796511..fd6b406248 100644\n--- a/drivers/crypto/qat/qat_asym_pmd.h\n+++ b/drivers/crypto/qat/qat_asym_pmd.h\n@@ -7,14 +7,39 @@\n #define _QAT_ASYM_PMD_H_\n\n #include <rte_cryptodev.h>\n+#include \"qat_crypto.h\"\n #include \"qat_device.h\"\n\n /** Intel(R) QAT Asymmetric Crypto PMD driver name */\n #define CRYPTODEV_NAME_QAT_ASYM_PMD\tcrypto_qat_asym\n\n\n+/**\n+ * Helper function to add an asym capability\n+ * <name> <op type> <modlen (min, max, increment)>\n+ **/\n+#define QAT_ASYM_CAP(n, o, l, r, i)\t\t\t\t\t\\\n+\t{\t\t\t\t\t\t\t\t\\\n+\t\t.op = RTE_CRYPTO_OP_TYPE_ASYMMETRIC,\t\t\t\\\n+\t\t{.asym = {\t\t\t\t\t\t\\\n+\t\t\t.xform_capa = {\t\t\t\t\t\\\n+\t\t\t\t.xform_type = RTE_CRYPTO_ASYM_XFORM_##n,\\\n+\t\t\t\t.op_types = o,\t\t\t\t\\\n+\t\t\t\t{\t\t\t\t\t\\\n+\t\t\t\t.modlen = {\t\t\t\t\\\n+\t\t\t\t.min = l,\t\t\t\t\\\n+\t\t\t\t.max = r,\t\t\t\t\\\n+\t\t\t\t.increment = i\t\t\t\t\\\n+\t\t\t\t}, }\t\t\t\t\t\\\n+\t\t\t}\t\t\t\t\t\t\\\n+\t\t},\t\t\t\t\t\t\t\\\n+\t\t}\t\t\t\t\t\t\t\\\n+\t}\n+\n extern uint8_t qat_asym_driver_id;\n\n+extern struct qat_crypto_gen_dev_ops qat_asym_gen_dev_ops[];\n+\n void\n qat_asym_init_op_cookie(void *op_cookie);\n\ndiff --git a/drivers/crypto/qat/qat_crypto.h b/drivers/crypto/qat/qat_crypto.h\nindex 3803fef19d..0a8afb0b31 100644\n--- a/drivers/crypto/qat/qat_crypto.h\n+++ b/drivers/crypto/qat/qat_crypto.h\n@@ -44,6 +44,22 @@ struct qat_capabilities_info {\n \tuint64_t size;\n };\n\n+typedef struct qat_capabilities_info (*get_capabilities_info_t)\n+\t\t\t(struct qat_pci_device *qat_dev);\n+\n+typedef uint64_t (*get_feature_flags_t)(struct qat_pci_device *qat_dev);\n+\n+typedef void * (*create_security_ctx_t)(void *cryptodev);\n+\n+struct qat_crypto_gen_dev_ops {\n+\tget_feature_flags_t get_feature_flags;\n+\tget_capabilities_info_t get_capabilities;\n+\tstruct rte_cryptodev_ops *cryptodev_ops;\n+#ifdef RTE_LIB_SECURITY\n+\tcreate_security_ctx_t create_security_ctx;\n+#endif\n+};\n+\n int\n qat_cryptodev_config(struct rte_cryptodev *dev,\n \t\tstruct rte_cryptodev_config *config);\ndiff --git a/drivers/crypto/qat/qat_sym_capabilities.h b/drivers/crypto/qat/qat_sym_capabilities.h\ndeleted file mode 100644\nindex cfb176ca94..0000000000\n--- a/drivers/crypto/qat/qat_sym_capabilities.h\n+++ /dev/null\n@@ -1,1248 +0,0 @@\n-/* SPDX-License-Identifier: BSD-3-Clause\n- * Copyright(c) 2017-2019 Intel Corporation\n- */\n-\n-#ifndef _QAT_SYM_CAPABILITIES_H_\n-#define _QAT_SYM_CAPABILITIES_H_\n-\n-#define QAT_BASE_GEN1_SYM_CAPABILITIES\t\t\t\t\t\\\n-\t{\t/* SHA1 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA1,\t\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 20,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA224 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA224,\t\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 28,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA256 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA256,\t\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA384 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA384,\t\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 48,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA512 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA512,\t\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA1 HMAC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 20,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA224 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 28,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA256 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA384 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 128,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 48,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA512 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 128,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* MD5 HMAC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_MD5_HMAC,\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES XCBC MAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 12,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = { 0 },\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES CMAC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_AES_CMAC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 4,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 4\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES CCM */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,\t\\\n-\t\t\t{.aead = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AEAD_AES_CCM,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 4,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 2\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 224,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 7,\t\t\t\\\n-\t\t\t\t\t.max = 13,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES GCM */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,\t\\\n-\t\t\t{.aead = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AEAD_AES_GCM,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 4\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 240,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 12\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES GMAC (AUTH) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_AES_GMAC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 4\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 12\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SNOW 3G (UIA2) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SNOW3G_UIA2,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 4,\t\t\t\\\n-\t\t\t\t\t.max = 4,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES CBC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_CBC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES XTS */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_XTS,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 32,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 32\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES DOCSIS BPI */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_DOCSISBPI,\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 16\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SNOW 3G (UEA2) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_SNOW3G_UEA2,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES CTR */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_CTR,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* NULL (AUTH) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_NULL,\t\t\\\n-\t\t\t\t.block_size = 1,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, },\t\t\t\t\t\t\\\n-\t\t}, },\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* NULL (CIPHER) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_NULL,\t\t\\\n-\t\t\t\t.block_size = 1,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, },\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{       /* KASUMI (F8) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_KASUMI_F8,\t\\\n-\t\t\t\t.block_size = 8,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 8,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{       /* KASUMI (F9) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_KASUMI_F9,\t\\\n-\t\t\t\t.block_size = 8,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 4,\t\t\t\\\n-\t\t\t\t\t.max = 4,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* 3DES CBC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_3DES_CBC,\t\\\n-\t\t\t\t.block_size = 8,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 24,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 8,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* 3DES CTR */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_3DES_CTR,\t\\\n-\t\t\t\t.block_size = 8,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 24,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 8,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* DES CBC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_DES_CBC,\t\\\n-\t\t\t\t.block_size = 8,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 8,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 8,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* DES DOCSISBPI */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_DES_DOCSISBPI,\\\n-\t\t\t\t.block_size = 8,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 8,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 8,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t}\n-\n-#define QAT_EXTRA_GEN2_SYM_CAPABILITIES\t\t\t\t\t\\\n-\t{\t/* ZUC (EEA3) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_ZUC_EEA3,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* ZUC (EIA3) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_ZUC_EIA3,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 4,\t\t\t\\\n-\t\t\t\t\t.max = 4,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t}\n-\n-#define QAT_EXTRA_GEN3_SYM_CAPABILITIES\t\t\t\t\t\\\n-\t{\t/* Chacha20-Poly1305 */\t\t\t\t\t\\\n-\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,\t\\\n-\t\t\t{.aead = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AEAD_CHACHA20_POLY1305, \\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 32,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 240,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 12,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t}\n-\n-#define QAT_BASE_GEN4_SYM_CAPABILITIES\t\t\t\t\t\\\n-\t{\t/* AES CBC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_CBC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA1 HMAC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA1_HMAC,\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 20,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA224 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA224_HMAC,\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 28,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA256 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA256_HMAC,\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA384 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA384_HMAC,\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 128,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 48,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA512 HMAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA512_HMAC,\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 128,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES XCBC MAC */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_AES_XCBC_MAC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 12,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = { 0 },\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES CMAC */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_AES_CMAC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 4,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 4\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES DOCSIS BPI */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_DOCSISBPI,\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 16\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* NULL (AUTH) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_NULL,\t\t\\\n-\t\t\t\t.block_size = 1,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, },\t\t\t\t\t\t\\\n-\t\t}, },\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* NULL (CIPHER) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_NULL,\t\t\\\n-\t\t\t\t.block_size = 1,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, },\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA1 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA1,\t\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 20,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA224 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA224,\t\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 28,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA256 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA256,\t\t\\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA384 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA384,\t\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 48,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* SHA512 */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_SHA512,\t\t\\\n-\t\t\t\t.block_size = 128,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 0,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 1,\t\t\t\\\n-\t\t\t\t\t.max = 64,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = { 0 }\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES CTR */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_CTR,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES GCM */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,\t\\\n-\t\t\t{.aead = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AEAD_AES_GCM,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 4\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 240,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 12\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES CCM */\t\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,\t\\\n-\t\t\t{.aead = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AEAD_AES_CCM,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 4,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 2\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 224,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 7,\t\t\t\\\n-\t\t\t\t\t.max = 13,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* Chacha20-Poly1305 */\t\t\t\t\t\\\n-\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,\t\\\n-\t\t\t{.aead = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AEAD_CHACHA20_POLY1305, \\\n-\t\t\t\t.block_size = 64,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 32,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.aad_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 240,\t\t\t\\\n-\t\t\t\t\t.increment = 1\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 12,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t{\t/* AES GMAC (AUTH) */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n-\t\t\t{.auth = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_AUTH_AES_GMAC,\t\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 8\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.digest_size = {\t\t\t\\\n-\t\t\t\t\t.min = 8,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 4\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 0,\t\t\t\\\n-\t\t\t\t\t.max = 12,\t\t\t\\\n-\t\t\t\t\t.increment = 12\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t}\t\t\t\t\t\t\t\t\\\n-\n-\n-\n-#ifdef RTE_LIB_SECURITY\n-#define QAT_SECURITY_SYM_CAPABILITIES\t\t\t\t\t\\\n-\t{\t/* AES DOCSIS BPI */\t\t\t\t\t\\\n-\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n-\t\t{.sym = {\t\t\t\t\t\t\\\n-\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n-\t\t\t{.cipher = {\t\t\t\t\t\\\n-\t\t\t\t.algo = RTE_CRYPTO_CIPHER_AES_DOCSISBPI,\\\n-\t\t\t\t.block_size = 16,\t\t\t\\\n-\t\t\t\t.key_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 32,\t\t\t\\\n-\t\t\t\t\t.increment = 16\t\t\t\\\n-\t\t\t\t},\t\t\t\t\t\\\n-\t\t\t\t.iv_size = {\t\t\t\t\\\n-\t\t\t\t\t.min = 16,\t\t\t\\\n-\t\t\t\t\t.max = 16,\t\t\t\\\n-\t\t\t\t\t.increment = 0\t\t\t\\\n-\t\t\t\t}\t\t\t\t\t\\\n-\t\t\t}, }\t\t\t\t\t\t\\\n-\t\t}, }\t\t\t\t\t\t\t\\\n-\t}\n-\n-#define QAT_SECURITY_CAPABILITIES(sym)\t\t\t\t\t\\\n-\t[0] = {\t/* DOCSIS Uplink */\t\t\t\t\t\\\n-\t\t.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,\t\\\n-\t\t.protocol = RTE_SECURITY_PROTOCOL_DOCSIS,\t\t\\\n-\t\t.docsis = {\t\t\t\t\t\t\\\n-\t\t\t.direction = RTE_SECURITY_DOCSIS_UPLINK\t\t\\\n-\t\t},\t\t\t\t\t\t\t\\\n-\t\t.crypto_capabilities = (sym)\t\t\t\t\\\n-\t},\t\t\t\t\t\t\t\t\\\n-\t[1] = {\t/* DOCSIS Downlink */\t\t\t\t\t\\\n-\t\t.action = RTE_SECURITY_ACTION_TYPE_LOOKASIDE_PROTOCOL,\t\\\n-\t\t.protocol = RTE_SECURITY_PROTOCOL_DOCSIS,\t\t\\\n-\t\t.docsis = {\t\t\t\t\t\t\\\n-\t\t\t.direction = RTE_SECURITY_DOCSIS_DOWNLINK\t\\\n-\t\t},\t\t\t\t\t\t\t\\\n-\t\t.crypto_capabilities = (sym)\t\t\t\t\\\n-\t}\n-#endif\n-\n-#endif /* _QAT_SYM_CAPABILITIES_H_ */\ndiff --git a/drivers/crypto/qat/qat_sym_pmd.c b/drivers/crypto/qat/qat_sym_pmd.c\nindex dec877cfab..b835245f17 100644\n--- a/drivers/crypto/qat/qat_sym_pmd.c\n+++ b/drivers/crypto/qat/qat_sym_pmd.c\n@@ -22,85 +22,7 @@\n\n uint8_t qat_sym_driver_id;\n\n-static const struct rte_cryptodev_capabilities qat_gen1_sym_capabilities[] = {\n-\tQAT_BASE_GEN1_SYM_CAPABILITIES,\n-\tRTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()\n-};\n-\n-static const struct rte_cryptodev_capabilities qat_gen2_sym_capabilities[] = {\n-\tQAT_BASE_GEN1_SYM_CAPABILITIES,\n-\tQAT_EXTRA_GEN2_SYM_CAPABILITIES,\n-\tRTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()\n-};\n-\n-static const struct rte_cryptodev_capabilities qat_gen3_sym_capabilities[] = {\n-\tQAT_BASE_GEN1_SYM_CAPABILITIES,\n-\tQAT_EXTRA_GEN2_SYM_CAPABILITIES,\n-\tQAT_EXTRA_GEN3_SYM_CAPABILITIES,\n-\tRTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()\n-};\n-\n-static const struct rte_cryptodev_capabilities qat_gen4_sym_capabilities[] = {\n-\tQAT_BASE_GEN4_SYM_CAPABILITIES,\n-\tRTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()\n-};\n-\n-#ifdef RTE_LIB_SECURITY\n-static const struct rte_cryptodev_capabilities\n-\t\t\t\t\tqat_security_sym_capabilities[] = {\n-\tQAT_SECURITY_SYM_CAPABILITIES,\n-\tRTE_CRYPTODEV_END_OF_CAPABILITIES_LIST()\n-};\n-\n-static const struct rte_security_capability qat_security_capabilities[] = {\n-\tQAT_SECURITY_CAPABILITIES(qat_security_sym_capabilities),\n-\t{\n-\t\t.action = RTE_SECURITY_ACTION_TYPE_NONE\n-\t}\n-};\n-#endif\n-\n-static struct rte_cryptodev_ops crypto_qat_ops = {\n-\n-\t\t/* Device related operations */\n-\t\t.dev_configure\t\t= qat_cryptodev_config,\n-\t\t.dev_start\t\t= qat_cryptodev_start,\n-\t\t.dev_stop\t\t= qat_cryptodev_stop,\n-\t\t.dev_close\t\t= qat_cryptodev_close,\n-\t\t.dev_infos_get\t\t= qat_cryptodev_info_get,\n-\n-\t\t.stats_get\t\t= qat_cryptodev_stats_get,\n-\t\t.stats_reset\t\t= qat_cryptodev_stats_reset,\n-\t\t.queue_pair_setup\t= qat_cryptodev_qp_setup,\n-\t\t.queue_pair_release\t= qat_cryptodev_qp_release,\n-\n-\t\t/* Crypto related operations */\n-\t\t.sym_session_get_size\t= qat_sym_session_get_private_size,\n-\t\t.sym_session_configure\t= qat_sym_session_configure,\n-\t\t.sym_session_clear\t= qat_sym_session_clear,\n-\n-\t\t/* Raw data-path API related operations */\n-\t\t.sym_get_raw_dp_ctx_size = qat_sym_get_dp_ctx_size,\n-\t\t.sym_configure_raw_dp_ctx = qat_sym_configure_dp_ctx,\n-};\n-\n-#ifdef RTE_LIB_SECURITY\n-static const struct rte_security_capability *\n-qat_security_cap_get(void *device __rte_unused)\n-{\n-\treturn qat_security_capabilities;\n-}\n-\n-static struct rte_security_ops security_qat_ops = {\n-\n-\t\t.session_create = qat_security_session_create,\n-\t\t.session_update = NULL,\n-\t\t.session_stats_get = NULL,\n-\t\t.session_destroy = qat_security_session_destroy,\n-\t\t.set_pkt_metadata = NULL,\n-\t\t.capabilities_get = qat_security_cap_get\n-};\n-#endif\n+struct qat_crypto_gen_dev_ops qat_sym_gen_dev_ops[QAT_N_GENS];\n\n void\n qat_sym_init_op_cookie(void *op_cookie)\n@@ -156,7 +78,6 @@ qat_sym_dev_create(struct qat_pci_device *qat_pci_dev,\n \tint i = 0, ret = 0;\n \tstruct qat_device_info *qat_dev_instance =\n \t\t\t&qat_pci_devs[qat_pci_dev->qat_dev_id];\n-\n \tstruct rte_cryptodev_pmd_init_params init_params = {\n \t\t.name = \"\",\n \t\t.socket_id = qat_dev_instance->pci_dev->device.numa_node,\n@@ -166,13 +87,22 @@ qat_sym_dev_create(struct qat_pci_device *qat_pci_dev,\n \tchar capa_memz_name[RTE_CRYPTODEV_NAME_MAX_LEN];\n \tstruct rte_cryptodev *cryptodev;\n \tstruct qat_cryptodev_private *internals;\n+\tstruct qat_capabilities_info capa_info;\n \tconst struct rte_cryptodev_capabilities *capabilities;\n+\tconst struct qat_crypto_gen_dev_ops *gen_dev_ops =\n+\t\t&qat_sym_gen_dev_ops[qat_pci_dev->qat_dev_gen];\n \tuint64_t capa_size;\n\n \tsnprintf(name, RTE_CRYPTODEV_NAME_MAX_LEN, \"%s_%s\",\n \t\t\tqat_pci_dev->name, \"sym\");\n \tQAT_LOG(DEBUG, \"Creating QAT SYM device %s\", name);\n\n+\tif (gen_dev_ops->cryptodev_ops == NULL) {\n+\t\tQAT_LOG(ERR, \"Device %s does not support symmetric crypto\",\n+\t\t\t\tname);\n+\t\treturn -EFAULT;\n+\t}\n+\n \t/*\n \t * All processes must use same driver id so they can share sessions.\n \t * Store driver_id so we can validate that all processes have the same\n@@ -206,92 +136,56 @@ qat_sym_dev_create(struct qat_pci_device *qat_pci_dev,\n\n \tqat_dev_instance->sym_rte_dev.name = cryptodev->data->name;\n \tcryptodev->driver_id = qat_sym_driver_id;\n-\tcryptodev->dev_ops = &crypto_qat_ops;\n+\tcryptodev->dev_ops = gen_dev_ops->cryptodev_ops;\n\n \tcryptodev->enqueue_burst = qat_sym_pmd_enqueue_op_burst;\n \tcryptodev->dequeue_burst = qat_sym_pmd_dequeue_op_burst;\n\n-\tcryptodev->feature_flags = RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO |\n-\t\t\tRTE_CRYPTODEV_FF_HW_ACCELERATED |\n-\t\t\tRTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING |\n-\t\t\tRTE_CRYPTODEV_FF_IN_PLACE_SGL |\n-\t\t\tRTE_CRYPTODEV_FF_OOP_SGL_IN_SGL_OUT |\n-\t\t\tRTE_CRYPTODEV_FF_OOP_SGL_IN_LB_OUT |\n-\t\t\tRTE_CRYPTODEV_FF_OOP_LB_IN_SGL_OUT |\n-\t\t\tRTE_CRYPTODEV_FF_OOP_LB_IN_LB_OUT |\n-\t\t\tRTE_CRYPTODEV_FF_DIGEST_ENCRYPTED;\n-\n-\tif (qat_pci_dev->qat_dev_gen < QAT_GEN4)\n-\t\tcryptodev->feature_flags |= RTE_CRYPTODEV_FF_SYM_RAW_DP;\n+\tcryptodev->feature_flags = gen_dev_ops->get_feature_flags(qat_pci_dev);\n\n \tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n \t\treturn 0;\n\n-\tsnprintf(capa_memz_name, RTE_CRYPTODEV_NAME_MAX_LEN,\n-\t\t\t\"QAT_SYM_CAPA_GEN_%d\",\n-\t\t\tqat_pci_dev->qat_dev_gen);\n-\n #ifdef RTE_LIB_SECURITY\n-\tstruct rte_security_ctx *security_instance;\n-\tsecurity_instance = rte_malloc(\"qat_sec\",\n-\t\t\t\tsizeof(struct rte_security_ctx),\n-\t\t\t\tRTE_CACHE_LINE_SIZE);\n-\tif (security_instance == NULL) {\n-\t\tQAT_LOG(ERR, \"rte_security_ctx memory alloc failed\");\n-\t\tret = -ENOMEM;\n-\t\tgoto error;\n-\t}\n+\tif (gen_dev_ops->create_security_ctx) {\n+\t\tcryptodev->security_ctx =\n+\t\t\tgen_dev_ops->create_security_ctx((void *)cryptodev);\n+\t\tif (cryptodev->security_ctx == NULL) {\n+\t\t\tQAT_LOG(ERR, \"rte_security_ctx memory alloc failed\");\n+\t\t\tret = -ENOMEM;\n+\t\t\tgoto error;\n+\t\t}\n+\n+\t\tcryptodev->feature_flags |= RTE_CRYPTODEV_FF_SECURITY;\n+\t\tQAT_LOG(INFO, \"Device %s rte_security support enabled\", name);\n+\t} else\n+\t\tQAT_LOG(INFO, \"Device %s rte_security support disabled\", name);\n\n-\tsecurity_instance->device = (void *)cryptodev;\n-\tsecurity_instance->ops = &security_qat_ops;\n-\tsecurity_instance->sess_cnt = 0;\n-\tcryptodev->security_ctx = security_instance;\n-\tcryptodev->feature_flags |= RTE_CRYPTODEV_FF_SECURITY;\n #endif\n+\tsnprintf(capa_memz_name, RTE_CRYPTODEV_NAME_MAX_LEN,\n+\t\t\t\"QAT_SYM_CAPA_GEN_%d\",\n+\t\t\tqat_pci_dev->qat_dev_gen);\n\n \tinternals = cryptodev->data->dev_private;\n \tinternals->qat_dev = qat_pci_dev;\n \tinternals->service_type = QAT_SERVICE_SYMMETRIC;\n-\n \tinternals->dev_id = cryptodev->data->dev_id;\n-\tswitch (qat_pci_dev->qat_dev_gen) {\n-\tcase QAT_GEN1:\n-\t\tcapabilities = qat_gen1_sym_capabilities;\n-\t\tcapa_size = sizeof(qat_gen1_sym_capabilities);\n-\t\tbreak;\n-\tcase QAT_GEN2:\n-\t\tcapabilities = qat_gen2_sym_capabilities;\n-\t\tcapa_size = sizeof(qat_gen2_sym_capabilities);\n-\t\tbreak;\n-\tcase QAT_GEN3:\n-\t\tcapabilities = qat_gen3_sym_capabilities;\n-\t\tcapa_size = sizeof(qat_gen3_sym_capabilities);\n-\t\tbreak;\n-\tcase QAT_GEN4:\n-\t\tcapabilities = qat_gen4_sym_capabilities;\n-\t\tcapa_size = sizeof(qat_gen4_sym_capabilities);\n-\t\tbreak;\n-\tdefault:\n-\t\tQAT_LOG(DEBUG,\n-\t\t\t\"QAT gen %d capabilities unknown\",\n-\t\t\tqat_pci_dev->qat_dev_gen);\n-\t\tret = -(EINVAL);\n-\t\tgoto error;\n-\t}\n+\n+\tcapa_info = gen_dev_ops->get_capabilities(qat_pci_dev);\n+\tcapabilities = capa_info.data;\n+\tcapa_size = capa_info.size;\n\n \tinternals->capa_mz = rte_memzone_lookup(capa_memz_name);\n \tif (internals->capa_mz == NULL) {\n \t\tinternals->capa_mz = rte_memzone_reserve(capa_memz_name,\n-\t\tcapa_size,\n-\t\trte_socket_id(), 0);\n-\t}\n-\tif (internals->capa_mz == NULL) {\n-\t\tQAT_LOG(DEBUG,\n-\t\t\t\"Error allocating memzone for capabilities, destroying \"\n-\t\t\t\"PMD for %s\",\n-\t\t\tname);\n-\t\tret = -EFAULT;\n-\t\tgoto error;\n+\t\t\t\tcapa_size, rte_socket_id(), 0);\n+\t\tif (internals->capa_mz == NULL) {\n+\t\t\tQAT_LOG(DEBUG,\n+\t\t\t\t\"Error allocating capability memzon for %s\",\n+\t\t\t\tname);\n+\t\t\tret = -EFAULT;\n+\t\t\tgoto error;\n+\t\t}\n \t}\n\n \tmemcpy(internals->capa_mz->addr, capabilities, capa_size);\ndiff --git a/drivers/crypto/qat/qat_sym_pmd.h b/drivers/crypto/qat/qat_sym_pmd.h\nindex d49b732ca0..0dc0c6f0d9 100644\n--- a/drivers/crypto/qat/qat_sym_pmd.h\n+++ b/drivers/crypto/qat/qat_sym_pmd.h\n@@ -13,7 +13,6 @@\n #include <rte_security.h>\n #endif\n\n-#include \"qat_sym_capabilities.h\"\n #include \"qat_crypto.h\"\n #include \"qat_device.h\"\n\n@@ -24,8 +23,64 @@\n #define QAT_SYM_CAP_MIXED_CRYPTO\t(1 << 0)\n #define QAT_SYM_CAP_VALID\t\t(1 << 31)\n\n+/**\n+ * Macro to add a sym capability\n+ * helper function to add an sym capability\n+ * <n: name> <b: block size> <k: key size> <d: digest size>\n+ * <a: aad_size> <i: iv_size>\n+ **/\n+#define QAT_SYM_PLAIN_AUTH_CAP(n, b, d)\t\t\t\t\t\\\n+\t{\t\t\t\t\t\t\t\t\\\n+\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n+\t\t{.sym = {\t\t\t\t\t\t\\\n+\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n+\t\t\t{.auth = {\t\t\t\t\t\\\n+\t\t\t\t.algo = RTE_CRYPTO_AUTH_##n,\t\t\\\n+\t\t\t\tb, d\t\t\t\t\t\\\n+\t\t\t}, }\t\t\t\t\t\t\\\n+\t\t}, }\t\t\t\t\t\t\t\\\n+\t}\n+\n+#define QAT_SYM_AUTH_CAP(n, b, k, d, a, i)\t\t\t\t\\\n+\t{\t\t\t\t\t\t\t\t\\\n+\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n+\t\t{.sym = {\t\t\t\t\t\t\\\n+\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AUTH,\t\\\n+\t\t\t{.auth = {\t\t\t\t\t\\\n+\t\t\t\t.algo = RTE_CRYPTO_AUTH_##n,\t\t\\\n+\t\t\t\tb, k, d, a, i\t\t\t\t\\\n+\t\t\t}, }\t\t\t\t\t\t\\\n+\t\t}, }\t\t\t\t\t\t\t\\\n+\t}\n+\n+#define QAT_SYM_AEAD_CAP(n, b, k, d, a, i)\t\t\t\t\\\n+\t{\t\t\t\t\t\t\t\t\\\n+\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n+\t\t{.sym = {\t\t\t\t\t\t\\\n+\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_AEAD,\t\\\n+\t\t\t{.aead = {\t\t\t\t\t\\\n+\t\t\t\t.algo = RTE_CRYPTO_AEAD_##n,\t\t\\\n+\t\t\t\tb, k, d, a, i\t\t\t\t\\\n+\t\t\t}, }\t\t\t\t\t\t\\\n+\t\t}, }\t\t\t\t\t\t\t\\\n+\t}\n+\n+#define QAT_SYM_CIPHER_CAP(n, b, k, i)\t\t\t\t\t\\\n+\t{\t\t\t\t\t\t\t\t\\\n+\t\t.op = RTE_CRYPTO_OP_TYPE_SYMMETRIC,\t\t\t\\\n+\t\t{.sym = {\t\t\t\t\t\t\\\n+\t\t\t.xform_type = RTE_CRYPTO_SYM_XFORM_CIPHER,\t\\\n+\t\t\t{.cipher = {\t\t\t\t\t\\\n+\t\t\t\t.algo = RTE_CRYPTO_CIPHER_##n,\t\t\\\n+\t\t\t\tb, k, i\t\t\t\t\t\\\n+\t\t\t}, }\t\t\t\t\t\t\\\n+\t\t}, }\t\t\t\t\t\t\t\\\n+\t}\n+\n extern uint8_t qat_sym_driver_id;\n\n+extern struct qat_crypto_gen_dev_ops qat_sym_gen_dev_ops[];\n+\n int\n qat_sym_dev_create(struct qat_pci_device *qat_pci_dev,\n \t\tstruct qat_dev_cmd_param *qat_dev_cmd_param);\n",
    "prefixes": [
        "v8",
        "8/9"
    ]
}