get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 96770,
    "url": "http://patchwork.dpdk.org/api/patches/96770/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20210810060719.18553-3-ndabilpuram@marvell.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20210810060719.18553-3-ndabilpuram@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210810060719.18553-3-ndabilpuram@marvell.com",
    "date": "2021-08-10T06:07:18",
    "name": "[v3,2/3] security: add option for faster udata or mdata access",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "45c6716c005fd25b477773862e5aa316b23d94f0",
    "submitter": {
        "id": 1202,
        "url": "http://patchwork.dpdk.org/api/people/1202/?format=api",
        "name": "Nithin Dabilpuram",
        "email": "ndabilpuram@marvell.com"
    },
    "delegate": {
        "id": 6690,
        "url": "http://patchwork.dpdk.org/api/users/6690/?format=api",
        "username": "akhil",
        "first_name": "akhil",
        "last_name": "goyal",
        "email": "gakhil@marvell.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20210810060719.18553-3-ndabilpuram@marvell.com/mbox/",
    "series": [
        {
            "id": 18243,
            "url": "http://patchwork.dpdk.org/api/series/18243/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=18243",
            "date": "2021-08-10T06:07:16",
            "name": "security: Improve inline fast path routines",
            "version": 3,
            "mbox": "http://patchwork.dpdk.org/series/18243/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/96770/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/96770/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 3DE5EA0C53;\n\tTue, 10 Aug 2021 08:07:47 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 58505411B2;\n\tTue, 10 Aug 2021 08:07:41 +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 A7E1E411B0\n for <dev@dpdk.org>; Tue, 10 Aug 2021 08:07:40 +0200 (CEST)",
            "from pps.filterd (m0045851.ppops.net [127.0.0.1])\n by mx0b-0016f401.pphosted.com (8.16.0.43/8.16.0.43) with SMTP id\n 17A62FrX002236; Mon, 9 Aug 2021 23:07:39 -0700",
            "from dc5-exch02.marvell.com ([199.233.59.182])\n by mx0b-0016f401.pphosted.com with ESMTP id 3aaxfkkpkh-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Mon, 09 Aug 2021 23:07:39 -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 Mon, 9 Aug 2021 23:07:37 -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; Mon, 9 Aug 2021 23:07:37 -0700",
            "from hyd1588t430.marvell.com (unknown [10.29.52.204])\n by maili.marvell.com (Postfix) with ESMTP id E00EA3F70A2;\n Mon,  9 Aug 2021 23:07:33 -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-type; s=pfpt0220; bh=Qn9fbwqF+2kiqSXWQIoR7eOxRQQqxnuVhYoHNKoZsp0=;\n b=X4ZvfBmBZgHrtztPFQnOQdvo/WVNztm/AoYiEOevCP71xCJh8CH/yHyduM8Caxp0sxNz\n 2QF9qFCywjz4W6/wXM4sV90fNHXKFCLxJtTt22P3LfQOcsBH+isBcKm/Gzuw1Qmtue8k\n csj0qbV/xFX6c0KdhZP4j7HbuVl/qpDJ7JViFYfk6Lhat5XasjLpUARTgIg04AyHz1y0\n tGMCarxWV2QNS2XO6URWKdJGE/JQXnqqd1TbHbUboku4EL9W45gVKwixsRIaCl/fukUZ\n R1vdjy7R0L6BfSsfFF0tnsVMPJ0gQiI6D0Q660hq9u5DOxjnyS4d6mJ6jVosvD7eYx3M ow==",
        "From": "Nithin Dabilpuram <ndabilpuram@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<jerinj@marvell.com>, <gakhil@marvell.com>, <hemant.agrawal@nxp.com>,\n <thomas@monjalon.net>, <g.singh@nxp.com>, <ferruh.yigit@intel.com>,\n <roy.fan.zhang@intel.com>, <olivier.matz@6wind.com>,\n <declan.doherty@intel.com>, <radu.nicolau@intel.com>,\n <jiawenwu@trustnetic.com>, <konstantin.ananyev@intel.com>,\n Nithin Dabilpuram <ndabilpuram@marvell.com>",
        "Date": "Tue, 10 Aug 2021 11:37:18 +0530",
        "Message-ID": "<20210810060719.18553-3-ndabilpuram@marvell.com>",
        "X-Mailer": "git-send-email 2.8.4",
        "In-Reply-To": "<20210810060719.18553-1-ndabilpuram@marvell.com>",
        "References": "<20210624102848.3878788-1-gakhil@marvell.com>\n <20210810060719.18553-1-ndabilpuram@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "RUiHGhrFyP3uxy8fXcbL-wMSaGGBMS-J",
        "X-Proofpoint-GUID": "RUiHGhrFyP3uxy8fXcbL-wMSaGGBMS-J",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10434:6.0.391, 18.0.790\n definitions=2021-08-10_02:2021-08-06,\n 2021-08-10 signatures=0",
        "Subject": "[dpdk-dev] [PATCH v3 2/3] security: add option for faster udata or\n mdata access",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Currently rte_security_set_pkt_metadata() and rte_security_get_userdata()\nmethods to set pkt metadata on Inline outbound and get userdata\nafter Inline inbound processing is always driver specific callbacks.\n\nFor drivers that do not have much to do in the callbacks but just\nto update metadata in rte_security dynamic field and get userdata\nfrom rte_security dynamic field, having to just to PMD specific\ncallback is costly per packet operation. This patch provides\na mechanism to do the same in inline function and avoid function\npointer jump if a driver supports the same.\n\nSigned-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com>\n---\n lib/security/rte_security.c |  8 ++++----\n lib/security/rte_security.h | 49 +++++++++++++++++++++++++++++++++++++++++----\n lib/security/version.map    |  2 ++\n 3 files changed, 51 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/lib/security/rte_security.c b/lib/security/rte_security.c\nindex e8116d5..fe81ed3 100644\n--- a/lib/security/rte_security.c\n+++ b/lib/security/rte_security.c\n@@ -122,9 +122,9 @@ rte_security_session_destroy(struct rte_security_ctx *instance,\n }\n \n int\n-rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n-\t\t\t      struct rte_security_session *sess,\n-\t\t\t      struct rte_mbuf *m, void *params)\n+__rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n+\t\t\t\tstruct rte_security_session *sess,\n+\t\t\t\tstruct rte_mbuf *m, void *params)\n {\n #ifdef RTE_DEBUG\n \tRTE_PTR_OR_ERR_RET(sess, -EINVAL);\n@@ -137,7 +137,7 @@ rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n }\n \n void *\n-rte_security_get_userdata(struct rte_security_ctx *instance, uint64_t md)\n+__rte_security_get_userdata(struct rte_security_ctx *instance, uint64_t md)\n {\n \tvoid *userdata = NULL;\n \ndiff --git a/lib/security/rte_security.h b/lib/security/rte_security.h\nindex 88d31de..06267f6 100644\n--- a/lib/security/rte_security.h\n+++ b/lib/security/rte_security.h\n@@ -71,8 +71,18 @@ struct rte_security_ctx {\n \t/**< Pointer to security ops for the device */\n \tuint16_t sess_cnt;\n \t/**< Number of sessions attached to this context */\n+\tuint32_t flags;\n+\t/**< Flags for security context */\n };\n \n+#define RTE_SEC_CTX_F_FAST_SET_MDATA 0x00000001\n+/**< Driver uses fast metadata update without using driver specific callback */\n+\n+#define RTE_SEC_CTX_F_FAST_GET_UDATA 0x00000002\n+/**< Driver provides udata using fast method without using driver specific\n+ * callback.\n+ */\n+\n /**\n  * IPSEC tunnel parameters\n  *\n@@ -493,6 +503,12 @@ static inline bool rte_security_dynfield_is_registered(void)\n \treturn rte_security_dynfield_offset >= 0;\n }\n \n+/** Function to call PMD specific function pointer set_pkt_metadata() */\n+__rte_experimental\n+extern int __rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n+\t\t\t\t\t   struct rte_security_session *sess,\n+\t\t\t\t\t   struct rte_mbuf *m, void *params);\n+\n /**\n  *  Updates the buffer with device-specific defined metadata\n  *\n@@ -506,10 +522,27 @@ static inline bool rte_security_dynfield_is_registered(void)\n  *  - On success, zero.\n  *  - On failure, a negative value.\n  */\n-int\n+static inline int\n rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n \t\t\t      struct rte_security_session *sess,\n-\t\t\t      struct rte_mbuf *mb, void *params);\n+\t\t\t      struct rte_mbuf *mb, void *params)\n+{\n+\t/* Fast Path */\n+\tif (instance->flags & RTE_SEC_CTX_F_FAST_SET_MDATA) {\n+\t\t*rte_security_dynfield(mb) =\n+\t\t\t(rte_security_dynfield_t)(sess->sess_private_data);\n+\t\treturn 0;\n+\t}\n+\n+\t/* Jump to PMD specific function pointer */\n+\treturn __rte_security_set_pkt_metadata(instance->device, sess, mb,\n+\t\t\t\t\t       params);\n+}\n+\n+/** Function to call PMD specific function pointer get_userdata() */\n+__rte_experimental\n+extern void *__rte_security_get_userdata(struct rte_security_ctx *instance,\n+\t\t\t\t\t uint64_t md);\n \n /**\n  * Get userdata associated with the security session. Device specific metadata\n@@ -529,8 +562,16 @@ rte_security_set_pkt_metadata(struct rte_security_ctx *instance,\n  *  - On failure, NULL\n  */\n __rte_experimental\n-void *\n-rte_security_get_userdata(struct rte_security_ctx *instance, uint64_t md);\n+static inline void *\n+rte_security_get_userdata(struct rte_security_ctx *instance, uint64_t md)\n+{\n+\t/* Fast Path */\n+\tif (instance->flags & RTE_SEC_CTX_F_FAST_GET_UDATA)\n+\t\treturn (void *)(uintptr_t)md;\n+\n+\t/* Jump to PMD specific function pointer */\n+\treturn __rte_security_get_userdata(instance, md);\n+}\n \n /**\n  * Attach a session to a symmetric crypto operation\ndiff --git a/lib/security/version.map b/lib/security/version.map\nindex 2277555..e1c8148 100644\n--- a/lib/security/version.map\n+++ b/lib/security/version.map\n@@ -20,4 +20,6 @@ EXPERIMENTAL {\n \trte_security_get_userdata;\n \trte_security_session_stats_get;\n \trte_security_session_update;\n+\t__rte_security_set_pkt_metadata;\n+\t__rte_security_get_userdata;\n };\n",
    "prefixes": [
        "v3",
        "2/3"
    ]
}