get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 21833,
    "url": "https://patches.dpdk.org/api/patches/21833/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20170317084510.2120-1-akhil.goyal@nxp.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20170317084510.2120-1-akhil.goyal@nxp.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20170317084510.2120-1-akhil.goyal@nxp.com",
    "date": "2017-03-17T08:45:09",
    "name": "[dpdk-dev,1/2] cryptodev: add api for attach-detach session with queue pair",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "4f7e1e5161c2b04cb6be278e9e61cc2883c8880f",
    "submitter": {
        "id": 517,
        "url": "https://patches.dpdk.org/api/people/517/?format=api",
        "name": "Akhil Goyal",
        "email": "akhil.goyal@nxp.com"
    },
    "delegate": {
        "id": 22,
        "url": "https://patches.dpdk.org/api/users/22/?format=api",
        "username": "pdelarag",
        "first_name": "Pablo",
        "last_name": "de Lara Guarch",
        "email": "pablo.de.lara.guarch@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20170317084510.2120-1-akhil.goyal@nxp.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/21833/comments/",
    "check": "warning",
    "checks": "https://patches.dpdk.org/api/patches/21833/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id 778865A8D;\n\tFri, 17 Mar 2017 09:45:34 +0100 (CET)",
            "from NAM01-SN1-obe.outbound.protection.outlook.com\n\t(mail-sn1nam01on0058.outbound.protection.outlook.com [104.47.32.58])\n\tby dpdk.org (Postfix) with ESMTP id 0A95F1396\n\tfor <dev@dpdk.org>; Fri, 17 Mar 2017 09:45:31 +0100 (CET)",
            "from BN6PR03CA0012.namprd03.prod.outlook.com (10.168.230.150) by\n\tBL2PR03MB178.namprd03.prod.outlook.com (10.255.230.150) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n\t15.1.977.11; Fri, 17 Mar 2017 08:45:30 +0000",
            "from BN1BFFO11FD017.protection.gbl (2a01:111:f400:7c10::1:110) by\n\tBN6PR03CA0012.outlook.office365.com (2603:10b6:404:23::22) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.977.11 via\n\tFrontend Transport; Fri, 17 Mar 2017 08:45:30 +0000",
            "from tx30smr01.am.freescale.net (192.88.168.50) by\n\tBN1BFFO11FD017.mail.protection.outlook.com (10.58.144.80) with\n\tMicrosoft SMTP Server (version=TLS1_0,\n\tcipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.977.7\n\tvia Frontend Transport; Fri, 17 Mar 2017 08:45:29 +0000",
            "from netperf2.ap.freescale.net ([10.232.133.164])\n\tby tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id\n\tv2H8jPG8022524; Fri, 17 Mar 2017 01:45:26 -0700"
        ],
        "Authentication-Results": "spf=fail (sender IP is 192.88.168.50)\n\tsmtp.mailfrom=nxp.com; nxp.com; dkim=none (message not signed)\n\theader.d=none;nxp.com; dmarc=fail action=none header.from=nxp.com;",
        "Received-SPF": "Fail (protection.outlook.com: domain of nxp.com does not\n\tdesignate 192.88.168.50 as permitted sender)\n\treceiver=protection.outlook.com; \n\tclient-ip=192.88.168.50; helo=tx30smr01.am.freescale.net;",
        "From": "<akhil.goyal@nxp.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<sergio.gonzalez.monroy@intel.com>, <declan.doherty@intel.com>,\n\t<pablo.de.lara.guarch@intel.com>, <fiona.trahe@intel.com>, Akhil Goyal\n\t<akhil.goyal@nxp.com>",
        "Date": "Fri, 17 Mar 2017 14:15:09 +0530",
        "Message-ID": "<20170317084510.2120-1-akhil.goyal@nxp.com>",
        "X-Mailer": "git-send-email 2.9.3",
        "X-EOPAttributedMessage": "0",
        "X-Matching-Connectors": "131342139300925691;\n\t(91ab9b29-cfa4-454e-5278-08d120cd25b8); ()",
        "X-Forefront-Antispam-Report": "CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI;\n\tSFV:NSPM;\n\tSFS:(10009020)(6009001)(336005)(39840400002)(39850400002)(39450400003)(39400400002)(39410400002)(39380400002)(39860400002)(2980300002)(1110001)(1109001)(339900001)(189002)(199003)(9170700003)(81166006)(8936002)(305945005)(77096006)(1076002)(356003)(6666003)(6916009)(54906002)(5660300001)(86152003)(8656002)(53936002)(86362001)(33646002)(5003940100001)(2351001)(2876002)(2906002)(50986999)(50226002)(47776003)(105606002)(106466001)(104016004)(8676002)(85426001)(189998001)(36756003)(4326008)(48376002)(5890100001)(50466002)(38730400002)(110136004);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:BL2PR03MB178;\n\tH:tx30smr01.am.freescale.net; \n\tFPR:; SPF:Fail; MLV:ovrnspm; MX:1; A:1; PTR:InfoDomainNonexistent;\n\tLANG:en; ",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; BN1BFFO11FD017;\n\t1:MdDOnJ2+qsI4TxcfUqWZFui7hRI4UcCnYMjlhIZg1EMSr9184CBKwf2B+dus3jakBFovhnPfnmXRGAoZ/yAirzKCOzGTxjMQqtr7Oj26DnWQcuhUxV3INvYs58MSiA9NxhRlNsAE1GS9gR06BX1I7MhQk3JbjT2YDjE2/t7Sr/H02hddnRCCSgwZMln4qPI5GqH8LzVcnKvARvs2Fjwpg3jtuPLwCgCgkLw+cAxZPD1K4amWEjyskv/6ZT6Ffi6bRvzeUhOXK8/v0ycwi8Agl1x695zbJDH3w87FmHpZqg0I4IL5IHSbgP2MzFMPj0zGFlqSIYzK8cg1CMlt7l3x2UNVMF3sS/s+ABkJSN0EsCxBnGDjyLy9hxdveocYKZ07iDmsUsws2wSrqYI2NFyJrBdwnKwWo6BS245EI27a1gOwl9NYeWIoV/Zo6vLmth2tz0YySMmzeljfR6Y6jRqY4b4TCgXEUu4QdAbUv4uck9XLfU+tYmXoTcvknRlOSPTRJvJdM0OmkxMN4hs/B4+JNo3ecYjIVbZOb8bFkZJXdvOOJaoYnB5RosExOOtW56m0MBPN70WGFP/jA863JNUt2yaFESCZdzWOhPzQ6K8s99sfpZyQriv0wKviBiFlhV01PvDajn8AM6nGop1tMGJF61Lp6PLHoawDBgOylWZxnzocT6c0AjTb/n7qwY4ArZhpjDA+ySlp6zq3uVa6oDqEwdEJyeJW21xFt/CyrsdWsQZrt2cBTAoVcUmQihNqMRuR",
            "1; BL2PR03MB178;\n\t3:S+OkR/M6f/GDtVpSGccirovwEAv6SfClZb2DDaqP1yIzsk46PaE+rFcemTXamtMep0wW4kCTDt0deZFys1mb++l48tJ1DH3s/L9uE3XR29uyLLNPLcNlfv4zsdlK53Jw2stqB+1h9iPVEF8ELCINfZQOPTUGv1b6h52UyPmiXpI6WvnrjC9qr1ZiNuBnw8uhufb6muGGbIw/MMOWTLeo+H5C9sfMP++4YMqZ8RXE1M+6abi8ZmZuOnYjzgChWiCS0Kuf2u92KLwp8drg12BJiMIOl23ZuB0uHubpRfiGPOtPH/FNvHdcgMH9iO20UDqetoRJhcMjMPUMJmLSuCJULIh7P44WUpcIZ1uJiCsImcyQY9js4sppFtGdNWTRibCL;\n\t25:GUw0AoO1agK8yes1hClh+hQ3vU+WUv2agw3iRJOGX12ZP4MoA34TYLAruayOamn8lNeXF3NYi3JqO3asmVU1sLePqZYzkaVhxWU92tP5ohPIJevQYiu7DrbgA8QHeserF8HiVKUy2e2ch5y/cM2LnTuWeKn4t2npjUfA58lPaNllGT8DLgfIkMeANvfxkZickVaRoe0gpuIUXCS83g50x8yuHXHTMgSAfkzjT73IggoaiCvrRwlhA+7mZPcyJYbItNqigQo27LpEu044y3IThh4x3u+4tY6qZ+RhFbZQ4Rou3hgk6g9hrvCcKCi4p+SCpivoO3b/6c8J93TbMbMG35zrG4jZIHPbA6cK2pLpNcTXi1ORNDvESXjjbZjG5v9g0LapBz+QV0QezU4T9gJURz90njzxwIwvahfj5bpiXZTpC3Y5KBzenxp+NGvDnyv7vkvozamynAFOPeOYury8EQ==",
            "1; BL2PR03MB178;\n\t31:OXqa617u5ziK35c0S2MldCC/eCI/qxP4/tHJ6V6OWBXNV/PwM5mWPPsllQjk0sby4XdJNLHpoUMuhLeHtjQ4xGGy2krp9YDx4GXi4XM61/t80DhC3uqm4rDgWAeIzxsE3XniyzddrDnVRr6EqDxMi17k4W5pC5813rr863OlZ05tojQ+0OCifrJNqs6qP6VSZrcETseU2IiA12+ubPtNYx9eZ0D31o9titWlQcTmHCCSXoYnyWqTyeJZc6/c0nT7fXEcs8id/XhZbLyiQaz3Sw==",
            "1; BL2PR03MB178;\n\t4:Lg8czbbuUe83x0PzS5+7Aavb6LWijkJ3ExtyCMD2ALYa2TxVVk0W84/+KEVHrObL84AltcUh0WAOSpzASNR3QDcSzd5Kyae6QtPOrkpYHb0ct8GRILEYQujO/9o5Drxnjf9OrvzHm2mqGX1ySbk5JtbWZ5N2TyH7TULPoN999nW/k0bQ8dKwYETp0n+rjTMfmMtmveR793//24Un1ozzNB1QTGy3/TM/F5K3YtPGLwULMDbfyVSe70sxZw+nnCfZZ89KHIMGuSthuUli1kieQaQca5DSq7ti8opI3ymB4s634Npe1byPrfrFV255xoj0Y3yFxcI2CS92oSiHkJoH/dysx9SHXbSfXNLr6348w/4jevu6nHCstL5+RKCCQPtElvC/b5DKkMrJY5QivhunTkGK9VyNpTWZefA+2N00tMMXk7tFamyKVU9JWv0dItptJsBdRnqGFUMNuQB5o2vFoo/MprEmMIpNbI43UPqwvfO3jcp4CCIXs0+otxHL2DvVEAti+zK1h1Vo0n/VwDXvtOp68d7TqtrRqfjIIkTijHDCdUiijDnV5Ek7xhXEtQ7HxgMILoHsfV0n+qcEikR1VUMpfORqMuY3GDHPIvMxzppb62qeD0Y31+1mzKELWcTx5JGZkpVkDBzQRJfdJJkKQ5RqSIE2LA8P/tgNRz45qnwN4hGlKK0IbT4fXawmCL/31YbdH5WJNy2F7LYq3w6qEBl/n8L7zYx19nnDStZrv0NJy8YQiKat6NL017HOYU0P",
            "=?us-ascii?Q?1; BL2PR03MB178;\n\t23:59Cjr0Cr7ZrLQbY7dZqHDsWdAn3Df8d3KmZqWLArW1?=\n\tMCSUFl44NkqFXU2plCcmUU+8YboD/E6UZh5Fl8U4B6Hu1rlAS2n98Agj6xOw38uGKrZpXf6XgH7O8S4ns5qZ2fil78tyGIyTezwY9paNd9w/PK+W0EZ9XQqzbXwnm7pazpleHBvgyjYYHVbaS8p1ciHGv520S74ic8HBnJJzDzKEozak9LKKoRVUPWE9ucfzQIzuiDAkLPp752ek+jDg17yMIQFUFJ+y46DNMsBNk6NZvhXgo9o57creSr6GV31pCoWSUOKpIBLwR5FfQbAHKSBaFfB2mz1oHdCZH3eFPj2xRAGd/c+FVKgb1aOejoysG5WMYlTY7Q4eJNbbd1xe0c1UhnSnou3J4OplEbDsuXfbASQhkyNm2iE+ZeT0Q2hcmO0xZIAHzkPU0xIEc/vOLttB/DIt9aYGKznbYHFCieMiad5WLi4sXrKAujz8uex59STjXwMfW6v6AEy40yXqhcotK3LZ4QKoMyFVqMn3RRdUvR6e3hcNhI51AaE+2w7kMMmdq+cGV9E+rocSLI0M+k8h6woP4yB/m5tNmuo0NhYA21V0JoTTaFWgyxFNHJpCFPA61NAmw2zYoY/p0xrzlmv1vqkcU9OXQoM87JXzOfjROx7sMOXdTFZ61jW157jadLUilR/loLW470s6D7nZti3P0tgxJwfu0eZ6BCZp1KL3QZQirYrvjtPznXVq2E1OVYizCUjnKaDK/a6tPFAwxRbsoAcUpXndSNYH/ur/0mRIPDOVqTonxyK1QoOBMhhZ18D8tYb4FxXa6A7aEzf/n0rG57xVygI4Q2i5VaiCZvTVmVzJiaXpQsFQM2tsw97Dkt1NN/Tm2RuKD7PdwrL1GdCmrshscRUZ3s8YXkEDVI8uDQxsp5gSXfpWolVG58XhRaEQLjCSw1Vt9UaZiRDOAXUnDQZZoFa7pTJywIoUYuCXy3qHUDsVoNqyNtFdKdhQtOVF6M4+L6UMWJHg47UECzAhwXGT0ml15G/XNVRQGgOmFbfaXXcgfd9++IdFbCI1MQNTZwpFGdEdJNUPket3vK5J+2I/Y1HrU8E07x3qf1NIPMKAHUjpxoNNWrNQqchoUX+Qdk8evZtjXyhECNFmCEfkAr7j/y5s7gCRQsCBzgciaLS7LRpinM2iRBv0ZlsKJKoO09DwhjLA67pYVneJFx8IcxE8qsB8QPCd82gx1NarB7maeYQX3n8RtLwrH47IY=",
            "1; BL2PR03MB178;\n\t6:btOQHTonBRgC3Bf/Ztp4zdHQBHCz7lZIt5LGHTMldV8rVKa/2POv5iTa4aU7k/2RfnKmTTd/MOKwgax8bpaUtpYei7y/UjysKejypXcvv777N710jWjXP3I2vEqKXW9+I21TU0KWlNF8R9H23SfvxnN5HCtq7G/NvCBpZ/9Om8+lNrp66aeXiphE4xDEFhPh4fqlVpVTZtP1TvEaYjDGzex0QRIrSvHTq7XvXxEwmoWjMjRGOF85qs3AZxSd/PIik0kzfP8c6zaTBSvTaBeg8Wgm+6n/eimLgyV+AhjoMPl7u9NOLaWVS6n1ANf+eqssdSqGm1JDIN6DChwn5rP42N7neBOG/PY+6OkgT8HgV9O6g5ebU07qxwEbs7WH2A9eM+g7its2wO5TT5xAeYsYshOqLA8YGqzaBzjfi8jnTik=;\n\t5:ZEr5KqXeGKpR24FK69u9K+kJYGwhYr0laW3cLjU7HIyLoVU2oEErpBOeW+F29YP69B8bZ7FbkxmPwyPYonTeLs4a/AKuNL7Y8NzokFrs6haf2y0Wdw9vVABLhvXTdJJVHJZs0mCzB5b1bVi0S+gT+x5n0DVRsYF28rqaHhbnCVQUor577ET3eAaG3eA+qza8;\n\t24:25XcZSXB4R6s3g5BolX8YvRQwyb/XYVBjsBGx5384EjiyZh2dDuDdcoIzACdOsoRAGxI+eGsoTPTtdkh564DTJrPrcQ/X/aNgkKEAm56NFQ=",
            "1; BL2PR03MB178;\n\t7:/IbvyedikC0fHa42Xkspx4Pku6OtHpBvevwseNTqWJd7ldNUs8INm1kMjoKRq4v7pLqz6rJ+jLiboygIffmtRPXAyPE8/LxMC5zFN5JpL7UlbRKKFjON6S6i0tby+stG1EeSrbpgzrILoMjtGptC25GL4RXgaM3KhB5JklJIkxRErSMKqorVL/oSzWnUzC3C26TW/lHsjOAFDxcwVqlheiga7tZMZCe5gTx1ob2Dw59jc86+eG+puFGs4qFjjtCL4bJN1gI92/4wDtFTjZz6V15lWE4Zcs0WKRUv0nZhCDti5dce+/NQhKGlG3Kc0vfu7HSba7GLz1kUMyL6zz2nhQ=="
        ],
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-MS-Office365-Filtering-Correlation-Id": "f6f0216f-d91c-471e-ef9c-08d46d11f786",
        "X-Microsoft-Antispam": "UriScan:; BCL:0; PCL:0; RULEID:(22001);\n\tSRVR:BL2PR03MB178; ",
        "X-Microsoft-Antispam-PRVS": "<BL2PR03MB178A3BEC75358792632A04BE6390@BL2PR03MB178.namprd03.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:(185117386973197);",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(6095060)(601004)(2401047)(13024025)(13015025)(5005006)(13018025)(13017025)(8121501046)(13023025)(10201501046)(3002001)(6055026)(6096035)(20161123559025)(20161123556025)(20161123565025)(20161123563025)(20161123561025);\n\tSRVR:BL2PR03MB178; BCL:0; PCL:0; RULEID:(400006); SRVR:BL2PR03MB178; ",
        "X-Forefront-PRVS": "0249EFCB0B",
        "SpamDiagnosticOutput": "1:99",
        "SpamDiagnosticMetadata": "NSPM",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "17 Mar 2017 08:45:29.8897\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-Id": "5afe0b00-7697-4969-b663-5eab37d5f47e",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e;\n\tIp=[192.88.168.50]; \n\tHelo=[tx30smr01.am.freescale.net]",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BL2PR03MB178",
        "Subject": "[dpdk-dev] [PATCH 1/2] cryptodev: add api for attach-detach session\n\twith queue pair",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Akhil Goyal <akhil.goyal@nxp.com>\n\nHW based crypto drivers may only support limited number of\nsessions per queue pair. This requires support for attaching\nsessions to specific queue pair.  New APIs  are introduced to\nattach/detach a session with/from a particular queue pair.\nThese are optional APIs.\n\nApplication can call attach API after creating a session\nand can call detach API before deleting a session.\n\nApplication needs to check if max_nb_sessions_per_qp > 0,\nthen it should call the attach API.\n\nmax_nb_sessions_per_qp = 0 means infinite sessions per qp\n\nSigned-off-by: Akhil Goyal <akhil.goyal@nxp.com>\n---\n lib/librte_cryptodev/rte_cryptodev.c           | 41 ++++++++++++++++++++++++++\n lib/librte_cryptodev/rte_cryptodev.h           | 27 +++++++++++++++++\n lib/librte_cryptodev/rte_cryptodev_pmd.h       | 29 ++++++++++++++++++\n lib/librte_cryptodev/rte_cryptodev_version.map |  2 ++\n 4 files changed, 99 insertions(+)",
    "diff": "diff --git a/lib/librte_cryptodev/rte_cryptodev.c b/lib/librte_cryptodev/rte_cryptodev.c\nindex 0ac23ed..f1eabd0 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.c\n+++ b/lib/librte_cryptodev/rte_cryptodev.c\n@@ -1393,6 +1393,47 @@ rte_cryptodev_sym_session_create(uint8_t dev_id,\n \treturn sess;\n }\n \n+void\n+rte_cryptodev_queue_pair_attach_sym_session(uint16_t qp_id,\n+\t\tstruct rte_cryptodev_sym_session *sess)\n+{\n+\tstruct rte_cryptodev *dev;\n+\n+\tif (!rte_cryptodev_pmd_is_valid_dev(sess->dev_id)) {\n+\t\tCDEV_LOG_ERR(\"Invalid dev_id=%d\", sess->dev_id);\n+\t\treturn;\n+\t}\n+\n+\tdev = &rte_crypto_devices[sess->dev_id];\n+\n+\tRTE_FUNC_PTR_OR_RET(*dev->dev_ops->qp_attach_session);\n+\tif (dev->dev_ops->qp_attach_session(dev, qp_id, sess->_private)) {\n+\t\tCDEV_LOG_ERR(\"dev_id %d failed to attach qp: %d with session\",\n+\t\t\t\tsess->dev_id, qp_id);\n+\t\treturn;\n+\t}\n+}\n+\n+void\n+rte_cryptodev_queue_pair_detach_sym_session(uint16_t qp_id,\n+\t\tstruct rte_cryptodev_sym_session *sess)\n+{\n+\tstruct rte_cryptodev *dev;\n+\n+\tif (!rte_cryptodev_pmd_is_valid_dev(sess->dev_id)) {\n+\t\tCDEV_LOG_ERR(\"Invalid dev_id=%d\", sess->dev_id);\n+\t\treturn;\n+\t}\n+\n+\tdev = &rte_crypto_devices[sess->dev_id];\n+\n+\tRTE_FUNC_PTR_OR_RET(*dev->dev_ops->qp_detach_session);\n+\tif (dev->dev_ops->qp_detach_session(dev, qp_id, sess->_private)) {\n+\t\tCDEV_LOG_ERR(\"dev_id %d failed to detach qp: %d from session\",\n+\t\t\t\tsess->dev_id, qp_id);\n+\t\treturn;\n+\t}\n+}\n struct rte_cryptodev_sym_session *\n rte_cryptodev_sym_session_free(uint8_t dev_id,\n \t\tstruct rte_cryptodev_sym_session *sess)\ndiff --git a/lib/librte_cryptodev/rte_cryptodev.h b/lib/librte_cryptodev/rte_cryptodev.h\nindex d61a43e..b322bea 100644\n--- a/lib/librte_cryptodev/rte_cryptodev.h\n+++ b/lib/librte_cryptodev/rte_cryptodev.h\n@@ -332,6 +332,9 @@ struct rte_cryptodev_info {\n \tstruct {\n \t\tunsigned max_nb_sessions;\n \t\t/**< Maximum number of sessions supported by device. */\n+\t\tunsigned max_nb_sessions_per_qp;\n+\t\t/**< Maximum number of sessions per queue pair.\n+\t\t * Default 0 for infinite sessions. */\n \t} sym;\n };\n \n@@ -915,6 +918,30 @@ extern struct rte_cryptodev_sym_session *\n rte_cryptodev_sym_session_free(uint8_t dev_id,\n \t\tstruct rte_cryptodev_sym_session *session);\n \n+/**\n+ * Attach queue pair with sym session.\n+ *\n+ * @param\tqp_id\t\tQueue pair to which session will be attached.\n+ * @param\tsession\t\tSession pointer previously allocated by\n+ *\t\t\t\t*rte_cryptodev_sym_session_create*.\n+ *\n+ */\n+extern void\n+rte_cryptodev_queue_pair_attach_sym_session(uint16_t qp_id,\n+\t\tstruct rte_cryptodev_sym_session *session);\n+\n+/**\n+ * Detach queue pair with sym session.\n+ *\n+ * @param\tqp_id\t\tQueue pair to which session is attached.\n+ * @param\tsession\t\tSession pointer previously allocated by\n+ *\t\t\t\t*rte_cryptodev_sym_session_create*.\n+ *\n+ */\n+extern void\n+rte_cryptodev_queue_pair_detach_sym_session(uint16_t qp_id,\n+\t\tstruct rte_cryptodev_sym_session *session);\n+\n \n #ifdef __cplusplus\n }\ndiff --git a/lib/librte_cryptodev/rte_cryptodev_pmd.h b/lib/librte_cryptodev/rte_cryptodev_pmd.h\nindex 1a417e2..df92817 100644\n--- a/lib/librte_cryptodev/rte_cryptodev_pmd.h\n+++ b/lib/librte_cryptodev/rte_cryptodev_pmd.h\n@@ -381,6 +381,31 @@ typedef void * (*cryptodev_sym_configure_session_t)(struct rte_cryptodev *dev,\n typedef void (*cryptodev_sym_free_session_t)(struct rte_cryptodev *dev,\n \t\tvoid *session_private);\n \n+/**\n+ * Optional API for drivers to attach sessions with queue pair.\n+ * @param\tdev\t\tCrypto device pointer\n+ * @param\tqp_id\t\tqueue pair id for attaching session\n+ * @param\tpriv_sess       Pointer to cryptodev's private session structure\n+ * @return\n+ *  - Return 0 on success\n+ */\n+typedef int (*cryptodev_sym_queue_pair_attach_session_t)(\n+\t\t  struct rte_cryptodev *dev,\n+\t\t  uint16_t qp_id,\n+\t\t  void *session_private);\n+\n+/**\n+ * Optional API for drivers to detach sessions from queue pair.\n+ * @param\tdev\t\tCrypto device pointer\n+ * @param\tqp_id\t\tqueue pair id for detaching session\n+ * @param\tpriv_sess       Pointer to cryptodev's private session structure\n+ * @return\n+ *  - Return 0 on success\n+ */\n+typedef int (*cryptodev_sym_queue_pair_detach_session_t)(\n+\t\t  struct rte_cryptodev *dev,\n+\t\t  uint16_t qp_id,\n+\t\t  void *session_private);\n \n /** Crypto device operations function pointer table */\n struct rte_cryptodev_ops {\n@@ -415,6 +440,10 @@ struct rte_cryptodev_ops {\n \t/**< Configure a Crypto session. */\n \tcryptodev_sym_free_session_t session_clear;\n \t/**< Clear a Crypto sessions private data. */\n+\tcryptodev_sym_queue_pair_attach_session_t qp_attach_session;\n+\t/**< Attach queue pair with session. */\n+\tcryptodev_sym_queue_pair_attach_session_t qp_detach_session;\n+\t/**< Detach queue pair from session. */\n };\n \n \ndiff --git a/lib/librte_cryptodev/rte_cryptodev_version.map b/lib/librte_cryptodev/rte_cryptodev_version.map\nindex 831a15c..9ac510e 100644\n--- a/lib/librte_cryptodev/rte_cryptodev_version.map\n+++ b/lib/librte_cryptodev/rte_cryptodev_version.map\n@@ -70,5 +70,7 @@ DPDK_17.05 {\n \n \trte_cryptodev_get_auth_algo_enum;\n \trte_cryptodev_get_cipher_algo_enum;\n+\trte_cryptodev_queue_pair_attach_sym_session;\n+\trte_cryptodev_queue_pair_detach_sym_session;\n \n } DPDK_17.02;\n",
    "prefixes": [
        "dpdk-dev",
        "1/2"
    ]
}