get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 110067,
    "url": "http://patches.dpdk.org/api/patches/110067/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20220422035100.3180870-9-g.singh@nxp.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": "<20220422035100.3180870-9-g.singh@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220422035100.3180870-9-g.singh@nxp.com",
    "date": "2022-04-22T03:50:55",
    "name": "[09/14] crypto/dpaa2_sec: per queue pair fle pool",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "c08ee2f40293b4a985a45cb880440903ac531653",
    "submitter": {
        "id": 1068,
        "url": "http://patches.dpdk.org/api/people/1068/?format=api",
        "name": "Gagandeep Singh",
        "email": "g.singh@nxp.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/20220422035100.3180870-9-g.singh@nxp.com/mbox/",
    "series": [
        {
            "id": 22607,
            "url": "http://patches.dpdk.org/api/series/22607/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=22607",
            "date": "2022-04-22T03:50:47",
            "name": "[01/14] crypto/dpaa2_sec: fix fle buffer leak",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/22607/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/110067/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/110067/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 2AA29A0093;\n\tFri, 22 Apr 2022 05:52:34 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 4457742817;\n\tFri, 22 Apr 2022 05:51:53 +0200 (CEST)",
            "from EUR02-VE1-obe.outbound.protection.outlook.com\n (mail-eopbgr20086.outbound.protection.outlook.com [40.107.2.86])\n by mails.dpdk.org (Postfix) with ESMTP id 9808742823\n for <dev@dpdk.org>; Fri, 22 Apr 2022 05:51:51 +0200 (CEST)",
            "from AS8PR04MB8198.eurprd04.prod.outlook.com (2603:10a6:20b:3b0::14)\n by DB7PR04MB4393.eurprd04.prod.outlook.com (2603:10a6:5:32::21) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5186.15; Fri, 22 Apr\n 2022 03:51:49 +0000",
            "from AS8PR04MB8198.eurprd04.prod.outlook.com\n ([fe80::8cf1:93b:c340:3be2]) by AS8PR04MB8198.eurprd04.prod.outlook.com\n ([fe80::8cf1:93b:c340:3be2%7]) with mapi id 15.20.5186.015; Fri, 22 Apr 2022\n 03:51:49 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Ka6jQcpa4jUUnAFGFxMSJJnsAk9AyWp0pHxPjxnGYMCv1a//33GcV0nm1NQIFA8baToxbvlqF4XiQQPpS7sx26iAjXwQ1wQp2yO8tyjAG9o7cMHwtqUgAwwQ2jctDh3XSXx7g2d1fL4VlKq+9VRxYNTI35TeFio9yDZDtLDC45HkKgnh+OVU9rrAePArXHJkbM5t3XVCfYOApy/bhWhEaSFGB2dZlL/5zXQF8CNWjQSeMUjVgfhpzJORzBPgtTRqjLtUuPiJO9m7md57umEtFhyflqCtnv8cELaWDwTiiPdLDt72O4bNMfdfR/+e6N8GoQJoPJq3nRUDnwIXk+zm9w==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=kjArFlHF7K1qcuYsuf5tgCtj/03SZ12/6iJK3FHB/dU=;\n b=HVcTc3n74AFRzcK9f3Ws9pbr+0Jygd1OjZ0QCZ5tLHVTryRGa/8sFQc/Q8MNwTE28fBdKWfoXe585QwiT8REfyalTJtGSANx6RRYaJHRWXy6xpSPP0AsqtURHTreqrx5p/jlW+uUtNOO9IqKjmlUzengvCItD6wAihP/lnMeOMQB9ydSPaYD2CvLdLd8RwBrmJfm4JymCHXzN6vB0Qr3xrNde5Ws9HgATdzPb7xhQIDd1Cx7oPTCdfLF4+YQ6iYWmymMN+2IV/qBj8uXwepCc0907LFMWCdwNNefl6Qg0vp2q6Op2oM9YPU4BFIhOjU7y8JGZto+A9EJmyFEq3aemA==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=kjArFlHF7K1qcuYsuf5tgCtj/03SZ12/6iJK3FHB/dU=;\n b=g0r/2WFbj2kCmpMGXUJ+4nAQgmonBmHqYSlbNav4RXFgN8Og3raeB9vBR2+rO3igjGcD55JsRa3U8vwKVyIQpaUGGXyccHkKIKiloYM0Ppk5uYjGIYbRSrmEV2l4eJoHV2o71gNhJAlxcNgOjpwuK+lO3fuWJaLbFHfIRMjPEig=",
        "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;",
        "From": "Gagandeep Singh <g.singh@nxp.com>",
        "To": "gakhil@marvell.com,\n\tdev@dpdk.org",
        "Cc": "Gagandeep Singh <g.singh@nxp.com>",
        "Subject": "[PATCH 09/14] crypto/dpaa2_sec: per queue pair fle pool",
        "Date": "Fri, 22 Apr 2022 09:20:55 +0530",
        "Message-Id": "<20220422035100.3180870-9-g.singh@nxp.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220422035100.3180870-1-g.singh@nxp.com>",
        "References": "<20220422035100.3180870-1-g.singh@nxp.com>",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-ClientProxiedBy": "SG2PR03CA0127.apcprd03.prod.outlook.com\n (2603:1096:4:91::31) To AS8PR04MB8198.eurprd04.prod.outlook.com\n (2603:10a6:20b:3b0::14)",
        "MIME-Version": "1.0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "7406211d-6b38-4196-268e-08da24136df4",
        "X-MS-TrafficTypeDiagnostic": "DB7PR04MB4393:EE_",
        "X-Microsoft-Antispam-PRVS": "\n <DB7PR04MB4393C509A9507E8AC7B47024E1F79@DB7PR04MB4393.eurprd04.prod.outlook.com>",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n BnFTSPLTb5LoOYO8Jasl2/Kb3dqmGrfODzfh0SLrZBuyFGISmkiddifki9It608lIrPuNmBPjPqGXIdB0x+OGiaoXpRCCFSSqYrbROTwjoL/VaA4nQWQlM/oHuxyxRLKF6Ri/EmvWmYuGAnDwCdN7vvDOhq9W5CrAl8B8llHrw1AQS14pA9DNnR6KiImgKeQmgFADPnbdLMv0KUyy4nlCSe2/7phGm/Q9vMxsCOEdLRWrrImeDlGiI9Isipnk/vLfGC1gHcBh7bOyb0EK5sBxfMZBtrlqnH/dwutiiaV+UGgkKJmFTrkal81mxdpqOL4zc6OBSOJ10DMNkMdEBi00cTPH6H1cCGxi7Yt/o5qilOegQHiIHl+CjcqXn5+4s2vx6g08voLj/yAx3X2GjdQGH9gukLDnvfGlEwuLXWfpfWheS4YLhR2YkRciCLD9zML8yiM9qq6w9akTHcAQo4Jsd2epkY/jAXRAQpOtCR2Q1kPOFMLuRPibX9EA1vFDEQPx6zCpoHeSdYLOoFAVvZKxkob60a4oiOQ3D/FrQeanJXbQmPrRvfBJ0JrnvOegAbac6dRXOhwbXzi/wBchNLWRWsuqV4Nd4rIx18LPMxH+MC5bLoHH8ThEs1QHJ2Ew/B5ouYHM6MxQqMJZRXmZBGbrveOv57ONLNzwh2SYSN0kRXhPXaXFjU8b2MNMKcX7iOLZVxi5yGHx7y7FsQ6tFkb2w==",
        "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:AS8PR04MB8198.eurprd04.prod.outlook.com; PTR:; CAT:NONE;\n SFS:(13230001)(4636009)(366004)(5660300002)(36756003)(2616005)(6486002)(30864003)(1076003)(8936002)(86362001)(316002)(52116002)(66946007)(26005)(6506007)(6512007)(186003)(66556008)(6666004)(66476007)(83380400001)(38350700002)(38100700002)(508600001)(4326008)(55236004)(2906002)(8676002);\n DIR:OUT; SFP:1101;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "\n ry18UT8CgTtVTYicnoy7Pq470u4iueQWq3GJT4Hf2QlkprDA2D5bvCKEr4p5T3V0//WJ7uXm4GQnYPDFaJjqUqLGfzZWxM6Mt3dL7WnmlpslDVgPJ4smMKiJ45ZNBg+JpgKFhzKEHP9sNDMGLuWdWafKRAAsupI66RQQ2Fh0G3VbUFL2bNs9WRMJzVITyi0L3AHjwuBO4dkGvmSQ9Iji9xZpv7MU+OT+AWUxKhqBXFMkhhO608uym0ePsYQt1h1cL6pgB7pUlvZ64oP6XgeZkvUTALh0XWhLMsqhGfCd1sKLyYa3tAbKrHIZefmzncsdXeU6jnGa7k/307scQSGLmDGXU3eG4V+jahseJ36Xe9ysyDOdELQ1kNZM9Cmzh+7xin+kDmaMMpVmjDt61SUyOKPTdvfEof/flAz53ImNflc4F8wqlNofTTXTDCct6tiW/4J65wlSa0eFq9dWtpFYltZp75NOsj+Yao9vUhwkCmIq1uejPnLmr2zUjO7ZTB2mAhOFvWpx3VDvackSnj8v8HAABDB5EsiWU9u7UHN9/xz6TGOiZy05bBr5lGZwE4HyCx0reKNQ54meedi/H0BZxcsjuEZVH9jrZtEHnKliQ+2L/XeJTgaU0Bn+HioUvatbG9ab0BUjrMN0UgG7RBuiY+9QpBCZaHF71Ei9iPjYcWSlIX6kB5TpjubNGUwVd7OkJh0BYa8UAjkoSvjv6DcbnODuUeEXhXSMzXe31hUsxFI+4nRyzGqsHWfKcrUInBywGVZd282HJ5Mg+dVdrO2EgDORIR7aCCVkByuzzfM/Xrxxie52vwodswhiPIYNSpTc4e3g3MXSxotFTifMJ5CkMu6GA2Dq+Xeg+phSZAa4osY9jMbRmkK/Xy/cgzxvVIiSQtrT69gu8dBu4hgRMmNdAfiYchzf1KjztV1CmEjJVBsoFm2YDesz1SEjcb4OaN4sjxoVYa2/JaekusDE0y9jy/L3wC7nA1hQkOjWxSx5DmOiXCRcP02IiohQ6v4TRyptrRKUy62hkdi4T7xYyd+2oPJJDG45N2trss45Fn7+WkHjTeUTLKm7DUY0TegScsG291J8VJ1W/8VUL9TEre5sAtwDM/oNttnkAozjUSPZO9GNQJc3EyrECgNlUTf8cMVsVnpkj+SsVlTVDD1+6gUpbnZg8e4o0OF9U0g+/xi5nlByiGTF4KW2ReZawHVE5ZtEn9lITzsnEffLOlwrgWmIKex7syDEIB80iA+UxsjcfAsYK5gxYOp8cz1v2iPrxYg//gqf6yOPPCX8TkhdqGWSvTLd2i06wym97lxaJy/lsc3frAtwVSCU8o/sgACiepvqmVUCEpF4hyrgBHoY+9LWuUj9AdrPPdb+yiZjzHj2apwfg8L04fujk2lEIMBWAMXfkLNjJXO7F1EwQnlJA1wz87F89JTnALlzLPcEANmunUD2BU48Nxi6YcGANzVB4AQiqubF8JrFa/k3AtaQVrgf82IXOPwDLnNYfx0TSZascJkOhrm2Lt4jVgUgx+9lAOdyf5AXw8q9nGRglQsi9EYyZuWY25RwCb6zBh809Z92jq0OVoe+A9Jiw7G6Y5GbfrWOoi2aF53swqRRy7aJMyB/T+5wmIj7bK/xGMQVl6+1V4hPP1K62K6rHl20Lx9ozI+qKRVxtMWbEW5P0f8zbTXRkKElQNNvR9UsFGYBFTjlpSeMWn2pXQ9tQZk+hDebgjbR6zaVguGJ6eZwUM/HdqFcHQ==",
        "X-OriginatorOrg": "nxp.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 7406211d-6b38-4196-268e-08da24136df4",
        "X-MS-Exchange-CrossTenant-AuthSource": "AS8PR04MB8198.eurprd04.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "22 Apr 2022 03:51:49.7010 (UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-CrossTenant-Id": "686ea1d3-bc2b-4c6f-a92c-d99c5c301635",
        "X-MS-Exchange-CrossTenant-MailboxType": "HOSTED",
        "X-MS-Exchange-CrossTenant-UserPrincipalName": "\n Fnxej+VUg3FgKSuuLcV/QSjA9gtxhD3sFfOhykT8ww8Vr/e9TO11vbJsATAhABEe",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DB7PR04MB4393",
        "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": "Driver is creating a fle pool with a fixed number of\nbuffers for all queue pairs of a DPSECI object.\nThese fle buffers are equivalent to the number of descriptors.\n\nIn this patch, creating the fle pool for each queue pair\nso that user can control the number of descriptors of a\nqueue pair using API rte_cryptodev_queue_pair_setup().\n\nSigned-off-by: Gagandeep Singh <g.singh@nxp.com>\n---\n drivers/bus/fslmc/portal/dpaa2_hw_dpio.c    |   4 +-\n drivers/bus/fslmc/portal/dpaa2_hw_pvt.h     |   3 +-\n drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c | 190 ++++++++++----------\n drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h   |   5 +-\n drivers/net/dpaa2/dpaa2_ethdev.h            |   4 +-\n drivers/net/dpaa2/dpaa2_rxtx.c              |   3 +-\n 6 files changed, 101 insertions(+), 108 deletions(-)",
    "diff": "diff --git a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c\nindex 943fadee48..22c51c1a82 100644\n--- a/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c\n+++ b/drivers/bus/fslmc/portal/dpaa2_hw_dpio.c\n@@ -1,7 +1,7 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n  *\n  *   Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.\n- *   Copyright 2016-2019 NXP\n+ *   Copyright 2016-2022 NXP\n  *\n  */\n #include <unistd.h>\n@@ -614,7 +614,7 @@ dpaa2_free_eq_descriptors(void)\n \n \t\tif (qbman_result_eqresp_rc(eqresp)) {\n \t\t\ttxq = eqresp_meta->dpaa2_q;\n-\t\t\ttxq->cb_eqresp_free(dpio_dev->eqresp_ci);\n+\t\t\ttxq->cb_eqresp_free(dpio_dev->eqresp_ci, txq);\n \t\t}\n \t\tqbman_result_eqresp_set_rspid(eqresp, 0);\n \ndiff --git a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h\nindex 36d68ea0aa..024fbf9935 100644\n--- a/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h\n+++ b/drivers/bus/fslmc/portal/dpaa2_hw_pvt.h\n@@ -147,7 +147,8 @@ typedef void (dpaa2_queue_cb_dqrr_t)(struct qbman_swp *swp,\n \t\tstruct dpaa2_queue *rxq,\n \t\tstruct rte_event *ev);\n \n-typedef void (dpaa2_queue_cb_eqresp_free_t)(uint16_t eqresp_ci);\n+typedef void (dpaa2_queue_cb_eqresp_free_t)(uint16_t eqresp_ci,\n+\t\t\t\t\tstruct dpaa2_queue *dpaa2_q);\n \n struct dpaa2_queue {\n \tstruct rte_mempool *mb_pool; /**< mbuf pool to populate RX ring. */\ndiff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\nindex 2374d67978..86c8df241b 100644\n--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_dpseci.c\n@@ -65,11 +65,10 @@ uint8_t cryptodev_driver_id;\n uint8_t dpaa2_sec_dp_dump = DPAA2_SEC_DP_ERR_DUMP;\n \n static inline void\n-free_fle(const struct qbman_fd *fd)\n+free_fle(const struct qbman_fd *fd, struct dpaa2_sec_qp *qp)\n {\n \tstruct qbman_fle *fle;\n \tstruct rte_crypto_op *op;\n-\tstruct ctxt_priv *priv;\n \n #ifdef RTE_LIB_SECURITY\n \tif (DPAA2_FD_GET_FORMAT(fd) == qbman_fd_single)\n@@ -78,10 +77,9 @@ free_fle(const struct qbman_fd *fd)\n \tfle = (struct qbman_fle *)DPAA2_IOVA_TO_VADDR(DPAA2_GET_FD_ADDR(fd));\n \top = (struct rte_crypto_op *)DPAA2_GET_FLE_ADDR((fle - 1));\n \t/* free the fle memory */\n-\tif (likely(rte_pktmbuf_is_contiguous(op->sym->m_src))) {\n-\t\tpriv = (struct ctxt_priv *)(size_t)DPAA2_GET_FLE_CTXT(fle - 1);\n-\t\trte_mempool_put(priv->fle_pool, (void *)(fle-1));\n-\t} else\n+\tif (likely(rte_pktmbuf_is_contiguous(op->sym->m_src)))\n+\t\trte_mempool_put(qp->fle_pool, (void *)(fle-1));\n+\telse\n \t\trte_free((void *)(fle-1));\n }\n \n@@ -206,7 +204,7 @@ build_proto_compound_sg_fd(dpaa2_sec_session *sess,\n static inline int\n build_proto_compound_fd(dpaa2_sec_session *sess,\n \t       struct rte_crypto_op *op,\n-\t       struct qbman_fd *fd, uint16_t bpid)\n+\t       struct qbman_fd *fd, uint16_t bpid, struct dpaa2_sec_qp *qp)\n {\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct ctxt_priv *priv = sess->ctxt;\n@@ -223,9 +221,9 @@ build_proto_compound_fd(dpaa2_sec_session *sess,\n \tflc = &priv->flc_desc[0].flc;\n \n \t/* we are using the first FLE entry to store Mbuf */\n-\tretval = rte_mempool_get(priv->fle_pool, (void **)(&fle));\n+\tretval = rte_mempool_get(qp->fle_pool, (void **)(&fle));\n \tif (retval) {\n-\t\tDPAA2_SEC_DP_ERR(\"Memory alloc failed\");\n+\t\tDPAA2_SEC_DP_DEBUG(\"Proto: Memory alloc failed\");\n \t\treturn -ENOMEM;\n \t}\n \tmemset(fle, 0, FLE_POOL_BUF_SIZE);\n@@ -282,11 +280,11 @@ build_proto_compound_fd(dpaa2_sec_session *sess,\n static inline int\n build_proto_fd(dpaa2_sec_session *sess,\n \t       struct rte_crypto_op *op,\n-\t       struct qbman_fd *fd, uint16_t bpid)\n+\t       struct qbman_fd *fd, uint16_t bpid, struct dpaa2_sec_qp *qp)\n {\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tif (sym_op->m_dst)\n-\t\treturn build_proto_compound_fd(sess, op, fd, bpid);\n+\t\treturn build_proto_compound_fd(sess, op, fd, bpid, qp);\n \n \tstruct ctxt_priv *priv = sess->ctxt;\n \tstruct sec_flow_context *flc;\n@@ -461,7 +459,8 @@ build_authenc_gcm_sg_fd(dpaa2_sec_session *sess,\n static inline int\n build_authenc_gcm_fd(dpaa2_sec_session *sess,\n \t\t     struct rte_crypto_op *op,\n-\t\t     struct qbman_fd *fd, uint16_t bpid)\n+\t\t     struct qbman_fd *fd, uint16_t bpid,\n+\t\t     struct dpaa2_sec_qp *qp)\n {\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct ctxt_priv *priv = sess->ctxt;\n@@ -485,9 +484,9 @@ build_authenc_gcm_fd(dpaa2_sec_session *sess,\n \t * to get the MBUF Addr from the previous FLE.\n \t * We can have a better approach to use the inline Mbuf\n \t */\n-\tretval = rte_mempool_get(priv->fle_pool, (void **)(&fle));\n+\tretval = rte_mempool_get(qp->fle_pool, (void **)(&fle));\n \tif (retval) {\n-\t\tDPAA2_SEC_ERR(\"GCM: Memory alloc failed for SGE\");\n+\t\tDPAA2_SEC_DP_DEBUG(\"GCM: no buffer available in fle pool\");\n \t\treturn -ENOMEM;\n \t}\n \tmemset(fle, 0, FLE_POOL_BUF_SIZE);\n@@ -748,7 +747,7 @@ build_authenc_sg_fd(dpaa2_sec_session *sess,\n static inline int\n build_authenc_fd(dpaa2_sec_session *sess,\n \t\t struct rte_crypto_op *op,\n-\t\t struct qbman_fd *fd, uint16_t bpid)\n+\t\t struct qbman_fd *fd, uint16_t bpid, struct dpaa2_sec_qp *qp)\n {\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct ctxt_priv *priv = sess->ctxt;\n@@ -777,9 +776,9 @@ build_authenc_fd(dpaa2_sec_session *sess,\n \t * to get the MBUF Addr from the previous FLE.\n \t * We can have a better approach to use the inline Mbuf\n \t */\n-\tretval = rte_mempool_get(priv->fle_pool, (void **)(&fle));\n+\tretval = rte_mempool_get(qp->fle_pool, (void **)(&fle));\n \tif (retval) {\n-\t\tDPAA2_SEC_ERR(\"Memory alloc failed for SGE\");\n+\t\tDPAA2_SEC_DP_DEBUG(\"AUTHENC: no buffer available in fle pool\");\n \t\treturn -ENOMEM;\n \t}\n \tmemset(fle, 0, FLE_POOL_BUF_SIZE);\n@@ -1010,7 +1009,7 @@ static inline int build_auth_sg_fd(\n \n static inline int\n build_auth_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op,\n-\t      struct qbman_fd *fd, uint16_t bpid)\n+\t      struct qbman_fd *fd, uint16_t bpid, struct dpaa2_sec_qp *qp)\n {\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct qbman_fle *fle, *sge;\n@@ -1034,9 +1033,9 @@ build_auth_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op,\n \t\tdata_offset = data_offset >> 3;\n \t}\n \n-\tretval = rte_mempool_get(priv->fle_pool, (void **)(&fle));\n+\tretval = rte_mempool_get(qp->fle_pool, (void **)(&fle));\n \tif (retval) {\n-\t\tDPAA2_SEC_ERR(\"AUTH Memory alloc failed for SGE\");\n+\t\tDPAA2_SEC_DP_DEBUG(\"AUTH: no buffer available in fle pool\");\n \t\treturn -ENOMEM;\n \t}\n \tmemset(fle, 0, FLE_POOL_BUF_SIZE);\n@@ -1257,7 +1256,7 @@ build_cipher_sg_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op,\n \n static int\n build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op,\n-\t\tstruct qbman_fd *fd, uint16_t bpid)\n+\t\tstruct qbman_fd *fd, uint16_t bpid, struct dpaa2_sec_qp *qp)\n {\n \tstruct rte_crypto_sym_op *sym_op = op->sym;\n \tstruct qbman_fle *fle, *sge;\n@@ -1287,9 +1286,9 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op,\n \telse\n \t\tdst = sym_op->m_src;\n \n-\tretval = rte_mempool_get(priv->fle_pool, (void **)(&fle));\n+\tretval = rte_mempool_get(qp->fle_pool, (void **)(&fle));\n \tif (retval) {\n-\t\tDPAA2_SEC_ERR(\"CIPHER: Memory alloc failed for SGE\");\n+\t\tDPAA2_SEC_DP_DEBUG(\"CIPHER: no buffer available in fle pool\");\n \t\treturn -ENOMEM;\n \t}\n \tmemset(fle, 0, FLE_POOL_BUF_SIZE);\n@@ -1374,7 +1373,7 @@ build_cipher_fd(dpaa2_sec_session *sess, struct rte_crypto_op *op,\n \n static inline int\n build_sec_fd(struct rte_crypto_op *op,\n-\t     struct qbman_fd *fd, uint16_t bpid)\n+\t     struct qbman_fd *fd, uint16_t bpid, struct dpaa2_sec_qp *qp)\n {\n \tint ret = -1;\n \tdpaa2_sec_session *sess;\n@@ -1387,11 +1386,15 @@ build_sec_fd(struct rte_crypto_op *op,\n \t\tsess = (dpaa2_sec_session *)get_sec_session_private_data(\n \t\t\t\top->sym->sec_session);\n #endif\n-\telse\n+\telse {\n+\t\tDPAA2_SEC_DP_ERR(\"Session type invalid\\n\");\n \t\treturn -ENOTSUP;\n+\t}\n \n-\tif (!sess)\n+\tif (!sess) {\n+\t\tDPAA2_SEC_DP_ERR(\"Session not available\\n\");\n \t\treturn -EINVAL;\n+\t}\n \n \t/* Any of the buffer is segmented*/\n \tif (!rte_pktmbuf_is_contiguous(op->sym->m_src) ||\n@@ -1423,23 +1426,23 @@ build_sec_fd(struct rte_crypto_op *op,\n \t} else {\n \t\tswitch (sess->ctxt_type) {\n \t\tcase DPAA2_SEC_CIPHER:\n-\t\t\tret = build_cipher_fd(sess, op, fd, bpid);\n+\t\t\tret = build_cipher_fd(sess, op, fd, bpid, qp);\n \t\t\tbreak;\n \t\tcase DPAA2_SEC_AUTH:\n-\t\t\tret = build_auth_fd(sess, op, fd, bpid);\n+\t\t\tret = build_auth_fd(sess, op, fd, bpid, qp);\n \t\t\tbreak;\n \t\tcase DPAA2_SEC_AEAD:\n-\t\t\tret = build_authenc_gcm_fd(sess, op, fd, bpid);\n+\t\t\tret = build_authenc_gcm_fd(sess, op, fd, bpid, qp);\n \t\t\tbreak;\n \t\tcase DPAA2_SEC_CIPHER_HASH:\n-\t\t\tret = build_authenc_fd(sess, op, fd, bpid);\n+\t\t\tret = build_authenc_fd(sess, op, fd, bpid, qp);\n \t\t\tbreak;\n #ifdef RTE_LIB_SECURITY\n \t\tcase DPAA2_SEC_IPSEC:\n-\t\t\tret = build_proto_fd(sess, op, fd, bpid);\n+\t\t\tret = build_proto_fd(sess, op, fd, bpid, qp);\n \t\t\tbreak;\n \t\tcase DPAA2_SEC_PDCP:\n-\t\t\tret = build_proto_compound_fd(sess, op, fd, bpid);\n+\t\t\tret = build_proto_compound_fd(sess, op, fd, bpid, qp);\n \t\t\tbreak;\n #endif\n \t\tcase DPAA2_SEC_HASH_CIPHER:\n@@ -1513,10 +1516,9 @@ dpaa2_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops,\n \t\t\tmemset(&fd_arr[loop], 0, sizeof(struct qbman_fd));\n \t\t\tmb_pool = (*ops)->sym->m_src->pool;\n \t\t\tbpid = mempool_to_bpid(mb_pool);\n-\t\t\tret = build_sec_fd(*ops, &fd_arr[loop], bpid);\n+\t\t\tret = build_sec_fd(*ops, &fd_arr[loop], bpid, dpaa2_qp);\n \t\t\tif (ret) {\n-\t\t\t\tDPAA2_SEC_ERR(\"error: Improper packet contents\"\n-\t\t\t\t\t      \" for crypto operation\");\n+\t\t\t\tDPAA2_SEC_DP_DEBUG(\"FD build failed\\n\");\n \t\t\t\tgoto skip_tx;\n \t\t\t}\n \t\t\tops++;\n@@ -1537,7 +1539,8 @@ dpaa2_sec_enqueue_burst(void *qp, struct rte_crypto_op **ops,\n \t\t\t\t\tDPAA2_SEC_DP_DEBUG(\"Enqueue fail\\n\");\n \t\t\t\t\t/* freeing the fle buffers */\n \t\t\t\t\twhile (loop < frames_to_send) {\n-\t\t\t\t\t\tfree_fle(&fd_arr[loop]);\n+\t\t\t\t\t\tfree_fle(&fd_arr[loop],\n+\t\t\t\t\t\t\t\tdpaa2_qp);\n \t\t\t\t\t\tloop++;\n \t\t\t\t\t}\n \t\t\t\t\tgoto skip_tx;\n@@ -1593,11 +1596,10 @@ sec_simple_fd_to_mbuf(const struct qbman_fd *fd)\n #endif\n \n static inline struct rte_crypto_op *\n-sec_fd_to_mbuf(const struct qbman_fd *fd)\n+sec_fd_to_mbuf(const struct qbman_fd *fd, struct dpaa2_sec_qp *qp)\n {\n \tstruct qbman_fle *fle;\n \tstruct rte_crypto_op *op;\n-\tstruct ctxt_priv *priv;\n \tstruct rte_mbuf *dst, *src;\n \n #ifdef RTE_LIB_SECURITY\n@@ -1651,8 +1653,7 @@ sec_fd_to_mbuf(const struct qbman_fd *fd)\n \n \t/* free the fle memory */\n \tif (likely(rte_pktmbuf_is_contiguous(src))) {\n-\t\tpriv = (struct ctxt_priv *)(size_t)DPAA2_GET_FLE_CTXT(fle - 1);\n-\t\trte_mempool_put(priv->fle_pool, (void *)(fle-1));\n+\t\trte_mempool_put(qp->fle_pool, (void *)(fle-1));\n \t} else\n \t\trte_free((void *)(fle-1));\n \n@@ -1737,14 +1738,17 @@ dpaa2_sec_dump(struct rte_crypto_op *op)\n }\n \n static void\n-dpaa2_sec_free_eqresp_buf(uint16_t eqresp_ci)\n+dpaa2_sec_free_eqresp_buf(uint16_t eqresp_ci,\n+\t\t\t  struct dpaa2_queue *dpaa2_q)\n {\n \tstruct dpaa2_dpio_dev *dpio_dev = DPAA2_PER_LCORE_DPIO;\n \tstruct rte_crypto_op *op;\n \tstruct qbman_fd *fd;\n+\tstruct dpaa2_sec_qp *dpaa2_qp;\n \n+\tdpaa2_qp = container_of(dpaa2_q, struct dpaa2_sec_qp, tx_vq);\n \tfd = qbman_result_eqresp_fd(&dpio_dev->eqresp[eqresp_ci]);\n-\top = sec_fd_to_mbuf(fd);\n+\top = sec_fd_to_mbuf(fd, dpaa2_qp);\n \t/* Instead of freeing, enqueue it to the sec tx queue (sec->core)\n \t * after setting an error in FD. But this will have performance impact.\n \t */\n@@ -1860,10 +1864,9 @@ dpaa2_sec_enqueue_burst_ordered(void *qp, struct rte_crypto_op **ops,\n \t\t\tmemset(&fd_arr[loop], 0, sizeof(struct qbman_fd));\n \t\t\tmb_pool = (*ops)->sym->m_src->pool;\n \t\t\tbpid = mempool_to_bpid(mb_pool);\n-\t\t\tret = build_sec_fd(*ops, &fd_arr[loop], bpid);\n+\t\t\tret = build_sec_fd(*ops, &fd_arr[loop], bpid, dpaa2_qp);\n \t\t\tif (ret) {\n-\t\t\t\tDPAA2_SEC_ERR(\"error: Improper packet contents\"\n-\t\t\t\t\t      \" for crypto operation\");\n+\t\t\t\tDPAA2_SEC_DP_DEBUG(\"FD build failed\\n\");\n \t\t\t\tgoto skip_tx;\n \t\t\t}\n \t\t\tops++;\n@@ -1883,7 +1886,8 @@ dpaa2_sec_enqueue_burst_ordered(void *qp, struct rte_crypto_op **ops,\n \t\t\t\t\tDPAA2_SEC_DP_DEBUG(\"Enqueue fail\\n\");\n \t\t\t\t\t/* freeing the fle buffers */\n \t\t\t\t\twhile (loop < frames_to_send) {\n-\t\t\t\t\t\tfree_fle(&fd_arr[loop]);\n+\t\t\t\t\t\tfree_fle(&fd_arr[loop],\n+\t\t\t\t\t\t\t\tdpaa2_qp);\n \t\t\t\t\t\tloop++;\n \t\t\t\t\t}\n \t\t\t\t\tgoto skip_tx;\n@@ -1981,7 +1985,7 @@ dpaa2_sec_dequeue_burst(void *qp, struct rte_crypto_op **ops,\n \t\t}\n \n \t\tfd = qbman_result_DQ_fd(dq_storage);\n-\t\tops[num_rx] = sec_fd_to_mbuf(fd);\n+\t\tops[num_rx] = sec_fd_to_mbuf(fd, dpaa2_qp);\n \n \t\tif (unlikely(fd->simple.frc)) {\n \t\t\t/* TODO Parse SEC errors */\n@@ -2023,6 +2027,7 @@ dpaa2_sec_queue_pair_release(struct rte_cryptodev *dev, uint16_t queue_pair_id)\n \t\tdpaa2_free_dq_storage(qp->rx_vq.q_storage);\n \t\trte_free(qp->rx_vq.q_storage);\n \t}\n+\trte_mempool_free(qp->fle_pool);\n \trte_free(qp);\n \n \tdev->data->queue_pairs[queue_pair_id] = NULL;\n@@ -2033,7 +2038,7 @@ dpaa2_sec_queue_pair_release(struct rte_cryptodev *dev, uint16_t queue_pair_id)\n /** Setup a queue pair */\n static int\n dpaa2_sec_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n-\t\t__rte_unused const struct rte_cryptodev_qp_conf *qp_conf,\n+\t\tconst struct rte_cryptodev_qp_conf *qp_conf,\n \t\t__rte_unused int socket_id)\n {\n \tstruct dpaa2_sec_dev_private *priv = dev->data->dev_private;\n@@ -2041,6 +2046,7 @@ dpaa2_sec_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \tstruct fsl_mc_io *dpseci = (struct fsl_mc_io *)priv->hw;\n \tstruct dpseci_rx_queue_cfg cfg;\n \tint32_t retcode;\n+\tchar str[30];\n \n \tPMD_INIT_FUNC_TRACE();\n \n@@ -2080,6 +2086,19 @@ dpaa2_sec_queue_pair_setup(struct rte_cryptodev *dev, uint16_t qp_id,\n \n \tdev->data->queue_pairs[qp_id] = qp;\n \n+\tsnprintf(str, sizeof(str), \"sec_fle_pool_p%d_%d_%d\",\n+\t\t\tgetpid(), dev->data->dev_id, qp_id);\n+\tqp->fle_pool = rte_mempool_create((const char *)str,\n+\t\t\tqp_conf->nb_descriptors,\n+\t\t\tFLE_POOL_BUF_SIZE,\n+\t\t\tFLE_POOL_CACHE_SIZE, 0,\n+\t\t\tNULL, NULL, NULL, NULL,\n+\t\t\tSOCKET_ID_ANY, MEMPOOL_F_SP_PUT | MEMPOOL_F_SC_GET);\n+\tif (!qp->fle_pool) {\n+\t\tDPAA2_SEC_ERR(\"Mempool (%s) creation failed\", str);\n+\t\treturn -ENOMEM;\n+\t}\n+\n \tcfg.options = cfg.options | DPSECI_QUEUE_OPT_USER_CTX;\n \tcfg.user_ctx = (size_t)(&qp->rx_vq);\n \tretcode = dpseci_set_rx_queue(dpseci, CMD_PRI_LOW, priv->token,\n@@ -2097,11 +2116,9 @@ dpaa2_sec_sym_session_get_size(struct rte_cryptodev *dev __rte_unused)\n }\n \n static int\n-dpaa2_sec_cipher_init(struct rte_cryptodev *dev,\n-\t\t      struct rte_crypto_sym_xform *xform,\n+dpaa2_sec_cipher_init(struct rte_crypto_sym_xform *xform,\n \t\t      dpaa2_sec_session *session)\n {\n-\tstruct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private;\n \tstruct alginfo cipherdata;\n \tint bufsize, ret = 0;\n \tstruct ctxt_priv *priv;\n@@ -2118,8 +2135,6 @@ dpaa2_sec_cipher_init(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tpriv->fle_pool = dev_priv->fle_pool;\n-\n \tflc = &priv->flc_desc[0].flc;\n \n \tsession->ctxt_type = DPAA2_SEC_CIPHER;\n@@ -2238,11 +2253,9 @@ dpaa2_sec_cipher_init(struct rte_cryptodev *dev,\n }\n \n static int\n-dpaa2_sec_auth_init(struct rte_cryptodev *dev,\n-\t\t    struct rte_crypto_sym_xform *xform,\n+dpaa2_sec_auth_init(struct rte_crypto_sym_xform *xform,\n \t\t    dpaa2_sec_session *session)\n {\n-\tstruct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private;\n \tstruct alginfo authdata;\n \tint bufsize, ret = 0;\n \tstruct ctxt_priv *priv;\n@@ -2260,7 +2273,6 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tpriv->fle_pool = dev_priv->fle_pool;\n \tflc = &priv->flc_desc[DESC_INITFINAL].flc;\n \n \tsession->ctxt_type = DPAA2_SEC_AUTH;\n@@ -2476,12 +2488,10 @@ dpaa2_sec_auth_init(struct rte_cryptodev *dev,\n }\n \n static int\n-dpaa2_sec_aead_init(struct rte_cryptodev *dev,\n-\t\t    struct rte_crypto_sym_xform *xform,\n+dpaa2_sec_aead_init(struct rte_crypto_sym_xform *xform,\n \t\t    dpaa2_sec_session *session)\n {\n \tstruct dpaa2_sec_aead_ctxt *ctxt = &session->ext_params.aead_ctxt;\n-\tstruct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private;\n \tstruct alginfo aeaddata;\n \tint bufsize;\n \tstruct ctxt_priv *priv;\n@@ -2505,7 +2515,6 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tpriv->fle_pool = dev_priv->fle_pool;\n \tflc = &priv->flc_desc[0].flc;\n \n \tsession->aead_key.data = rte_zmalloc(NULL, aead_xform->key.length,\n@@ -2601,11 +2610,9 @@ dpaa2_sec_aead_init(struct rte_cryptodev *dev,\n \n \n static int\n-dpaa2_sec_aead_chain_init(struct rte_cryptodev *dev,\n-\t\t    struct rte_crypto_sym_xform *xform,\n+dpaa2_sec_aead_chain_init(struct rte_crypto_sym_xform *xform,\n \t\t    dpaa2_sec_session *session)\n {\n-\tstruct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private;\n \tstruct alginfo authdata, cipherdata;\n \tint bufsize;\n \tstruct ctxt_priv *priv;\n@@ -2643,7 +2650,6 @@ dpaa2_sec_aead_chain_init(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tpriv->fle_pool = dev_priv->fle_pool;\n \tflc = &priv->flc_desc[0].flc;\n \n \tsession->cipher_key.data = rte_zmalloc(NULL, cipher_xform->key.length,\n@@ -2849,8 +2855,7 @@ dpaa2_sec_aead_chain_init(struct rte_cryptodev *dev,\n }\n \n static int\n-dpaa2_sec_set_session_parameters(struct rte_cryptodev *dev,\n-\t\t\t    struct rte_crypto_sym_xform *xform,\tvoid *sess)\n+dpaa2_sec_set_session_parameters(struct rte_crypto_sym_xform *xform, void *sess)\n {\n \tdpaa2_sec_session *session = sess;\n \tint ret;\n@@ -2868,37 +2873,37 @@ dpaa2_sec_set_session_parameters(struct rte_cryptodev *dev,\n \n \t/* Cipher Only */\n \tif (xform->type == RTE_CRYPTO_SYM_XFORM_CIPHER && xform->next == NULL) {\n-\t\tret = dpaa2_sec_cipher_init(dev, xform, session);\n+\t\tret = dpaa2_sec_cipher_init(xform, session);\n \n \t/* Authentication Only */\n \t} else if (xform->type == RTE_CRYPTO_SYM_XFORM_AUTH &&\n \t\t   xform->next == NULL) {\n-\t\tret = dpaa2_sec_auth_init(dev, xform, session);\n+\t\tret = dpaa2_sec_auth_init(xform, session);\n \n \t/* Cipher then Authenticate */\n \t} else if (xform->type == RTE_CRYPTO_SYM_XFORM_CIPHER &&\n \t\t   xform->next->type == RTE_CRYPTO_SYM_XFORM_AUTH) {\n \t\tsession->ext_params.aead_ctxt.auth_cipher_text = true;\n \t\tif (xform->cipher.algo == RTE_CRYPTO_CIPHER_NULL)\n-\t\t\tret = dpaa2_sec_auth_init(dev, xform, session);\n+\t\t\tret = dpaa2_sec_auth_init(xform, session);\n \t\telse if (xform->next->auth.algo == RTE_CRYPTO_AUTH_NULL)\n-\t\t\tret = dpaa2_sec_cipher_init(dev, xform, session);\n+\t\t\tret = dpaa2_sec_cipher_init(xform, session);\n \t\telse\n-\t\t\tret = dpaa2_sec_aead_chain_init(dev, xform, session);\n+\t\t\tret = dpaa2_sec_aead_chain_init(xform, session);\n \t/* Authenticate then Cipher */\n \t} else if (xform->type == RTE_CRYPTO_SYM_XFORM_AUTH &&\n \t\t   xform->next->type == RTE_CRYPTO_SYM_XFORM_CIPHER) {\n \t\tsession->ext_params.aead_ctxt.auth_cipher_text = false;\n \t\tif (xform->auth.algo == RTE_CRYPTO_AUTH_NULL)\n-\t\t\tret = dpaa2_sec_cipher_init(dev, xform, session);\n+\t\t\tret = dpaa2_sec_cipher_init(xform, session);\n \t\telse if (xform->next->cipher.algo == RTE_CRYPTO_CIPHER_NULL)\n-\t\t\tret = dpaa2_sec_auth_init(dev, xform, session);\n+\t\t\tret = dpaa2_sec_auth_init(xform, session);\n \t\telse\n-\t\t\tret = dpaa2_sec_aead_chain_init(dev, xform, session);\n+\t\t\tret = dpaa2_sec_aead_chain_init(xform, session);\n \t/* AEAD operation for AES-GCM kind of Algorithms */\n \t} else if (xform->type == RTE_CRYPTO_SYM_XFORM_AEAD &&\n \t\t   xform->next == NULL) {\n-\t\tret = dpaa2_sec_aead_init(dev, xform, session);\n+\t\tret = dpaa2_sec_aead_init(xform, session);\n \n \t} else {\n \t\tDPAA2_SEC_ERR(\"Invalid crypto type\");\n@@ -3147,7 +3152,6 @@ dpaa2_sec_set_ipsec_session(struct rte_cryptodev *dev,\n \tstruct alginfo authdata, cipherdata;\n \tint bufsize;\n \tstruct sec_flow_context *flc;\n-\tstruct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private;\n \tint ret = -1;\n \n \tPMD_INIT_FUNC_TRACE();\n@@ -3162,7 +3166,6 @@ dpaa2_sec_set_ipsec_session(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tpriv->fle_pool = dev_priv->fle_pool;\n \tflc = &priv->flc_desc[0].flc;\n \n \tif (ipsec_xform->life.bytes_hard_limit != 0 ||\n@@ -3395,7 +3398,6 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev,\n \tstruct rte_crypto_cipher_xform *cipher_xform = NULL;\n \tdpaa2_sec_session *session = (dpaa2_sec_session *)sess;\n \tstruct ctxt_priv *priv;\n-\tstruct dpaa2_sec_dev_private *dev_priv = dev->data->dev_private;\n \tstruct alginfo authdata, cipherdata;\n \tstruct alginfo *p_authdata = NULL;\n \tint bufsize = -1;\n@@ -3420,7 +3422,6 @@ dpaa2_sec_set_pdcp_session(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tpriv->fle_pool = dev_priv->fle_pool;\n \tflc = &priv->flc_desc[0].flc;\n \n \t/* find xfrm types */\n@@ -3758,7 +3759,7 @@ dpaa2_sec_sym_session_configure(struct rte_cryptodev *dev,\n \t\treturn -ENOMEM;\n \t}\n \n-\tret = dpaa2_sec_set_session_parameters(dev, xform, sess_private_data);\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@@ -3989,6 +3990,7 @@ dpaa2_sec_process_parallel_event(struct qbman_swp *swp,\n \t\t\t\t struct dpaa2_queue *rxq,\n \t\t\t\t struct rte_event *ev)\n {\n+\tstruct dpaa2_sec_qp *qp;\n \t/* Prefetching mbuf */\n \trte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-\n \t\trte_dpaa2_bpid_info[DPAA2_GET_FD_BPID(fd)].meta_data_size));\n@@ -3996,6 +3998,7 @@ dpaa2_sec_process_parallel_event(struct qbman_swp *swp,\n \t/* Prefetching ipsec crypto_op stored in priv data of mbuf */\n \trte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-64));\n \n+\tqp = container_of(rxq, struct dpaa2_sec_qp, rx_vq);\n \tev->flow_id = rxq->ev.flow_id;\n \tev->sub_event_type = rxq->ev.sub_event_type;\n \tev->event_type = RTE_EVENT_TYPE_CRYPTODEV;\n@@ -4003,7 +4006,7 @@ dpaa2_sec_process_parallel_event(struct qbman_swp *swp,\n \tev->sched_type = rxq->ev.sched_type;\n \tev->queue_id = rxq->ev.queue_id;\n \tev->priority = rxq->ev.priority;\n-\tev->event_ptr = sec_fd_to_mbuf(fd);\n+\tev->event_ptr = sec_fd_to_mbuf(fd, qp);\n \n \tqbman_swp_dqrr_consume(swp, dq);\n }\n@@ -4015,6 +4018,7 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused,\n \t\t\t\t struct rte_event *ev)\n {\n \tuint8_t dqrr_index;\n+\tstruct dpaa2_sec_qp *qp;\n \tstruct rte_crypto_op *crypto_op = (struct rte_crypto_op *)ev->event_ptr;\n \t/* Prefetching mbuf */\n \trte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-\n@@ -4023,6 +4027,7 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused,\n \t/* Prefetching ipsec crypto_op stored in priv data of mbuf */\n \trte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-64));\n \n+\tqp = container_of(rxq, struct dpaa2_sec_qp, rx_vq);\n \tev->flow_id = rxq->ev.flow_id;\n \tev->sub_event_type = rxq->ev.sub_event_type;\n \tev->event_type = RTE_EVENT_TYPE_CRYPTODEV;\n@@ -4031,7 +4036,7 @@ dpaa2_sec_process_atomic_event(struct qbman_swp *swp __rte_unused,\n \tev->queue_id = rxq->ev.queue_id;\n \tev->priority = rxq->ev.priority;\n \n-\tev->event_ptr = sec_fd_to_mbuf(fd);\n+\tev->event_ptr = sec_fd_to_mbuf(fd, qp);\n \tdqrr_index = qbman_get_dqrr_idx(dq);\n \t*dpaa2_seqn(crypto_op->sym->m_src) = QBMAN_ENQUEUE_FLAG_DCA | dqrr_index;\n \tDPAA2_PER_LCORE_DQRR_SIZE++;\n@@ -4047,6 +4052,7 @@ dpaa2_sec_process_ordered_event(struct qbman_swp *swp,\n \t\t\t\tstruct rte_event *ev)\n {\n \tstruct rte_crypto_op *crypto_op = (struct rte_crypto_op *)ev->event_ptr;\n+\tstruct dpaa2_sec_qp *qp;\n \n \t/* Prefetching mbuf */\n \trte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-\n@@ -4055,6 +4061,7 @@ dpaa2_sec_process_ordered_event(struct qbman_swp *swp,\n \t/* Prefetching ipsec crypto_op stored in priv data of mbuf */\n \trte_prefetch0((void *)(size_t)(DPAA2_GET_FD_ADDR(fd)-64));\n \n+\tqp = container_of(rxq, struct dpaa2_sec_qp, rx_vq);\n \tev->flow_id = rxq->ev.flow_id;\n \tev->sub_event_type = rxq->ev.sub_event_type;\n \tev->event_type = RTE_EVENT_TYPE_CRYPTODEV;\n@@ -4062,7 +4069,7 @@ dpaa2_sec_process_ordered_event(struct qbman_swp *swp,\n \tev->sched_type = rxq->ev.sched_type;\n \tev->queue_id = rxq->ev.queue_id;\n \tev->priority = rxq->ev.priority;\n-\tev->event_ptr = sec_fd_to_mbuf(fd);\n+\tev->event_ptr = sec_fd_to_mbuf(fd, qp);\n \n \t*dpaa2_seqn(crypto_op->sym->m_src) = DPAA2_ENQUEUE_FLAG_ORP;\n \t*dpaa2_seqn(crypto_op->sym->m_src) |= qbman_result_DQ_odpid(dq) <<\n@@ -4236,7 +4243,6 @@ dpaa2_sec_uninit(const struct rte_cryptodev *dev)\n \tpriv->hw = NULL;\n \trte_free(dpseci);\n \trte_free(dev->security_ctx);\n-\trte_mempool_free(priv->fle_pool);\n \n \tDPAA2_SEC_INFO(\"Closing DPAA2_SEC device %s on numa socket %u\",\n \t\t       dev->data->name, rte_socket_id());\n@@ -4304,7 +4310,6 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev)\n \tuint16_t token;\n \tstruct dpseci_attr attr;\n \tint retcode, hw_id;\n-\tchar str[30];\n \n \tPMD_INIT_FUNC_TRACE();\n \tdpaa2_dev = container_of(dev, struct rte_dpaa2_device, device);\n@@ -4380,19 +4385,6 @@ dpaa2_sec_dev_init(struct rte_cryptodev *cryptodev)\n \tinternals->token = token;\n \tinternals->en_loose_ordered = true;\n \n-\tsnprintf(str, sizeof(str), \"sec_fle_pool_p%d_%d\",\n-\t\t\tgetpid(), cryptodev->data->dev_id);\n-\tinternals->fle_pool = rte_mempool_create((const char *)str,\n-\t\t\tFLE_POOL_NUM_BUFS,\n-\t\t\tFLE_POOL_BUF_SIZE,\n-\t\t\tFLE_POOL_CACHE_SIZE, 0,\n-\t\t\tNULL, NULL, NULL, NULL,\n-\t\t\tSOCKET_ID_ANY, 0);\n-\tif (!internals->fle_pool) {\n-\t\tDPAA2_SEC_ERR(\"Mempool (%s) creation failed\", str);\n-\t\tgoto init_error;\n-\t}\n-\n \tdpaa2_sec_get_devargs(cryptodev, DRIVER_DUMP_MODE);\n \tdpaa2_sec_get_devargs(cryptodev, DRIVER_STRICT_ORDER);\n \tDPAA2_SEC_INFO(\"driver %s: created\", cryptodev->data->name);\ndiff --git a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h\nindex 3094778a7a..63f4c64aab 100644\n--- a/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h\n+++ b/drivers/crypto/dpaa2_sec/dpaa2_sec_priv.h\n@@ -1,7 +1,7 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n  *\n  *   Copyright (c) 2016 Freescale Semiconductor, Inc. All rights reserved.\n- *   Copyright 2016,2020-2021 NXP\n+ *   Copyright 2016,2020-2022 NXP\n  *\n  */\n \n@@ -31,7 +31,6 @@ extern uint8_t cryptodev_driver_id;\n struct dpaa2_sec_dev_private {\n \tvoid *mc_portal; /**< MC Portal for configuring this device */\n \tvoid *hw; /**< Hardware handle for this device.Used by NADK framework */\n-\tstruct rte_mempool *fle_pool; /* per device memory pool for FLE */\n \tint32_t hw_id; /**< An unique ID of this device instance */\n \tint32_t vfio_fd; /**< File descriptor received via VFIO */\n \tuint16_t token; /**< Token required by DPxxx objects */\n@@ -44,6 +43,7 @@ struct dpaa2_sec_dev_private {\n struct dpaa2_sec_qp {\n \tstruct dpaa2_queue rx_vq;\n \tstruct dpaa2_queue tx_vq;\n+\tstruct rte_mempool *fle_pool; /* per device memory pool for FLE */\n };\n \n enum shr_desc_type {\n@@ -127,7 +127,6 @@ struct sec_flc_desc {\n };\n \n struct ctxt_priv {\n-\tstruct rte_mempool *fle_pool; /* per device memory pool for FLE */\n \tstruct sec_flc_desc flc_desc[0];\n };\n \ndiff --git a/drivers/net/dpaa2/dpaa2_ethdev.h b/drivers/net/dpaa2/dpaa2_ethdev.h\nindex e79a7fc2e2..a459181139 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.h\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.h\n@@ -1,7 +1,7 @@\n /* SPDX-License-Identifier: BSD-3-Clause\n  *\n  *   Copyright (c) 2015-2016 Freescale Semiconductor, Inc. All rights reserved.\n- *   Copyright 2016-2021 NXP\n+ *   Copyright 2016-2022 NXP\n  *\n  */\n \n@@ -264,7 +264,7 @@ __rte_internal\n uint16_t dpaa2_dev_tx_multi_txq_ordered(void **queue,\n \t\tstruct rte_mbuf **bufs, uint16_t nb_pkts);\n \n-void dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci);\n+void dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci, struct dpaa2_queue *dpaa2_q);\n void dpaa2_flow_clean(struct rte_eth_dev *dev);\n uint16_t dpaa2_dev_tx_conf(void *queue)  __rte_unused;\n int dpaa2_dev_is_dpaa2(struct rte_eth_dev *dev);\ndiff --git a/drivers/net/dpaa2/dpaa2_rxtx.c b/drivers/net/dpaa2/dpaa2_rxtx.c\nindex b8844fbdf1..39bfddd804 100644\n--- a/drivers/net/dpaa2/dpaa2_rxtx.c\n+++ b/drivers/net/dpaa2/dpaa2_rxtx.c\n@@ -1408,7 +1408,8 @@ dpaa2_dev_tx(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)\n }\n \n void\n-dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci)\n+dpaa2_dev_free_eqresp_buf(uint16_t eqresp_ci,\n+\t\t\t  __rte_unused struct dpaa2_queue *dpaa2_q)\n {\n \tstruct dpaa2_dpio_dev *dpio_dev = DPAA2_PER_LCORE_DPIO;\n \tstruct qbman_fd *fd;\n",
    "prefixes": [
        "09/14"
    ]
}