get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 117300,
    "url": "http://patches.dpdk.org/api/patches/117300/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20221004111035.3264904-2-gakhil@marvell.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": "<20221004111035.3264904-2-gakhil@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20221004111035.3264904-2-gakhil@marvell.com",
    "date": "2022-10-04T11:10:30",
    "name": "[v7,1/6] cryptodev: rework session framework",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "802851029477d7427b31374d576514efaa92e62e",
    "submitter": {
        "id": 2094,
        "url": "http://patches.dpdk.org/api/people/2094/?format=api",
        "name": "Akhil Goyal",
        "email": "gakhil@marvell.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/20221004111035.3264904-2-gakhil@marvell.com/mbox/",
    "series": [
        {
            "id": 24962,
            "url": "http://patches.dpdk.org/api/series/24962/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=24962",
            "date": "2022-10-04T11:10:29",
            "name": "crypto/security session framework rework",
            "version": 7,
            "mbox": "http://patches.dpdk.org/series/24962/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/117300/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/117300/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 A6981A0543;\n\tTue,  4 Oct 2022 13:11:08 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 938D742685;\n\tTue,  4 Oct 2022 13:11:08 +0200 (CEST)",
            "from mx0b-0016f401.pphosted.com (mx0b-0016f401.pphosted.com\n [67.231.156.173])\n by mails.dpdk.org (Postfix) with ESMTP id 5CCA2410FB\n for <dev@dpdk.org>; Tue,  4 Oct 2022 13:11:07 +0200 (CEST)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id\n 2947ZBOJ005049;\n Tue, 4 Oct 2022 04:11:03 -0700",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0b-0016f401.pphosted.com (PPS) with ESMTPS id 3jxn2ps52n-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Tue, 04 Oct 2022 04:11:02 -0700",
            "from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server (TLS) id 15.0.1497.18;\n Tue, 4 Oct 2022 04:10:58 -0700",
            "from maili.marvell.com (10.69.176.80) by DC5-EXCH02.marvell.com\n (10.69.176.39) with Microsoft SMTP Server id 15.0.1497.18 via Frontend\n Transport; Tue, 4 Oct 2022 04:10:58 -0700",
            "from localhost.localdomain (unknown [10.28.36.102])\n by maili.marvell.com (Postfix) with ESMTP id C4C173F7095;\n Tue,  4 Oct 2022 04:10:47 -0700 (PDT)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com;\n h=from : to : cc :\n subject : date : message-id : in-reply-to : references : mime-version :\n content-transfer-encoding : content-type; s=pfpt0220;\n bh=RZGIjiQOSqdJSwp6EAhTSigkUg5R0gOUe5+xQV/vkHM=;\n b=Fc2rSxeeUisJJXhVOcKI+WioCK8XHvxDj0I7L2vxYBSUxRiw6bYp00XoBdmChKW0FBAR\n w4QWT0b1qAT1j7DUzfh1p/4YF0imAkwsmfGiMSQdAWw0RvJRHmBS0R+H4rdrnBocLfhn\n GgEZskqc7lRzL88GU2mKXHRxrIi+FjUqsdOkaCukGVk571RnjUyGPAD4bPsH282c8PbZ\n gY40VB9vNoegcL/a+CaBbHu2dtt0/metOzUlowR7c+KHMKBM5CamPGDr/2xbi6gc6XEP\n Ao0Eaom2I6YIXqdsn4SAqF/et2KrKyy9o4SYj/fgU9SlpQD4T0Uw6/n4v30dlo0UfqSw 9w==",
        "From": "Akhil Goyal <gakhil@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<thomas@monjalon.net>, <david.marchand@redhat.com>,\n <hemant.agrawal@nxp.com>, <vattunuru@marvell.com>,\n <ferruh.yigit@xilinx.com>, <andrew.rybchenko@oktetlabs.ru>,\n <konstantin.v.ananyev@yandex.ru>, <jiawenwu@trustnetic.com>,\n <yisen.zhuang@huawei.com>, <irusskikh@marvell.com>,\n <jerinj@marvell.com>, <adwivedi@marvell.com>,\n <maxime.coquelin@redhat.com>, <chandu@amd.com>, <ruifeng.wang@arm.com>,\n <ajit.khaparde@broadcom.com>, <anoobj@marvell.com>,\n <pablo.de.lara.guarch@intel.com>, <matan@nvidia.com>,\n <g.singh@nxp.com>, <qiming.yang@intel.com>, <wenjun1.wu@intel.com>,\n <jianwang@trustnetic.com>, <jingjing.wu@intel.com>,\n <beilei.xing@intel.com>, <ndabilpuram@marvell.com>,\n <roy.fan.zhang@intel.com>, <lironh@marvell.com>,\n <royzhang1980@gmail.com>, <sunilprakashrao.uttarwar@amd.com>,\n <kai.ji@intel.com>, <rnagadheeraj@marvell.com>,\n <jianjay.zhou@huawei.com>, <radu.nicolau@intel.com>,\n Akhil Goyal <gakhil@marvell.com>, Ruifeng Wang <Ruifeng.Wang@arm.com>,\n David Coyle <david.coyle@intel.com>, Kevin O'Sullivan\n <kevin.osullivan@intel.com>",
        "Subject": "[PATCH v7 1/6] cryptodev: rework session framework",
        "Date": "Tue, 4 Oct 2022 16:40:30 +0530",
        "Message-ID": "<20221004111035.3264904-2-gakhil@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20221004111035.3264904-1-gakhil@marvell.com>",
        "References": "<20221004111035.3264904-1-gakhil@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "wGBWkAT20g2GumSurckNN36VwP3dHKMI",
        "X-Proofpoint-GUID": "wGBWkAT20g2GumSurckNN36VwP3dHKMI",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1\n definitions=2022-10-04_04,2022-09-29_03,2022-06-22_01",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "As per current design, rte_cryptodev_sym_session_create() and\nrte_cryptodev_sym_session_init() use separate mempool objects\nfor a single session.\nAnd structure rte_cryptodev_sym_session is not directly used\nby the application, it may cause ABI breakage if the structure\nis modified in future.\n\nTo address these two issues, the rte_cryptodev_sym_session_create\nwill take one mempool object that the session and session private\ndata are virtually/physically contiguous, and initializes both\nfields. The API rte_cryptodev_sym_session_init is removed.\n\nrte_cryptodev_sym_session_create will now return an opaque session\npointer which will be used by the app and other APIs.\n\nIn data path, opaque session pointer is attached to rte_crypto_op\nand the PMD can call an internal library API to get the session\nprivate data pointer based on the driver id.\n\nNote: currently single session may be used by different device\ndrivers, given it is initialized by them. After the change the\nsession created by one device driver cannot be used or\nreinitialized by another driver.\n\nSigned-off-by: Akhil Goyal <gakhil@marvell.com>\nSigned-off-by: Fan Zhang <roy.fan.zhang@intel.com>\nSigned-off-by: Ruifeng Wang <Ruifeng.Wang@arm.com>\nAcked-by: Kai Ji <kai.ji@intel.com>\nTested-by: Gagandeep Singh <g.singh@nxp.com>\nTested-by: David Coyle <david.coyle@intel.com>\nTested-by: Kevin O'Sullivan <kevin.osullivan@intel.com>\n---\n app/test-crypto-perf/cperf_ops.c              |  21 +-\n app/test-crypto-perf/cperf_test_latency.c     |   6 +-\n .../cperf_test_pmd_cyclecount.c               |   5 +-\n app/test-crypto-perf/cperf_test_throughput.c  |   6 +-\n app/test-crypto-perf/cperf_test_verify.c      |   6 +-\n app/test-crypto-perf/main.c                   |  29 +-\n app/test-eventdev/test_perf_common.c          |  35 +-\n app/test-eventdev/test_perf_common.h          |   1 -\n app/test/test_cryptodev.c                     | 303 +++++-------------\n app/test/test_cryptodev_blockcipher.c         |  16 +-\n app/test/test_event_crypto_adapter.c          |  35 +-\n app/test/test_ipsec.c                         |  42 +--\n drivers/crypto/armv8/armv8_pmd_private.h      |   2 -\n drivers/crypto/armv8/rte_armv8_pmd.c          |  21 +-\n drivers/crypto/armv8/rte_armv8_pmd_ops.c      |  35 +-\n drivers/crypto/bcmfs/bcmfs_sym_session.c      |  38 +--\n drivers/crypto/bcmfs/bcmfs_sym_session.h      |   3 +-\n drivers/crypto/caam_jr/caam_jr.c              |  28 +-\n drivers/crypto/ccp/ccp_crypto.c               |  58 +---\n drivers/crypto/ccp/ccp_pmd_ops.c              |  32 +-\n drivers/crypto/ccp/ccp_pmd_private.h          |   2 -\n drivers/crypto/ccp/rte_ccp_pmd.c              |  29 +-\n drivers/crypto/cnxk/cn10k_cryptodev_ops.c     |  36 +--\n drivers/crypto/cnxk/cn9k_cryptodev_ops.c      |  31 +-\n drivers/crypto/cnxk/cnxk_cryptodev_ops.c      |  55 +---\n drivers/crypto/cnxk/cnxk_cryptodev_ops.h      |  14 +-\n drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c   |  31 +-\n drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c   |   3 +-\n drivers/crypto/dpaa_sec/dpaa_sec.c            |  37 +--\n drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c     |   4 +-\n drivers/crypto/ipsec_mb/ipsec_mb_ops.c        |  34 +-\n drivers/crypto/ipsec_mb/ipsec_mb_private.h    |  41 ++-\n drivers/crypto/ipsec_mb/pmd_aesni_gcm.c       |  48 +--\n drivers/crypto/ipsec_mb/pmd_aesni_mb.c        |  36 +--\n drivers/crypto/ipsec_mb/pmd_chacha_poly.c     |   4 -\n drivers/crypto/ipsec_mb/pmd_kasumi.c          |  10 +-\n drivers/crypto/ipsec_mb/pmd_snow3g.c          |   9 +-\n drivers/crypto/ipsec_mb/pmd_zuc.c             |   4 -\n drivers/crypto/mlx5/mlx5_crypto.c             |  26 +-\n drivers/crypto/mvsam/rte_mrvl_pmd.c           |   8 +-\n drivers/crypto/mvsam/rte_mrvl_pmd_ops.c       |  21 +-\n drivers/crypto/nitrox/nitrox_sym.c            |  39 +--\n drivers/crypto/null/null_crypto_pmd.c         |  19 +-\n drivers/crypto/null/null_crypto_pmd_ops.c     |  33 +-\n drivers/crypto/null/null_crypto_pmd_private.h |   2 -\n .../crypto/octeontx/otx_cryptodev_hw_access.h |   1 -\n drivers/crypto/octeontx/otx_cryptodev_ops.c   |  67 +---\n drivers/crypto/openssl/openssl_pmd_private.h  |   2 -\n drivers/crypto/openssl/rte_openssl_pmd.c      |  24 +-\n drivers/crypto/openssl/rte_openssl_pmd_ops.c  |  29 +-\n drivers/crypto/qat/qat_sym.c                  |  10 +-\n drivers/crypto/qat/qat_sym.h                  |   4 +-\n drivers/crypto/qat/qat_sym_session.c          |  40 +--\n drivers/crypto/qat/qat_sym_session.h          |   6 +-\n drivers/crypto/scheduler/scheduler_pmd_ops.c  |  38 +--\n drivers/crypto/virtio/virtio_cryptodev.c      |  40 +--\n drivers/crypto/virtio/virtio_rxtx.c           |   3 +-\n examples/fips_validation/fips_dev_self_test.c |  30 +-\n examples/fips_validation/main.c               |  35 +-\n examples/ipsec-secgw/ipsec-secgw.c            |  10 +-\n examples/ipsec-secgw/ipsec.c                  |   7 +-\n examples/l2fwd-crypto/main.c                  |  54 +---\n examples/vhost_crypto/main.c                  |  16 +-\n lib/cryptodev/cryptodev_pmd.h                 |  28 +-\n lib/cryptodev/cryptodev_trace_points.c        |   6 -\n lib/cryptodev/rte_cryptodev.c                 | 278 ++++++----------\n lib/cryptodev/rte_cryptodev.h                 | 123 ++-----\n lib/cryptodev/rte_cryptodev_trace.h           |  36 +--\n lib/cryptodev/version.map                     |   6 -\n lib/pipeline/rte_table_action.c               |  10 +-\n lib/vhost/rte_vhost_crypto.h                  |   3 -\n lib/vhost/vhost_crypto.c                      |  28 +-\n 72 files changed, 556 insertions(+), 1676 deletions(-)",
    "diff": "diff --git a/app/test-crypto-perf/cperf_ops.c b/app/test-crypto-perf/cperf_ops.c\nindex d746d51082..c6f5735bb0 100644\n--- a/app/test-crypto-perf/cperf_ops.c\n+++ b/app/test-crypto-perf/cperf_ops.c\n@@ -912,7 +912,6 @@ cperf_create_session(struct rte_mempool *sess_mp,\n \t\t\t\t\t&sess_conf, sess_mp, priv_mp);\n \t}\n #endif\n-\tsess = rte_cryptodev_sym_session_create(sess_mp);\n \t/*\n \t * cipher only\n \t */\n@@ -937,8 +936,8 @@ cperf_create_session(struct rte_mempool *sess_mp,\n \t\t\tcipher_xform.cipher.iv.length = 0;\n \t\t}\n \t\t/* create crypto session */\n-\t\trte_cryptodev_sym_session_init(dev_id, sess, &cipher_xform,\n-\t\t\t\tpriv_mp);\n+\t\tsess = rte_cryptodev_sym_session_create(dev_id, &cipher_xform,\n+\t\t\t\tsess_mp);\n \t/*\n \t *  auth only\n \t */\n@@ -965,8 +964,8 @@ cperf_create_session(struct rte_mempool *sess_mp,\n \t\t\tauth_xform.auth.iv.length = 0;\n \t\t}\n \t\t/* create crypto session */\n-\t\trte_cryptodev_sym_session_init(dev_id, sess, &auth_xform,\n-\t\t\t\tpriv_mp);\n+\t\tsess = rte_cryptodev_sym_session_create(dev_id, &auth_xform,\n+\t\t\t\tsess_mp);\n \t/*\n \t * cipher and auth\n \t */\n@@ -1024,13 +1023,13 @@ cperf_create_session(struct rte_mempool *sess_mp,\n \t\tif (options->op_type == CPERF_CIPHER_THEN_AUTH) {\n \t\t\tcipher_xform.next = &auth_xform;\n \t\t\t/* create crypto session */\n-\t\t\trte_cryptodev_sym_session_init(dev_id,\n-\t\t\t\t\tsess, &cipher_xform, priv_mp);\n+\t\t\tsess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t\t\t&cipher_xform, sess_mp);\n \t\t} else { /* auth then cipher */\n \t\t\tauth_xform.next = &cipher_xform;\n \t\t\t/* create crypto session */\n-\t\t\trte_cryptodev_sym_session_init(dev_id,\n-\t\t\t\t\tsess, &auth_xform, priv_mp);\n+\t\t\tsess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t\t\t&auth_xform, sess_mp);\n \t\t}\n \t} else { /* options->op_type == CPERF_AEAD */\n \t\taead_xform.type = RTE_CRYPTO_SYM_XFORM_AEAD;\n@@ -1050,8 +1049,8 @@ cperf_create_session(struct rte_mempool *sess_mp,\n \t\t\t\t\toptions->aead_aad_sz;\n \n \t\t/* Create crypto session */\n-\t\trte_cryptodev_sym_session_init(dev_id,\n-\t\t\t\t\tsess, &aead_xform, priv_mp);\n+\t\tsess = rte_cryptodev_sym_session_create(dev_id, &aead_xform,\n+\t\t\t\tsess_mp);\n \t}\n \n \treturn sess;\ndiff --git a/app/test-crypto-perf/cperf_test_latency.c b/app/test-crypto-perf/cperf_test_latency.c\nindex 6f972cea49..afd8cb209b 100644\n--- a/app/test-crypto-perf/cperf_test_latency.c\n+++ b/app/test-crypto-perf/cperf_test_latency.c\n@@ -44,10 +44,8 @@ static void\n cperf_latency_test_free(struct cperf_latency_ctx *ctx)\n {\n \tif (ctx) {\n-\t\tif (ctx->sess) {\n-\t\t\trte_cryptodev_sym_session_clear(ctx->dev_id, ctx->sess);\n-\t\t\trte_cryptodev_sym_session_free(ctx->sess);\n-\t\t}\n+\t\tif (ctx->sess)\n+\t\t\trte_cryptodev_sym_session_free(ctx->dev_id, ctx->sess);\n \n \t\trte_mempool_free(ctx->pool);\n \ndiff --git a/app/test-crypto-perf/cperf_test_pmd_cyclecount.c b/app/test-crypto-perf/cperf_test_pmd_cyclecount.c\nindex 3f2da13d3a..edd2730b73 100644\n--- a/app/test-crypto-perf/cperf_test_pmd_cyclecount.c\n+++ b/app/test-crypto-perf/cperf_test_pmd_cyclecount.c\n@@ -74,10 +74,7 @@ cperf_pmd_cyclecount_test_free(struct cperf_pmd_cyclecount_ctx *ctx)\n \t\t\t\t(struct rte_security_session *)ctx->sess);\n \t\t} else\n #endif\n-\t\t{\n-\t\t\trte_cryptodev_sym_session_clear(ctx->dev_id, ctx->sess);\n-\t\t\trte_cryptodev_sym_session_free(ctx->sess);\n-\t\t}\n+\t\t\trte_cryptodev_sym_session_free(ctx->dev_id, ctx->sess);\n \t}\n \n \trte_mempool_free(ctx->pool);\ndiff --git a/app/test-crypto-perf/cperf_test_throughput.c b/app/test-crypto-perf/cperf_test_throughput.c\nindex fba66bbde9..fa13915dc3 100644\n--- a/app/test-crypto-perf/cperf_test_throughput.c\n+++ b/app/test-crypto-perf/cperf_test_throughput.c\n@@ -52,10 +52,8 @@ cperf_throughput_test_free(struct cperf_throughput_ctx *ctx)\n \t\t\t\t(struct rte_security_session *)ctx->sess);\n \t\t}\n #endif\n-\t\telse {\n-\t\t\trte_cryptodev_sym_session_clear(ctx->dev_id, ctx->sess);\n-\t\t\trte_cryptodev_sym_session_free(ctx->sess);\n-\t\t}\n+\t\telse\n+\t\t\trte_cryptodev_sym_session_free(ctx->dev_id, ctx->sess);\n \t}\n \trte_mempool_free(ctx->pool);\n \ndiff --git a/app/test-crypto-perf/cperf_test_verify.c b/app/test-crypto-perf/cperf_test_verify.c\nindex b691595675..c1465db243 100644\n--- a/app/test-crypto-perf/cperf_test_verify.c\n+++ b/app/test-crypto-perf/cperf_test_verify.c\n@@ -39,10 +39,8 @@ static void\n cperf_verify_test_free(struct cperf_verify_ctx *ctx)\n {\n \tif (ctx) {\n-\t\tif (ctx->sess) {\n-\t\t\trte_cryptodev_sym_session_clear(ctx->dev_id, ctx->sess);\n-\t\t\trte_cryptodev_sym_session_free(ctx->sess);\n-\t\t}\n+\t\tif (ctx->sess)\n+\t\t\trte_cryptodev_sym_session_free(ctx->dev_id, ctx->sess);\n \n \t\trte_mempool_free(ctx->pool);\n \ndiff --git a/app/test-crypto-perf/main.c b/app/test-crypto-perf/main.c\nindex 27acd619bc..3469b836e1 100644\n--- a/app/test-crypto-perf/main.c\n+++ b/app/test-crypto-perf/main.c\n@@ -97,35 +97,14 @@ fill_session_pool_socket(int32_t socket_id, uint32_t session_priv_size,\n \tchar mp_name[RTE_MEMPOOL_NAMESIZE];\n \tstruct rte_mempool *sess_mp;\n \n-\tif (session_pool_socket[socket_id].priv_mp == NULL) {\n-\t\tsnprintf(mp_name, RTE_MEMPOOL_NAMESIZE,\n-\t\t\t\"priv_sess_mp_%u\", socket_id);\n-\n-\t\tsess_mp = rte_mempool_create(mp_name,\n-\t\t\t\t\tnb_sessions,\n-\t\t\t\t\tsession_priv_size,\n-\t\t\t\t\t0, 0, NULL, NULL, NULL,\n-\t\t\t\t\tNULL, socket_id,\n-\t\t\t\t\t0);\n-\n-\t\tif (sess_mp == NULL) {\n-\t\t\tprintf(\"Cannot create pool \\\"%s\\\" on socket %d\\n\",\n-\t\t\t\tmp_name, socket_id);\n-\t\t\treturn -ENOMEM;\n-\t\t}\n-\n-\t\tprintf(\"Allocated pool \\\"%s\\\" on socket %d\\n\",\n-\t\t\tmp_name, socket_id);\n-\t\tsession_pool_socket[socket_id].priv_mp = sess_mp;\n-\t}\n-\n \tif (session_pool_socket[socket_id].sess_mp == NULL) {\n \n \t\tsnprintf(mp_name, RTE_MEMPOOL_NAMESIZE,\n \t\t\t\"sess_mp_%u\", socket_id);\n \n \t\tsess_mp = rte_cryptodev_sym_session_pool_create(mp_name,\n-\t\t\t\t\tnb_sessions, 0, 0, 0, socket_id);\n+\t\t\t\t\tnb_sessions, session_priv_size, 0, 0,\n+\t\t\t\t\tsocket_id);\n \n \t\tif (sess_mp == NULL) {\n \t\t\tprintf(\"Cannot create pool \\\"%s\\\" on socket %d\\n\",\n@@ -136,6 +115,7 @@ fill_session_pool_socket(int32_t socket_id, uint32_t session_priv_size,\n \t\tprintf(\"Allocated pool \\\"%s\\\" on socket %d\\n\",\n \t\t\tmp_name, socket_id);\n \t\tsession_pool_socket[socket_id].sess_mp = sess_mp;\n+\t\tsession_pool_socket[socket_id].priv_mp = sess_mp;\n \t}\n \n \treturn 0;\n@@ -323,12 +303,9 @@ cperf_initialize_cryptodev(struct cperf_options *opts, uint8_t *enabled_cdevs)\n \t\t\treturn ret;\n \n \t\tqp_conf.mp_session = session_pool_socket[socket_id].sess_mp;\n-\t\tqp_conf.mp_session_private =\n-\t\t\t\tsession_pool_socket[socket_id].priv_mp;\n \n \t\tif (opts->op_type == CPERF_ASYM_MODEX) {\n \t\t\tqp_conf.mp_session = NULL;\n-\t\t\tqp_conf.mp_session_private = NULL;\n \t\t}\n \n \t\tret = rte_cryptodev_configure(cdev_id, &conf);\ndiff --git a/app/test-eventdev/test_perf_common.c b/app/test-eventdev/test_perf_common.c\nindex 8472a87b99..cd3c1d7ef1 100644\n--- a/app/test-eventdev/test_perf_common.c\n+++ b/app/test-eventdev/test_perf_common.c\n@@ -863,18 +863,13 @@ cryptodev_sym_sess_create(struct prod_data *p, struct test_perf *t)\n \tcipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;\n \tcipher_xform.next = NULL;\n \n-\tsess = rte_cryptodev_sym_session_create(t->ca_sess_pool);\n+\tsess = rte_cryptodev_sym_session_create(p->ca.cdev_id, &cipher_xform,\n+\t\t\tt->ca_sess_pool);\n \tif (sess == NULL) {\n \t\tevt_err(\"Failed to create sym session\");\n \t\treturn NULL;\n \t}\n \n-\tif (rte_cryptodev_sym_session_init(p->ca.cdev_id, sess, &cipher_xform,\n-\t\t\t\t\t   t->ca_sess_priv_pool)) {\n-\t\tevt_err(\"Failed to init session\");\n-\t\treturn NULL;\n-\t}\n-\n \treturn sess;\n }\n \n@@ -1381,15 +1376,6 @@ perf_cryptodev_setup(struct evt_test *test, struct evt_options *opt)\n \t\tgoto err;\n \t}\n \n-\tt->ca_sess_pool = rte_cryptodev_sym_session_pool_create(\n-\t\t\"ca_sess_pool\", nb_sessions, 0, 0,\n-\t\tsizeof(union rte_event_crypto_metadata), SOCKET_ID_ANY);\n-\tif (t->ca_sess_pool == NULL) {\n-\t\tevt_err(\"Failed to create sym session pool\");\n-\t\tret = -ENOMEM;\n-\t\tgoto err;\n-\t}\n-\n \tmax_session_size = 0;\n \tfor (cdev_id = 0; cdev_id < cdev_count; cdev_id++) {\n \t\tunsigned int session_size;\n@@ -1400,12 +1386,11 @@ perf_cryptodev_setup(struct evt_test *test, struct evt_options *opt)\n \t\t\tmax_session_size = session_size;\n \t}\n \n-\tmax_session_size += sizeof(union rte_event_crypto_metadata);\n-\tt->ca_sess_priv_pool = rte_mempool_create(\n-\t\t\"ca_sess_priv_pool\", nb_sessions, max_session_size, 0, 0, NULL,\n-\t\tNULL, NULL, NULL, SOCKET_ID_ANY, 0);\n-\tif (t->ca_sess_priv_pool == NULL) {\n-\t\tevt_err(\"failed to create sym session private pool\");\n+\tt->ca_sess_pool = rte_cryptodev_sym_session_pool_create(\n+\t\t\"ca_sess_pool\", nb_sessions, max_session_size, 0,\n+\t\tsizeof(union rte_event_crypto_metadata), SOCKET_ID_ANY);\n+\tif (t->ca_sess_pool == NULL) {\n+\t\tevt_err(\"Failed to create sym session pool\");\n \t\tret = -ENOMEM;\n \t\tgoto err;\n \t}\n@@ -1445,7 +1430,6 @@ perf_cryptodev_setup(struct evt_test *test, struct evt_options *opt)\n \n \t\tqp_conf.nb_descriptors = NB_CRYPTODEV_DESCRIPTORS;\n \t\tqp_conf.mp_session = t->ca_sess_pool;\n-\t\tqp_conf.mp_session_private = t->ca_sess_priv_pool;\n \n \t\tfor (qp_id = 0; qp_id < conf.nb_queue_pairs; qp_id++) {\n \t\t\tret = rte_cryptodev_queue_pair_setup(\n@@ -1466,7 +1450,6 @@ perf_cryptodev_setup(struct evt_test *test, struct evt_options *opt)\n \n \trte_mempool_free(t->ca_op_pool);\n \trte_mempool_free(t->ca_sess_pool);\n-\trte_mempool_free(t->ca_sess_priv_pool);\n \trte_mempool_free(t->ca_asym_sess_pool);\n \n \treturn ret;\n@@ -1491,8 +1474,7 @@ perf_cryptodev_destroy(struct evt_test *test, struct evt_options *opt)\n \t\tfor (flow_id = 0; flow_id < t->nb_flows; flow_id++) {\n \t\t\tsess = p->ca.crypto_sess[flow_id];\n \t\t\tcdev_id = p->ca.cdev_id;\n-\t\t\trte_cryptodev_sym_session_clear(cdev_id, sess);\n-\t\t\trte_cryptodev_sym_session_free(sess);\n+\t\t\trte_cryptodev_sym_session_free(cdev_id, sess);\n \t\t}\n \n \t\trte_event_crypto_adapter_queue_pair_del(\n@@ -1508,7 +1490,6 @@ perf_cryptodev_destroy(struct evt_test *test, struct evt_options *opt)\n \n \trte_mempool_free(t->ca_op_pool);\n \trte_mempool_free(t->ca_sess_pool);\n-\trte_mempool_free(t->ca_sess_priv_pool);\n \trte_mempool_free(t->ca_asym_sess_pool);\n }\n \ndiff --git a/app/test-eventdev/test_perf_common.h b/app/test-eventdev/test_perf_common.h\nindex 8cbd06fe42..d06d52cdf8 100644\n--- a/app/test-eventdev/test_perf_common.h\n+++ b/app/test-eventdev/test_perf_common.h\n@@ -70,7 +70,6 @@ struct test_perf {\n \t\tRTE_EVENT_TIMER_ADAPTER_NUM_MAX] __rte_cache_aligned;\n \tstruct rte_mempool *ca_op_pool;\n \tstruct rte_mempool *ca_sess_pool;\n-\tstruct rte_mempool *ca_sess_priv_pool;\n \tstruct rte_mempool *ca_asym_sess_pool;\n } __rte_cache_aligned;\n \ndiff --git a/app/test/test_cryptodev.c b/app/test/test_cryptodev.c\nindex 0c39b16b71..ae2b102ecb 100644\n--- a/app/test/test_cryptodev.c\n+++ b/app/test/test_cryptodev.c\n@@ -13,6 +13,7 @@\n #include <rte_pause.h>\n #include <rte_bus_vdev.h>\n #include <rte_ether.h>\n+#include <rte_errno.h>\n \n #include <rte_crypto.h>\n #include <rte_cryptodev.h>\n@@ -644,23 +645,17 @@ testsuite_setup(void)\n \t}\n \n \tts_params->session_mpool = rte_cryptodev_sym_session_pool_create(\n-\t\t\t\"test_sess_mp\", MAX_NB_SESSIONS, 0, 0, 0,\n+\t\t\t\"test_sess_mp\", MAX_NB_SESSIONS, session_size, 0, 0,\n \t\t\tSOCKET_ID_ANY);\n \tTEST_ASSERT_NOT_NULL(ts_params->session_mpool,\n \t\t\t\"session mempool allocation failed\");\n-\n \tts_params->session_priv_mpool = rte_mempool_create(\n-\t\t\t\"test_sess_mp_priv\",\n-\t\t\tMAX_NB_SESSIONS,\n-\t\t\tsession_size,\n-\t\t\t0, 0, NULL, NULL, NULL,\n-\t\t\tNULL, SOCKET_ID_ANY,\n-\t\t\t0);\n+\t\t\t\"test_sess_mp_priv\", MAX_NB_SESSIONS, session_size,\n+\t\t\t0, 0, NULL, NULL, NULL, NULL, SOCKET_ID_ANY, 0);\n+\n \tTEST_ASSERT_NOT_NULL(ts_params->session_priv_mpool,\n \t\t\t\"session mempool allocation failed\");\n \n-\n-\n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(dev_id,\n \t\t\t&ts_params->conf),\n \t\t\t\"Failed to configure cryptodev %u with %u qps\",\n@@ -668,7 +663,6 @@ testsuite_setup(void)\n \n \tts_params->qp_conf.nb_descriptors = MAX_NUM_OPS_INFLIGHT;\n \tts_params->qp_conf.mp_session = ts_params->session_mpool;\n-\tts_params->qp_conf.mp_session_private = ts_params->session_priv_mpool;\n \n \tfor (qp_id = 0; qp_id < info.max_nb_queue_pairs; qp_id++) {\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n@@ -697,15 +691,11 @@ testsuite_teardown(void)\n \t\trte_mempool_avail_count(ts_params->op_mpool));\n \t}\n \n-\t/* Free session mempools */\n-\tif (ts_params->session_priv_mpool != NULL) {\n-\t\trte_mempool_free(ts_params->session_priv_mpool);\n-\t\tts_params->session_priv_mpool = NULL;\n-\t}\n-\n \tif (ts_params->session_mpool != NULL) {\n \t\trte_mempool_free(ts_params->session_mpool);\n \t\tts_params->session_mpool = NULL;\n+\t\trte_mempool_free(ts_params->session_priv_mpool);\n+\t\tts_params->session_priv_mpool = NULL;\n \t}\n \n \tres = rte_cryptodev_close(ts_params->valid_devs[0]);\n@@ -1392,7 +1382,6 @@ dev_configure_and_start(uint64_t ff_disable)\n \tts_params->conf.ff_disable = ff_disable;\n \tts_params->qp_conf.nb_descriptors = MAX_NUM_OPS_INFLIGHT;\n \tts_params->qp_conf.mp_session = ts_params->session_mpool;\n-\tts_params->qp_conf.mp_session_private = ts_params->session_priv_mpool;\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_configure(ts_params->valid_devs[0],\n \t\t\t&ts_params->conf),\n@@ -1452,10 +1441,8 @@ ut_teardown(void)\n #endif\n \t{\n \t\tif (ut_params->sess) {\n-\t\t\trte_cryptodev_sym_session_clear(\n-\t\t\t\t\tts_params->valid_devs[0],\n+\t\t\trte_cryptodev_sym_session_free(ts_params->valid_devs[0],\n \t\t\t\t\tut_params->sess);\n-\t\t\trte_cryptodev_sym_session_free(ut_params->sess);\n \t\t\tut_params->sess = NULL;\n \t\t}\n \t}\n@@ -1610,7 +1597,6 @@ test_queue_pair_descriptor_setup(void)\n \t */\n \tqp_conf.nb_descriptors = MIN_NUM_OPS_INFLIGHT; /* min size*/\n \tqp_conf.mp_session = ts_params->session_mpool;\n-\tqp_conf.mp_session_private = ts_params->session_priv_mpool;\n \n \tfor (qp_id = 0; qp_id < ts_params->conf.nb_queue_pairs; qp_id++) {\n \t\tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n@@ -2155,8 +2141,6 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n-\tint status;\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@@ -2200,19 +2184,13 @@ test_AES_CBC_HMAC_SHA1_encrypt_digest(void)\n \tut_params->auth_xform.auth.key.data = hmac_sha1_key;\n \tut_params->auth_xform.auth.digest_length = DIGEST_BYTE_LENGTH_SHA1;\n \n+\trte_errno = 0;\n \tut_params->sess = rte_cryptodev_sym_session_create(\n+\t\t\tts_params->valid_devs[0], &ut_params->cipher_xform,\n \t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n-\t/* Create crypto session*/\n-\tstatus = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\tut_params->sess, &ut_params->cipher_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\n-\tif (status == -ENOTSUP)\n+\tif (rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Session init failed\");\n+\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \n \t/* Generate crypto op data structure */\n \tut_params->op = rte_crypto_op_alloc(ts_params->op_mpool,\n@@ -2441,7 +2419,6 @@ create_wireless_algo_hash_session(uint8_t dev_id,\n \tenum rte_crypto_auth_algorithm algo)\n {\n \tuint8_t hash_key[key_len];\n-\tint status;\n \n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -2461,16 +2438,11 @@ create_wireless_algo_hash_session(uint8_t dev_id,\n \tut_params->auth_xform.auth.digest_length = auth_len;\n \tut_params->auth_xform.auth.iv.offset = IV_OFFSET;\n \tut_params->auth_xform.auth.iv.length = iv_len;\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n-\n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t&ut_params->auth_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tif (status == -ENOTSUP)\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->auth_xform, ts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n \n-\tTEST_ASSERT_EQUAL(status, 0, \"session init failed\");\n \tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \treturn 0;\n }\n@@ -2483,7 +2455,6 @@ create_wireless_algo_cipher_session(uint8_t dev_id,\n \t\t\tuint8_t iv_len)\n {\n \tuint8_t cipher_key[key_len];\n-\tint status;\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \n@@ -2503,16 +2474,12 @@ create_wireless_algo_cipher_session(uint8_t dev_id,\n \tdebug_hexdump(stdout, \"key:\", key, key_len);\n \n \t/* Create Crypto session */\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->cipher_xform, ts_params->session_mpool);\n \n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t&ut_params->cipher_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tif (status == -ENOTSUP)\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n \n-\tTEST_ASSERT_EQUAL(status, 0, \"session init failed\");\n \tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \treturn 0;\n }\n@@ -2590,7 +2557,6 @@ create_wireless_algo_cipher_auth_session(uint8_t dev_id,\n \n {\n \tuint8_t cipher_auth_key[key_len];\n-\tint status;\n \n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -2625,17 +2591,12 @@ create_wireless_algo_cipher_auth_session(uint8_t dev_id,\n \tdebug_hexdump(stdout, \"key:\", key, key_len);\n \n \t/* Create Crypto session*/\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t&ut_params->cipher_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tif (status == -ENOTSUP)\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->cipher_xform, ts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n \n-\tTEST_ASSERT_EQUAL(status, 0, \"session init failed\");\n+\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \treturn 0;\n }\n \n@@ -2649,7 +2610,6 @@ create_wireless_cipher_auth_session(uint8_t dev_id,\n {\n \tconst uint8_t key_len = tdata->key.len;\n \tuint8_t cipher_auth_key[key_len];\n-\tint status;\n \n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -2689,16 +2649,11 @@ create_wireless_cipher_auth_session(uint8_t dev_id,\n \tdebug_hexdump(stdout, \"key:\", key, key_len);\n \n \t/* Create Crypto session*/\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n-\n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t&ut_params->cipher_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tif (status == -ENOTSUP)\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->cipher_xform, ts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n \n-\tTEST_ASSERT_EQUAL(status, 0, \"session init failed\");\n \tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \treturn 0;\n }\n@@ -2724,7 +2679,6 @@ create_wireless_algo_auth_cipher_session(uint8_t dev_id,\n \t\tuint8_t cipher_iv_len)\n {\n \tuint8_t auth_cipher_key[key_len];\n-\tint status;\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n \n@@ -2755,26 +2709,19 @@ create_wireless_algo_auth_cipher_session(uint8_t dev_id,\n \tdebug_hexdump(stdout, \"key:\", key, key_len);\n \n \t/* Create Crypto session*/\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n \tif (cipher_op == RTE_CRYPTO_CIPHER_OP_DECRYPT) {\n \t\tut_params->auth_xform.next = NULL;\n \t\tut_params->cipher_xform.next = &ut_params->auth_xform;\n-\t\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t\t&ut_params->cipher_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n-\n+\t\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->cipher_xform, ts_params->session_mpool);\n \t} else\n-\t\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t\t&ut_params->auth_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n+\t\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->auth_xform, ts_params->session_mpool);\n \n-\tif (status == -ENOTSUP)\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n \n-\tTEST_ASSERT_EQUAL(status, 0, \"session init failed\");\n+\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \n \treturn 0;\n }\n@@ -8205,7 +8152,6 @@ create_aead_session(uint8_t dev_id, enum rte_crypto_aead_algorithm algo,\n \t\tuint8_t iv_len)\n {\n \tuint8_t aead_key[key_len];\n-\tint status;\n \n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -8227,15 +8173,12 @@ create_aead_session(uint8_t dev_id, enum rte_crypto_aead_algorithm algo,\n \tdebug_hexdump(stdout, \"key:\", key, key_len);\n \n \t/* Create Crypto session*/\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->aead_xform, ts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n+\t\treturn TEST_SKIPPED;\n \tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t&ut_params->aead_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\n-\treturn status;\n+\treturn 0;\n }\n \n static int\n@@ -8679,7 +8622,7 @@ static int test_pdcp_proto(int i, int oop, enum rte_crypto_cipher_operation opc,\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_mpool,\n-\t\t\t\tts_params->session_priv_mpool);\n+\t\t\t\tNULL);\n \n \tif (!ut_params->sec_session) {\n \t\tprintf(\"TestCase %s()-%d line %d failed %s: \",\n@@ -12029,7 +11972,6 @@ static int MD5_HMAC_create_session(struct crypto_testsuite_params *ts_params,\n \t\t\t\t   const struct HMAC_MD5_vector *test_case)\n {\n \tuint8_t key[64];\n-\tint status;\n \n \tmemcpy(key, test_case->key.data, test_case->key.len);\n \n@@ -12044,16 +11986,11 @@ static int MD5_HMAC_create_session(struct crypto_testsuite_params *ts_params,\n \tut_params->auth_xform.auth.key.data = key;\n \n \tut_params->sess = rte_cryptodev_sym_session_create(\n+\t\tts_params->valid_devs[0], &ut_params->auth_xform,\n \t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\tif (ut_params->sess == NULL)\n-\t\treturn TEST_FAILED;\n-\n-\tstatus = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\tut_params->sess, &ut_params->auth_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tif (status == -ENOTSUP)\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n+\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \n \tut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);\n \n@@ -12261,12 +12198,9 @@ test_multi_session(void)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n-\n \tstruct rte_cryptodev_info dev_info;\n \tstruct rte_cryptodev_sym_session **sessions;\n-\n \tuint16_t i;\n-\tint status;\n \n \t/* Verify the capabilities */\n \tstruct rte_cryptodev_sym_capability_idx cap_idx;\n@@ -12293,20 +12227,15 @@ test_multi_session(void)\n \n \t/* Create multiple crypto sessions*/\n \tfor (i = 0; i < MAX_NB_SESSIONS; i++) {\n-\n \t\tsessions[i] = rte_cryptodev_sym_session_create(\n+\t\t\tts_params->valid_devs[0], &ut_params->auth_xform,\n \t\t\t\tts_params->session_mpool);\n+\t\tif (sessions[i] == NULL && rte_errno == ENOTSUP)\n+\t\t\treturn TEST_SKIPPED;\n+\n \t\tTEST_ASSERT_NOT_NULL(sessions[i],\n \t\t\t\t\"Session creation failed at session number %u\",\n \t\t\t\ti);\n-\n-\t\tstatus = rte_cryptodev_sym_session_init(\n-\t\t\t\tts_params->valid_devs[0],\n-\t\t\t\tsessions[i], &ut_params->auth_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n-\t\tif (status == -ENOTSUP)\n-\t\t\treturn TEST_SKIPPED;\n-\n \t\t/* Attempt to send a request on each session */\n \t\tTEST_ASSERT_SUCCESS( test_AES_CBC_HMAC_SHA512_decrypt_perform(\n \t\t\tsessions[i],\n@@ -12336,18 +12265,9 @@ test_multi_session(void)\n \t\t}\n \t}\n \n-\tsessions[i] = NULL;\n-\t/* Next session create should fail */\n-\trte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\tsessions[i], &ut_params->auth_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tTEST_ASSERT_NULL(sessions[i],\n-\t\t\t\"Session creation succeeded unexpectedly!\");\n-\n \tfor (i = 0; i < MAX_NB_SESSIONS; i++) {\n-\t\trte_cryptodev_sym_session_clear(ts_params->valid_devs[0],\n+\t\trte_cryptodev_sym_session_free(ts_params->valid_devs[0],\n \t\t\t\tsessions[i]);\n-\t\trte_cryptodev_sym_session_free(sessions[i]);\n \t}\n \n \trte_free(sessions);\n@@ -12398,7 +12318,6 @@ test_multi_session_random_usage(void)\n \t\t},\n \n \t};\n-\tint status;\n \n \t/* Verify the capabilities */\n \tstruct rte_cryptodev_sym_capability_idx cap_idx;\n@@ -12420,11 +12339,6 @@ test_multi_session_random_usage(void)\n \t\t\t\t\t* MAX_NB_SESSIONS) + 1, 0);\n \n \tfor (i = 0; i < MB_SESSION_NUMBER; i++) {\n-\t\tsessions[i] = rte_cryptodev_sym_session_create(\n-\t\t\t\tts_params->session_mpool);\n-\t\tTEST_ASSERT_NOT_NULL(sessions[i],\n-\t\t\t\t\"Session creation failed at session number %u\",\n-\t\t\t\ti);\n \n \t\trte_memcpy(&ut_paramz[i].ut_params, &unittest_params,\n \t\t\t\tsizeof(struct crypto_unittest_params));\n@@ -12434,16 +12348,16 @@ test_multi_session_random_usage(void)\n \t\t\t\tut_paramz[i].cipher_key, ut_paramz[i].hmac_key);\n \n \t\t/* Create multiple crypto sessions*/\n-\t\tstatus = rte_cryptodev_sym_session_init(\n+\t\tsessions[i] = rte_cryptodev_sym_session_create(\n \t\t\t\tts_params->valid_devs[0],\n-\t\t\t\tsessions[i],\n \t\t\t\t&ut_paramz[i].ut_params.auth_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n-\n-\t\tif (status == -ENOTSUP)\n+\t\t\t\tts_params->session_mpool);\n+\t\tif (sessions[i] == NULL && rte_errno == ENOTSUP)\n \t\t\treturn TEST_SKIPPED;\n \n-\t\tTEST_ASSERT_EQUAL(status, 0, \"Session init failed\");\n+\t\tTEST_ASSERT_NOT_NULL(sessions[i],\n+\t\t\t\t\"Session creation failed at session number %u\",\n+\t\t\t\ti);\n \t}\n \n \tsrand(time(NULL));\n@@ -12481,9 +12395,8 @@ test_multi_session_random_usage(void)\n \t}\n \n \tfor (i = 0; i < MB_SESSION_NUMBER; i++) {\n-\t\trte_cryptodev_sym_session_clear(ts_params->valid_devs[0],\n+\t\trte_cryptodev_sym_session_free(ts_params->valid_devs[0],\n \t\t\t\tsessions[i]);\n-\t\trte_cryptodev_sym_session_free(sessions[i]);\n \t}\n \n \trte_free(sessions);\n@@ -12501,7 +12414,6 @@ test_null_invalid_operation(void)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\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@@ -12515,17 +12427,13 @@ test_null_invalid_operation(void)\n \tut_params->cipher_xform.cipher.algo = RTE_CRYPTO_CIPHER_AES_CBC;\n \tut_params->cipher_xform.cipher.op = RTE_CRYPTO_CIPHER_OP_ENCRYPT;\n \n+\t/* Create Crypto session*/\n \tut_params->sess = rte_cryptodev_sym_session_create(\n+\t\t\tts_params->valid_devs[0], &ut_params->cipher_xform,\n \t\t\tts_params->session_mpool);\n-\n-\t/* Create Crypto session*/\n-\tret = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\tut_params->sess, &ut_params->cipher_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tTEST_ASSERT(ret < 0,\n+\tTEST_ASSERT(ut_params->sess == NULL,\n \t\t\t\"Session creation succeeded unexpectedly\");\n \n-\n \t/* Setup HMAC Parameters */\n \tut_params->auth_xform.type = RTE_CRYPTO_SYM_XFORM_AUTH;\n \tut_params->auth_xform.next = NULL;\n@@ -12533,14 +12441,11 @@ test_null_invalid_operation(void)\n \tut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_SHA1_HMAC;\n \tut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;\n \n+\t/* Create Crypto session*/\n \tut_params->sess = rte_cryptodev_sym_session_create(\n+\t\t\tts_params->valid_devs[0], &ut_params->auth_xform,\n \t\t\tts_params->session_mpool);\n-\n-\t/* Create Crypto session*/\n-\tret = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\tut_params->sess, &ut_params->auth_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\tTEST_ASSERT(ret < 0,\n+\tTEST_ASSERT(ut_params->sess == NULL,\n \t\t\t\"Session creation succeeded unexpectedly\");\n \n \treturn TEST_SUCCESS;\n@@ -12554,7 +12459,6 @@ test_null_burst_operation(void)\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n-\tint status;\n \n \tunsigned i, burst_len = NULL_BURST_LENGTH;\n \n@@ -12580,19 +12484,14 @@ test_null_burst_operation(void)\n \tut_params->auth_xform.auth.algo = RTE_CRYPTO_AUTH_NULL;\n \tut_params->auth_xform.auth.op = RTE_CRYPTO_AUTH_OP_GENERATE;\n \n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n \t/* Create Crypto session*/\n-\tstatus = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\tut_params->sess, &ut_params->cipher_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\n-\tif (status == -ENOTSUP)\n+\tut_params->sess = rte_cryptodev_sym_session_create(\n+\t\t\t\tts_params->valid_devs[0],\n+\t\t\t\t&ut_params->auth_xform,\n+\t\t\t\tts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Session init failed\");\n+\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \n \tTEST_ASSERT_EQUAL(rte_crypto_op_bulk_alloc(ts_params->op_mpool,\n \t\t\tRTE_CRYPTO_OP_TYPE_SYMMETRIC, burst, burst_len),\n@@ -12703,7 +12602,6 @@ test_enq_callback_setup(void)\n \n \tqp_conf.nb_descriptors = MAX_NUM_OPS_INFLIGHT;\n \tqp_conf.mp_session = ts_params->session_mpool;\n-\tqp_conf.mp_session_private = ts_params->session_priv_mpool;\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n@@ -12803,7 +12701,6 @@ test_deq_callback_setup(void)\n \n \tqp_conf.nb_descriptors = MAX_NUM_OPS_INFLIGHT;\n \tqp_conf.mp_session = ts_params->session_mpool;\n-\tqp_conf.mp_session_private = ts_params->session_priv_mpool;\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\tts_params->valid_devs[0], qp_id, &qp_conf,\n@@ -12990,7 +12887,6 @@ static int create_gmac_session(uint8_t dev_id,\n \t\tenum rte_crypto_auth_operation auth_op)\n {\n \tuint8_t auth_key[tdata->key.len];\n-\tint status;\n \n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tstruct crypto_unittest_params *ut_params = &unittest_params;\n@@ -13009,15 +12905,13 @@ static int create_gmac_session(uint8_t dev_id,\n \tut_params->auth_xform.auth.iv.length = tdata->iv.len;\n \n \n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n+\t\t\t&ut_params->auth_xform, ts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n+\t\treturn TEST_SKIPPED;\n \tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n-\t\t\t&ut_params->auth_xform,\n-\t\t\tts_params->session_priv_mpool);\n-\n-\treturn status;\n+\treturn 0;\n }\n \n static int\n@@ -13646,7 +13540,6 @@ create_auth_session(struct crypto_unittest_params *ut_params,\n {\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tuint8_t auth_key[reference->auth_key.len + 1];\n-\tint status;\n \n \tmemcpy(auth_key, reference->auth_key.data, reference->auth_key.len);\n \n@@ -13660,15 +13553,13 @@ create_auth_session(struct crypto_unittest_params *ut_params,\n \tut_params->auth_xform.auth.digest_length = reference->digest.len;\n \n \t/* Create Crypto session*/\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n \t\t\t\t&ut_params->auth_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n+\t\t\t\tts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n+\t\treturn TEST_SKIPPED;\n \n-\treturn status;\n+\treturn 0;\n }\n \n static int\n@@ -13681,7 +13572,6 @@ create_auth_cipher_session(struct crypto_unittest_params *ut_params,\n \tstruct crypto_testsuite_params *ts_params = &testsuite_params;\n \tuint8_t cipher_key[reference->cipher_key.len + 1];\n \tuint8_t auth_key[reference->auth_key.len + 1];\n-\tint status;\n \n \tmemcpy(cipher_key, reference->cipher_key.data,\n \t\t\treference->cipher_key.len);\n@@ -13713,15 +13603,13 @@ create_auth_cipher_session(struct crypto_unittest_params *ut_params,\n \t}\n \n \t/* Create Crypto session*/\n-\tut_params->sess = rte_cryptodev_sym_session_create(\n-\t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n-\tstatus = rte_cryptodev_sym_session_init(dev_id, ut_params->sess,\n+\tut_params->sess = rte_cryptodev_sym_session_create(dev_id,\n \t\t\t\t&ut_params->auth_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n+\t\t\t\tts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n+\t\treturn TEST_SKIPPED;\n \n-\treturn status;\n+\treturn 0;\n }\n \n static int\n@@ -14179,7 +14067,6 @@ test_authenticated_encrypt_with_esn(\n \tuint8_t cipher_key[reference->cipher_key.len + 1];\n \tuint8_t auth_key[reference->auth_key.len + 1];\n \tstruct rte_cryptodev_info dev_info;\n-\tint status;\n \n \trte_cryptodev_info_get(ts_params->valid_devs[0], &dev_info);\n \tuint64_t feat_flags = dev_info.feature_flags;\n@@ -14230,19 +14117,12 @@ test_authenticated_encrypt_with_esn(\n \n \t/* Create Crypto session*/\n \tut_params->sess = rte_cryptodev_sym_session_create(\n+\t\t\tts_params->valid_devs[0], &ut_params->cipher_xform,\n \t\t\tts_params->session_mpool);\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n+\t\treturn TEST_SKIPPED;\n \tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \n-\tstatus = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\t\tut_params->sess,\n-\t\t\t\t&ut_params->cipher_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n-\n-\tif (status == -ENOTSUP)\n-\t\treturn TEST_SKIPPED;\n-\n-\tTEST_ASSERT_EQUAL(status, 0, \"Session init failed\");\n-\n \tut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);\n \tTEST_ASSERT_NOT_NULL(ut_params->ibuf,\n \t\t\t\"Failed to allocate input buffer in mempool\");\n@@ -14366,18 +14246,11 @@ test_authenticated_decrypt_with_esn(\n \n \t/* Create Crypto session*/\n \tut_params->sess = rte_cryptodev_sym_session_create(\n+\t\t\tts_params->valid_devs[0], &ut_params->auth_xform,\n \t\t\tts_params->session_mpool);\n-\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n-\n-\tretval = rte_cryptodev_sym_session_init(ts_params->valid_devs[0],\n-\t\t\t\tut_params->sess,\n-\t\t\t\t&ut_params->auth_xform,\n-\t\t\t\tts_params->session_priv_mpool);\n-\n-\tif (retval == -ENOTSUP)\n+\tif (ut_params->sess == NULL && rte_errno == ENOTSUP)\n \t\treturn TEST_SKIPPED;\n-\n-\tTEST_ASSERT_EQUAL(retval, 0, \"Session init failed\");\n+\tTEST_ASSERT_NOT_NULL(ut_params->sess, \"Session creation failed\");\n \n \tut_params->ibuf = rte_pktmbuf_alloc(ts_params->mbuf_pool);\n \tTEST_ASSERT_NOT_NULL(ut_params->ibuf,\n@@ -15125,8 +14998,8 @@ test_scheduler_attach_worker_op(void)\n \t\t\tts_params->session_mpool =\n \t\t\t\trte_cryptodev_sym_session_pool_create(\n \t\t\t\t\t\t\"test_sess_mp\",\n-\t\t\t\t\t\tMAX_NB_SESSIONS, 0, 0, 0,\n-\t\t\t\t\t\tSOCKET_ID_ANY);\n+\t\t\t\t\t\tMAX_NB_SESSIONS, session_size,\n+\t\t\t\t\t\t0, 0, SOCKET_ID_ANY);\n \t\t\tTEST_ASSERT_NOT_NULL(ts_params->session_mpool,\n \t\t\t\t\t\"session mempool allocation failed\");\n \t\t}\n@@ -15149,8 +15022,6 @@ test_scheduler_attach_worker_op(void)\n \t\t}\n \n \t\tts_params->qp_conf.mp_session = ts_params->session_mpool;\n-\t\tts_params->qp_conf.mp_session_private =\n-\t\t\t\tts_params->session_priv_mpool;\n \n \t\tret = rte_cryptodev_scheduler_worker_attach(sched_id,\n \t\t\t\t(uint8_t)i);\ndiff --git a/app/test/test_cryptodev_blockcipher.c b/app/test/test_cryptodev_blockcipher.c\nindex b5813b956f..4fcdd55660 100644\n--- a/app/test/test_cryptodev_blockcipher.c\n+++ b/app/test/test_cryptodev_blockcipher.c\n@@ -68,7 +68,6 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,\n \tstruct rte_mempool *mbuf_pool,\n \tstruct rte_mempool *op_mpool,\n \tstruct rte_mempool *sess_mpool,\n-\tstruct rte_mempool *sess_priv_mpool,\n \tuint8_t dev_id,\n \tchar *test_msg)\n {\n@@ -514,11 +513,9 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,\n \t */\n \tif (!(t->feature_mask & BLOCKCIPHER_TEST_FEATURE_SESSIONLESS) &&\n \t\t\tnb_iterates == 0) {\n-\t\tsess = rte_cryptodev_sym_session_create(sess_mpool);\n-\n-\t\tstatus = rte_cryptodev_sym_session_init(dev_id, sess,\n-\t\t\t\tinit_xform, sess_priv_mpool);\n-\t\tif (status == -ENOTSUP) {\n+\t\tsess = rte_cryptodev_sym_session_create(dev_id, init_xform,\n+\t\t\t\tsess_mpool);\n+\t\tif (sess == NULL) {\n \t\t\tsnprintf(test_msg, BLOCKCIPHER_TEST_MSG_LEN, \"UNSUPPORTED\");\n \t\t\tstatus = TEST_SKIPPED;\n \t\t\tgoto error_exit;\n@@ -801,10 +798,8 @@ test_blockcipher_one_case(const struct blockcipher_test_case *t,\n \n error_exit:\n \tif (!(t->feature_mask & BLOCKCIPHER_TEST_FEATURE_SESSIONLESS)) {\n-\t\tif (sess) {\n-\t\t\trte_cryptodev_sym_session_clear(dev_id, sess);\n-\t\t\trte_cryptodev_sym_session_free(sess);\n-\t\t}\n+\t\tif (sess)\n+\t\t\trte_cryptodev_sym_session_free(dev_id, sess);\n \t\trte_free(cipher_xform);\n \t\trte_free(auth_xform);\n \t}\n@@ -829,7 +824,6 @@ blockcipher_test_case_run(const void *data)\n \t\t\tp_testsuite_params->mbuf_pool,\n \t\t\tp_testsuite_params->op_mpool,\n \t\t\tp_testsuite_params->session_mpool,\n-\t\t\tp_testsuite_params->session_priv_mpool,\n \t\t\tp_testsuite_params->valid_devs[0],\n \t\t\ttest_msg);\n \treturn status;\ndiff --git a/app/test/test_event_crypto_adapter.c b/app/test/test_event_crypto_adapter.c\nindex bb617c1042..0a7f8f8505 100644\n--- a/app/test/test_event_crypto_adapter.c\n+++ b/app/test/test_event_crypto_adapter.c\n@@ -157,7 +157,6 @@ struct event_crypto_adapter_test_params {\n \tstruct rte_mempool *op_mpool;\n \tstruct rte_mempool *asym_op_mpool;\n \tstruct rte_mempool *session_mpool;\n-\tstruct rte_mempool *session_priv_mpool;\n \tstruct rte_mempool *asym_sess_mpool;\n \tstruct rte_cryptodev_config *config;\n \tuint8_t crypto_event_port_id;\n@@ -307,15 +306,10 @@ test_op_forward_mode(uint8_t session_less)\n \tsym_op = op->sym;\n \n \tif (!session_less) {\n-\t\tsess = rte_cryptodev_sym_session_create(\n-\t\t\t\tparams.session_mpool);\n+\t\tsess = rte_cryptodev_sym_session_create(TEST_CDEV_ID,\n+\t\t\t\t&cipher_xform, params.session_mpool);\n \t\tTEST_ASSERT_NOT_NULL(sess, \"Session creation failed\\n\");\n \n-\t\t/* Create Crypto session*/\n-\t\tret = rte_cryptodev_sym_session_init(TEST_CDEV_ID, sess,\n-\t\t\t\t&cipher_xform, params.session_priv_mpool);\n-\t\tTEST_ASSERT_SUCCESS(ret, \"Failed to init session\\n\");\n-\n \t\tret = rte_event_crypto_adapter_caps_get(evdev, TEST_CDEV_ID,\n \t\t\t\t\t\t\t&cap);\n \t\tTEST_ASSERT_SUCCESS(ret, \"Failed to get adapter capabilities\\n\");\n@@ -683,8 +677,8 @@ test_op_new_mode(uint8_t session_less)\n \tsym_op = op->sym;\n \n \tif (!session_less) {\n-\t\tsess = rte_cryptodev_sym_session_create(\n-\t\t\t\tparams.session_mpool);\n+\t\tsess = rte_cryptodev_sym_session_create(TEST_CDEV_ID,\n+\t\t\t\t&cipher_xform, params.session_mpool);\n \t\tTEST_ASSERT_NOT_NULL(sess, \"Session creation failed\\n\");\n \n \t\tret = rte_event_crypto_adapter_caps_get(evdev, TEST_CDEV_ID,\n@@ -699,9 +693,6 @@ test_op_new_mode(uint8_t session_less)\n \t\t\t\t\tRTE_CRYPTO_OP_WITH_SESSION,\n \t\t\t\t\t&m_data, sizeof(m_data));\n \t\t}\n-\t\tret = rte_cryptodev_sym_session_init(TEST_CDEV_ID, sess,\n-\t\t\t\t&cipher_xform, params.session_priv_mpool);\n-\t\tTEST_ASSERT_SUCCESS(ret, \"Failed to init session\\n\");\n \n \t\trte_crypto_op_attach_sym_session(op, sess);\n \t} else {\n@@ -994,22 +985,12 @@ configure_cryptodev(void)\n \n \tparams.session_mpool = rte_cryptodev_sym_session_pool_create(\n \t\t\t\"CRYPTO_ADAPTER_SESSION_MP\",\n-\t\t\tMAX_NB_SESSIONS, 0, 0,\n+\t\t\tMAX_NB_SESSIONS, session_size, 0,\n \t\t\tsizeof(union rte_event_crypto_metadata),\n \t\t\tSOCKET_ID_ANY);\n \tTEST_ASSERT_NOT_NULL(params.session_mpool,\n \t\t\t\"session mempool allocation failed\\n\");\n \n-\tparams.session_priv_mpool = rte_mempool_create(\n-\t\t\t\t\"CRYPTO_AD_SESS_MP_PRIV\",\n-\t\t\t\tMAX_NB_SESSIONS,\n-\t\t\t\tsession_size,\n-\t\t\t\t0, 0, NULL, NULL, NULL,\n-\t\t\t\tNULL, SOCKET_ID_ANY,\n-\t\t\t\t0);\n-\tTEST_ASSERT_NOT_NULL(params.session_priv_mpool,\n-\t\t\t\"session mempool allocation failed\\n\");\n-\n \trte_cryptodev_info_get(TEST_CDEV_ID, &info);\n \n \twhile ((capability = &info.capabilities[i++])->op !=\n@@ -1048,7 +1029,6 @@ configure_cryptodev(void)\n \n \tqp_conf.nb_descriptors = DEFAULT_NUM_OPS_INFLIGHT;\n \tqp_conf.mp_session = params.session_mpool;\n-\tqp_conf.mp_session_private = params.session_priv_mpool;\n \n \tTEST_ASSERT_SUCCESS(rte_cryptodev_queue_pair_setup(\n \t\t\tTEST_CDEV_ID, TEST_CDEV_QP_ID, &qp_conf,\n@@ -1418,11 +1398,6 @@ crypto_teardown(void)\n \t\trte_mempool_free(params.session_mpool);\n \t\tparams.session_mpool = NULL;\n \t}\n-\tif (params.session_priv_mpool != NULL) {\n-\t\trte_mempool_avail_count(params.session_priv_mpool);\n-\t\trte_mempool_free(params.session_priv_mpool);\n-\t\tparams.session_priv_mpool = NULL;\n-\t}\n \n \t/* Free asym session mempool */\n \tif (params.asym_sess_mpool != NULL) {\ndiff --git a/app/test/test_ipsec.c b/app/test/test_ipsec.c\nindex aa533483fd..04d231468b 100644\n--- a/app/test/test_ipsec.c\n+++ b/app/test/test_ipsec.c\n@@ -370,20 +370,9 @@ testsuite_setup(void)\n \t\treturn TEST_FAILED;\n \t}\n \n-\tts_params->qp_conf.mp_session_private = rte_mempool_create(\n-\t\t\t\t\"test_priv_sess_mp\",\n-\t\t\t\tMAX_NB_SESSIONS,\n-\t\t\t\tsess_sz,\n-\t\t\t\t0, 0, NULL, NULL, NULL,\n-\t\t\t\tNULL, SOCKET_ID_ANY,\n-\t\t\t\t0);\n-\n-\tTEST_ASSERT_NOT_NULL(ts_params->qp_conf.mp_session_private,\n-\t\t\t\"private session mempool allocation failed\");\n-\n \tts_params->qp_conf.mp_session =\n \t\trte_cryptodev_sym_session_pool_create(\"test_sess_mp\",\n-\t\t\tMAX_NB_SESSIONS, 0, 0, 0, SOCKET_ID_ANY);\n+\t\t\tMAX_NB_SESSIONS, sess_sz, 0, 0, SOCKET_ID_ANY);\n \n \tTEST_ASSERT_NOT_NULL(ts_params->qp_conf.mp_session,\n \t\t\t\"session mempool allocation failed\");\n@@ -428,11 +417,6 @@ testsuite_teardown(void)\n \t\trte_mempool_free(ts_params->qp_conf.mp_session);\n \t\tts_params->qp_conf.mp_session = NULL;\n \t}\n-\n-\tif (ts_params->qp_conf.mp_session_private != NULL) {\n-\t\trte_mempool_free(ts_params->qp_conf.mp_session_private);\n-\t\tts_params->qp_conf.mp_session_private = NULL;\n-\t}\n }\n \n static int\n@@ -647,8 +631,7 @@ create_dummy_sec_session(struct ipsec_unitest_params *ut,\n \tstatic struct rte_security_session_conf conf;\n \n \tut->ss[j].security.ses = rte_security_session_create(&dummy_sec_ctx,\n-\t\t\t\t\t&conf, qp->mp_session,\n-\t\t\t\t\tqp->mp_session_private);\n+\t\t\t\t\t&conf, qp->mp_session, NULL);\n \n \tif (ut->ss[j].security.ses == NULL)\n \t\treturn -ENOMEM;\n@@ -662,25 +645,15 @@ static int\n create_crypto_session(struct ipsec_unitest_params *ut,\n \tstruct rte_cryptodev_qp_conf *qp, uint8_t dev_id, uint32_t j)\n {\n-\tint32_t rc;\n \tstruct rte_cryptodev_sym_session *s;\n \n-\ts = rte_cryptodev_sym_session_create(qp->mp_session);\n+\ts = rte_cryptodev_sym_session_create(dev_id, ut->crypto_xforms,\n+\t\t\tqp->mp_session);\n \tif (s == NULL)\n \t\treturn -ENOMEM;\n \n-\t/* initialize SA crypto session for device */\n-\trc = rte_cryptodev_sym_session_init(dev_id, s,\n-\t\t\tut->crypto_xforms, qp->mp_session_private);\n-\tif (rc == 0) {\n-\t\tut->ss[j].crypto.ses = s;\n-\t\treturn 0;\n-\t} else {\n-\t\t/* failure, do cleanup */\n-\t\trte_cryptodev_sym_session_clear(dev_id, s);\n-\t\trte_cryptodev_sym_session_free(s);\n-\t\treturn rc;\n-\t}\n+\tut->ss[j].crypto.ses = s;\n+\treturn 0;\n }\n \n static int\n@@ -1196,8 +1169,7 @@ static void\n destroy_crypto_session(struct ipsec_unitest_params *ut,\n \tuint8_t crypto_dev, uint32_t j)\n {\n-\trte_cryptodev_sym_session_clear(crypto_dev, ut->ss[j].crypto.ses);\n-\trte_cryptodev_sym_session_free(ut->ss[j].crypto.ses);\n+\trte_cryptodev_sym_session_free(crypto_dev, ut->ss[j].crypto.ses);\n \tmemset(&ut->ss[j], 0, sizeof(ut->ss[j]));\n }\n \ndiff --git a/drivers/crypto/armv8/armv8_pmd_private.h b/drivers/crypto/armv8/armv8_pmd_private.h\nindex 75ddba79c1..41292d8851 100644\n--- a/drivers/crypto/armv8/armv8_pmd_private.h\n+++ b/drivers/crypto/armv8/armv8_pmd_private.h\n@@ -106,8 +106,6 @@ struct armv8_crypto_qp {\n \t/**< Ring for placing process packets */\n \tstruct rte_mempool *sess_mp;\n \t/**< Session Mempool */\n-\tstruct rte_mempool *sess_mp_priv;\n-       /**< Session Private Data Mempool */\n \tstruct rte_cryptodev_stats stats;\n \t/**< Queue pair statistics */\n \tchar name[RTE_CRYPTODEV_NAME_MAX_LEN];\ndiff --git a/drivers/crypto/armv8/rte_armv8_pmd.c b/drivers/crypto/armv8/rte_armv8_pmd.c\nindex 5c060e71a3..824a2cc735 100644\n--- a/drivers/crypto/armv8/rte_armv8_pmd.c\n+++ b/drivers/crypto/armv8/rte_armv8_pmd.c\n@@ -521,34 +521,23 @@ get_session(struct armv8_crypto_qp *qp, struct rte_crypto_op *op)\n \tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\t/* get existing session */\n \t\tif (likely(op->sym->session != NULL)) {\n-\t\t\tsess = (struct armv8_crypto_session *)\n-\t\t\t\t\tget_sym_session_private_data(\n-\t\t\t\t\top->sym->session,\n-\t\t\t\t\tcryptodev_driver_id);\n+\t\t\tsess = CRYPTODEV_GET_SYM_SESS_PRIV(op->sym->session);\n \t\t}\n \t} else {\n \t\t/* provide internal session */\n-\t\tvoid *_sess = NULL;\n-\t\tvoid *_sess_private_data = NULL;\n+\t\tstruct rte_cryptodev_sym_session *_sess = NULL;\n \n \t\tif (rte_mempool_get(qp->sess_mp, (void **)&_sess))\n \t\t\treturn NULL;\n \n-\t\tif (rte_mempool_get(qp->sess_mp_priv,\n-\t\t\t\t(void **)&_sess_private_data))\n-\t\t\treturn NULL;\n-\n-\t\tsess = (struct armv8_crypto_session *)_sess_private_data;\n+\t\tsess = (struct armv8_crypto_session *)_sess->driver_priv_data;\n \n \t\tif (unlikely(armv8_crypto_set_session_parameters(sess,\n \t\t\t\top->sym->xform) != 0)) {\n \t\t\trte_mempool_put(qp->sess_mp, _sess);\n-\t\t\trte_mempool_put(qp->sess_mp_priv, _sess_private_data);\n \t\t\tsess = NULL;\n \t\t}\n \t\top->sym->session = (struct rte_cryptodev_sym_session *)_sess;\n-\t\tset_sym_session_private_data(op->sym->session,\n-\t\t\t\tcryptodev_driver_id, _sess_private_data);\n \t}\n \n \tif (unlikely(sess == NULL))\n@@ -674,10 +663,6 @@ process_op(struct armv8_crypto_qp *qp, struct rte_crypto_op *op,\n \t/* Free session if a session-less crypto op */\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\tmemset(sess, 0, sizeof(struct armv8_crypto_session));\n-\t\tmemset(op->sym->session, 0,\n-\t\t\trte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\top->sym->session));\n-\t\trte_mempool_put(qp->sess_mp_priv, sess);\n \t\trte_mempool_put(qp->sess_mp, op->sym->session);\n \t\top->sym->session = NULL;\n \t}\ndiff --git a/drivers/crypto/armv8/rte_armv8_pmd_ops.c b/drivers/crypto/armv8/rte_armv8_pmd_ops.c\nindex c07ac0489e..c4964bc112 100644\n--- a/drivers/crypto/armv8/rte_armv8_pmd_ops.c\n+++ b/drivers/crypto/armv8/rte_armv8_pmd_ops.c\n@@ -244,7 +244,6 @@ armv8_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tgoto qp_setup_cleanup;\n \n \tqp->sess_mp = qp_conf->mp_session;\n-\tqp->sess_mp_priv = qp_conf->mp_session_private;\n \n \tmemset(&qp->stats, 0, sizeof(qp->stats));\n \n@@ -265,10 +264,9 @@ armv8_crypto_pmd_sym_session_get_size(struct rte_cryptodev *dev __rte_unused)\n \n /** Configure the session from a crypto xform chain */\n static int\n-armv8_crypto_pmd_sym_session_configure(struct rte_cryptodev *dev,\n+armv8_crypto_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mempool)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n \tvoid *sess_private_data;\n \tint ret;\n@@ -278,43 +276,22 @@ armv8_crypto_pmd_sym_session_configure(struct rte_cryptodev *dev,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tCDEV_LOG_ERR(\n-\t\t\t\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n+\tsess_private_data = sess->driver_priv_data;\n \n \tret = armv8_crypto_set_session_parameters(sess_private_data, xform);\n \tif (ret != 0) {\n \t\tARMV8_CRYPTO_LOG_ERR(\"failed configure session parameters\");\n-\n-\t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\t\tsess_private_data);\n-\n \treturn 0;\n }\n \n /** Clear the memory of session so it doesn't leave key material behind */\n static void\n-armv8_crypto_pmd_sym_session_clear(struct rte_cryptodev *dev,\n-\t\tstruct rte_cryptodev_sym_session *sess)\n-{\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n-\n-\t/* Zero out the whole structure */\n-\tif (sess_priv) {\n-\t\tmemset(sess_priv, 0, sizeof(struct armv8_crypto_session));\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n-\t}\n-}\n+armv8_crypto_pmd_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n+\t\tstruct rte_cryptodev_sym_session *sess __rte_unused)\n+{}\n \n struct rte_cryptodev_ops armv8_crypto_pmd_ops = {\n \t\t.dev_configure\t\t= armv8_crypto_pmd_config,\ndiff --git a/drivers/crypto/bcmfs/bcmfs_sym_session.c b/drivers/crypto/bcmfs/bcmfs_sym_session.c\nindex 675ed0ad55..d3334dc920 100644\n--- a/drivers/crypto/bcmfs/bcmfs_sym_session.c\n+++ b/drivers/crypto/bcmfs/bcmfs_sym_session.c\n@@ -211,8 +211,7 @@ bcmfs_sym_get_session(struct rte_crypto_op *op)\n \t} else if (likely(op->sym->session != NULL)) {\n \t\t/* get existing session */\n \t\tsess = (struct bcmfs_sym_session *)\n-\t\t\t  get_sym_session_private_data(op->sym->session,\n-\t\t\t\t\t\t       cryptodev_bcmfs_driver_id);\n+\t\t\top->sym->session->driver_priv_data;\n \t}\n \n \tif (sess == NULL)\n@@ -222,10 +221,9 @@ bcmfs_sym_get_session(struct rte_crypto_op *op)\n }\n \n int\n-bcmfs_sym_session_configure(struct rte_cryptodev *dev,\n+bcmfs_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\t\t    struct rte_crypto_sym_xform *xform,\n-\t\t\t    struct rte_cryptodev_sym_session *sess,\n-\t\t\t    struct rte_mempool *mempool)\n+\t\t\t    struct rte_cryptodev_sym_session *sess)\n {\n \tvoid *sess_private_data;\n \tint ret;\n@@ -235,45 +233,23 @@ bcmfs_sym_session_configure(struct rte_cryptodev *dev,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tBCMFS_DP_LOG(ERR,\n-\t\t\t\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n+\tsess_private_data = (void *)sess->driver_priv_data;\n \n \tret = crypto_set_session_parameters(sess_private_data, xform);\n \n \tif (ret != 0) {\n \t\tBCMFS_DP_LOG(ERR, \"Failed configure session parameters\");\n-\t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\t\t\t     sess_private_data);\n-\n \treturn 0;\n }\n \n /* Clear the memory of session so it doesn't leave key material behind */\n void\n-bcmfs_sym_session_clear(struct rte_cryptodev *dev,\n-\t\t\tstruct rte_cryptodev_sym_session  *sess)\n-{\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n-\n-\tif (sess_priv) {\n-\t\tstruct rte_mempool *sess_mp;\n-\n-\t\tmemset(sess_priv, 0, sizeof(struct bcmfs_sym_session));\n-\t\tsess_mp = rte_mempool_from_obj(sess_priv);\n-\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n-\t}\n-}\n+bcmfs_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n+\t\t\tstruct rte_cryptodev_sym_session  *sess __rte_unused)\n+{}\n \n unsigned int\n bcmfs_sym_session_get_private_size(struct rte_cryptodev *dev __rte_unused)\ndiff --git a/drivers/crypto/bcmfs/bcmfs_sym_session.h b/drivers/crypto/bcmfs/bcmfs_sym_session.h\nindex d40595b4bd..4a0a012ae7 100644\n--- a/drivers/crypto/bcmfs/bcmfs_sym_session.h\n+++ b/drivers/crypto/bcmfs/bcmfs_sym_session.h\n@@ -93,8 +93,7 @@ bcmfs_process_crypto_op(struct rte_crypto_op *op,\n int\n bcmfs_sym_session_configure(struct rte_cryptodev *dev,\n \t\t\t    struct rte_crypto_sym_xform *xform,\n-\t\t\t    struct rte_cryptodev_sym_session *sess,\n-\t\t\t    struct rte_mempool *mempool);\n+\t\t\t    struct rte_cryptodev_sym_session *sess);\n \n void\n bcmfs_sym_session_clear(struct rte_cryptodev *dev,\ndiff --git a/drivers/crypto/caam_jr/caam_jr.c b/drivers/crypto/caam_jr/caam_jr.c\nindex 8c0b4909cf..59eaecfbd2 100644\n--- a/drivers/crypto/caam_jr/caam_jr.c\n+++ b/drivers/crypto/caam_jr/caam_jr.c\n@@ -1357,8 +1357,7 @@ caam_jr_enqueue_op(struct rte_crypto_op *op, struct caam_jr_qp *qp)\n \tswitch (op->sess_type) {\n \tcase RTE_CRYPTO_OP_WITH_SESSION:\n \t\tses = (struct caam_jr_session *)\n-\t\tget_sym_session_private_data(op->sym->session,\n-\t\t\t\t\tcryptodev_driver_id);\n+\t\t\top->sym->session->driver_priv_data;\n \t\tbreak;\n \tcase RTE_CRYPTO_OP_SECURITY_SESSION:\n \t\tses = (struct caam_jr_session *)\n@@ -1692,54 +1691,39 @@ caam_jr_set_session_parameters(struct rte_cryptodev *dev,\n }\n \n static int\n-caam_jr_sym_session_configure(struct rte_cryptodev *dev,\n+caam_jr_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\t\t      struct rte_crypto_sym_xform *xform,\n-\t\t\t      struct rte_cryptodev_sym_session *sess,\n-\t\t\t      struct rte_mempool *mempool)\n+\t\t\t      struct rte_cryptodev_sym_session *sess)\n {\n \tvoid *sess_private_data;\n \tint ret;\n \n \tPMD_INIT_FUNC_TRACE();\n-\n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tCAAM_JR_ERR(\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n+\tsess_private_data = (void *)sess->driver_priv_data;\n \tmemset(sess_private_data, 0, sizeof(struct caam_jr_session));\n \tret = caam_jr_set_session_parameters(dev, xform, sess_private_data);\n \tif (ret != 0) {\n \t\tCAAM_JR_ERR(\"failed to configure session parameters\");\n \t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id, sess_private_data);\n-\n \treturn 0;\n }\n \n /* Clear the memory of session so it doesn't leave key material behind */\n static void\n-caam_jr_sym_session_clear(struct rte_cryptodev *dev,\n+caam_jr_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n+\tvoid *sess_priv = (void *)sess->driver_priv_data;\n \tstruct caam_jr_session *s = (struct caam_jr_session *)sess_priv;\n \n \tPMD_INIT_FUNC_TRACE();\n \n \tif (sess_priv) {\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\n \t\trte_free(s->cipher_key.data);\n \t\trte_free(s->auth_key.data);\n-\t\tmemset(s, 0, sizeof(struct caam_jr_session));\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n \t}\n }\n \ndiff --git a/drivers/crypto/ccp/ccp_crypto.c b/drivers/crypto/ccp/ccp_crypto.c\nindex 4bab18323b..bd999abe61 100644\n--- a/drivers/crypto/ccp/ccp_crypto.c\n+++ b/drivers/crypto/ccp/ccp_crypto.c\n@@ -1585,9 +1585,7 @@ ccp_perform_hmac(struct rte_crypto_op *op,\n \tvoid *append_ptr;\n \tuint8_t *addr;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\t ccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \taddr = session->auth.pre_compute;\n \n \tsrc_addr = rte_pktmbuf_iova_offset(op->sym->m_src,\n@@ -1766,9 +1764,7 @@ ccp_perform_sha(struct rte_crypto_op *op,\n \tvoid *append_ptr;\n \tuint64_t auth_msg_bits;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tsrc_addr = rte_pktmbuf_iova_offset(op->sym->m_src,\n \t\t\t\t\t      op->sym->auth.data.offset);\n@@ -1859,9 +1855,7 @@ ccp_perform_sha3_hmac(struct rte_crypto_op *op,\n \tuint32_t tail;\n \tphys_addr_t src_addr, dest_addr, ctx_paddr, dest_addr_t;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tsrc_addr = rte_pktmbuf_iova_offset(op->sym->m_src,\n \t\t\t\t\t      op->sym->auth.data.offset);\n@@ -2005,9 +1999,7 @@ ccp_perform_sha3(struct rte_crypto_op *op,\n \tuint32_t tail;\n \tphys_addr_t src_addr, dest_addr, ctx_paddr;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tsrc_addr = rte_pktmbuf_iova_offset(op->sym->m_src,\n \t\t\t\t\t      op->sym->auth.data.offset);\n@@ -2079,9 +2071,7 @@ ccp_perform_aes_cmac(struct rte_crypto_op *op,\n \tphys_addr_t src_addr, dest_addr, key_addr;\n \tint length, non_align_len;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \tkey_addr = rte_mem_virt2phy(session->auth.key_ccp);\n \n \tsrc_addr = rte_pktmbuf_iova_offset(op->sym->m_src,\n@@ -2242,9 +2232,7 @@ ccp_perform_aes(struct rte_crypto_op *op,\n \tphys_addr_t src_addr, dest_addr, key_addr;\n \tuint8_t *iv;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \tfunction.raw = 0;\n \n \tiv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset);\n@@ -2330,9 +2318,7 @@ ccp_perform_3des(struct rte_crypto_op *op,\n \tuint8_t *iv;\n \tphys_addr_t src_addr, dest_addr, key_addr;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tiv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset);\n \tswitch (session->cipher.um.des_mode) {\n@@ -2440,9 +2426,7 @@ ccp_perform_aes_gcm(struct rte_crypto_op *op, struct ccp_queue *cmd_q)\n \tphys_addr_t digest_dest_addr;\n \tint length, non_align_len;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\t ccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \tiv = rte_crypto_op_ctod_offset(op, uint8_t *, session->iv.offset);\n \tkey_addr = session->cipher.key_phys;\n \n@@ -2607,9 +2591,7 @@ ccp_crypto_cipher(struct rte_crypto_op *op,\n \tint result = 0;\n \tstruct ccp_session *session;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\t ccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tswitch (session->cipher.algo) {\n \tcase CCP_CIPHER_ALGO_AES_CBC:\n@@ -2645,9 +2627,7 @@ ccp_crypto_auth(struct rte_crypto_op *op,\n \tint result = 0;\n \tstruct ccp_session *session;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tswitch (session->auth.algo) {\n \tcase CCP_AUTH_ALGO_SHA1:\n@@ -2715,9 +2695,7 @@ ccp_crypto_aead(struct rte_crypto_op *op,\n \tint result = 0;\n \tstruct ccp_session *session;\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\top->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tswitch (session->auth.algo) {\n \tcase CCP_AUTH_ALGO_AES_GCM:\n@@ -2780,9 +2758,8 @@ process_ops_to_enqueue(struct ccp_qp *qp,\n \tb_info->head_offset = (uint32_t)(cmd_q->qbase_phys_addr + cmd_q->qidx *\n \t\t\t\t\t Q_DESC_SIZE);\n \tfor (i = b_idx; i < (nb_ops+b_idx); i++) {\n-\t\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t\t op[i]->sym->session,\n-\t\t\t\t\t\t ccp_cryptodev_driver_id);\n+\t\tsession = (struct ccp_session *)\n+\t\t\top[i]->sym->session->driver_priv_data;\n \t\tswitch (session->cmd_id) {\n \t\tcase CCP_CMD_CIPHER:\n \t\t\tresult = ccp_crypto_cipher(op[i], cmd_q, b_info);\n@@ -2858,9 +2835,7 @@ static inline void ccp_auth_dq_prepare(struct rte_crypto_op *op)\n \tint offset, digest_offset;\n \tuint8_t digest_le[64];\n \n-\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t op->sym->session,\n-\t\t\t\t\tccp_cryptodev_driver_id);\n+\tsession = (struct ccp_session *)op->sym->session->driver_priv_data;\n \n \tif (session->cmd_id == CCP_CMD_COMBINED) {\n \t\tdigest_data = op->sym->aead.digest.data;\n@@ -2934,9 +2909,8 @@ ccp_prepare_ops(struct ccp_qp *qp,\n \n \tfor (i =  b_info->b_idx; i < min_ops; i++) {\n \t\top_d[i] = b_info->op[b_info->b_idx + b_info->op_idx++];\n-\t\tsession = (struct ccp_session *)get_sym_session_private_data(\n-\t\t\t\t\t\t op_d[i]->sym->session,\n-\t\t\t\t\t\tccp_cryptodev_driver_id);\n+\t\tsession = (struct ccp_session *)\n+\t\t\top_d[i]->sym->session->driver_priv_data;\n \t\tswitch (session->cmd_id) {\n \t\tcase CCP_CMD_CIPHER:\n \t\t\top_d[i]->status = RTE_CRYPTO_OP_STATUS_SUCCESS;\ndiff --git a/drivers/crypto/ccp/ccp_pmd_ops.c b/drivers/crypto/ccp/ccp_pmd_ops.c\nindex 1b600e81ad..e401793a76 100644\n--- a/drivers/crypto/ccp/ccp_pmd_ops.c\n+++ b/drivers/crypto/ccp/ccp_pmd_ops.c\n@@ -727,7 +727,6 @@ ccp_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t}\n \n \tqp->sess_mp = qp_conf->mp_session;\n-\tqp->sess_mp_priv = qp_conf->mp_session_private;\n \n \t/* mempool for batch info */\n \tqp->batch_mp = rte_mempool_create(\n@@ -757,8 +756,7 @@ ccp_pmd_sym_session_get_size(struct rte_cryptodev *dev __rte_unused)\n static int\n ccp_pmd_sym_session_configure(struct rte_cryptodev *dev,\n \t\t\t  struct rte_crypto_sym_xform *xform,\n-\t\t\t  struct rte_cryptodev_sym_session *sess,\n-\t\t\t  struct rte_mempool *mempool)\n+\t\t\t  struct rte_cryptodev_sym_session *sess)\n {\n \tint ret;\n \tvoid *sess_private_data;\n@@ -769,40 +767,22 @@ ccp_pmd_sym_session_configure(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tCCP_LOG_ERR(\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n+\tsess_private_data = (void *)sess->driver_priv_data;\n+\n \tinternals = (struct ccp_private *)dev->data->dev_private;\n \tret = ccp_set_session_parameters(sess_private_data, xform, internals);\n \tif (ret != 0) {\n \t\tCCP_LOG_ERR(\"failed configure session parameters\");\n-\n-\t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\t\t\t sess_private_data);\n \n \treturn 0;\n }\n \n static void\n-ccp_pmd_sym_session_clear(struct rte_cryptodev *dev,\n-\t\t      struct rte_cryptodev_sym_session *sess)\n-{\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n-\n-\tif (sess_priv) {\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\n-\t\trte_mempool_put(sess_mp, sess_priv);\n-\t\tmemset(sess_priv, 0, sizeof(struct ccp_session));\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t}\n-}\n+ccp_pmd_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n+\t\t      struct rte_cryptodev_sym_session *sess __rte_unused)\n+{}\n \n struct rte_cryptodev_ops ccp_ops = {\n \t\t.dev_configure\t\t= ccp_pmd_config,\ndiff --git a/drivers/crypto/ccp/ccp_pmd_private.h b/drivers/crypto/ccp/ccp_pmd_private.h\nindex 1c4118ee3c..6704e39ab8 100644\n--- a/drivers/crypto/ccp/ccp_pmd_private.h\n+++ b/drivers/crypto/ccp/ccp_pmd_private.h\n@@ -78,8 +78,6 @@ struct ccp_qp {\n \t/**< Ring for placing process packets */\n \tstruct rte_mempool *sess_mp;\n \t/**< Session Mempool */\n-\tstruct rte_mempool *sess_mp_priv;\n-\t/**< Session Private Data Mempool */\n \tstruct rte_mempool *batch_mp;\n \t/**< Session Mempool for batch info */\n \tstruct rte_cryptodev_stats qp_stats;\ndiff --git a/drivers/crypto/ccp/rte_ccp_pmd.c b/drivers/crypto/ccp/rte_ccp_pmd.c\nindex 013f3be1e6..6a0bfff45f 100644\n--- a/drivers/crypto/ccp/rte_ccp_pmd.c\n+++ b/drivers/crypto/ccp/rte_ccp_pmd.c\n@@ -56,33 +56,23 @@ get_ccp_session(struct ccp_qp *qp, struct rte_crypto_op *op)\n \t\tif (unlikely(op->sym->session == NULL))\n \t\t\treturn NULL;\n \n-\t\tsess = (struct ccp_session *)\n-\t\t\tget_sym_session_private_data(\n-\t\t\t\top->sym->session,\n-\t\t\t\tccp_cryptodev_driver_id);\n+\t\tsess = (void *)op->sym->session->driver_priv_data;\n \t} else if (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n-\t\tvoid *_sess;\n-\t\tvoid *_sess_private_data = NULL;\n+\t\tstruct rte_cryptodev_sym_session *_sess;\n \t\tstruct ccp_private *internals;\n \n-\t\tif (rte_mempool_get(qp->sess_mp, &_sess))\n-\t\t\treturn NULL;\n-\t\tif (rte_mempool_get(qp->sess_mp, (void **)&_sess_private_data))\n+\t\tif (rte_mempool_get(qp->sess_mp, (void **)&_sess))\n \t\t\treturn NULL;\n \n-\t\tsess = (struct ccp_session *)_sess_private_data;\n+\t\tsess = (void *)_sess->driver_priv_data;\n \n \t\tinternals = (struct ccp_private *)qp->dev->data->dev_private;\n \t\tif (unlikely(ccp_set_session_parameters(sess, op->sym->xform,\n \t\t\t\t\t\t\tinternals) != 0)) {\n \t\t\trte_mempool_put(qp->sess_mp, _sess);\n-\t\t\trte_mempool_put(qp->sess_mp_priv, _sess_private_data);\n \t\t\tsess = NULL;\n \t\t}\n-\t\top->sym->session = (struct rte_cryptodev_sym_session *)_sess;\n-\t\tset_sym_session_private_data(op->sym->session,\n-\t\t\t\t\t ccp_cryptodev_driver_id,\n-\t\t\t\t\t _sess_private_data);\n+\t\top->sym->session = _sess;\n \t}\n \n \treturn sess;\n@@ -161,13 +151,10 @@ ccp_pmd_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,\n \tfor (i = 0; i < nb_dequeued; i++)\n \t\tif (unlikely(ops[i]->sess_type ==\n \t\t\t     RTE_CRYPTO_OP_SESSIONLESS)) {\n-\t\t\tstruct ccp_session *sess = (struct ccp_session *)\n-\t\t\t\t\tget_sym_session_private_data(\n-\t\t\t\t\t\tops[i]->sym->session,\n-\t\t\t\t\t\tccp_cryptodev_driver_id);\n+\t\t\tstruct ccp_session *sess =\n+\t\t\t\t(void *)ops[i]->sym->session->driver_priv_data;\n \n-\t\t\trte_mempool_put(qp->sess_mp_priv,\n-\t\t\t\t\tsess);\n+\t\t\tmemset(sess, 0, sizeof(*sess));\n \t\t\trte_mempool_put(qp->sess_mp,\n \t\t\t\t\tops[i]->sym->session);\n \t\t\tops[i]->sym->session = NULL;\ndiff --git a/drivers/crypto/cnxk/cn10k_cryptodev_ops.c b/drivers/crypto/cnxk/cn10k_cryptodev_ops.c\nindex 7bbe8726e3..dee1f299d2 100644\n--- a/drivers/crypto/cnxk/cn10k_cryptodev_ops.c\n+++ b/drivers/crypto/cnxk/cn10k_cryptodev_ops.c\n@@ -41,24 +41,23 @@ struct vec_request {\n static inline struct cnxk_se_sess *\n cn10k_cpt_sym_temp_sess_create(struct cnxk_cpt_qp *qp, struct rte_crypto_op *op)\n {\n-\tconst int driver_id = cn10k_cryptodev_driver_id;\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct rte_cryptodev_sym_session *sess;\n \tstruct cnxk_se_sess *priv;\n \tint ret;\n \n \t/* Create temporary session */\n-\tsess = rte_cryptodev_sym_session_create(qp->sess_mp);\n-\tif (sess == NULL)\n+\tif (rte_mempool_get(qp->sess_mp, (void **)&sess) < 0)\n \t\treturn NULL;\n \n-\tret = sym_session_configure(qp->lf.roc_cpt, driver_id, sym_op->xform,\n-\t\t\t\t    sess, qp->sess_mp_priv);\n-\tif (ret)\n+\tret = sym_session_configure(qp->lf.roc_cpt, sym_op->xform,\n+\t\t\t\t    sess);\n+\tif (ret) {\n+\t\trte_mempool_put(qp->sess_mp, (void *)sess);\n \t\tgoto sess_put;\n+\t}\n \n-\tpriv = get_sym_session_private_data(sess, driver_id);\n-\n+\tpriv = (void *)sess->driver_priv_data;\n \tsym_op->session = sess;\n \n \treturn priv;\n@@ -130,8 +129,7 @@ cn10k_cpt_fill_inst(struct cnxk_cpt_qp *qp, struct rte_crypto_op *ops[],\n \t\t\t\treturn 0;\n \t\t\tw7 = sec_sess->sa.inst.w7;\n \t\t} else if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n-\t\t\tsess = get_sym_session_private_data(\n-\t\t\t\tsym_op->session, cn10k_cryptodev_driver_id);\n+\t\t\tsess = (void *)sym_op->session->driver_priv_data;\n \t\t\tret = cpt_sym_inst_fill(qp, op, sess, infl_req,\n \t\t\t\t\t\t&inst[0]);\n \t\t\tif (unlikely(ret))\n@@ -147,8 +145,7 @@ cn10k_cpt_fill_inst(struct cnxk_cpt_qp *qp, struct rte_crypto_op *ops[],\n \t\t\tret = cpt_sym_inst_fill(qp, op, sess, infl_req,\n \t\t\t\t\t\t&inst[0]);\n \t\t\tif (unlikely(ret)) {\n-\t\t\t\tsym_session_clear(cn10k_cryptodev_driver_id,\n-\t\t\t\t\t\t  op->sym->session);\n+\t\t\t\tsym_session_clear(op->sym->session);\n \t\t\t\trte_mempool_put(qp->sess_mp, op->sym->session);\n \t\t\t\treturn 0;\n \t\t\t}\n@@ -312,8 +309,9 @@ cn10k_cpt_crypto_adapter_ev_mdata_set(struct rte_cryptodev *dev __rte_unused,\n \t\t} else if (sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\t\tstruct cnxk_se_sess *priv;\n \n-\t\t\tpriv = get_sym_session_private_data(\n-\t\t\t\tsess, cn10k_cryptodev_driver_id);\n+\t\t\tpriv = (void *)(\n+\t\t\t\t((struct rte_cryptodev_sym_session *)sess)->\n+\t\t\t\tdriver_priv_data);\n \t\t\tpriv->qp = qp;\n \t\t\tpriv->cpt_inst_w2 = w2;\n \t\t} else\n@@ -350,8 +348,7 @@ cn10k_ca_meta_info_extract(struct rte_crypto_op *op,\n \t\t} else if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\t\tstruct cnxk_se_sess *priv;\n \n-\t\t\tpriv = get_sym_session_private_data(\n-\t\t\t\top->sym->session, cn10k_cryptodev_driver_id);\n+\t\t\tpriv = (void *)op->sym->session->driver_priv_data;\n \t\t\t*qp = priv->qp;\n \t\t\t*w2 = priv->cpt_inst_w2;\n \t\t} else {\n@@ -818,7 +815,6 @@ cn10k_cpt_dequeue_post_process(struct cnxk_cpt_qp *qp,\n {\n \tconst uint8_t uc_compcode = res->uc_compcode;\n \tconst uint8_t compcode = res->compcode;\n-\tunsigned int sz;\n \n \tcop->status = RTE_CRYPTO_OP_STATUS_SUCCESS;\n \n@@ -895,11 +891,7 @@ cn10k_cpt_dequeue_post_process(struct cnxk_cpt_qp *qp,\n temp_sess_free:\n \tif (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) {\n \t\tif (cop->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC) {\n-\t\t\tsym_session_clear(cn10k_cryptodev_driver_id,\n-\t\t\t\t\t  cop->sym->session);\n-\t\t\tsz = rte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\tcop->sym->session);\n-\t\t\tmemset(cop->sym->session, 0, sz);\n+\t\t\tsym_session_clear(cop->sym->session);\n \t\t\trte_mempool_put(qp->sess_mp, cop->sym->session);\n \t\t\tcop->sym->session = NULL;\n \t\t}\ndiff --git a/drivers/crypto/cnxk/cn9k_cryptodev_ops.c b/drivers/crypto/cnxk/cn9k_cryptodev_ops.c\nindex b753c1cb4b..a44f111ba6 100644\n--- a/drivers/crypto/cnxk/cn9k_cryptodev_ops.c\n+++ b/drivers/crypto/cnxk/cn9k_cryptodev_ops.c\n@@ -56,23 +56,20 @@ cn9k_cpt_sec_inst_fill(struct rte_crypto_op *op,\n static inline struct cnxk_se_sess *\n cn9k_cpt_sym_temp_sess_create(struct cnxk_cpt_qp *qp, struct rte_crypto_op *op)\n {\n-\tconst int driver_id = cn9k_cryptodev_driver_id;\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct rte_cryptodev_sym_session *sess;\n \tstruct cnxk_se_sess *priv;\n \tint ret;\n \n \t/* Create temporary session */\n-\tsess = rte_cryptodev_sym_session_create(qp->sess_mp);\n-\tif (sess == NULL)\n+\tif (rte_mempool_get(qp->sess_mp, (void **)&sess) < 0)\n \t\treturn NULL;\n \n-\tret = sym_session_configure(qp->lf.roc_cpt, driver_id, sym_op->xform,\n-\t\t\t\t    sess, qp->sess_mp_priv);\n+\tret = sym_session_configure(qp->lf.roc_cpt, sym_op->xform, sess);\n \tif (ret)\n \t\tgoto sess_put;\n \n-\tpriv = get_sym_session_private_data(sess, driver_id);\n+\tpriv = (void *)sess->driver_priv_data;\n \n \tsym_op->session = sess;\n \n@@ -95,8 +92,7 @@ cn9k_cpt_inst_prep(struct cnxk_cpt_qp *qp, struct rte_crypto_op *op,\n \n \t\tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\t\tsym_op = op->sym;\n-\t\t\tsess = get_sym_session_private_data(\n-\t\t\t\tsym_op->session, cn9k_cryptodev_driver_id);\n+\t\t\tsess = (void *)sym_op->session->driver_priv_data;\n \t\t\tret = cpt_sym_inst_fill(qp, op, sess, infl_req, inst);\n \t\t\tinst->w7.u64 = sess->cpt_inst_w7;\n \t\t} else if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION)\n@@ -110,8 +106,7 @@ cn9k_cpt_inst_prep(struct cnxk_cpt_qp *qp, struct rte_crypto_op *op,\n \n \t\t\tret = cpt_sym_inst_fill(qp, op, sess, infl_req, inst);\n \t\t\tif (unlikely(ret)) {\n-\t\t\t\tsym_session_clear(cn9k_cryptodev_driver_id,\n-\t\t\t\t\t\t  op->sym->session);\n+\t\t\t\tsym_session_clear(op->sym->session);\n \t\t\t\trte_mempool_put(qp->sess_mp, op->sym->session);\n \t\t\t}\n \t\t\tinst->w7.u64 = sess->cpt_inst_w7;\n@@ -349,8 +344,9 @@ cn9k_cpt_crypto_adapter_ev_mdata_set(struct rte_cryptodev *dev __rte_unused,\n \t\t} else if (sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\t\tstruct cnxk_se_sess *priv;\n \n-\t\t\tpriv = get_sym_session_private_data(\n-\t\t\t\tsess, cn9k_cryptodev_driver_id);\n+\t\t\tpriv = (void *)((\n+\t\t\t\t(struct rte_cryptodev_sym_session *)sess)->\n+\t\t\t\tdriver_priv_data);\n \t\t\tpriv->qp = qp;\n \t\t\tpriv->cpt_inst_w2 = w2;\n \t\t} else\n@@ -387,8 +383,7 @@ cn9k_ca_meta_info_extract(struct rte_crypto_op *op,\n \t\t} else if (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\t\tstruct cnxk_se_sess *priv;\n \n-\t\t\tpriv = get_sym_session_private_data(\n-\t\t\t\top->sym->session, cn9k_cryptodev_driver_id);\n+\t\t\tpriv = (void *)op->sym->session->driver_priv_data;\n \t\t\t*qp = priv->qp;\n \t\t\tinst->w2.u64 = priv->cpt_inst_w2;\n \t\t} else {\n@@ -583,8 +578,6 @@ cn9k_cpt_dequeue_post_process(struct cnxk_cpt_qp *qp, struct rte_crypto_op *cop,\n \t\t\t      struct cpt_inflight_req *infl_req,\n \t\t\t      struct cpt_cn9k_res_s *res)\n {\n-\tunsigned int sz;\n-\n \tif (likely(res->compcode == CPT_COMP_GOOD)) {\n \t\tif (unlikely(res->uc_compcode)) {\n \t\t\tif (res->uc_compcode == ROC_SE_ERR_GC_ICV_MISCOMPARE)\n@@ -645,11 +638,7 @@ cn9k_cpt_dequeue_post_process(struct cnxk_cpt_qp *qp, struct rte_crypto_op *cop,\n temp_sess_free:\n \tif (unlikely(cop->sess_type == RTE_CRYPTO_OP_SESSIONLESS)) {\n \t\tif (cop->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC) {\n-\t\t\tsym_session_clear(cn9k_cryptodev_driver_id,\n-\t\t\t\t\t  cop->sym->session);\n-\t\t\tsz = rte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\tcop->sym->session);\n-\t\t\tmemset(cop->sym->session, 0, sz);\n+\t\t\tsym_session_clear(cop->sym->session);\n \t\t\trte_mempool_put(qp->sess_mp, cop->sym->session);\n \t\t\tcop->sym->session = NULL;\n \t\t}\ndiff --git a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c\nindex cf91b92c2c..018d7fcee8 100644\n--- a/drivers/crypto/cnxk/cnxk_cryptodev_ops.c\n+++ b/drivers/crypto/cnxk/cnxk_cryptodev_ops.c\n@@ -406,7 +406,6 @@ cnxk_cpt_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t}\n \n \tqp->sess_mp = conf->mp_session;\n-\tqp->sess_mp_priv = conf->mp_session_private;\n \tdev->data->queue_pairs[qp_id] = qp;\n \n \treturn 0;\n@@ -620,25 +619,15 @@ cnxk_cpt_inst_w7_get(struct cnxk_se_sess *sess, struct roc_cpt *roc_cpt)\n }\n \n int\n-sym_session_configure(struct roc_cpt *roc_cpt, int driver_id,\n+sym_session_configure(struct roc_cpt *roc_cpt,\n \t\t      struct rte_crypto_sym_xform *xform,\n-\t\t      struct rte_cryptodev_sym_session *sess,\n-\t\t      struct rte_mempool *pool)\n+\t\t      struct rte_cryptodev_sym_session *sess)\n {\n \tenum cpt_dp_thread_type thr_type;\n-\tstruct cnxk_se_sess *sess_priv;\n-\tvoid *priv;\n+\tstruct cnxk_se_sess *sess_priv = (void *)sess->driver_priv_data;\n \tint ret;\n \n-\tif (unlikely(rte_mempool_get(pool, &priv))) {\n-\t\tplt_dp_err(\"Could not allocate session private data\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n-\tmemset(priv, 0, sizeof(struct cnxk_se_sess));\n-\n-\tsess_priv = priv;\n-\n+\tmemset(sess_priv, 0, sizeof(struct cnxk_se_sess));\n \tret = cnxk_sess_fill(roc_cpt, xform, sess_priv);\n \tif (ret)\n \t\tgoto priv_put;\n@@ -684,61 +673,39 @@ sym_session_configure(struct roc_cpt *roc_cpt, int driver_id,\n \t}\n \n \tsess_priv->cpt_inst_w7 = cnxk_cpt_inst_w7_get(sess_priv, roc_cpt);\n-\n-\tset_sym_session_private_data(sess, driver_id, sess_priv);\n-\n \treturn 0;\n \n priv_put:\n-\trte_mempool_put(pool, priv);\n-\n \treturn ret;\n }\n \n int\n cnxk_cpt_sym_session_configure(struct rte_cryptodev *dev,\n \t\t\t       struct rte_crypto_sym_xform *xform,\n-\t\t\t       struct rte_cryptodev_sym_session *sess,\n-\t\t\t       struct rte_mempool *pool)\n+\t\t\t       struct rte_cryptodev_sym_session *sess)\n {\n \tstruct cnxk_cpt_vf *vf = dev->data->dev_private;\n \tstruct roc_cpt *roc_cpt = &vf->cpt;\n-\tuint8_t driver_id;\n \n-\tdriver_id = dev->driver_id;\n-\n-\treturn sym_session_configure(roc_cpt, driver_id, xform, sess, pool);\n+\treturn sym_session_configure(roc_cpt, xform, sess);\n }\n \n void\n-sym_session_clear(int driver_id, struct rte_cryptodev_sym_session *sess)\n+sym_session_clear(struct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *priv = get_sym_session_private_data(sess, driver_id);\n-\tstruct cnxk_se_sess *sess_priv;\n-\tstruct rte_mempool *pool;\n-\n-\tif (priv == NULL)\n-\t\treturn;\n-\n-\tsess_priv = priv;\n+\tstruct cnxk_se_sess *sess_priv = (void *)sess->driver_priv_data;\n \n \tif (sess_priv->roc_se_ctx.auth_key != NULL)\n \t\tplt_free(sess_priv->roc_se_ctx.auth_key);\n \n-\tmemset(priv, 0, cnxk_cpt_sym_session_get_size(NULL));\n-\n-\tpool = rte_mempool_from_obj(priv);\n-\n-\tset_sym_session_private_data(sess, driver_id, NULL);\n-\n-\trte_mempool_put(pool, priv);\n+\tmemset(sess_priv, 0, cnxk_cpt_sym_session_get_size(NULL));\n }\n \n void\n-cnxk_cpt_sym_session_clear(struct rte_cryptodev *dev,\n+cnxk_cpt_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n \t\t\t   struct rte_cryptodev_sym_session *sess)\n {\n-\treturn sym_session_clear(dev->driver_id, sess);\n+\treturn sym_session_clear(sess);\n }\n \n unsigned int\ndiff --git a/drivers/crypto/cnxk/cnxk_cryptodev_ops.h b/drivers/crypto/cnxk/cnxk_cryptodev_ops.h\nindex d9ed43b40b..baa2b69c52 100644\n--- a/drivers/crypto/cnxk/cnxk_cryptodev_ops.h\n+++ b/drivers/crypto/cnxk/cnxk_cryptodev_ops.h\n@@ -85,8 +85,6 @@ struct cnxk_cpt_qp {\n \t/**< Crypto adapter related info */\n \tstruct rte_mempool *sess_mp;\n \t/**< Session mempool */\n-\tstruct rte_mempool *sess_mp_priv;\n-\t/**< Session private data mempool */\n };\n \n int cnxk_cpt_dev_config(struct rte_cryptodev *dev,\n@@ -111,18 +109,16 @@ unsigned int cnxk_cpt_sym_session_get_size(struct rte_cryptodev *dev);\n \n int cnxk_cpt_sym_session_configure(struct rte_cryptodev *dev,\n \t\t\t\t   struct rte_crypto_sym_xform *xform,\n-\t\t\t\t   struct rte_cryptodev_sym_session *sess,\n-\t\t\t\t   struct rte_mempool *pool);\n+\t\t\t\t   struct rte_cryptodev_sym_session *sess);\n \n-int sym_session_configure(struct roc_cpt *roc_cpt, int driver_id,\n+int sym_session_configure(struct roc_cpt *roc_cpt,\n \t\t\t  struct rte_crypto_sym_xform *xform,\n-\t\t\t  struct rte_cryptodev_sym_session *sess,\n-\t\t\t  struct rte_mempool *pool);\n+\t\t\t  struct rte_cryptodev_sym_session *sess);\n \n void cnxk_cpt_sym_session_clear(struct rte_cryptodev *dev,\n-\t\t\t\tstruct rte_cryptodev_sym_session *sess);\n+\t\tstruct rte_cryptodev_sym_session *sess);\n \n-void sym_session_clear(int driver_id, struct rte_cryptodev_sym_session *sess);\n+void sym_session_clear(struct rte_cryptodev_sym_session *sess);\n \n unsigned int cnxk_ae_session_size_get(struct rte_cryptodev *dev __rte_unused);\n \ndiff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\nindex 3b13578de0..fa1cdcf78b 100644\n--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n@@ -1379,8 +1379,7 @@ build_sec_fd(struct rte_crypto_op *op,\n \tdpaa2_sec_session *sess;\n \n \tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION)\n-\t\tsess = (dpaa2_sec_session *)get_sym_session_private_data(\n-\t\t\t\top->sym->session, cryptodev_driver_id);\n+\t\tsess = (dpaa2_sec_session *)op->sym->session->driver_priv_data;\n #ifdef RTE_LIB_SECURITY\n \telse if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION)\n \t\tsess = (dpaa2_sec_session *)get_sec_session_private_data(\n@@ -1678,8 +1677,7 @@ dpaa2_sec_dump(struct rte_crypto_op *op)\n \tstruct rte_crypto_sym_op *sym_op;\n \n \tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION)\n-\t\tsess = (dpaa2_sec_session *)get_sym_session_private_data(\n-\t\t\top->sym->session, cryptodev_driver_id);\n+\t\tsess = (dpaa2_sec_session *)op->sym->session->driver_priv_data;\n #ifdef RTE_LIBRTE_SECURITY\n \telse if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION)\n \t\tsess = (dpaa2_sec_session *)get_sec_session_private_data(\n@@ -3754,51 +3752,36 @@ dpaa2_sec_security_session_destroy(void *dev __rte_unused,\n }\n #endif\n static int\n-dpaa2_sec_sym_session_configure(struct rte_cryptodev *dev,\n+dpaa2_sec_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mempool)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *sess_private_data;\n+\tvoid *sess_private_data = (void *)sess->driver_priv_data;\n \tint ret;\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tDPAA2_SEC_ERR(\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n \tret = dpaa2_sec_set_session_parameters(xform, sess_private_data);\n \tif (ret != 0) {\n \t\tDPAA2_SEC_ERR(\"Failed to configure session parameters\");\n \t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\tsess_private_data);\n-\n \treturn 0;\n }\n \n /** Clear the memory of session so it doesn't leave key material behind */\n static void\n-dpaa2_sec_sym_session_clear(struct rte_cryptodev *dev,\n+dpaa2_sec_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_cryptodev_sym_session *sess)\n {\n \tPMD_INIT_FUNC_TRACE();\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n+\tvoid *sess_priv = (void *)sess->driver_priv_data;\n \tdpaa2_sec_session *s = (dpaa2_sec_session *)sess_priv;\n \n \tif (sess_priv) {\n \t\trte_free(s->ctxt);\n \t\trte_free(s->cipher_key.data);\n \t\trte_free(s->auth_key.data);\n-\t\tmemset(s, 0, sizeof(dpaa2_sec_session));\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n \t}\n }\n \ndiff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c\nindex b3242791ac..fb74be6012 100644\n--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c\n+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_raw_dp.c\n@@ -1012,8 +1012,7 @@ dpaa2_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tsess = (dpaa2_sec_session *)get_sec_session_private_data(\n \t\t\t\tsession_ctx.sec_sess);\n \telse if (sess_type == RTE_CRYPTO_OP_WITH_SESSION)\n-\t\tsess = (dpaa2_sec_session *)get_sym_session_private_data(\n-\t\t\tsession_ctx.crypto_sess, cryptodev_driver_id);\n+\t\tsess = (void *)session_ctx.crypto_sess->driver_priv_data;\n \telse\n \t\treturn -ENOTSUP;\n \traw_dp_ctx->dequeue_burst = dpaa2_sec_raw_dequeue_burst;\ndiff --git a/drivers/crypto/dpaa_sec/dpaa_sec.c b/drivers/crypto/dpaa_sec/dpaa_sec.c\nindex c6bd785262..7a4c03a882 100644\n--- a/drivers/crypto/dpaa_sec/dpaa_sec.c\n+++ b/drivers/crypto/dpaa_sec/dpaa_sec.c\n@@ -670,10 +670,7 @@ dpaa_sec_dump(struct dpaa_sec_op_ctx *ctx, struct dpaa_sec_qp *qp)\n \tstruct qm_sg_entry sg[2];\n \n \tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION)\n-\t\tsess = (dpaa_sec_session *)\n-\t\t\tget_sym_session_private_data(\n-\t\t\t\t\top->sym->session,\n-\t\t\t\t\tdpaa_cryptodev_driver_id);\n+\t\tsess = (dpaa_sec_session *)op->sym->session->driver_priv_data;\n #ifdef RTE_LIBRTE_SECURITY\n \telse if (op->sess_type == RTE_CRYPTO_OP_SECURITY_SESSION)\n \t\tsess = (dpaa_sec_session *)\n@@ -1927,10 +1924,8 @@ dpaa_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops,\n \n \t\t\tswitch (op->sess_type) {\n \t\t\tcase RTE_CRYPTO_OP_WITH_SESSION:\n-\t\t\t\tses = (dpaa_sec_session *)\n-\t\t\t\t\tget_sym_session_private_data(\n-\t\t\t\t\t\top->sym->session,\n-\t\t\t\t\t\tdpaa_cryptodev_driver_id);\n+\t\t\t\tses = (void *)\n+\t\t\t\t\top->sym->session->driver_priv_data;\n \t\t\t\tbreak;\n #ifdef RTE_LIB_SECURITY\n \t\t\tcase RTE_CRYPTO_OP_SECURITY_SESSION:\n@@ -2676,31 +2671,19 @@ dpaa_sec_set_session_parameters(struct rte_cryptodev *dev,\n static int\n dpaa_sec_sym_session_configure(struct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mempool)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *sess_private_data;\n+\tvoid *sess_private_data = (void *)sess->driver_priv_data;\n \tint ret;\n \n \tPMD_INIT_FUNC_TRACE();\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tDPAA_SEC_ERR(\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n \tret = dpaa_sec_set_session_parameters(dev, xform, sess_private_data);\n \tif (ret != 0) {\n \t\tDPAA_SEC_ERR(\"failed to configure session parameters\");\n-\n-\t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\t\tsess_private_data);\n-\n \tret = dpaa_sec_prep_cdb(sess_private_data);\n \tif (ret) {\n \t\tDPAA_SEC_ERR(\"Unable to prepare sec cdb\");\n@@ -2714,7 +2697,6 @@ static inline void\n free_session_memory(struct rte_cryptodev *dev, dpaa_sec_session *s)\n {\n \tstruct dpaa_sec_dev_private *qi = dev->data->dev_private;\n-\tstruct rte_mempool *sess_mp = rte_mempool_from_obj((void *)s);\n \tuint8_t i;\n \n \tfor (i = 0; i < MAX_DPAA_CORES; i++) {\n@@ -2724,7 +2706,6 @@ free_session_memory(struct rte_cryptodev *dev, dpaa_sec_session *s)\n \t\ts->qp[i] = NULL;\n \t}\n \tfree_session_data(s);\n-\trte_mempool_put(sess_mp, (void *)s);\n }\n \n /** Clear the memory of session so it doesn't leave key material behind */\n@@ -2733,14 +2714,10 @@ dpaa_sec_sym_session_clear(struct rte_cryptodev *dev,\n \t\tstruct rte_cryptodev_sym_session *sess)\n {\n \tPMD_INIT_FUNC_TRACE();\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n+\tvoid *sess_priv = (void *)sess->driver_priv_data;\n \tdpaa_sec_session *s = (dpaa_sec_session *)sess_priv;\n \n-\tif (sess_priv) {\n-\t\tfree_session_memory(dev, s);\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t}\n+\tfree_session_memory(dev, s);\n }\n \n #ifdef RTE_LIB_SECURITY\ndiff --git a/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c\nindex 29c5935739..35f93ceb48 100644\n--- a/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c\n+++ b/drivers/crypto/dpaa_sec/dpaa_sec_raw_dp.c\n@@ -1017,8 +1017,8 @@ dpaa_sec_configure_raw_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tsess = (dpaa_sec_session *)get_sec_session_private_data(\n \t\t\t\tsession_ctx.sec_sess);\n \telse if (sess_type == RTE_CRYPTO_OP_WITH_SESSION)\n-\t\tsess = (dpaa_sec_session *)get_sym_session_private_data(\n-\t\t\tsession_ctx.crypto_sess, dpaa_cryptodev_driver_id);\n+\t\tsess = (dpaa_sec_session *)\n+\t\t\tsession_ctx.crypto_sess->driver_priv_data;\n \telse\n \t\treturn -ENOTSUP;\n \traw_dp_ctx->dequeue_burst = dpaa_sec_raw_dequeue_burst;\ndiff --git a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c\nindex 7e8396b4a3..90ce5bc965 100644\n--- a/drivers/crypto/ipsec_mb/ipsec_mb_ops.c\n+++ b/drivers/crypto/ipsec_mb/ipsec_mb_ops.c\n@@ -264,7 +264,6 @@ ipsec_mb_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \n \tqp->pmd_type = internals->pmd_type;\n \tqp->sess_mp = qp_conf->mp_session;\n-\tqp->sess_mp_priv = qp_conf->mp_session_private;\n \n \tqp->ingress_queue = ipsec_mb_qp_create_processed_ops_ring(qp,\n \t\tqp_conf->nb_descriptors, socket_id);\n@@ -312,9 +311,8 @@ ipsec_mb_sym_session_get_size(struct rte_cryptodev *dev)\n int\n ipsec_mb_sym_session_configure(\n \tstruct rte_cryptodev *dev, struct rte_crypto_sym_xform *xform,\n-\tstruct rte_cryptodev_sym_session *sess, struct rte_mempool *mempool)\n+\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *sess_private_data;\n \tstruct ipsec_mb_dev_private *internals = dev->data->dev_private;\n \tstruct ipsec_mb_internals *pmd_data =\n \t\t&ipsec_mb_pmds[internals->pmd_type];\n@@ -330,42 +328,22 @@ ipsec_mb_sym_session_configure(\n \t\treturn -EINVAL;\n \t}\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tIPSEC_MB_LOG(ERR, \"Couldn't get object from session mempool\");\n-\t\tfree_mb_mgr(mb_mgr);\n-\t\treturn -ENOMEM;\n-\t}\n-\n-\tret = (*pmd_data->session_configure)(mb_mgr, sess_private_data, xform);\n+\tret = (*pmd_data->session_configure)(mb_mgr,\n+\t\t\t(void *)sess->driver_priv_data, xform);\n \tif (ret != 0) {\n \t\tIPSEC_MB_LOG(ERR, \"failed configure session parameters\");\n \n \t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\tfree_mb_mgr(mb_mgr);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id, sess_private_data);\n-\n \tfree_mb_mgr(mb_mgr);\n \treturn 0;\n }\n \n /** Clear the session memory */\n void\n-ipsec_mb_sym_session_clear(struct rte_cryptodev *dev,\n-\t\t\t       struct rte_cryptodev_sym_session *sess)\n-{\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n-\n-\t/* Zero out the whole structure */\n-\tif (sess_priv) {\n-\t\tmemset(sess_priv, 0, ipsec_mb_sym_session_get_size(dev));\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n-\t}\n-}\n+ipsec_mb_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n+\t\tstruct rte_cryptodev_sym_session *sess __rte_unused)\n+{}\ndiff --git a/drivers/crypto/ipsec_mb/ipsec_mb_private.h b/drivers/crypto/ipsec_mb/ipsec_mb_private.h\nindex 472b672f08..e4aea7700c 100644\n--- a/drivers/crypto/ipsec_mb/ipsec_mb_private.h\n+++ b/drivers/crypto/ipsec_mb/ipsec_mb_private.h\n@@ -136,8 +136,6 @@ struct ipsec_mb_qp {\n \tstruct rte_ring *ingress_queue;\n \t/**< Ring for placing operations ready for processing */\n \tstruct rte_mempool *sess_mp;\n-\t/**< Session Mempool */\n-\tstruct rte_mempool *sess_mp_priv;\n \t/**< Session Private Data Mempool */\n \tstruct rte_cryptodev_stats stats;\n \t/**< Queue pair statistics */\n@@ -399,8 +397,7 @@ ipsec_mb_sym_session_get_size(struct rte_cryptodev *dev);\n int ipsec_mb_sym_session_configure(\n \tstruct rte_cryptodev *dev,\n \tstruct rte_crypto_sym_xform *xform,\n-\tstruct rte_cryptodev_sym_session *sess,\n-\tstruct rte_mempool *mempool);\n+\tstruct rte_cryptodev_sym_session *sess);\n \n /** Clear the memory of session so it does not leave key material behind */\n void\n@@ -411,50 +408,50 @@ ipsec_mb_sym_session_clear(struct rte_cryptodev *dev,\n static __rte_always_inline void *\n ipsec_mb_get_session_private(struct ipsec_mb_qp *qp, struct rte_crypto_op *op)\n {\n-\tvoid *sess = NULL;\n+\tstruct rte_cryptodev_sym_session *sess = NULL;\n \tuint32_t driver_id = ipsec_mb_get_driver_id(qp->pmd_type);\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tuint8_t sess_type = op->sess_type;\n \tvoid *_sess;\n-\tvoid *_sess_private_data = NULL;\n \tstruct ipsec_mb_internals *pmd_data = &ipsec_mb_pmds[qp->pmd_type];\n \n \tswitch (sess_type) {\n \tcase RTE_CRYPTO_OP_WITH_SESSION:\n \t\tif (likely(sym_op->session != NULL))\n-\t\t\tsess = get_sym_session_private_data(sym_op->session,\n-\t\t\t\t\t\t\t    driver_id);\n+\t\t\tsess = sym_op->session;\n+\t\telse\n+\t\t\tgoto error_exit;\n \tbreak;\n \tcase RTE_CRYPTO_OP_SESSIONLESS:\n \t\tif (!qp->sess_mp ||\n \t\t    rte_mempool_get(qp->sess_mp, (void **)&_sess))\n \t\t\treturn NULL;\n \n-\t\tif (!qp->sess_mp_priv ||\n-\t\t    rte_mempool_get(qp->sess_mp_priv,\n-\t\t\t\t\t(void **)&_sess_private_data))\n-\t\t\treturn NULL;\n+\t\tsess = _sess;\n+\t\tif (sess->sess_data_sz < pmd_data->session_priv_size) {\n+\t\t\trte_mempool_put(qp->sess_mp, _sess);\n+\t\t\tgoto error_exit;\n+\t\t}\n \n-\t\tsess = _sess_private_data;\n \t\tif (unlikely(pmd_data->session_configure(qp->mb_mgr,\n-\t\t\t\tsess, sym_op->xform) != 0)) {\n+\t\t\t(void *)sess->driver_priv_data, sym_op->xform) != 0)) {\n \t\t\trte_mempool_put(qp->sess_mp, _sess);\n-\t\t\trte_mempool_put(qp->sess_mp_priv, _sess_private_data);\n-\t\t\tsess = NULL;\n+\t\t\tgoto error_exit;\n \t\t}\n \n-\t\tsym_op->session = (struct rte_cryptodev_sym_session *)_sess;\n-\t\tset_sym_session_private_data(sym_op->session, driver_id,\n-\t\t\t\t\t     _sess_private_data);\n+\t\tsess->driver_id = driver_id;\n+\t\tsym_op->session = sess;\n+\n \tbreak;\n \tdefault:\n \t\tIPSEC_MB_LOG(ERR, \"Unrecognized session type %u\", sess_type);\n \t}\n \n-\tif (unlikely(sess == NULL))\n-\t\top->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION;\n+\treturn (void *)sess->driver_priv_data;\n \n-\treturn sess;\n+error_exit:\n+\top->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION;\n+\treturn NULL;\n }\n \n #endif /* _IPSEC_MB_PRIVATE_H_ */\ndiff --git a/drivers/crypto/ipsec_mb/pmd_aesni_gcm.c b/drivers/crypto/ipsec_mb/pmd_aesni_gcm.c\nindex 2c033c6f28..e4f274b608 100644\n--- a/drivers/crypto/ipsec_mb/pmd_aesni_gcm.c\n+++ b/drivers/crypto/ipsec_mb/pmd_aesni_gcm.c\n@@ -241,10 +241,6 @@ handle_completed_gcm_crypto_op(struct ipsec_mb_qp *qp,\n \t/* Free session if a session-less crypto op */\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\tmemset(sess, 0, sizeof(struct aesni_gcm_session));\n-\t\tmemset(op->sym->session, 0,\n-\t\t\trte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\top->sym->session));\n-\t\trte_mempool_put(qp->sess_mp_priv, sess);\n \t\trte_mempool_put(qp->sess_mp, op->sym->session);\n \t\top->sym->session = NULL;\n \t}\n@@ -455,44 +451,35 @@ static inline struct aesni_gcm_session *\n aesni_gcm_get_session(struct ipsec_mb_qp *qp,\n \t     struct rte_crypto_op *op)\n {\n-\tstruct aesni_gcm_session *sess = NULL;\n-\tuint32_t driver_id =\n-\t    ipsec_mb_get_driver_id(IPSEC_MB_PMD_TYPE_AESNI_GCM);\n+\tstruct rte_cryptodev_sym_session *sess = NULL;\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \n \tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\tif (likely(sym_op->session != NULL))\n-\t\t\tsess = (struct aesni_gcm_session *)\n-\t\t\t    get_sym_session_private_data(sym_op->session,\n-\t\t\t\t\t\t\t driver_id);\n+\t\t\tsess = sym_op->session;\n \t} else {\n-\t\tvoid *_sess;\n-\t\tvoid *_sess_private_data = NULL;\n-\n-\t\tif (rte_mempool_get(qp->sess_mp, (void **)&_sess))\n+\t\tif (rte_mempool_get(qp->sess_mp, (void **)&sess))\n \t\t\treturn NULL;\n \n-\t\tif (rte_mempool_get(qp->sess_mp_priv,\n-\t\t\t\t(void **)&_sess_private_data))\n+\t\tif (unlikely(sess->sess_data_sz <\n+\t\t\t\tsizeof(struct aesni_gcm_session))) {\n+\t\t\trte_mempool_put(qp->sess_mp, sess);\n \t\t\treturn NULL;\n-\n-\t\tsess = (struct aesni_gcm_session *)_sess_private_data;\n+\t\t}\n \n \t\tif (unlikely(aesni_gcm_session_configure(qp->mb_mgr,\n-\t\t\t\t _sess_private_data, sym_op->xform) != 0)) {\n-\t\t\trte_mempool_put(qp->sess_mp, _sess);\n-\t\t\trte_mempool_put(qp->sess_mp_priv, _sess_private_data);\n+\t\t\t\t(void *)sess->driver_priv_data,\n+\t\t\t\tsym_op->xform) != 0)) {\n+\t\t\trte_mempool_put(qp->sess_mp, sess);\n \t\t\tsess = NULL;\n \t\t}\n-\t\tsym_op->session = (struct rte_cryptodev_sym_session *)_sess;\n-\t\tset_sym_session_private_data(sym_op->session, driver_id,\n-\t\t\t\t\t     _sess_private_data);\n+\t\tsym_op->session = sess;\n \t}\n \n \tif (unlikely(sess == NULL))\n \t\top->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION;\n \n-\treturn sess;\n+\treturn (void *)sess->driver_priv_data;\n }\n \n static uint16_t\n@@ -712,22 +699,15 @@ aesni_gmac_sgl_verify(struct aesni_gcm_session *s,\n \n /** Process CPU crypto bulk operations */\n static uint32_t\n-aesni_gcm_process_bulk(struct rte_cryptodev *dev,\n+aesni_gcm_process_bulk(struct rte_cryptodev *dev __rte_unused,\n \t\t\tstruct rte_cryptodev_sym_session *sess,\n \t\t\t__rte_unused union rte_crypto_sym_ofs ofs,\n \t\t\tstruct rte_crypto_sym_vec *vec)\n {\n-\tstruct aesni_gcm_session *s;\n+\tstruct aesni_gcm_session *s = (void *)sess->driver_priv_data;\n \tstruct gcm_context_data gdata_ctx;\n \tIMB_MGR *mb_mgr;\n \n-\ts = (struct aesni_gcm_session *) get_sym_session_private_data(sess,\n-\t\tdev->driver_id);\n-\tif (unlikely(s == NULL)) {\n-\t\taesni_gcm_fill_error_code(vec, EINVAL);\n-\t\treturn 0;\n-\t}\n-\n \t/* get per-thread MB MGR, create one if needed */\n \tmb_mgr = get_per_thread_mb_mgr();\n \tif (unlikely(mb_mgr == NULL))\ndiff --git a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c\nindex 6d5d3ce8eb..f3565b04b5 100644\n--- a/drivers/crypto/ipsec_mb/pmd_aesni_mb.c\n+++ b/drivers/crypto/ipsec_mb/pmd_aesni_mb.c\n@@ -1710,8 +1710,6 @@ post_process_mb_job(struct ipsec_mb_qp *qp, IMB_JOB *job)\n {\n \tstruct rte_crypto_op *op = (struct rte_crypto_op *)job->user_data;\n \tstruct aesni_mb_session *sess = NULL;\n-\tuint32_t driver_id = ipsec_mb_get_driver_id(\n-\t\t\t\t\t\tIPSEC_MB_PMD_TYPE_AESNI_MB);\n \n #ifdef AESNI_MB_DOCSIS_SEC_ENABLED\n \tuint8_t is_docsis_sec = 0;\n@@ -1725,15 +1723,7 @@ post_process_mb_job(struct ipsec_mb_qp *qp, IMB_JOB *job)\n \t\tsess = get_sec_session_private_data(op->sym->sec_session);\n \t} else\n #endif\n-\t{\n-\t\tsess = get_sym_session_private_data(op->sym->session,\n-\t\t\t\t\t\tdriver_id);\n-\t}\n-\n-\tif (unlikely(sess == NULL)) {\n-\t\top->status = RTE_CRYPTO_OP_STATUS_INVALID_SESSION;\n-\t\treturn op;\n-\t}\n+\t\tsess = (void *)op->sym->session->driver_priv_data;\n \n \tif (likely(op->status == RTE_CRYPTO_OP_STATUS_NOT_PROCESSED)) {\n \t\tswitch (job->status) {\n@@ -1771,10 +1761,6 @@ post_process_mb_job(struct ipsec_mb_qp *qp, IMB_JOB *job)\n \t/* Free session if a session-less crypto op */\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\tmemset(sess, 0, sizeof(struct aesni_mb_session));\n-\t\tmemset(op->sym->session, 0,\n-\t\t\trte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\top->sym->session));\n-\t\trte_mempool_put(qp->sess_mp_priv, sess);\n \t\trte_mempool_put(qp->sess_mp, op->sym->session);\n \t\top->sym->session = NULL;\n \t}\n@@ -1962,16 +1948,6 @@ aesni_mb_dequeue_burst(void *queue_pair, struct rte_crypto_op **ops,\n \treturn processed_jobs;\n }\n \n-\n-static inline void\n-ipsec_mb_fill_error_code(struct rte_crypto_sym_vec *vec, int32_t err)\n-{\n-\tuint32_t i;\n-\n-\tfor (i = 0; i != vec->num; ++i)\n-\t\tvec->status[i] = err;\n-}\n-\n static inline int\n check_crypto_sgl(union rte_crypto_sym_ofs so, const struct rte_crypto_sgl *sgl)\n {\n@@ -2028,7 +2004,7 @@ verify_sync_dgst(struct rte_crypto_sym_vec *vec,\n }\n \n static uint32_t\n-aesni_mb_process_bulk(struct rte_cryptodev *dev,\n+aesni_mb_process_bulk(struct rte_cryptodev *dev __rte_unused,\n \tstruct rte_cryptodev_sym_session *sess, union rte_crypto_sym_ofs sofs,\n \tstruct rte_crypto_sym_vec *vec)\n {\n@@ -2037,15 +2013,9 @@ aesni_mb_process_bulk(struct rte_cryptodev *dev,\n \tvoid *buf;\n \tIMB_JOB *job;\n \tIMB_MGR *mb_mgr;\n-\tstruct aesni_mb_session *s;\n+\tstruct aesni_mb_session *s = (void *)sess->driver_priv_data;\n \tuint8_t tmp_dgst[vec->num][DIGEST_LENGTH_MAX];\n \n-\ts = get_sym_session_private_data(sess, dev->driver_id);\n-\tif (s == NULL) {\n-\t\tipsec_mb_fill_error_code(vec, EINVAL);\n-\t\treturn 0;\n-\t}\n-\n \t/* get per-thread MB MGR, create one if needed */\n \tmb_mgr = get_per_thread_mb_mgr();\n \tif (unlikely(mb_mgr == NULL))\ndiff --git a/drivers/crypto/ipsec_mb/pmd_chacha_poly.c b/drivers/crypto/ipsec_mb/pmd_chacha_poly.c\nindex d953d6e5f5..97e7cef233 100644\n--- a/drivers/crypto/ipsec_mb/pmd_chacha_poly.c\n+++ b/drivers/crypto/ipsec_mb/pmd_chacha_poly.c\n@@ -290,10 +290,6 @@ handle_completed_chacha20_poly1305_crypto_op(struct ipsec_mb_qp *qp,\n \t/* Free session if a session-less crypto op */\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\tmemset(sess, 0, sizeof(struct chacha20_poly1305_session));\n-\t\tmemset(op->sym->session, 0,\n-\t\t\trte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\top->sym->session));\n-\t\trte_mempool_put(qp->sess_mp_priv, sess);\n \t\trte_mempool_put(qp->sess_mp, op->sym->session);\n \t\top->sym->session = NULL;\n \t}\ndiff --git a/drivers/crypto/ipsec_mb/pmd_kasumi.c b/drivers/crypto/ipsec_mb/pmd_kasumi.c\nindex fba10b8cf4..b83e2d6715 100644\n--- a/drivers/crypto/ipsec_mb/pmd_kasumi.c\n+++ b/drivers/crypto/ipsec_mb/pmd_kasumi.c\n@@ -231,11 +231,6 @@ process_ops(struct rte_crypto_op **ops, struct kasumi_session *session,\n \t\t/* Free session if a session-less crypto op. */\n \t\tif (ops[i]->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\t\tmemset(session, 0, sizeof(struct kasumi_session));\n-\t\t\tmemset(\n-\t\t\t    ops[i]->sym->session, 0,\n-\t\t\t    rte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\tops[i]->sym->session));\n-\t\t\trte_mempool_put(qp->sess_mp_priv, session);\n \t\t\trte_mempool_put(qp->sess_mp, ops[i]->sym->session);\n \t\t\tops[i]->sym->session = NULL;\n \t\t}\n@@ -287,8 +282,9 @@ process_op_bit(struct rte_crypto_op *op, struct kasumi_session *session,\n \n \t/* Free session if a session-less crypto op. */\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n-\t\tmemset(op->sym->session, 0, sizeof(struct kasumi_session));\n-\t\trte_cryptodev_sym_session_free(op->sym->session);\n+\t\tmemset(op->sym->session->driver_priv_data, 0,\n+\t\t\tsizeof(struct kasumi_session));\n+\t\trte_mempool_put(qp->sess_mp, (void *)op->sym->session);\n \t\top->sym->session = NULL;\n \t}\n \treturn processed_op;\ndiff --git a/drivers/crypto/ipsec_mb/pmd_snow3g.c b/drivers/crypto/ipsec_mb/pmd_snow3g.c\nindex 9a85f46721..f052d6d847 100644\n--- a/drivers/crypto/ipsec_mb/pmd_snow3g.c\n+++ b/drivers/crypto/ipsec_mb/pmd_snow3g.c\n@@ -362,10 +362,6 @@ process_ops(struct rte_crypto_op **ops, struct snow3g_session *session,\n \t\t/* Free session if a session-less crypto op. */\n \t\tif (ops[i]->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\t\tmemset(session, 0, sizeof(struct snow3g_session));\n-\t\t\tmemset(ops[i]->sym->session, 0,\n-\t\t\trte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\t\tops[i]->sym->session));\n-\t\t\trte_mempool_put(qp->sess_mp_priv, session);\n \t\t\trte_mempool_put(qp->sess_mp, ops[i]->sym->session);\n \t\t\tops[i]->sym->session = NULL;\n \t\t}\n@@ -417,8 +413,9 @@ process_op_bit(struct rte_crypto_op *op, struct snow3g_session *session,\n \n \t/* Free session if a session-less crypto op. */\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n-\t\tmemset(op->sym->session, 0, sizeof(struct snow3g_session));\n-\t\trte_cryptodev_sym_session_free(op->sym->session);\n+\t\tmemset(op->sym->session->driver_priv_data, 0,\n+\t\t\tsizeof(struct snow3g_session));\n+\t\trte_mempool_put(qp->sess_mp, (void *)op->sym->session);\n \t\top->sym->session = NULL;\n \t}\n \ndiff --git a/drivers/crypto/ipsec_mb/pmd_zuc.c b/drivers/crypto/ipsec_mb/pmd_zuc.c\nindex e36c7092d6..92fd9d1808 100644\n--- a/drivers/crypto/ipsec_mb/pmd_zuc.c\n+++ b/drivers/crypto/ipsec_mb/pmd_zuc.c\n@@ -239,10 +239,6 @@ process_ops(struct rte_crypto_op **ops, enum ipsec_mb_operation op_type,\n \t\t/* Free session if a session-less crypto op. */\n \t\tif (ops[i]->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\t\tmemset(sessions[i], 0, sizeof(struct zuc_session));\n-\t\t\tmemset(ops[i]->sym->session, 0,\n-\t\t\trte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\t\tops[i]->sym->session));\n-\t\t\trte_mempool_put(qp->sess_mp_priv, sessions[i]);\n \t\t\trte_mempool_put(qp->sess_mp, ops[i]->sym->session);\n \t\t\tops[i]->sym->session = NULL;\n \t\t}\ndiff --git a/drivers/crypto/mlx5/mlx5_crypto.c b/drivers/crypto/mlx5/mlx5_crypto.c\nindex dc8e291f50..e5063b515c 100644\n--- a/drivers/crypto/mlx5/mlx5_crypto.c\n+++ b/drivers/crypto/mlx5/mlx5_crypto.c\n@@ -171,14 +171,13 @@ mlx5_crypto_sym_session_get_size(struct rte_cryptodev *dev __rte_unused)\n static int\n mlx5_crypto_sym_session_configure(struct rte_cryptodev *dev,\n \t\t\t\t  struct rte_crypto_sym_xform *xform,\n-\t\t\t\t  struct rte_cryptodev_sym_session *session,\n-\t\t\t\t  struct rte_mempool *mp)\n+\t\t\t\t  struct rte_cryptodev_sym_session *session)\n {\n \tstruct mlx5_crypto_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_crypto_session *sess_private_data;\n+\tstruct mlx5_crypto_session *sess_private_data =\n+\t\t(void *)session->driver_priv_data;\n \tstruct rte_crypto_cipher_xform *cipher;\n \tuint8_t encryption_order;\n-\tint ret;\n \n \tif (unlikely(xform->next != NULL)) {\n \t\tDRV_LOG(ERR, \"Xform next is not supported.\");\n@@ -189,17 +188,9 @@ mlx5_crypto_sym_session_configure(struct rte_cryptodev *dev,\n \t\tDRV_LOG(ERR, \"Only AES-XTS algorithm is supported.\");\n \t\treturn -ENOTSUP;\n \t}\n-\tret = rte_mempool_get(mp, (void *)&sess_private_data);\n-\tif (ret != 0) {\n-\t\tDRV_LOG(ERR,\n-\t\t\t\"Failed to get session %p private data from mempool.\",\n-\t\t\tsess_private_data);\n-\t\treturn -ENOMEM;\n-\t}\n \tcipher = &xform->cipher;\n \tsess_private_data->dek = mlx5_crypto_dek_prepare(priv, cipher);\n \tif (sess_private_data->dek == NULL) {\n-\t\trte_mempool_put(mp, sess_private_data);\n \t\tDRV_LOG(ERR, \"Failed to prepare dek.\");\n \t\treturn -ENOMEM;\n \t}\n@@ -239,8 +230,6 @@ mlx5_crypto_sym_session_configure(struct rte_cryptodev *dev,\n \tsess_private_data->dek_id =\n \t\t\trte_cpu_to_be_32(sess_private_data->dek->obj->id &\n \t\t\t\t\t 0xffffff);\n-\tset_sym_session_private_data(session, dev->driver_id,\n-\t\t\t\t     sess_private_data);\n \tDRV_LOG(DEBUG, \"Session %p was configured.\", sess_private_data);\n \treturn 0;\n }\n@@ -250,16 +239,13 @@ mlx5_crypto_sym_session_clear(struct rte_cryptodev *dev,\n \t\t\t      struct rte_cryptodev_sym_session *sess)\n {\n \tstruct mlx5_crypto_priv *priv = dev->data->dev_private;\n-\tstruct mlx5_crypto_session *spriv = get_sym_session_private_data(sess,\n-\t\t\t\t\t\t\t\tdev->driver_id);\n+\tstruct mlx5_crypto_session *spriv = (void *)sess->driver_priv_data;\n \n \tif (unlikely(spriv == NULL)) {\n \t\tDRV_LOG(ERR, \"Failed to get session %p private data.\", spriv);\n \t\treturn;\n \t}\n \tmlx5_crypto_dek_destroy(priv, spriv->dek);\n-\tset_sym_session_private_data(sess, dev->driver_id, NULL);\n-\trte_mempool_put(rte_mempool_from_obj(spriv), spriv);\n \tDRV_LOG(DEBUG, \"Session %p was cleared.\", spriv);\n }\n \n@@ -369,8 +355,8 @@ mlx5_crypto_wqe_set(struct mlx5_crypto_priv *priv,\n \t\t\t struct rte_crypto_op *op,\n \t\t\t struct mlx5_umr_wqe *umr)\n {\n-\tstruct mlx5_crypto_session *sess = get_sym_session_private_data\n-\t\t\t\t(op->sym->session, mlx5_crypto_driver_id);\n+\tstruct mlx5_crypto_session *sess =\n+\t\t(void *)op->sym->session->driver_priv_data;\n \tstruct mlx5_wqe_cseg *cseg = &umr->ctr;\n \tstruct mlx5_wqe_mkey_cseg *mkc = &umr->mkc;\n \tstruct mlx5_wqe_dseg *klms = &umr->kseg[0];\ndiff --git a/drivers/crypto/mvsam/rte_mrvl_pmd.c b/drivers/crypto/mvsam/rte_mrvl_pmd.c\nindex c35876c8b4..fdc9c14227 100644\n--- a/drivers/crypto/mvsam/rte_mrvl_pmd.c\n+++ b/drivers/crypto/mvsam/rte_mrvl_pmd.c\n@@ -597,13 +597,7 @@ mrvl_request_prepare_crp(struct sam_cio_op_params *request,\n \t\treturn -EINVAL;\n \t}\n \n-\tsess = (struct mrvl_crypto_session *)get_sym_session_private_data(\n-\t\t\t\t\t     op->sym->session,\n-\t\t\t\t\t     cryptodev_driver_id);\n-\tif (unlikely(sess == NULL)) {\n-\t\tMRVL_LOG(ERR, \"Session was not created for this device!\");\n-\t\treturn -EINVAL;\n-\t}\n+\tsess = CRYPTODEV_GET_SYM_SESS_PRIV(op->sym->session);\n \n \trequest->sa = sess->sam_sess;\n \trequest->cookie = op;\ndiff --git a/drivers/crypto/mvsam/rte_mrvl_pmd_ops.c b/drivers/crypto/mvsam/rte_mrvl_pmd_ops.c\nindex f828dc9db5..0066236561 100644\n--- a/drivers/crypto/mvsam/rte_mrvl_pmd_ops.c\n+++ b/drivers/crypto/mvsam/rte_mrvl_pmd_ops.c\n@@ -736,8 +736,7 @@ mrvl_crypto_pmd_sym_session_get_size(__rte_unused struct rte_cryptodev *dev)\n static int\n mrvl_crypto_pmd_sym_session_configure(__rte_unused struct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mp)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n \tstruct mrvl_crypto_session *mrvl_sess;\n \tvoid *sess_private_data;\n@@ -748,23 +747,15 @@ mrvl_crypto_pmd_sym_session_configure(__rte_unused struct rte_cryptodev *dev,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (rte_mempool_get(mp, &sess_private_data)) {\n-\t\tCDEV_LOG_ERR(\"Couldn't get object from session mempool.\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n+\tsess_private_data = sess->driver_priv_data;\n \tmemset(sess_private_data, 0, sizeof(struct mrvl_crypto_session));\n \n \tret = mrvl_crypto_set_session_parameters(sess_private_data, xform);\n \tif (ret != 0) {\n \t\tMRVL_LOG(ERR, \"Failed to configure session parameters!\");\n-\n-\t\t/* Return session to mempool */\n-\t\trte_mempool_put(mp, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id, sess_private_data);\n \n \tmrvl_sess = (struct mrvl_crypto_session *)sess_private_data;\n \tif (sam_session_create(&mrvl_sess->sam_sess_params,\n@@ -791,8 +782,7 @@ mrvl_crypto_pmd_sym_session_clear(struct rte_cryptodev *dev,\n \t\tstruct rte_cryptodev_sym_session *sess)\n {\n \n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n+\tvoid *sess_priv = sess->data;\n \n \t/* Zero out the whole structure */\n \tif (sess_priv) {\n@@ -803,11 +793,6 @@ mrvl_crypto_pmd_sym_session_clear(struct rte_cryptodev *dev,\n \t\t    sam_session_destroy(mrvl_sess->sam_sess) < 0) {\n \t\t\tMRVL_LOG(ERR, \"Error while destroying session!\");\n \t\t}\n-\n-\t\tmemset(mrvl_sess, 0, sizeof(struct mrvl_crypto_session));\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n \t}\n }\n \ndiff --git a/drivers/crypto/nitrox/nitrox_sym.c b/drivers/crypto/nitrox/nitrox_sym.c\nindex cb5393d2f1..505024a810 100644\n--- a/drivers/crypto/nitrox/nitrox_sym.c\n+++ b/drivers/crypto/nitrox/nitrox_sym.c\n@@ -530,24 +530,16 @@ configure_aead_ctx(struct rte_crypto_aead_xform *xform,\n }\n \n static int\n-nitrox_sym_dev_sess_configure(struct rte_cryptodev *cdev,\n+nitrox_sym_dev_sess_configure(struct rte_cryptodev *cdev __rte_unused,\n \t\t\t      struct rte_crypto_sym_xform *xform,\n-\t\t\t      struct rte_cryptodev_sym_session *sess,\n-\t\t\t      struct rte_mempool *mempool)\n+\t\t\t      struct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *mp_obj;\n-\tstruct nitrox_crypto_ctx *ctx;\n+\tstruct nitrox_crypto_ctx *ctx = (void *)sess->driver_priv_data;\n \tstruct rte_crypto_cipher_xform *cipher_xform = NULL;\n \tstruct rte_crypto_auth_xform *auth_xform = NULL;\n \tstruct rte_crypto_aead_xform *aead_xform = NULL;\n \tint ret = -EINVAL;\n \n-\tif (rte_mempool_get(mempool, &mp_obj)) {\n-\t\tNITROX_LOG(ERR, \"Couldn't allocate context\\n\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n-\tctx = mp_obj;\n \tctx->nitrox_chain = get_crypto_chain_order(xform);\n \tswitch (ctx->nitrox_chain) {\n \tcase NITROX_CHAIN_CIPHER_ONLY:\n@@ -585,38 +577,23 @@ nitrox_sym_dev_sess_configure(struct rte_cryptodev *cdev,\n \t\tgoto err;\n \t}\n \n-\tctx->iova = rte_mempool_virt2iova(ctx);\n-\tset_sym_session_private_data(sess, cdev->driver_id, ctx);\n+\tctx->iova = sess->driver_priv_data_iova;\n \treturn 0;\n err:\n-\trte_mempool_put(mempool, mp_obj);\n \treturn ret;\n }\n \n static void\n-nitrox_sym_dev_sess_clear(struct rte_cryptodev *cdev,\n-\t\t\t  struct rte_cryptodev_sym_session *sess)\n-{\n-\tstruct nitrox_crypto_ctx *ctx = get_sym_session_private_data(sess,\n-\t\t\t\t\t\t\tcdev->driver_id);\n-\tstruct rte_mempool *sess_mp;\n-\n-\tif (!ctx)\n-\t\treturn;\n-\n-\tmemset(ctx, 0, sizeof(*ctx));\n-\tsess_mp = rte_mempool_from_obj(ctx);\n-\tset_sym_session_private_data(sess, cdev->driver_id, NULL);\n-\trte_mempool_put(sess_mp, ctx);\n-}\n+nitrox_sym_dev_sess_clear(struct rte_cryptodev *cdev __rte_unused,\n+\t\t\t  struct rte_cryptodev_sym_session *sess __rte_unused)\n+{}\n \n static struct nitrox_crypto_ctx *\n get_crypto_ctx(struct rte_crypto_op *op)\n {\n \tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\tif (likely(op->sym->session))\n-\t\t\treturn get_sym_session_private_data(op->sym->session,\n-\t\t\t\t\t\t\t   nitrox_sym_drv_id);\n+\t\t\treturn (void *)op->sym->session->driver_priv_data;\n \t}\n \n \treturn NULL;\ndiff --git a/drivers/crypto/null/null_crypto_pmd.c b/drivers/crypto/null/null_crypto_pmd.c\nindex eab74ad45f..695eeaa1e8 100644\n--- a/drivers/crypto/null/null_crypto_pmd.c\n+++ b/drivers/crypto/null/null_crypto_pmd.c\n@@ -58,7 +58,7 @@ process_op(const struct null_crypto_qp *qp, struct rte_crypto_op *op,\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\tmemset(op->sym->session, 0,\n \t\t\t\tsizeof(struct null_crypto_session));\n-\t\trte_cryptodev_sym_session_free(op->sym->session);\n+\t\trte_mempool_put(qp->sess_mp, (void *)op->sym->session);\n \t\top->sym->session = NULL;\n \t}\n \n@@ -78,30 +78,21 @@ get_session(struct null_crypto_qp *qp, struct rte_crypto_op *op)\n \tif (op->sess_type == RTE_CRYPTO_OP_WITH_SESSION) {\n \t\tif (likely(sym_op->session != NULL))\n \t\t\tsess = (struct null_crypto_session *)\n-\t\t\t\t\tget_sym_session_private_data(\n-\t\t\t\t\tsym_op->session, cryptodev_driver_id);\n+\t\t\t\tsym_op->session->driver_priv_data;\n \t} else {\n-\t\tvoid *_sess = NULL;\n-\t\tvoid *_sess_private_data = NULL;\n+\t\tstruct rte_cryptodev_sym_session *_sess = NULL;\n \n \t\tif (rte_mempool_get(qp->sess_mp, (void **)&_sess))\n \t\t\treturn NULL;\n \n-\t\tif (rte_mempool_get(qp->sess_mp_priv,\n-\t\t\t\t(void **)&_sess_private_data))\n-\t\t\treturn NULL;\n-\n-\t\tsess = (struct null_crypto_session *)_sess_private_data;\n+\t\tsess = (struct null_crypto_session *)_sess->driver_priv_data;\n \n \t\tif (unlikely(null_crypto_set_session_parameters(sess,\n \t\t\t\tsym_op->xform) != 0)) {\n \t\t\trte_mempool_put(qp->sess_mp, _sess);\n-\t\t\trte_mempool_put(qp->sess_mp_priv, _sess_private_data);\n \t\t\tsess = NULL;\n \t\t}\n-\t\tsym_op->session = (struct rte_cryptodev_sym_session *)_sess;\n-\t\tset_sym_session_private_data(op->sym->session,\n-\t\t\t\tcryptodev_driver_id, _sess_private_data);\n+\t\tsym_op->session = _sess;\n \t}\n \n \treturn sess;\ndiff --git a/drivers/crypto/null/null_crypto_pmd_ops.c b/drivers/crypto/null/null_crypto_pmd_ops.c\nindex 90a675dfff..fb43d3f7b5 100644\n--- a/drivers/crypto/null/null_crypto_pmd_ops.c\n+++ b/drivers/crypto/null/null_crypto_pmd_ops.c\n@@ -233,7 +233,6 @@ null_crypto_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t}\n \n \tqp->sess_mp = qp_conf->mp_session;\n-\tqp->sess_mp_priv = qp_conf->mp_session_private;\n \n \tmemset(&qp->qp_stats, 0, sizeof(qp->qp_stats));\n \n@@ -256,8 +255,7 @@ null_crypto_pmd_sym_session_get_size(struct rte_cryptodev *dev __rte_unused)\n static int\n null_crypto_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mp)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n \tvoid *sess_private_data;\n \tint ret;\n@@ -267,43 +265,22 @@ null_crypto_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (rte_mempool_get(mp, &sess_private_data)) {\n-\t\tNULL_LOG(ERR,\n-\t\t\t\t\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n+\tsess_private_data = (void *)sess->driver_priv_data;\n \n \tret = null_crypto_set_session_parameters(sess_private_data, xform);\n \tif (ret != 0) {\n \t\tNULL_LOG(ERR, \"failed configure session parameters\");\n-\n-\t\t/* Return session to mempool */\n-\t\trte_mempool_put(mp, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\tsess_private_data);\n-\n \treturn 0;\n }\n \n /** Clear the memory of session so it doesn't leave key material behind */\n static void\n-null_crypto_pmd_sym_session_clear(struct rte_cryptodev *dev,\n-\t\tstruct rte_cryptodev_sym_session *sess)\n-{\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n-\n-\t/* Zero out the whole structure */\n-\tif (sess_priv) {\n-\t\tmemset(sess_priv, 0, sizeof(struct null_crypto_session));\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n-\t}\n-}\n+null_crypto_pmd_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n+\t\tstruct rte_cryptodev_sym_session *sess __rte_unused)\n+{}\n \n static struct rte_cryptodev_ops pmd_ops = {\n \t\t.dev_configure\t\t= null_crypto_pmd_config,\ndiff --git a/drivers/crypto/null/null_crypto_pmd_private.h b/drivers/crypto/null/null_crypto_pmd_private.h\nindex 89c4345b6f..ae34ce6671 100644\n--- a/drivers/crypto/null/null_crypto_pmd_private.h\n+++ b/drivers/crypto/null/null_crypto_pmd_private.h\n@@ -31,8 +31,6 @@ struct null_crypto_qp {\n \t/**< Ring for placing process packets */\n \tstruct rte_mempool *sess_mp;\n \t/**< Session Mempool */\n-\tstruct rte_mempool *sess_mp_priv;\n-\t/**< Session Mempool */\n \tstruct rte_cryptodev_stats qp_stats;\n \t/**< Queue pair statistics */\n } __rte_cache_aligned;\ndiff --git a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h\nindex e48805fb09..4647d568de 100644\n--- a/drivers/crypto/octeontx/otx_cryptodev_hw_access.h\n+++ b/drivers/crypto/octeontx/otx_cryptodev_hw_access.h\n@@ -49,7 +49,6 @@ struct cpt_instance {\n \tuint32_t queue_id;\n \tuintptr_t rsvd;\n \tstruct rte_mempool *sess_mp;\n-\tstruct rte_mempool *sess_mp_priv;\n \tstruct cpt_qp_meta_info meta_info;\n \tuint8_t ca_enabled;\n };\ndiff --git a/drivers/crypto/octeontx/otx_cryptodev_ops.c b/drivers/crypto/octeontx/otx_cryptodev_ops.c\nindex 11840f5ecf..71856d5e86 100644\n--- a/drivers/crypto/octeontx/otx_cryptodev_ops.c\n+++ b/drivers/crypto/octeontx/otx_cryptodev_ops.c\n@@ -171,7 +171,6 @@ otx_cpt_que_pair_setup(struct rte_cryptodev *dev,\n \n \tinstance->queue_id = que_pair_id;\n \tinstance->sess_mp = qp_conf->mp_session;\n-\tinstance->sess_mp_priv = qp_conf->mp_session_private;\n \tdev->data->queue_pairs[que_pair_id] = instance;\n \n \treturn 0;\n@@ -243,25 +242,19 @@ sym_xform_verify(struct rte_crypto_sym_xform *xform)\n }\n \n static int\n-sym_session_configure(int driver_id, struct rte_crypto_sym_xform *xform,\n-\t\t      struct rte_cryptodev_sym_session *sess,\n-\t\t      struct rte_mempool *pool)\n+sym_session_configure(struct rte_crypto_sym_xform *xform,\n+\t\t      struct rte_cryptodev_sym_session *sess)\n {\n \tstruct rte_crypto_sym_xform *temp_xform = xform;\n \tstruct cpt_sess_misc *misc;\n \tvq_cmd_word3_t vq_cmd_w3;\n-\tvoid *priv;\n+\tvoid *priv = (void *)sess->driver_priv_data;\n \tint ret;\n \n \tret = sym_xform_verify(xform);\n \tif (unlikely(ret))\n \t\treturn ret;\n \n-\tif (unlikely(rte_mempool_get(pool, &priv))) {\n-\t\tCPT_LOG_ERR(\"Could not allocate session private data\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n \tmemset(priv, 0, sizeof(struct cpt_sess_misc) +\n \t\t\toffsetof(struct cpt_ctx, mc_ctx));\n \n@@ -301,9 +294,7 @@ sym_session_configure(int driver_id, struct rte_crypto_sym_xform *xform,\n \t\tgoto priv_put;\n \t}\n \n-\tset_sym_session_private_data(sess, driver_id, priv);\n-\n-\tmisc->ctx_dma_addr = rte_mempool_virt2iova(misc) +\n+\tmisc->ctx_dma_addr = sess->driver_priv_data_iova +\n \t\t\t     sizeof(struct cpt_sess_misc);\n \n \tvq_cmd_w3.u64 = 0;\n@@ -316,17 +307,14 @@ sym_session_configure(int driver_id, struct rte_crypto_sym_xform *xform,\n \treturn 0;\n \n priv_put:\n-\tif (priv)\n-\t\trte_mempool_put(pool, priv);\n \treturn -ENOTSUP;\n }\n \n static void\n-sym_session_clear(int driver_id, struct rte_cryptodev_sym_session *sess)\n+sym_session_clear(struct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *priv = get_sym_session_private_data(sess, driver_id);\n+\tvoid *priv = (void *)sess->driver_priv_data;\n \tstruct cpt_sess_misc *misc;\n-\tstruct rte_mempool *pool;\n \tstruct cpt_ctx *ctx;\n \n \tif (priv == NULL)\n@@ -336,35 +324,26 @@ sym_session_clear(int driver_id, struct rte_cryptodev_sym_session *sess)\n \tctx = SESS_PRIV(misc);\n \n \trte_free(ctx->auth_key);\n-\n-\tmemset(priv, 0, cpt_get_session_size());\n-\n-\tpool = rte_mempool_from_obj(priv);\n-\n-\tset_sym_session_private_data(sess, driver_id, NULL);\n-\n-\trte_mempool_put(pool, priv);\n }\n \n static int\n-otx_cpt_session_cfg(struct rte_cryptodev *dev,\n+otx_cpt_session_cfg(struct rte_cryptodev *dev __rte_unused,\n \t\t    struct rte_crypto_sym_xform *xform,\n-\t\t    struct rte_cryptodev_sym_session *sess,\n-\t\t    struct rte_mempool *pool)\n+\t\t    struct rte_cryptodev_sym_session *sess)\n {\n \tCPT_PMD_INIT_FUNC_TRACE();\n \n-\treturn sym_session_configure(dev->driver_id, xform, sess, pool);\n+\treturn sym_session_configure(xform, sess);\n }\n \n \n static void\n-otx_cpt_session_clear(struct rte_cryptodev *dev,\n+otx_cpt_session_clear(struct rte_cryptodev *dev __rte_unused,\n \t\t  struct rte_cryptodev_sym_session *sess)\n {\n \tCPT_PMD_INIT_FUNC_TRACE();\n \n-\treturn sym_session_clear(dev->driver_id, sess);\n+\treturn sym_session_clear(sess);\n }\n \n static unsigned int\n@@ -528,10 +507,7 @@ otx_cpt_enq_single_sym(struct cpt_instance *instance,\n \tvoid *req;\n \tuint64_t cpt_op;\n \n-\tsess = (struct cpt_sess_misc *)\n-\t\t\tget_sym_session_private_data(sym_op->session,\n-\t\t\t\t\t\t     otx_cryptodev_driver_id);\n-\n+\tsess = (struct cpt_sess_misc *)sym_op->session->driver_priv_data;\n \tcpt_op = sess->cpt_op;\n \n \tif (likely(cpt_op & CPT_OP_CIPHER_MASK))\n@@ -560,21 +536,18 @@ static __rte_always_inline void * __rte_hot\n otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,\n \t\t\t\tstruct rte_crypto_op *op)\n {\n-\tconst int driver_id = otx_cryptodev_driver_id;\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct rte_cryptodev_sym_session *sess;\n \tvoid *req;\n \tint ret;\n \n \t/* Create temporary session */\n-\tsess = rte_cryptodev_sym_session_create(instance->sess_mp);\n-\tif (sess == NULL) {\n+\tif (rte_mempool_get(instance->sess_mp, (void **)&sess) < 0) {\n \t\trte_errno = ENOMEM;\n \t\treturn NULL;\n \t}\n \n-\tret = sym_session_configure(driver_id, sym_op->xform, sess,\n-\t\t\t\t    instance->sess_mp_priv);\n+\tret = sym_session_configure(sym_op->xform, sess);\n \tif (ret)\n \t\tgoto sess_put;\n \n@@ -583,12 +556,10 @@ otx_cpt_enq_single_sym_sessless(struct cpt_instance *instance,\n \t/* Enqueue op with the tmp session set */\n \treq = otx_cpt_enq_single_sym(instance, op);\n \tif (unlikely(req == NULL))\n-\t\tgoto priv_put;\n+\t\tgoto sess_put;\n \n \treturn req;\n \n-priv_put:\n-\tsym_session_clear(driver_id, sess);\n sess_put:\n \trte_mempool_put(instance->sess_mp, sess);\n \treturn NULL;\n@@ -873,13 +844,9 @@ static inline void\n free_sym_session_data(const struct cpt_instance *instance,\n \t\t      struct rte_crypto_op *cop)\n {\n-\tvoid *sess_private_data_t = get_sym_session_private_data(\n-\t\tcop->sym->session, otx_cryptodev_driver_id);\n+\tvoid *sess_private_data_t = (void *)cop->sym->session->driver_priv_data;\n+\n \tmemset(sess_private_data_t, 0, cpt_get_session_size());\n-\tmemset(cop->sym->session, 0,\n-\t       rte_cryptodev_sym_get_existing_header_session_size(\n-\t\t       cop->sym->session));\n-\trte_mempool_put(instance->sess_mp_priv, sess_private_data_t);\n \trte_mempool_put(instance->sess_mp, cop->sym->session);\n \tcop->sym->session = NULL;\n }\ndiff --git a/drivers/crypto/openssl/openssl_pmd_private.h b/drivers/crypto/openssl/openssl_pmd_private.h\nindex c34fd9a546..ed6841e460 100644\n--- a/drivers/crypto/openssl/openssl_pmd_private.h\n+++ b/drivers/crypto/openssl/openssl_pmd_private.h\n@@ -70,8 +70,6 @@ struct openssl_qp {\n \t/**< Ring for placing process packets */\n \tstruct rte_mempool *sess_mp;\n \t/**< Session Mempool */\n-\tstruct rte_mempool *sess_mp_priv;\n-\t/**< Session Private Data Mempool */\n \tstruct rte_cryptodev_stats stats;\n \t/**< Queue pair statistics */\n \tuint8_t temp_digest[DIGEST_LENGTH_MAX];\ndiff --git a/drivers/crypto/openssl/rte_openssl_pmd.c b/drivers/crypto/openssl/rte_openssl_pmd.c\nindex 3c4ff1ac56..ff5e349ce8 100644\n--- a/drivers/crypto/openssl/rte_openssl_pmd.c\n+++ b/drivers/crypto/openssl/rte_openssl_pmd.c\n@@ -887,10 +887,8 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op)\n \t\tif (op->type == RTE_CRYPTO_OP_TYPE_SYMMETRIC) {\n \t\t\t/* get existing session */\n \t\t\tif (likely(op->sym->session != NULL))\n-\t\t\t\tsess = (struct openssl_session *)\n-\t\t\t\t\t\tget_sym_session_private_data(\n-\t\t\t\t\t\top->sym->session,\n-\t\t\t\t\t\tcryptodev_driver_id);\n+\t\t\t\tsess = (void *)\n+\t\t\t\t\top->sym->session->driver_priv_data;\n \t\t} else {\n \t\t\tif (likely(op->asym->session != NULL))\n \t\t\t\tasym_sess = (struct openssl_asym_session *)\n@@ -901,32 +899,26 @@ get_session(struct openssl_qp *qp, struct rte_crypto_op *op)\n \t\t\treturn asym_sess;\n \t\t}\n \t} else {\n+\t\tstruct rte_cryptodev_sym_session *_sess;\n \t\t/* sessionless asymmetric not supported */\n \t\tif (op->type == RTE_CRYPTO_OP_TYPE_ASYMMETRIC)\n \t\t\treturn NULL;\n \n \t\t/* provide internal session */\n-\t\tvoid *_sess = rte_cryptodev_sym_session_create(qp->sess_mp);\n-\t\tvoid *_sess_private_data = NULL;\n+\t\trte_mempool_get(qp->sess_mp, (void **)&_sess);\n \n \t\tif (_sess == NULL)\n \t\t\treturn NULL;\n \n-\t\tif (rte_mempool_get(qp->sess_mp_priv,\n-\t\t\t\t(void **)&_sess_private_data))\n-\t\t\treturn NULL;\n-\n-\t\tsess = (struct openssl_session *)_sess_private_data;\n+\t\tsess = (struct openssl_session *)_sess->driver_priv_data;\n \n \t\tif (unlikely(openssl_set_session_parameters(sess,\n \t\t\t\top->sym->xform) != 0)) {\n \t\t\trte_mempool_put(qp->sess_mp, _sess);\n-\t\t\trte_mempool_put(qp->sess_mp_priv, _sess_private_data);\n \t\t\tsess = NULL;\n \t\t}\n \t\top->sym->session = (struct rte_cryptodev_sym_session *)_sess;\n-\t\tset_sym_session_private_data(op->sym->session,\n-\t\t\t\tcryptodev_driver_id, _sess_private_data);\n+\n \t}\n \n \tif (sess == NULL)\n@@ -2900,10 +2892,6 @@ process_op(struct openssl_qp *qp, struct rte_crypto_op *op,\n \tif (op->sess_type == RTE_CRYPTO_OP_SESSIONLESS) {\n \t\topenssl_reset_session(sess);\n \t\tmemset(sess, 0, sizeof(struct openssl_session));\n-\t\tmemset(op->sym->session, 0,\n-\t\t\trte_cryptodev_sym_get_existing_header_session_size(\n-\t\t\t\top->sym->session));\n-\t\trte_mempool_put(qp->sess_mp_priv, sess);\n \t\trte_mempool_put(qp->sess_mp, op->sym->session);\n \t\top->sym->session = NULL;\n \t}\ndiff --git a/drivers/crypto/openssl/rte_openssl_pmd_ops.c b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\nindex f7ddbf9c73..2a3662ee5a 100644\n--- a/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n+++ b/drivers/crypto/openssl/rte_openssl_pmd_ops.c\n@@ -764,7 +764,6 @@ openssl_pmd_qp_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \t\tgoto qp_setup_cleanup;\n \n \tqp->sess_mp = qp_conf->mp_session;\n-\tqp->sess_mp_priv = qp_conf->mp_session_private;\n \n \tmemset(&qp->stats, 0, sizeof(qp->stats));\n \n@@ -794,10 +793,9 @@ openssl_pmd_asym_session_get_size(struct rte_cryptodev *dev __rte_unused)\n static int\n openssl_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mempool)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *sess_private_data;\n+\tvoid *sess_private_data = (void *)sess->driver_priv_data;\n \tint ret;\n \n \tif (unlikely(sess == NULL)) {\n@@ -805,24 +803,14 @@ openssl_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \t\treturn -EINVAL;\n \t}\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tOPENSSL_LOG(ERR,\n-\t\t\t\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n \tret = openssl_set_session_parameters(sess_private_data, xform);\n \tif (ret != 0) {\n \t\tOPENSSL_LOG(ERR, \"failed configure session parameters\");\n \n \t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\t\tsess_private_data);\n-\n \treturn 0;\n }\n \n@@ -1328,20 +1316,13 @@ openssl_pmd_asym_session_configure(struct rte_cryptodev *dev __rte_unused,\n \n /** Clear the memory of session so it doesn't leave key material behind */\n static void\n-openssl_pmd_sym_session_clear(struct rte_cryptodev *dev,\n+openssl_pmd_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n+\tvoid *sess_priv = (void *)sess->driver_priv_data;\n \n \t/* Zero out the whole structure */\n-\tif (sess_priv) {\n-\t\topenssl_reset_session(sess_priv);\n-\t\tmemset(sess_priv, 0, sizeof(struct openssl_session));\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n-\t}\n+\topenssl_reset_session(sess_priv);\n }\n \n static void openssl_reset_asym_session(struct openssl_asym_session *sess)\ndiff --git a/drivers/crypto/qat/qat_sym.c b/drivers/crypto/qat/qat_sym.c\nindex f3a99ae15c..2c58a0ec75 100644\n--- a/drivers/crypto/qat/qat_sym.c\n+++ b/drivers/crypto/qat/qat_sym.c\n@@ -67,12 +67,7 @@ qat_sym_build_request(void *in_op, uint8_t *out_msg,\n \t\treturn -EINVAL;\n \n \tif (likely(op->sess_type == RTE_CRYPTO_OP_WITH_SESSION)) {\n-\t\tctx = get_sym_session_private_data(op->sym->session,\n-\t\t\t\tqat_sym_driver_id);\n-\t\tif (unlikely(!ctx)) {\n-\t\t\tQAT_DP_LOG(ERR, \"No session for this device\");\n-\t\t\treturn -EINVAL;\n-\t\t}\n+\t\tctx = (void *)op->sym->session->driver_priv_data;\n \t\tif (sess != (uintptr_t)ctx) {\n \t\t\tstruct rte_cryptodev *cdev;\n \t\t\tstruct qat_cryptodev_private *internals;\n@@ -391,8 +386,7 @@ qat_sym_configure_dp_ctx(struct rte_cryptodev *dev, uint16_t qp_id,\n \tif (sess_type != RTE_CRYPTO_OP_WITH_SESSION)\n \t\treturn -EINVAL;\n \n-\tctx = (struct qat_sym_session *)get_sym_session_private_data(\n-\t\t\tsession_ctx.crypto_sess, qat_sym_driver_id);\n+\tctx = (void *)session_ctx.crypto_sess->driver_priv_data;\n \n \tdp_ctx->session = ctx;\n \ndiff --git a/drivers/crypto/qat/qat_sym.h b/drivers/crypto/qat/qat_sym.h\nindex 074612c11b..2853ac5b88 100644\n--- a/drivers/crypto/qat/qat_sym.h\n+++ b/drivers/crypto/qat/qat_sym.h\n@@ -317,9 +317,7 @@ qat_sym_process_response(void **op, uint8_t *resp, void *op_cookie,\n #endif\n \t{\n \t\tsess = (struct qat_sym_session *)\n-\t\t\t\tget_sym_session_private_data(\n-\t\t\t\trx_op->sym->session,\n-\t\t\t\tqat_sym_driver_id);\n+\t\t\trx_op->sym->session->driver_priv_data;\n \t\tis_docsis_sec = 0;\n \t}\n \ndiff --git a/drivers/crypto/qat/qat_sym_session.c b/drivers/crypto/qat/qat_sym_session.c\nindex bfc9836351..da50bcbef1 100644\n--- a/drivers/crypto/qat/qat_sym_session.c\n+++ b/drivers/crypto/qat/qat_sym_session.c\n@@ -226,22 +226,13 @@ qat_is_auth_alg_supported(enum rte_crypto_auth_algorithm algo,\n }\n \n void\n-qat_sym_session_clear(struct rte_cryptodev *dev,\n+qat_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n \t\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tuint8_t index = dev->driver_id;\n-\tvoid *sess_priv = get_sym_session_private_data(sess, index);\n-\tstruct qat_sym_session *s = (struct qat_sym_session *)sess_priv;\n+\tstruct qat_sym_session *s = (void *)sess->driver_priv_data;\n \n-\tif (sess_priv) {\n-\t\tif (s->bpi_ctx)\n-\t\t\tbpi_cipher_ctx_free(s->bpi_ctx);\n-\t\tmemset(s, 0, qat_sym_session_get_private_size(dev));\n-\t\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(sess_priv);\n-\n-\t\tset_sym_session_private_data(sess, index, NULL);\n-\t\trte_mempool_put(sess_mp, sess_priv);\n-\t}\n+\tif (s->bpi_ctx)\n+\t\tbpi_cipher_ctx_free(s->bpi_ctx);\n }\n \n static int\n@@ -524,35 +515,24 @@ qat_sym_session_configure_cipher(struct rte_cryptodev *dev,\n int\n qat_sym_session_configure(struct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mempool)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n-\tvoid *sess_private_data;\n \tint ret;\n \n-\tif (rte_mempool_get(mempool, &sess_private_data)) {\n-\t\tCDEV_LOG_ERR(\n-\t\t\t\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n #if (OPENSSL_VERSION_NUMBER >= 0x30000000L)\n \tif (ossl_legacy_provider_load())\n \t\treturn -EINVAL;\n #endif\n-\tret = qat_sym_session_set_parameters(dev, xform, sess_private_data);\n+\tret = qat_sym_session_set_parameters(dev, xform,\n+\t\t\t(void *)sess->driver_priv_data,\n+\t\t\tsess->driver_priv_data_iova);\n \tif (ret != 0) {\n \t\tQAT_LOG(ERR,\n \t\t    \"Crypto QAT PMD: failed to configure session parameters\");\n \n-\t\t/* Return session to mempool */\n-\t\trte_mempool_put(mempool, sess_private_data);\n \t\treturn ret;\n \t}\n \n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\tsess_private_data);\n-\n # if (OPENSSL_VERSION_NUMBER >= 0x30000000L)\n \tossl_legacy_provider_unload();\n # endif\n@@ -561,7 +541,8 @@ qat_sym_session_configure(struct rte_cryptodev *dev,\n \n int\n qat_sym_session_set_parameters(struct rte_cryptodev *dev,\n-\t\tstruct rte_crypto_sym_xform *xform, void *session_private)\n+\t\tstruct rte_crypto_sym_xform *xform, void *session_private,\n+\t\trte_iova_t session_paddr)\n {\n \tstruct qat_sym_session *session = session_private;\n \tstruct qat_cryptodev_private *internals = dev->data->dev_private;\n@@ -570,7 +551,6 @@ qat_sym_session_set_parameters(struct rte_cryptodev *dev,\n \tint qat_cmd_id;\n \n \t/* Verify the session physical address is known */\n-\trte_iova_t session_paddr = rte_mempool_virt2iova(session);\n \tif (session_paddr == 0 || session_paddr == RTE_BAD_IOVA) {\n \t\tQAT_LOG(ERR,\n \t\t\t\"Session physical address unknown. Bad memory pool.\");\ndiff --git a/drivers/crypto/qat/qat_sym_session.h b/drivers/crypto/qat/qat_sym_session.h\nindex 01908abd9e..9e4aab06a6 100644\n--- a/drivers/crypto/qat/qat_sym_session.h\n+++ b/drivers/crypto/qat/qat_sym_session.h\n@@ -123,12 +123,12 @@ struct qat_sym_session {\n int\n qat_sym_session_configure(struct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mempool);\n+\t\tstruct rte_cryptodev_sym_session *sess);\n \n int\n qat_sym_session_set_parameters(struct rte_cryptodev *dev,\n-\t\tstruct rte_crypto_sym_xform *xform, void *session_private);\n+\t\tstruct rte_crypto_sym_xform *xform, void *session_private,\n+\t\trte_iova_t session_private_iova);\n \n int\n qat_sym_session_configure_aead(struct rte_cryptodev *dev,\ndiff --git a/drivers/crypto/scheduler/scheduler_pmd_ops.c b/drivers/crypto/scheduler/scheduler_pmd_ops.c\nindex 11b559e025..03df424140 100644\n--- a/drivers/crypto/scheduler/scheduler_pmd_ops.c\n+++ b/drivers/crypto/scheduler/scheduler_pmd_ops.c\n@@ -470,44 +470,18 @@ scheduler_pmd_sym_session_get_size(struct rte_cryptodev *dev __rte_unused)\n }\n \n static int\n-scheduler_pmd_sym_session_configure(struct rte_cryptodev *dev,\n-\tstruct rte_crypto_sym_xform *xform,\n-\tstruct rte_cryptodev_sym_session *sess,\n-\tstruct rte_mempool *mempool)\n+scheduler_pmd_sym_session_configure(struct rte_cryptodev *dev __rte_unused,\n+\tstruct rte_crypto_sym_xform *xform __rte_unused,\n+\tstruct rte_cryptodev_sym_session *sess __rte_unused)\n {\n-\tstruct scheduler_ctx *sched_ctx = dev->data->dev_private;\n-\tuint32_t i;\n-\tint ret;\n-\n-\tfor (i = 0; i < sched_ctx->nb_workers; i++) {\n-\t\tstruct scheduler_worker *worker = &sched_ctx->workers[i];\n-\n-\t\tret = rte_cryptodev_sym_session_init(worker->dev_id, sess,\n-\t\t\t\t\txform, mempool);\n-\t\tif (ret < 0) {\n-\t\t\tCR_SCHED_LOG(ERR, \"unable to config sym session\");\n-\t\t\treturn ret;\n-\t\t}\n-\t}\n-\n \treturn 0;\n }\n \n /** Clear the memory of session so it doesn't leave key material behind */\n static void\n-scheduler_pmd_sym_session_clear(struct rte_cryptodev *dev,\n-\t\tstruct rte_cryptodev_sym_session *sess)\n-{\n-\tstruct scheduler_ctx *sched_ctx = dev->data->dev_private;\n-\tuint32_t i;\n-\n-\t/* Clear private data of workers */\n-\tfor (i = 0; i < sched_ctx->nb_workers; i++) {\n-\t\tstruct scheduler_worker *worker = &sched_ctx->workers[i];\n-\n-\t\trte_cryptodev_sym_session_clear(worker->dev_id, sess);\n-\t}\n-}\n+scheduler_pmd_sym_session_clear(struct rte_cryptodev *dev __rte_unused,\n+\t\tstruct rte_cryptodev_sym_session *sess __rte_unused)\n+{}\n \n static struct rte_cryptodev_ops scheduler_pmd_ops = {\n \t\t.dev_configure\t\t= scheduler_pmd_config,\ndiff --git a/drivers/crypto/virtio/virtio_cryptodev.c b/drivers/crypto/virtio/virtio_cryptodev.c\nindex 21bd996064..d3b799b28d 100644\n--- a/drivers/crypto/virtio/virtio_cryptodev.c\n+++ b/drivers/crypto/virtio/virtio_cryptodev.c\n@@ -40,8 +40,7 @@ static void virtio_crypto_sym_clear_session(struct rte_cryptodev *dev,\n \t\tstruct rte_cryptodev_sym_session *sess);\n static int virtio_crypto_sym_configure_session(struct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *session,\n-\t\tstruct rte_mempool *mp);\n+\t\tstruct rte_cryptodev_sym_session *session);\n \n /*\n  * The set of PCI devices this driver supports\n@@ -952,12 +951,7 @@ virtio_crypto_sym_clear_session(\n \n \thw = dev->data->dev_private;\n \tvq = hw->cvq;\n-\tsession = (struct virtio_crypto_session *)get_sym_session_private_data(\n-\t\tsess, cryptodev_virtio_driver_id);\n-\tif (session == NULL) {\n-\t\tVIRTIO_CRYPTO_SESSION_LOG_ERR(\"Invalid session parameter\");\n-\t\treturn;\n-\t}\n+\tsession = (struct virtio_crypto_session *)sess->driver_priv_data;\n \n \tVIRTIO_CRYPTO_SESSION_LOG_INFO(\"vq->vq_desc_head_idx = %d, \"\n \t\t\t\"vq = %p\", vq->vq_desc_head_idx, vq);\n@@ -1070,10 +1064,6 @@ virtio_crypto_sym_clear_session(\n \tVIRTIO_CRYPTO_SESSION_LOG_INFO(\"Close session %\"PRIu64\" successfully \",\n \t\t\tsession->session_id);\n \n-\tmemset(session, 0, sizeof(struct virtio_crypto_session));\n-\tstruct rte_mempool *sess_mp = rte_mempool_from_obj(session);\n-\tset_sym_session_private_data(sess, cryptodev_virtio_driver_id, NULL);\n-\trte_mempool_put(sess_mp, session);\n \trte_free(malloc_virt_addr);\n }\n \n@@ -1292,11 +1282,9 @@ static int\n virtio_crypto_check_sym_configure_session_paras(\n \t\tstruct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sym_sess,\n-\t\tstruct rte_mempool *mempool)\n+\t\tstruct rte_cryptodev_sym_session *sym_sess)\n {\n-\tif (unlikely(xform == NULL) || unlikely(sym_sess == NULL) ||\n-\t\tunlikely(mempool == NULL)) {\n+\tif (unlikely(xform == NULL) || unlikely(sym_sess == NULL)) {\n \t\tVIRTIO_CRYPTO_SESSION_LOG_ERR(\"NULL pointer\");\n \t\treturn -1;\n \t}\n@@ -1311,12 +1299,9 @@ static int\n virtio_crypto_sym_configure_session(\n \t\tstruct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_mempool *mempool)\n+\t\tstruct rte_cryptodev_sym_session *sess)\n {\n \tint ret;\n-\tstruct virtio_crypto_session crypto_sess;\n-\tvoid *session_private = &crypto_sess;\n \tstruct virtio_crypto_session *session;\n \tstruct virtio_crypto_op_ctrl_req *ctrl_req;\n \tenum virtio_crypto_cmd_id cmd_id;\n@@ -1328,19 +1313,12 @@ virtio_crypto_sym_configure_session(\n \tPMD_INIT_FUNC_TRACE();\n \n \tret = virtio_crypto_check_sym_configure_session_paras(dev, xform,\n-\t\t\tsess, mempool);\n+\t\t\tsess);\n \tif (ret < 0) {\n \t\tVIRTIO_CRYPTO_SESSION_LOG_ERR(\"Invalid parameters\");\n \t\treturn ret;\n \t}\n-\n-\tif (rte_mempool_get(mempool, &session_private)) {\n-\t\tVIRTIO_CRYPTO_SESSION_LOG_ERR(\n-\t\t\t\"Couldn't get object from session mempool\");\n-\t\treturn -ENOMEM;\n-\t}\n-\n-\tsession = (struct virtio_crypto_session *)session_private;\n+\tsession = (struct virtio_crypto_session *)sess->driver_priv_data;\n \tmemset(session, 0, sizeof(struct virtio_crypto_session));\n \tctrl_req = &session->ctrl;\n \tctrl_req->header.opcode = VIRTIO_CRYPTO_CIPHER_CREATE_SESSION;\n@@ -1402,10 +1380,6 @@ virtio_crypto_sym_configure_session(\n \t\t\t\"Unsupported operation chain order parameter\");\n \t\tgoto error_out;\n \t}\n-\n-\tset_sym_session_private_data(sess, dev->driver_id,\n-\t\tsession_private);\n-\n \treturn 0;\n \n error_out:\ndiff --git a/drivers/crypto/virtio/virtio_rxtx.c b/drivers/crypto/virtio/virtio_rxtx.c\nindex 08359b3a39..b7f492a7f2 100644\n--- a/drivers/crypto/virtio/virtio_rxtx.c\n+++ b/drivers/crypto/virtio/virtio_rxtx.c\n@@ -207,8 +207,7 @@ virtqueue_crypto_sym_enqueue_xmit(\n \t\t\toffsetof(struct virtio_crypto_op_cookie, iv);\n \tstruct rte_crypto_sym_op *sym_op = cop->sym;\n \tstruct virtio_crypto_session *session =\n-\t\t(struct virtio_crypto_session *)get_sym_session_private_data(\n-\t\tcop->sym->session, cryptodev_virtio_driver_id);\n+\t\t(void *)cop->sym->session->driver_priv_data;\n \tstruct virtio_crypto_op_data_req *op_data_req;\n \tuint32_t hash_result_len = 0;\n \tstruct virtio_crypto_op_cookie *crypto_op_cookie;\ndiff --git a/examples/fips_validation/fips_dev_self_test.c b/examples/fips_validation/fips_dev_self_test.c\nindex 19af134bbe..bce903e007 100644\n--- a/examples/fips_validation/fips_dev_self_test.c\n+++ b/examples/fips_validation/fips_dev_self_test.c\n@@ -969,7 +969,6 @@ struct fips_dev_auto_test_env {\n \tstruct rte_mempool *mpool;\n \tstruct rte_mempool *op_pool;\n \tstruct rte_mempool *sess_pool;\n-\tstruct rte_mempool *sess_priv_pool;\n \tstruct rte_mbuf *mbuf;\n \tstruct rte_crypto_op *op;\n };\n@@ -1479,13 +1478,8 @@ run_single_test(uint8_t dev_id,\n \t\treturn ret;\n \t}\n \n-\tsess = rte_cryptodev_sym_session_create(env->sess_pool);\n-\tif (!sess)\n-\t\treturn -ENOMEM;\n-\n-\tret = rte_cryptodev_sym_session_init(dev_id,\n-\t\t\tsess, &xform, env->sess_priv_pool);\n-\tif (ret < 0) {\n+\tsess = rte_cryptodev_sym_session_create(dev_id, &xform, env->sess_pool);\n+\tif (!sess) {\n \t\tRTE_LOG(ERR, PMD, \"Error %i: Init session\\n\", ret);\n \t\treturn ret;\n \t}\n@@ -1508,8 +1502,7 @@ run_single_test(uint8_t dev_id,\n \t\t\t\t1);\n \t} while (n_deqd == 0);\n \n-\trte_cryptodev_sym_session_clear(dev_id, sess);\n-\trte_cryptodev_sym_session_free(sess);\n+\trte_cryptodev_sym_session_free(dev_id, sess);\n \n \tif (env->op->status != RTE_CRYPTO_OP_STATUS_SUCCESS)\n \t\treturn -1;\n@@ -1527,7 +1520,6 @@ fips_dev_auto_test_uninit(uint8_t dev_id,\n \trte_mempool_free(env->mpool);\n \trte_mempool_free(env->op_pool);\n \trte_mempool_free(env->sess_pool);\n-\trte_mempool_free(env->sess_priv_pool);\n \n \trte_cryptodev_stop(dev_id);\n }\n@@ -1535,7 +1527,7 @@ fips_dev_auto_test_uninit(uint8_t dev_id,\n static int\n fips_dev_auto_test_init(uint8_t dev_id, struct fips_dev_auto_test_env *env)\n {\n-\tstruct rte_cryptodev_qp_conf qp_conf = {128, NULL, NULL};\n+\tstruct rte_cryptodev_qp_conf qp_conf = {128, NULL};\n \tuint32_t sess_sz = rte_cryptodev_sym_get_private_session_size(dev_id);\n \tstruct rte_cryptodev_config conf;\n \tchar name[128];\n@@ -1579,25 +1571,13 @@ fips_dev_auto_test_init(uint8_t dev_id, struct fips_dev_auto_test_env *env)\n \tsnprintf(name, 128, \"%s%u\", \"SELF_TEST_SESS_POOL\", dev_id);\n \n \tenv->sess_pool = rte_cryptodev_sym_session_pool_create(name,\n-\t\t\t128, 0, 0, 0, rte_cryptodev_socket_id(dev_id));\n+\t\t\t128, sess_sz, 0, 0, rte_cryptodev_socket_id(dev_id));\n \tif (!env->sess_pool) {\n \t\tret = -ENOMEM;\n \t\tgoto error_exit;\n \t}\n \n-\tmemset(name, 0, 128);\n-\tsnprintf(name, 128, \"%s%u\", \"SELF_TEST_SESS_PRIV_POOL\", dev_id);\n-\n-\tenv->sess_priv_pool = rte_mempool_create(name,\n-\t\t\t128, sess_sz, 0, 0, NULL, NULL, NULL,\n-\t\t\tNULL, rte_cryptodev_socket_id(dev_id), 0);\n-\tif (!env->sess_priv_pool) {\n-\t\tret = -ENOMEM;\n-\t\tgoto error_exit;\n-\t}\n-\n \tqp_conf.mp_session = env->sess_pool;\n-\tqp_conf.mp_session_private = env->sess_priv_pool;\n \n \tret = rte_cryptodev_queue_pair_setup(dev_id, 0, &qp_conf,\n \t\t\trte_cryptodev_socket_id(dev_id));\ndiff --git a/examples/fips_validation/main.c b/examples/fips_validation/main.c\nindex e6c0b6a3a1..e73e6b09c3 100644\n--- a/examples/fips_validation/main.c\n+++ b/examples/fips_validation/main.c\n@@ -55,7 +55,6 @@ struct cryptodev_fips_validate_env {\n \tuint16_t mbuf_data_room;\n \tstruct rte_mempool *mpool;\n \tstruct rte_mempool *sess_mpool;\n-\tstruct rte_mempool *sess_priv_mpool;\n \tstruct rte_mempool *op_pool;\n \tstruct rte_mbuf *mbuf;\n \tuint8_t *digest;\n@@ -70,7 +69,7 @@ static int\n cryptodev_fips_validate_app_int(void)\n {\n \tstruct rte_cryptodev_config conf = {rte_socket_id(), 1, 0};\n-\tstruct rte_cryptodev_qp_conf qp_conf = {128, NULL, NULL};\n+\tstruct rte_cryptodev_qp_conf qp_conf = {128, NULL};\n \tstruct rte_cryptodev_info dev_info;\n \tuint32_t sess_sz = rte_cryptodev_sym_get_private_session_size(\n \t\t\tenv.dev_id);\n@@ -110,16 +109,11 @@ cryptodev_fips_validate_app_int(void)\n \tret = -ENOMEM;\n \n \tenv.sess_mpool = rte_cryptodev_sym_session_pool_create(\n-\t\t\t\"FIPS_SESS_MEMPOOL\", 16, 0, 0, 0, rte_socket_id());\n+\t\t\t\"FIPS_SESS_MEMPOOL\", 16, sess_sz, 0, 0,\n+\t\t\trte_socket_id());\n \tif (!env.sess_mpool)\n \t\tgoto error_exit;\n \n-\tenv.sess_priv_mpool = rte_mempool_create(\"FIPS_SESS_PRIV_MEMPOOL\",\n-\t\t\t16, sess_sz, 0, 0, NULL, NULL, NULL,\n-\t\t\tNULL, rte_socket_id(), 0);\n-\tif (!env.sess_priv_mpool)\n-\t\tgoto error_exit;\n-\n \tenv.op_pool = rte_crypto_op_pool_create(\n \t\t\t\"FIPS_OP_POOL\",\n \t\t\tRTE_CRYPTO_OP_TYPE_SYMMETRIC,\n@@ -134,7 +128,6 @@ cryptodev_fips_validate_app_int(void)\n \t\tgoto error_exit;\n \n \tqp_conf.mp_session = env.sess_mpool;\n-\tqp_conf.mp_session_private = env.sess_priv_mpool;\n \n \tret = rte_cryptodev_queue_pair_setup(env.dev_id, 0, &qp_conf,\n \t\t\trte_socket_id());\n@@ -151,7 +144,6 @@ cryptodev_fips_validate_app_int(void)\n \n \trte_mempool_free(env.mpool);\n \trte_mempool_free(env.sess_mpool);\n-\trte_mempool_free(env.sess_priv_mpool);\n \trte_mempool_free(env.op_pool);\n \n \treturn ret;\n@@ -162,11 +154,9 @@ cryptodev_fips_validate_app_uninit(void)\n {\n \trte_pktmbuf_free(env.mbuf);\n \trte_crypto_op_free(env.op);\n-\trte_cryptodev_sym_session_clear(env.dev_id, env.sess);\n-\trte_cryptodev_sym_session_free(env.sess);\n+\trte_cryptodev_sym_session_free(env.dev_id, env.sess);\n \trte_mempool_free(env.mpool);\n \trte_mempool_free(env.sess_mpool);\n-\trte_mempool_free(env.sess_priv_mpool);\n \trte_mempool_free(env.op_pool);\n }\n \n@@ -1202,13 +1192,9 @@ fips_run_test(void)\n \tif (ret < 0)\n \t\treturn ret;\n \n-\tenv.sess = rte_cryptodev_sym_session_create(env.sess_mpool);\n-\tif (!env.sess)\n-\t\treturn -ENOMEM;\n-\n-\tret = rte_cryptodev_sym_session_init(env.dev_id,\n-\t\t\tenv.sess, &xform, env.sess_priv_mpool);\n-\tif (ret < 0) {\n+\tenv.sess = rte_cryptodev_sym_session_create(env.dev_id, &xform,\n+\t\t\tenv.sess_mpool);\n+\tif (!env.sess) {\n \t\tRTE_LOG(ERR, USER1, \"Error %i: Init session\\n\",\n \t\t\t\tret);\n \t\tgoto exit;\n@@ -1237,9 +1223,10 @@ fips_run_test(void)\n \tvec.status = env.op->status;\n \n exit:\n-\trte_cryptodev_sym_session_clear(env.dev_id, env.sess);\n-\trte_cryptodev_sym_session_free(env.sess);\n-\tenv.sess = NULL;\n+\tif (env.sess) {\n+\t\trte_cryptodev_sym_session_free(env.dev_id, env.sess);\n+\t\tenv.sess = NULL;\n+\t}\n \n \treturn ret;\n }\ndiff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c\nindex a4ac4174ba..338fbe6236 100644\n--- a/examples/ipsec-secgw/ipsec-secgw.c\n+++ b/examples/ipsec-secgw/ipsec-secgw.c\n@@ -1693,8 +1693,6 @@ cryptodevs_init(uint16_t req_queue_num)\n \t\tqp_conf.nb_descriptors = qp_desc_nb;\n \t\tqp_conf.mp_session =\n \t\t\tsocket_ctx[dev_conf.socket_id].session_pool;\n-\t\tqp_conf.mp_session_private =\n-\t\t\tsocket_ctx[dev_conf.socket_id].session_priv_pool;\n \t\tfor (qp = 0; qp < dev_conf.nb_queue_pairs; qp++)\n \t\t\tif (rte_cryptodev_queue_pair_setup(cdev_id, qp,\n \t\t\t\t\t&qp_conf, dev_conf.socket_id))\n@@ -2501,12 +2499,8 @@ one_session_free(struct rte_ipsec_session *ips)\n \t\tif (ips->crypto.ses == NULL)\n \t\t\treturn 0;\n \n-\t\tret = rte_cryptodev_sym_session_clear(ips->crypto.dev_id,\n-\t\t\t\t\t\t      ips->crypto.ses);\n-\t\tif (ret)\n-\t\t\treturn ret;\n-\n-\t\tret = rte_cryptodev_sym_session_free(ips->crypto.ses);\n+\t\tret = rte_cryptodev_sym_session_free(ips->crypto.dev_id,\n+\t\t\t\tips->crypto.ses);\n \t} else {\n \t\t/* Session has not been created */\n \t\tif (ips->security.ctx == NULL || ips->security.ses == NULL)\ndiff --git a/examples/ipsec-secgw/ipsec.c b/examples/ipsec-secgw/ipsec.c\nindex 7b7bfff696..bb84dcec7e 100644\n--- a/examples/ipsec-secgw/ipsec.c\n+++ b/examples/ipsec-secgw/ipsec.c\n@@ -174,11 +174,8 @@ create_lookaside_session(struct ipsec_ctx *ipsec_ctx_lcore[],\n \n \t\t}\n \t\tips->crypto.dev_id = cdev_id;\n-\t\tips->crypto.ses = rte_cryptodev_sym_session_create(\n-\t\t\t\tskt_ctx->session_pool);\n-\t\trte_cryptodev_sym_session_init(cdev_id,\n-\t\t\t\tips->crypto.ses, sa->xforms,\n-\t\t\t\tskt_ctx->session_priv_pool);\n+\t\tips->crypto.ses = rte_cryptodev_sym_session_create(cdev_id,\n+\t\t\t\tsa->xforms, skt_ctx->session_pool);\n \n \t\trte_cryptodev_info_get(cdev_id, &cdev_info);\n \t}\ndiff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c\nindex bf4b862379..b555e63ff6 100644\n--- a/examples/l2fwd-crypto/main.c\n+++ b/examples/l2fwd-crypto/main.c\n@@ -228,7 +228,6 @@ struct rte_mempool *l2fwd_pktmbuf_pool;\n struct rte_mempool *l2fwd_crypto_op_pool;\n static struct {\n \tstruct rte_mempool *sess_mp;\n-\tstruct rte_mempool *priv_mp;\n } session_pool_socket[RTE_MAX_NUMA_NODES];\n \n /* Per-port statistics struct */\n@@ -675,7 +674,6 @@ static struct rte_cryptodev_sym_session *\n initialize_crypto_session(struct l2fwd_crypto_options *options, uint8_t cdev_id)\n {\n \tstruct rte_crypto_sym_xform *first_xform;\n-\tstruct rte_cryptodev_sym_session *session;\n \tint retval = rte_cryptodev_socket_id(cdev_id);\n \n \tif (retval < 0)\n@@ -697,17 +695,8 @@ initialize_crypto_session(struct l2fwd_crypto_options *options, uint8_t cdev_id)\n \t\tfirst_xform = &options->auth_xform;\n \t}\n \n-\tsession = rte_cryptodev_sym_session_create(\n+\treturn rte_cryptodev_sym_session_create(cdev_id, first_xform,\n \t\t\tsession_pool_socket[socket_id].sess_mp);\n-\tif (session == NULL)\n-\t\treturn NULL;\n-\n-\tif (rte_cryptodev_sym_session_init(cdev_id, session,\n-\t\t\t\tfirst_xform,\n-\t\t\t\tsession_pool_socket[socket_id].priv_mp) < 0)\n-\t\treturn NULL;\n-\n-\treturn session;\n }\n /* >8 End of creation of session. */\n \n@@ -2380,13 +2369,10 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,\n \n \t\trte_cryptodev_info_get(cdev_id, &dev_info);\n \n-\t\t/*\n-\t\t * Two sessions objects are required for each session\n-\t\t * (one for the header, one for the private data)\n-\t\t */\n \t\tif (!strcmp(dev_info.driver_name, \"crypto_scheduler\")) {\n #ifdef RTE_CRYPTO_SCHEDULER\n-\t\t\tuint32_t nb_workers =\n+\t\t\t/* scheduler session header + 1 session per worker */\n+\t\t\tuint32_t nb_workers = 1 +\n \t\t\t\trte_cryptodev_scheduler_workers_get(cdev_id,\n \t\t\t\t\t\t\t\tNULL);\n \n@@ -2395,41 +2381,15 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,\n \t\t} else\n \t\t\tsessions_needed = enabled_cdev_count;\n \n-\t\tif (session_pool_socket[socket_id].priv_mp == NULL) {\n-\t\t\tchar mp_name[RTE_MEMPOOL_NAMESIZE];\n-\n-\t\t\tsnprintf(mp_name, RTE_MEMPOOL_NAMESIZE,\n-\t\t\t\t\"priv_sess_mp_%u\", socket_id);\n-\n-\t\t\tsession_pool_socket[socket_id].priv_mp =\n-\t\t\t\t\trte_mempool_create(mp_name,\n-\t\t\t\t\t\tsessions_needed,\n-\t\t\t\t\t\tmax_sess_sz,\n-\t\t\t\t\t\t0, 0, NULL, NULL, NULL,\n-\t\t\t\t\t\tNULL, socket_id,\n-\t\t\t\t\t\t0);\n-\n-\t\t\tif (session_pool_socket[socket_id].priv_mp == NULL) {\n-\t\t\t\tprintf(\"Cannot create pool on socket %d\\n\",\n-\t\t\t\t\tsocket_id);\n-\t\t\t\treturn -ENOMEM;\n-\t\t\t}\n-\n-\t\t\tprintf(\"Allocated pool \\\"%s\\\" on socket %d\\n\",\n-\t\t\t\tmp_name, socket_id);\n-\t\t}\n-\n \t\tif (session_pool_socket[socket_id].sess_mp == NULL) {\n \t\t\tchar mp_name[RTE_MEMPOOL_NAMESIZE];\n \t\t\tsnprintf(mp_name, RTE_MEMPOOL_NAMESIZE,\n \t\t\t\t\"sess_mp_%u\", socket_id);\n \n \t\t\tsession_pool_socket[socket_id].sess_mp =\n-\t\t\t\t\trte_cryptodev_sym_session_pool_create(\n-\t\t\t\t\t\t\tmp_name,\n-\t\t\t\t\t\t\tsessions_needed,\n-\t\t\t\t\t\t\t0, 0, 0, socket_id);\n-\n+\t\t\t\trte_cryptodev_sym_session_pool_create(\n+\t\t\t\t\tmp_name, sessions_needed, max_sess_sz,\n+\t\t\t\t\t0, 0, socket_id);\n \t\t\tif (session_pool_socket[socket_id].sess_mp == NULL) {\n \t\t\t\tprintf(\"Cannot create pool on socket %d\\n\",\n \t\t\t\t\tsocket_id);\n@@ -2580,8 +2540,6 @@ initialize_cryptodevs(struct l2fwd_crypto_options *options, unsigned nb_ports,\n \n \t\tqp_conf.nb_descriptors = 2048;\n \t\tqp_conf.mp_session = session_pool_socket[socket_id].sess_mp;\n-\t\tqp_conf.mp_session_private =\n-\t\t\t\tsession_pool_socket[socket_id].priv_mp;\n \n \t\tretval = rte_cryptodev_queue_pair_setup(cdev_id, 0, &qp_conf,\n \t\t\t\tsocket_id);\ndiff --git a/examples/vhost_crypto/main.c b/examples/vhost_crypto/main.c\nindex 7d75623a5e..02987ebd76 100644\n--- a/examples/vhost_crypto/main.c\n+++ b/examples/vhost_crypto/main.c\n@@ -46,7 +46,6 @@ struct vhost_crypto_info {\n \tint vids[MAX_NB_SOCKETS];\n \tuint32_t nb_vids;\n \tstruct rte_mempool *sess_pool;\n-\tstruct rte_mempool *sess_priv_pool;\n \tstruct rte_mempool *cop_pool;\n \tuint8_t cid;\n \tuint32_t qid;\n@@ -304,7 +303,6 @@ new_device(int vid)\n \t}\n \n \tret = rte_vhost_crypto_create(vid, info->cid, info->sess_pool,\n-\t\t\tinfo->sess_priv_pool,\n \t\t\trte_lcore_to_socket_id(options.los[i].lcore_id));\n \tif (ret) {\n \t\tRTE_LOG(ERR, USER1, \"Cannot create vhost crypto\\n\");\n@@ -458,7 +456,6 @@ free_resource(void)\n \n \t\trte_mempool_free(info->cop_pool);\n \t\trte_mempool_free(info->sess_pool);\n-\t\trte_mempool_free(info->sess_priv_pool);\n \n \t\tfor (j = 0; j < lo->nb_sockets; j++) {\n \t\t\trte_vhost_driver_unregister(lo->socket_files[i]);\n@@ -544,16 +541,12 @@ main(int argc, char *argv[])\n \n \t\tsnprintf(name, 127, \"SESS_POOL_%u\", lo->lcore_id);\n \t\tinfo->sess_pool = rte_cryptodev_sym_session_pool_create(name,\n-\t\t\t\tSESSION_MAP_ENTRIES, 0, 0, 0,\n-\t\t\t\trte_lcore_to_socket_id(lo->lcore_id));\n-\n-\t\tsnprintf(name, 127, \"SESS_POOL_PRIV_%u\", lo->lcore_id);\n-\t\tinfo->sess_priv_pool = rte_mempool_create(name,\n \t\t\t\tSESSION_MAP_ENTRIES,\n \t\t\t\trte_cryptodev_sym_get_private_session_size(\n-\t\t\t\tinfo->cid), 64, 0, NULL, NULL, NULL, NULL,\n-\t\t\t\trte_lcore_to_socket_id(lo->lcore_id), 0);\n-\t\tif (!info->sess_priv_pool || !info->sess_pool) {\n+\t\t\t\tinfo->cid), 0, 0,\n+\t\t\t\trte_lcore_to_socket_id(lo->lcore_id));\n+\n+\t\tif (!info->sess_pool) {\n \t\t\tRTE_LOG(ERR, USER1, \"Failed to create mempool\");\n \t\t\tgoto error_exit;\n \t\t}\n@@ -574,7 +567,6 @@ main(int argc, char *argv[])\n \n \t\tqp_conf.nb_descriptors = NB_CRYPTO_DESCRIPTORS;\n \t\tqp_conf.mp_session = info->sess_pool;\n-\t\tqp_conf.mp_session_private = info->sess_priv_pool;\n \n \t\tfor (j = 0; j < dev_info.max_nb_queue_pairs; j++) {\n \t\t\tret = rte_cryptodev_queue_pair_setup(info->cid, j,\ndiff --git a/lib/cryptodev/cryptodev_pmd.h b/lib/cryptodev/cryptodev_pmd.h\nindex 09ba952455..8aa4fe4648 100644\n--- a/lib/cryptodev/cryptodev_pmd.h\n+++ b/lib/cryptodev/cryptodev_pmd.h\n@@ -302,7 +302,6 @@ typedef unsigned int (*cryptodev_asym_get_session_private_size_t)(\n  * @param\tdev\t\tCrypto device pointer\n  * @param\txform\t\tSingle or chain of crypto xforms\n  * @param\tsession\t\tPointer to cryptodev's private session structure\n- * @param\tmp\t\tMempool where the private session is allocated\n  *\n  * @return\n  *  - Returns 0 if private session structure have been created successfully.\n@@ -312,8 +311,8 @@ typedef unsigned int (*cryptodev_asym_get_session_private_size_t)(\n  */\n typedef int (*cryptodev_sym_configure_session_t)(struct rte_cryptodev *dev,\n \t\tstruct rte_crypto_sym_xform *xform,\n-\t\tstruct rte_cryptodev_sym_session *session,\n-\t\tstruct rte_mempool *mp);\n+\t\tstruct rte_cryptodev_sym_session *session);\n+\n /**\n  * Configure a Crypto asymmetric session on a device.\n  *\n@@ -338,6 +337,7 @@ typedef int (*cryptodev_asym_configure_session_t)(struct rte_cryptodev *dev,\n  */\n typedef void (*cryptodev_sym_free_session_t)(struct rte_cryptodev *dev,\n \t\tstruct rte_cryptodev_sym_session *sess);\n+\n /**\n  * Clear asymmetric session private data.\n  *\n@@ -638,28 +638,6 @@ __rte_internal\n void *\n rte_cryptodev_session_event_mdata_get(struct rte_crypto_op *op);\n \n-static inline void *\n-get_sym_session_private_data(const struct rte_cryptodev_sym_session *sess,\n-\t\tuint8_t driver_id) {\n-\tif (unlikely(sess->nb_drivers <= driver_id))\n-\t\treturn NULL;\n-\n-\treturn sess->sess_data[driver_id].data;\n-}\n-\n-static inline void\n-set_sym_session_private_data(struct rte_cryptodev_sym_session *sess,\n-\t\tuint8_t driver_id, void *private_data)\n-{\n-\tif (unlikely(sess->nb_drivers <= driver_id)) {\n-\t\tCDEV_LOG_ERR(\"Set private data for driver %u not allowed\",\n-\t\t\t\tdriver_id);\n-\t\treturn;\n-\t}\n-\n-\tsess->sess_data[driver_id].data = private_data;\n-}\n-\n /**\n  * @internal\n  * Cryptodev asymmetric crypto session.\ndiff --git a/lib/cryptodev/cryptodev_trace_points.c b/lib/cryptodev/cryptodev_trace_points.c\nindex 9f0ed904ea..727114aa45 100644\n--- a/lib/cryptodev/cryptodev_trace_points.c\n+++ b/lib/cryptodev/cryptodev_trace_points.c\n@@ -39,12 +39,6 @@ RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_free,\n RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_asym_session_free,\n \tlib.cryptodev.asym.free)\n \n-RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_init,\n-\tlib.cryptodev.sym.init)\n-\n-RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_sym_session_clear,\n-\tlib.cryptodev.sym.clear)\n-\n RTE_TRACE_POINT_REGISTER(rte_cryptodev_trace_enqueue_burst,\n \tlib.cryptodev.enq.burst)\n \ndiff --git a/lib/cryptodev/rte_cryptodev.c b/lib/cryptodev/rte_cryptodev.c\nindex 9e76a1c72d..6acd5f4d91 100644\n--- a/lib/cryptodev/rte_cryptodev.c\n+++ b/lib/cryptodev/rte_cryptodev.c\n@@ -203,12 +203,9 @@ const char *rte_crypto_asym_ke_strings[] = {\n \t[RTE_CRYPTO_ASYM_KE_PUB_KEY_VERIFY] = \"pub_ec_key_verify\"\n };\n \n-/**\n- * The private data structure stored in the sym session mempool private data.\n- */\n struct rte_cryptodev_sym_session_pool_private_data {\n-\tuint16_t nb_drivers;\n-\t/**< number of elements in sess_data array */\n+\tuint16_t sess_data_sz;\n+\t/**< driver session data size */\n \tuint16_t user_data_sz;\n \t/**< session user data will be placed after sess_data */\n };\n@@ -1332,6 +1329,24 @@ rte_cryptodev_get_qp_status(uint8_t dev_id, uint16_t queue_pair_id)\n \treturn ret;\n }\n \n+static uint8_t\n+rte_cryptodev_sym_is_valid_session_pool(struct rte_mempool *mp,\n+\tuint32_t sess_priv_size)\n+{\n+\tstruct rte_cryptodev_sym_session_pool_private_data *pool_priv;\n+\n+\tif (!mp)\n+\t\treturn 0;\n+\n+\tpool_priv = rte_mempool_get_priv(mp);\n+\n+\tif (!pool_priv || mp->private_data_size < sizeof(*pool_priv) ||\n+\t\t\tpool_priv->sess_data_sz < sess_priv_size)\n+\t\treturn 0;\n+\n+\treturn 1;\n+}\n+\n int\n rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,\n \t\tconst struct rte_cryptodev_qp_conf *qp_conf, int socket_id)\n@@ -1355,17 +1370,8 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,\n \t\treturn -EINVAL;\n \t}\n \n-\tif ((qp_conf->mp_session && !qp_conf->mp_session_private) ||\n-\t\t\t(!qp_conf->mp_session && qp_conf->mp_session_private)) {\n-\t\tCDEV_LOG_ERR(\"Invalid mempools\");\n-\t\treturn -EINVAL;\n-\t}\n-\n \tif (qp_conf->mp_session) {\n \t\tstruct rte_cryptodev_sym_session_pool_private_data *pool_priv;\n-\t\tuint32_t obj_size = qp_conf->mp_session->elt_size;\n-\t\tuint32_t obj_priv_size = qp_conf->mp_session_private->elt_size;\n-\t\tstruct rte_cryptodev_sym_session s = {0};\n \n \t\tpool_priv = rte_mempool_get_priv(qp_conf->mp_session);\n \t\tif (!pool_priv || qp_conf->mp_session->private_data_size <\n@@ -1374,13 +1380,8 @@ rte_cryptodev_queue_pair_setup(uint8_t dev_id, uint16_t queue_pair_id,\n \t\t\treturn -EINVAL;\n \t\t}\n \n-\t\ts.nb_drivers = pool_priv->nb_drivers;\n-\t\ts.user_data_sz = pool_priv->user_data_sz;\n-\n-\t\tif ((rte_cryptodev_sym_get_existing_header_session_size(&s) >\n-\t\t\tobj_size) || (s.nb_drivers <= dev->driver_id) ||\n-\t\t\trte_cryptodev_sym_get_private_session_size(dev_id) >\n-\t\t\t\tobj_priv_size) {\n+\t\tif (!rte_cryptodev_sym_is_valid_session_pool(qp_conf->mp_session,\n+\t\t\t\t\trte_cryptodev_sym_get_private_session_size(dev_id))) {\n \t\t\tCDEV_LOG_ERR(\"Invalid mempool\");\n \t\t\treturn -EINVAL;\n \t\t}\n@@ -1862,54 +1863,6 @@ rte_cryptodev_pmd_callback_process(struct rte_cryptodev *dev,\n \trte_spinlock_unlock(&rte_cryptodev_cb_lock);\n }\n \n-int\n-rte_cryptodev_sym_session_init(uint8_t dev_id,\n-\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\tstruct rte_crypto_sym_xform *xforms,\n-\t\tstruct rte_mempool *mp)\n-{\n-\tstruct rte_cryptodev *dev;\n-\tuint32_t sess_priv_sz = rte_cryptodev_sym_get_private_session_size(\n-\t\t\tdev_id);\n-\tuint8_t index;\n-\tint ret;\n-\n-\tif (!rte_cryptodev_is_valid_dev(dev_id)) {\n-\t\tCDEV_LOG_ERR(\"Invalid dev_id=%\" PRIu8, dev_id);\n-\t\treturn -EINVAL;\n-\t}\n-\n-\tdev = rte_cryptodev_pmd_get_dev(dev_id);\n-\n-\tif (sess == NULL || xforms == NULL || dev == NULL || mp == NULL)\n-\t\treturn -EINVAL;\n-\n-\tif (mp->elt_size < sess_priv_sz)\n-\t\treturn -EINVAL;\n-\n-\tindex = dev->driver_id;\n-\tif (index >= sess->nb_drivers)\n-\t\treturn -EINVAL;\n-\n-\tif (*dev->dev_ops->sym_session_configure == NULL)\n-\t\treturn -ENOTSUP;\n-\n-\tif (sess->sess_data[index].refcnt == 0) {\n-\t\tret = dev->dev_ops->sym_session_configure(dev, xforms,\n-\t\t\t\t\t\t\tsess, mp);\n-\t\tif (ret < 0) {\n-\t\t\tCDEV_LOG_ERR(\n-\t\t\t\t\"dev_id %d failed to configure session details\",\n-\t\t\t\tdev_id);\n-\t\t\treturn ret;\n-\t\t}\n-\t}\n-\n-\trte_cryptodev_trace_sym_session_init(dev_id, sess, xforms, mp);\n-\tsess->sess_data[index].refcnt++;\n-\treturn 0;\n-}\n-\n struct rte_mempool *\n rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,\n \tuint32_t elt_size, uint32_t cache_size, uint16_t user_data_size,\n@@ -1919,16 +1872,12 @@ rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,\n \tstruct rte_cryptodev_sym_session_pool_private_data *pool_priv;\n \tuint32_t obj_sz;\n \n-\tobj_sz = rte_cryptodev_sym_get_header_session_size() + user_data_size;\n-\tif (obj_sz > elt_size)\n-\t\tCDEV_LOG_INFO(\"elt_size %u is expanded to %u\", elt_size,\n-\t\t\t\tobj_sz);\n-\telse\n-\t\tobj_sz = elt_size;\n+\tobj_sz = sizeof(struct rte_cryptodev_sym_session) + elt_size + user_data_size;\n \n+\tobj_sz = RTE_ALIGN_CEIL(obj_sz, RTE_CACHE_LINE_SIZE);\n \tmp = rte_mempool_create(name, nb_elts, obj_sz, cache_size,\n-\t\t\t(uint32_t)(sizeof(*pool_priv)),\n-\t\t\tNULL, NULL, NULL, NULL,\n+\t\t\t(uint32_t)(sizeof(*pool_priv)), NULL, NULL,\n+\t\t\tNULL, NULL,\n \t\t\tsocket_id, 0);\n \tif (mp == NULL) {\n \t\tCDEV_LOG_ERR(\"%s(name=%s) failed, rte_errno=%d\",\n@@ -1944,7 +1893,7 @@ rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,\n \t\treturn NULL;\n \t}\n \n-\tpool_priv->nb_drivers = nb_drivers;\n+\tpool_priv->sess_data_sz = elt_size;\n \tpool_priv->user_data_sz = user_data_size;\n \n \trte_cryptodev_trace_sym_session_pool_create(name, nb_elts,\n@@ -2002,64 +1951,71 @@ rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elts,\n \treturn mp;\n }\n \n-static unsigned int\n-rte_cryptodev_sym_session_data_size(struct rte_cryptodev_sym_session *sess)\n-{\n-\treturn (sizeof(sess->sess_data[0]) * sess->nb_drivers) +\n-\t\t\tsess->user_data_sz;\n-}\n-\n-static uint8_t\n-rte_cryptodev_sym_is_valid_session_pool(struct rte_mempool *mp)\n-{\n-\tstruct rte_cryptodev_sym_session_pool_private_data *pool_priv;\n-\n-\tif (!mp)\n-\t\treturn 0;\n-\n-\tpool_priv = rte_mempool_get_priv(mp);\n-\n-\tif (!pool_priv || mp->private_data_size < sizeof(*pool_priv) ||\n-\t\t\tpool_priv->nb_drivers != nb_drivers ||\n-\t\t\tmp->elt_size <\n-\t\t\t\trte_cryptodev_sym_get_header_session_size()\n-\t\t\t\t+ pool_priv->user_data_sz)\n-\t\treturn 0;\n-\n-\treturn 1;\n-}\n-\n-struct rte_cryptodev_sym_session *\n-rte_cryptodev_sym_session_create(struct rte_mempool *mp)\n+void *\n+rte_cryptodev_sym_session_create(uint8_t dev_id,\n+\t\tstruct rte_crypto_sym_xform *xforms,\n+\t\tstruct rte_mempool *mp)\n {\n+\tstruct rte_cryptodev *dev;\n \tstruct rte_cryptodev_sym_session *sess;\n \tstruct rte_cryptodev_sym_session_pool_private_data *pool_priv;\n+\tuint32_t sess_priv_sz;\n+\tint ret;\n \n-\tif (!rte_cryptodev_sym_is_valid_session_pool(mp)) {\n+\tif (!rte_cryptodev_is_valid_dev(dev_id)) {\n+\t\tCDEV_LOG_ERR(\"Invalid dev_id=%\" PRIu8, dev_id);\n+\t\trte_errno = EINVAL;\n+\t\treturn NULL;\n+\t}\n+\n+\tif (xforms == NULL) {\n+\t\tCDEV_LOG_ERR(\"Invalid xform\\n\");\n+\t\trte_errno = EINVAL;\n+\t\treturn NULL;\n+\t}\n+\n+\tsess_priv_sz = rte_cryptodev_sym_get_private_session_size(dev_id);\n+\tif (!rte_cryptodev_sym_is_valid_session_pool(mp, sess_priv_sz)) {\n \t\tCDEV_LOG_ERR(\"Invalid mempool\");\n+\t\trte_errno = EINVAL;\n \t\treturn NULL;\n \t}\n \n-\tpool_priv = rte_mempool_get_priv(mp);\n+\tdev = rte_cryptodev_pmd_get_dev(dev_id);\n \n \t/* Allocate a session structure from the session pool */\n \tif (rte_mempool_get(mp, (void **)&sess)) {\n \t\tCDEV_LOG_ERR(\"couldn't get object from session mempool\");\n+\t\trte_errno = ENOMEM;\n \t\treturn NULL;\n \t}\n \n-\tsess->nb_drivers = pool_priv->nb_drivers;\n+\tpool_priv = rte_mempool_get_priv(mp);\n+\tsess->driver_id = dev->driver_id;\n+\tsess->sess_data_sz = pool_priv->sess_data_sz;\n \tsess->user_data_sz = pool_priv->user_data_sz;\n-\tsess->opaque_data = 0;\n+\tsess->driver_priv_data_iova = rte_mempool_virt2iova(sess) +\n+\t\toffsetof(struct rte_cryptodev_sym_session, driver_priv_data);\n \n-\t/* Clear device session pointer.\n-\t * Include the flag indicating presence of user data\n-\t */\n-\tmemset(sess->sess_data, 0,\n-\t\t\trte_cryptodev_sym_session_data_size(sess));\n+\tif (dev->dev_ops->sym_session_configure == NULL) {\n+\t\trte_errno = ENOTSUP;\n+\t\tgoto error_exit;\n+\t}\n+\tmemset(sess->driver_priv_data, 0, pool_priv->sess_data_sz + pool_priv->user_data_sz);\n \n-\trte_cryptodev_trace_sym_session_create(mp, sess);\n-\treturn sess;\n+\tret = dev->dev_ops->sym_session_configure(dev, xforms, sess);\n+\tif (ret < 0) {\n+\t\trte_errno = -ret;\n+\t\tgoto error_exit;\n+\t}\n+\tsess->driver_id = dev->driver_id;\n+\n+\trte_cryptodev_trace_sym_session_create(dev_id, sess, xforms, mp);\n+\n+\treturn (void *)sess;\n+error_exit:\n+\trte_mempool_put(mp, (void *)sess);\n+\treturn NULL;\n }\n \n int\n@@ -2139,11 +2095,15 @@ rte_cryptodev_asym_session_create(uint8_t dev_id,\n }\n \n int\n-rte_cryptodev_sym_session_clear(uint8_t dev_id,\n-\t\tstruct rte_cryptodev_sym_session *sess)\n+rte_cryptodev_sym_session_free(uint8_t dev_id,\n+\tstruct rte_cryptodev_sym_session *sess)\n {\n \tstruct rte_cryptodev *dev;\n-\tuint8_t driver_id;\n+\tstruct rte_mempool *sess_mp;\n+\tstruct rte_cryptodev_sym_session_pool_private_data *pool_priv;\n+\n+\tif (sess == NULL)\n+\t\treturn -EINVAL;\n \n \tif (!rte_cryptodev_is_valid_dev(dev_id)) {\n \t\tCDEV_LOG_ERR(\"Invalid dev_id=%\" PRIu8, dev_id);\n@@ -2155,41 +2115,28 @@ rte_cryptodev_sym_session_clear(uint8_t dev_id,\n \tif (dev == NULL || sess == NULL)\n \t\treturn -EINVAL;\n \n-\tdriver_id = dev->driver_id;\n-\tif (sess->sess_data[driver_id].refcnt == 0)\n-\t\treturn 0;\n-\tif (--sess->sess_data[driver_id].refcnt != 0)\n-\t\treturn -EBUSY;\n+\tsess_mp = rte_mempool_from_obj(sess);\n+\tif (!sess_mp)\n+\t\treturn -EINVAL;\n+\tpool_priv = rte_mempool_get_priv(sess_mp);\n+\n+\tif (sess->driver_id != dev->driver_id) {\n+\t\tCDEV_LOG_ERR(\"Session created by driver %u but freed by %u\",\n+\t\t\tsess->driver_id, dev->driver_id);\n+\t\treturn -EINVAL;\n+\t}\n \n \tif (*dev->dev_ops->sym_session_clear == NULL)\n \t\treturn -ENOTSUP;\n \n \tdev->dev_ops->sym_session_clear(dev, sess);\n \n-\trte_cryptodev_trace_sym_session_clear(dev_id, sess);\n-\treturn 0;\n-}\n-\n-int\n-rte_cryptodev_sym_session_free(struct rte_cryptodev_sym_session *sess)\n-{\n-\tuint8_t i;\n-\tstruct rte_mempool *sess_mp;\n-\n-\tif (sess == NULL)\n-\t\treturn -EINVAL;\n-\n-\t/* Check that all device private data has been freed */\n-\tfor (i = 0; i < sess->nb_drivers; i++) {\n-\t\tif (sess->sess_data[i].refcnt != 0)\n-\t\t\treturn -EBUSY;\n-\t}\n+\tmemset(sess->driver_priv_data, 0, pool_priv->sess_data_sz + pool_priv->user_data_sz);\n \n \t/* Return session to mempool */\n-\tsess_mp = rte_mempool_from_obj(sess);\n \trte_mempool_put(sess_mp, sess);\n \n-\trte_cryptodev_trace_sym_session_free(sess);\n+\trte_cryptodev_trace_sym_session_free(dev_id, sess);\n \treturn 0;\n }\n \n@@ -2224,33 +2171,6 @@ rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess)\n \treturn 0;\n }\n \n-unsigned int\n-rte_cryptodev_sym_get_header_session_size(void)\n-{\n-\t/*\n-\t * Header contains pointers to the private data of all registered\n-\t * drivers and all necessary information to ensure safely clear\n-\t * or free al session.\n-\t */\n-\tstruct rte_cryptodev_sym_session s = {0};\n-\n-\ts.nb_drivers = nb_drivers;\n-\n-\treturn (unsigned int)(sizeof(s) +\n-\t\t\trte_cryptodev_sym_session_data_size(&s));\n-}\n-\n-unsigned int\n-rte_cryptodev_sym_get_existing_header_session_size(\n-\t\tstruct rte_cryptodev_sym_session *sess)\n-{\n-\tif (!sess)\n-\t\treturn 0;\n-\telse\n-\t\treturn (unsigned int)(sizeof(*sess) +\n-\t\t\t\trte_cryptodev_sym_session_data_size(sess));\n-}\n-\n unsigned int\n rte_cryptodev_asym_get_header_session_size(void)\n {\n@@ -2303,9 +2223,8 @@ rte_cryptodev_asym_get_private_session_size(uint8_t dev_id)\n \n int\n rte_cryptodev_sym_session_set_user_data(\n-\t\t\t\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\t\t\t\tvoid *data,\n-\t\t\t\t\tuint16_t size)\n+\t\tstruct rte_cryptodev_sym_session *sess, void *data,\n+\t\tuint16_t size)\n {\n \tif (sess == NULL)\n \t\treturn -EINVAL;\n@@ -2313,7 +2232,7 @@ rte_cryptodev_sym_session_set_user_data(\n \tif (sess->user_data_sz < size)\n \t\treturn -ENOMEM;\n \n-\trte_memcpy(sess->sess_data + sess->nb_drivers, data, size);\n+\trte_memcpy(sess->driver_priv_data + sess->sess_data_sz, data, size);\n \n \trte_cryptodev_trace_sym_session_set_user_data(sess, data, size);\n \n@@ -2321,15 +2240,14 @@ rte_cryptodev_sym_session_set_user_data(\n }\n \n void *\n-rte_cryptodev_sym_session_get_user_data(\n-\t\t\t\t\tstruct rte_cryptodev_sym_session *sess)\n+rte_cryptodev_sym_session_get_user_data(struct rte_cryptodev_sym_session *sess)\n {\n \tvoid *data = NULL;\n \n \tif (sess == NULL || sess->user_data_sz == 0)\n \t\treturn NULL;\n \n-\tdata = (void *)(sess->sess_data + sess->nb_drivers);\n+\tdata = (void *)(sess->driver_priv_data + sess->sess_data_sz);\n \n \trte_cryptodev_trace_sym_session_get_user_data(sess, data);\n \ndiff --git a/lib/cryptodev/rte_cryptodev.h b/lib/cryptodev/rte_cryptodev.h\nindex 56f459c6a0..0c65958f25 100644\n--- a/lib/cryptodev/rte_cryptodev.h\n+++ b/lib/cryptodev/rte_cryptodev.h\n@@ -544,8 +544,6 @@ struct rte_cryptodev_qp_conf {\n \tuint32_t nb_descriptors; /**< Number of descriptors per queue pair */\n \tstruct rte_mempool *mp_session;\n \t/**< The mempool for creating session in sessionless mode */\n-\tstruct rte_mempool *mp_session_private;\n-\t/**< The mempool for creating sess private data in sessionless mode */\n };\n \n /**\n@@ -909,17 +907,21 @@ rte_cryptodev_get_sec_ctx(uint8_t dev_id);\n  * has a fixed algo, key, op-type, digest_len etc.\n  */\n struct rte_cryptodev_sym_session {\n+\tRTE_MARKER cacheline0;\n+\tuint8_t driver_id;\n \tuint64_t opaque_data;\n \t/**< Can be used for external metadata */\n-\tuint16_t nb_drivers;\n-\t/**< number of elements in sess_data array */\n+\tuint32_t sess_data_sz;\n+\t/**< Pointer to the user data stored after sess data */\n \tuint16_t user_data_sz;\n-\t/**< session user data will be placed after sess_data */\n-\t__extension__ struct {\n-\t\tvoid *data;\n-\t\tuint16_t refcnt;\n-\t} sess_data[];\n-\t/**< Driver specific session material, variable size */\n+\t/**< session user data will be placed after sess data */\n+\trte_iova_t driver_priv_data_iova;\n+\t/**< session driver data IOVA address */\n+\n+\tRTE_MARKER cacheline1 __rte_cache_min_aligned;\n+\t/**< second cache line - start of the driver session data */\n+\tuint8_t driver_priv_data[0];\n+\t/**< Driver specific session data, variable size */\n };\n \n /**\n@@ -954,6 +956,7 @@ rte_cryptodev_sym_session_pool_create(const char *name, uint32_t nb_elts,\n \tuint32_t elt_size, uint32_t cache_size, uint16_t priv_size,\n \tint socket_id);\n \n+\n /**\n  * Create an asymmetric session mempool.\n  *\n@@ -980,17 +983,22 @@ rte_cryptodev_asym_session_pool_create(const char *name, uint32_t nb_elts,\n \tuint32_t cache_size, uint16_t user_data_size, int socket_id);\n \n /**\n- * Create symmetric crypto session header (generic with no private data)\n+ * Create symmetric crypto session and fill out private data for the device id,\n+ * based on its device type.\n+ *\n+ * @param   dev_id   ID of device that we want the session to be used on\n+ * @param   xforms   Symmetric crypto transform operations to apply on flow\n+ *                   processed with this session\n+ * @param   mempool  Mempool where the private data is allocated.\n  *\n- * @param   mempool    Symmetric session mempool to allocate session\n- *                     objects from\n  * @return\n- *  - On success return pointer to sym-session\n- *  - On failure returns NULL\n+ *  - On success return pointer to sym-session.\n+ *  - On failure returns NULL.\n  */\n-struct rte_cryptodev_sym_session *\n-rte_cryptodev_sym_session_create(struct rte_mempool *mempool);\n-\n+void *\n+rte_cryptodev_sym_session_create(uint8_t dev_id,\n+\t\tstruct rte_crypto_sym_xform *xforms,\n+\t\tstruct rte_mempool *mp);\n /**\n  * Create and initialise an asymmetric crypto session structure.\n  * Calls the PMD to configure the private session data.\n@@ -1015,19 +1023,20 @@ rte_cryptodev_asym_session_create(uint8_t dev_id,\n \t\tvoid **session);\n \n /**\n- * Frees symmetric crypto session header, after checking that all\n- * the device private data has been freed, returning it\n- * to its original mempool.\n+ * Frees session for the device id and returning it to its mempool.\n+ * It is the application's responsibility to ensure that the session\n+ * is not still in-flight operations using it.\n  *\n+ * @param   dev_id   ID of device that uses the session.\n  * @param   sess     Session header to be freed.\n  *\n  * @return\n  *  - 0 if successful.\n- *  - -EINVAL if session is NULL.\n- *  - -EBUSY if not all device private data has been freed.\n+ *  - -EINVAL if session is NULL or the mismatched device ids.\n  */\n int\n-rte_cryptodev_sym_session_free(struct rte_cryptodev_sym_session *sess);\n+rte_cryptodev_sym_session_free(uint8_t dev_id,\n+\tstruct rte_cryptodev_sym_session *sess);\n \n /**\n  * Clears and frees asymmetric crypto session header and private data,\n@@ -1044,72 +1053,6 @@ __rte_experimental\n int\n rte_cryptodev_asym_session_free(uint8_t dev_id, void *sess);\n \n-/**\n- * Fill out private data for the device id, based on its device type.\n- *\n- * @param   dev_id   ID of device that we want the session to be used on\n- * @param   sess     Session where the private data will be attached to\n- * @param   xforms   Symmetric crypto transform operations to apply on flow\n- *                   processed with this session\n- * @param   mempool  Mempool where the private data is allocated.\n- *\n- * @return\n- *  - On success, zero.\n- *  - -EINVAL if input parameters are invalid.\n- *  - -ENOTSUP if crypto device does not support the crypto transform or\n- *    does not support symmetric operations.\n- *  - -ENOMEM if the private session could not be allocated.\n- */\n-int\n-rte_cryptodev_sym_session_init(uint8_t dev_id,\n-\t\t\tstruct rte_cryptodev_sym_session *sess,\n-\t\t\tstruct rte_crypto_sym_xform *xforms,\n-\t\t\tstruct rte_mempool *mempool);\n-\n-/**\n- * Frees private data for the device id, based on its device type,\n- * returning it to its mempool. It is the application's responsibility\n- * to ensure that private session data is not cleared while there are\n- * still in-flight operations using it.\n- *\n- * @param   dev_id   ID of device that uses the session.\n- * @param   sess     Session containing the reference to the private data\n- *\n- * @return\n- *  - 0 if successful.\n- *  - -EINVAL if device is invalid or session is NULL.\n- *  - -ENOTSUP if crypto device does not support symmetric operations.\n- */\n-int\n-rte_cryptodev_sym_session_clear(uint8_t dev_id,\n-\t\t\tstruct rte_cryptodev_sym_session *sess);\n-\n-/**\n- * Get the size of the header session, for all registered drivers excluding\n- * the user data size.\n- *\n- * @return\n- *   Size of the symmetric header session.\n- */\n-unsigned int\n-rte_cryptodev_sym_get_header_session_size(void);\n-\n-/**\n- * Get the size of the header session from created session.\n- *\n- * @param sess\n- *   The sym cryptodev session pointer\n- *\n- * @return\n- *   - If sess is not NULL, return the size of the header session including\n- *   the private data size defined within sess.\n- *   - If sess is NULL, return 0.\n- */\n-__rte_experimental\n-unsigned int\n-rte_cryptodev_sym_get_existing_header_session_size(\n-\t\tstruct rte_cryptodev_sym_session *sess);\n-\n /**\n  * Get the size of the asymmetric session header.\n  *\ndiff --git a/lib/cryptodev/rte_cryptodev_trace.h b/lib/cryptodev/rte_cryptodev_trace.h\nindex 3d9b00145e..6ade0b72c4 100644\n--- a/lib/cryptodev/rte_cryptodev_trace.h\n+++ b/lib/cryptodev/rte_cryptodev_trace.h\n@@ -56,7 +56,6 @@ RTE_TRACE_POINT(\n \trte_trace_point_emit_u16(queue_pair_id);\n \trte_trace_point_emit_u32(conf->nb_descriptors);\n \trte_trace_point_emit_ptr(conf->mp_session);\n-\trte_trace_point_emit_ptr(conf->mp_session_private);\n )\n \n RTE_TRACE_POINT(\n@@ -74,13 +73,16 @@ RTE_TRACE_POINT(\n \n RTE_TRACE_POINT(\n \trte_cryptodev_trace_sym_session_create,\n-\tRTE_TRACE_POINT_ARGS(void *mempool,\n-\t\tstruct rte_cryptodev_sym_session *sess),\n-\trte_trace_point_emit_ptr(mempool);\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id,\n+\t\tstruct rte_cryptodev_sym_session *sess, void *xforms,\n+\t\tvoid *mempool),\n+\trte_trace_point_emit_u8(dev_id);\n \trte_trace_point_emit_ptr(sess);\n \trte_trace_point_emit_u64(sess->opaque_data);\n-\trte_trace_point_emit_u16(sess->nb_drivers);\n+\trte_trace_point_emit_u8(sess->driver_id);\n \trte_trace_point_emit_u16(sess->user_data_sz);\n+\trte_trace_point_emit_ptr(xforms);\n+\trte_trace_point_emit_ptr(mempool);\n )\n \n RTE_TRACE_POINT(\n@@ -106,7 +108,8 @@ RTE_TRACE_POINT(\n \n RTE_TRACE_POINT(\n \trte_cryptodev_trace_sym_session_free,\n-\tRTE_TRACE_POINT_ARGS(struct rte_cryptodev_sym_session *sess),\n+\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, struct rte_cryptodev_sym_session *sess),\n+\trte_trace_point_emit_u8(dev_id);\n \trte_trace_point_emit_ptr(sess);\n )\n \n@@ -117,27 +120,6 @@ RTE_TRACE_POINT(\n \trte_trace_point_emit_ptr(sess);\n )\n \n-RTE_TRACE_POINT(\n-\trte_cryptodev_trace_sym_session_init,\n-\tRTE_TRACE_POINT_ARGS(uint8_t dev_id,\n-\t\tstruct rte_cryptodev_sym_session *sess, void *xforms,\n-\t\tvoid *mempool),\n-\trte_trace_point_emit_u8(dev_id);\n-\trte_trace_point_emit_ptr(sess);\n-\trte_trace_point_emit_u64(sess->opaque_data);\n-\trte_trace_point_emit_u16(sess->nb_drivers);\n-\trte_trace_point_emit_u16(sess->user_data_sz);\n-\trte_trace_point_emit_ptr(xforms);\n-\trte_trace_point_emit_ptr(mempool);\n-)\n-\n-RTE_TRACE_POINT(\n-\trte_cryptodev_trace_sym_session_clear,\n-\tRTE_TRACE_POINT_ARGS(uint8_t dev_id, void *sess),\n-\trte_trace_point_emit_u8(dev_id);\n-\trte_trace_point_emit_ptr(sess);\n-)\n-\n RTE_TRACE_POINT(\n \trte_cryptodev_trace_callback_register,\n \tRTE_TRACE_POINT_ARGS(uint8_t dev_id,\ndiff --git a/lib/cryptodev/version.map b/lib/cryptodev/version.map\nindex 6d9b3e01a6..d9ccb10197 100644\n--- a/lib/cryptodev/version.map\n+++ b/lib/cryptodev/version.map\n@@ -38,12 +38,9 @@ DPDK_23 {\n \trte_cryptodev_sym_capability_check_auth;\n \trte_cryptodev_sym_capability_check_cipher;\n \trte_cryptodev_sym_capability_get;\n-\trte_cryptodev_sym_get_header_session_size;\n \trte_cryptodev_sym_get_private_session_size;\n-\trte_cryptodev_sym_session_clear;\n \trte_cryptodev_sym_session_create;\n \trte_cryptodev_sym_session_free;\n-\trte_cryptodev_sym_session_init;\n \n \tlocal: *;\n };\n@@ -60,7 +57,6 @@ EXPERIMENTAL {\n \trte_cryptodev_asym_xform_capability_check_modlen;\n \trte_cryptodev_asym_xform_capability_check_optype;\n \trte_cryptodev_sym_cpu_crypto_process;\n-\trte_cryptodev_sym_get_existing_header_session_size;\n \trte_cryptodev_sym_session_get_user_data;\n \trte_cryptodev_sym_session_pool_create;\n \trte_cryptodev_sym_session_set_user_data;\n@@ -78,8 +74,6 @@ EXPERIMENTAL {\n \t__rte_cryptodev_trace_asym_session_create;\n \t__rte_cryptodev_trace_sym_session_free;\n \t__rte_cryptodev_trace_asym_session_free;\n-\t__rte_cryptodev_trace_sym_session_init;\n-\t__rte_cryptodev_trace_sym_session_clear;\n \t__rte_cryptodev_trace_dequeue_burst;\n \t__rte_cryptodev_trace_enqueue_burst;\n \ndiff --git a/lib/pipeline/rte_table_action.c b/lib/pipeline/rte_table_action.c\nindex b1310be565..cb792bbe0d 100644\n--- a/lib/pipeline/rte_table_action.c\n+++ b/lib/pipeline/rte_table_action.c\n@@ -1898,17 +1898,11 @@ sym_crypto_apply(struct sym_crypto_data *data,\n \t\t}\n \t}\n \n-\tsession = rte_cryptodev_sym_session_create(cfg->mp_create);\n+\tsession = rte_cryptodev_sym_session_create(cfg->cryptodev_id,\n+\t\t\tp->xform, cfg->mp_create);\n \tif (!session)\n \t\treturn -ENOMEM;\n \n-\tret = rte_cryptodev_sym_session_init(cfg->cryptodev_id, session,\n-\t\t\tp->xform, cfg->mp_init);\n-\tif (ret < 0) {\n-\t\trte_cryptodev_sym_session_free(session);\n-\t\treturn ret;\n-\t}\n-\n \tdata->data_offset = (uint16_t)p->data_offset;\n \tdata->session = session;\n \ndiff --git a/lib/vhost/rte_vhost_crypto.h b/lib/vhost/rte_vhost_crypto.h\nindex b49e389579..2b01ecda08 100644\n--- a/lib/vhost/rte_vhost_crypto.h\n+++ b/lib/vhost/rte_vhost_crypto.h\n@@ -54,8 +54,6 @@ rte_vhost_crypto_driver_start(const char *path);\n  *  multiple Vhost-crypto devices.\n  * @param sess_pool\n  *  The pointer to the created cryptodev session pool.\n- * @param sess_priv_pool\n- *  The pointer to the created cryptodev session private data mempool.\n  * @param socket_id\n  *  NUMA Socket ID to allocate resources on. *\n  * @return\n@@ -65,7 +63,6 @@ rte_vhost_crypto_driver_start(const char *path);\n int\n rte_vhost_crypto_create(int vid, uint8_t cryptodev_id,\n \t\tstruct rte_mempool *sess_pool,\n-\t\tstruct rte_mempool *sess_priv_pool,\n \t\tint socket_id);\n \n /**\ndiff --git a/lib/vhost/vhost_crypto.c b/lib/vhost/vhost_crypto.c\nindex 54946f46d9..7321da21b7 100644\n--- a/lib/vhost/vhost_crypto.c\n+++ b/lib/vhost/vhost_crypto.c\n@@ -197,7 +197,6 @@ struct vhost_crypto {\n \tstruct rte_hash *session_map;\n \tstruct rte_mempool *mbuf_pool;\n \tstruct rte_mempool *sess_pool;\n-\tstruct rte_mempool *sess_priv_pool;\n \tstruct rte_mempool *wb_pool;\n \n \t/** DPDK cryptodev ID */\n@@ -376,31 +375,21 @@ vhost_crypto_create_sess(struct vhost_crypto *vcrypto,\n \t\treturn;\n \t}\n \n-\tsession = rte_cryptodev_sym_session_create(vcrypto->sess_pool);\n+\tsession = rte_cryptodev_sym_session_create(vcrypto->cid, &xform1,\n+\t\t\tvcrypto->sess_pool);\n \tif (!session) {\n \t\tVC_LOG_ERR(\"Failed to create session\");\n \t\tsess_param->session_id = -VIRTIO_CRYPTO_ERR;\n \t\treturn;\n \t}\n \n-\tif (rte_cryptodev_sym_session_init(vcrypto->cid, session, &xform1,\n-\t\t\tvcrypto->sess_priv_pool) < 0) {\n-\t\tVC_LOG_ERR(\"Failed to initialize session\");\n-\t\tsess_param->session_id = -VIRTIO_CRYPTO_ERR;\n-\t\treturn;\n-\t}\n-\n \t/* insert hash to map */\n \tif (rte_hash_add_key_data(vcrypto->session_map,\n \t\t\t&vcrypto->last_session_id, session) < 0) {\n \t\tVC_LOG_ERR(\"Failed to insert session to hash table\");\n \n-\t\tif (rte_cryptodev_sym_session_clear(vcrypto->cid, session) < 0)\n-\t\t\tVC_LOG_ERR(\"Failed to clear session\");\n-\t\telse {\n-\t\t\tif (rte_cryptodev_sym_session_free(session) < 0)\n-\t\t\t\tVC_LOG_ERR(\"Failed to free session\");\n-\t\t}\n+\t\tif (rte_cryptodev_sym_session_free(vcrypto->cid, session) < 0)\n+\t\t\tVC_LOG_ERR(\"Failed to free session\");\n \t\tsess_param->session_id = -VIRTIO_CRYPTO_ERR;\n \t\treturn;\n \t}\n@@ -427,12 +416,7 @@ vhost_crypto_close_sess(struct vhost_crypto *vcrypto, uint64_t session_id)\n \t\treturn -VIRTIO_CRYPTO_INVSESS;\n \t}\n \n-\tif (rte_cryptodev_sym_session_clear(vcrypto->cid, session) < 0) {\n-\t\tVC_LOG_DBG(\"Failed to clear session\");\n-\t\treturn -VIRTIO_CRYPTO_ERR;\n-\t}\n-\n-\tif (rte_cryptodev_sym_session_free(session) < 0) {\n+\tif (rte_cryptodev_sym_session_free(vcrypto->cid, session) < 0) {\n \t\tVC_LOG_DBG(\"Failed to free session\");\n \t\treturn -VIRTIO_CRYPTO_ERR;\n \t}\n@@ -1393,7 +1377,6 @@ rte_vhost_crypto_driver_start(const char *path)\n int\n rte_vhost_crypto_create(int vid, uint8_t cryptodev_id,\n \t\tstruct rte_mempool *sess_pool,\n-\t\tstruct rte_mempool *sess_priv_pool,\n \t\tint socket_id)\n {\n \tstruct virtio_net *dev = get_device(vid);\n@@ -1415,7 +1398,6 @@ rte_vhost_crypto_create(int vid, uint8_t cryptodev_id,\n \t}\n \n \tvcrypto->sess_pool = sess_pool;\n-\tvcrypto->sess_priv_pool = sess_priv_pool;\n \tvcrypto->cid = cryptodev_id;\n \tvcrypto->cache_session_id = UINT64_MAX;\n \tvcrypto->last_session_id = 1;\n",
    "prefixes": [
        "v7",
        "1/6"
    ]
}