get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 64867,
    "url": "http://patches.dpdk.org/api/patches/64867/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1579344553-11428-12-git-send-email-anoobj@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": "<1579344553-11428-12-git-send-email-anoobj@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1579344553-11428-12-git-send-email-anoobj@marvell.com",
    "date": "2020-01-18T10:49:09",
    "name": "[v2,11/15] net/octeontx2: add inline ipsec rx path changes",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "187814da99805df318cfe276d108013b2384a146",
    "submitter": {
        "id": 1205,
        "url": "http://patches.dpdk.org/api/people/1205/?format=api",
        "name": "Anoob Joseph",
        "email": "anoobj@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/1579344553-11428-12-git-send-email-anoobj@marvell.com/mbox/",
    "series": [
        {
            "id": 8203,
            "url": "http://patches.dpdk.org/api/series/8203/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8203",
            "date": "2020-01-18T10:48:58",
            "name": "add OCTEONTX2 inline IPsec support",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/8203/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/64867/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/64867/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 dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id F201BA051C;\n\tSat, 18 Jan 2020 11:51:16 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 8167A44C7;\n\tSat, 18 Jan 2020 11:50:50 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id ACA5429D6\n for <dev@dpdk.org>; Sat, 18 Jan 2020 11:50:48 +0100 (CET)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.16.0.42/8.16.0.42) with SMTP id\n 00IAl1TT010466; Sat, 18 Jan 2020 02:50:48 -0800",
            "from sc-exch03.marvell.com ([199.233.58.183])\n by mx0a-0016f401.pphosted.com with ESMTP id 2xm08v01q0-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Sat, 18 Jan 2020 02:50:47 -0800",
            "from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH03.marvell.com\n (10.93.176.83) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Sat, 18 Jan\n 2020 02:50:46 -0800",
            "from maili.marvell.com (10.93.176.43) by SC-EXCH01.marvell.com\n (10.93.176.81) with Microsoft SMTP Server id 15.0.1497.2 via Frontend\n Transport; Sat, 18 Jan 2020 02:50:46 -0800",
            "from ajoseph83.caveonetworks.com (unknown [10.29.45.60])\n by maili.marvell.com (Postfix) with ESMTP id D3EBD3F703F;\n Sat, 18 Jan 2020 02:50:41 -0800 (PST)"
        ],
        "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=pfpt0818;\n bh=AFZJSfPSqdCIPe2Om7GKMII+oiRb+0eLI90XnQAefQs=;\n b=zLTcN3lSUOS8cRFb6yYlaijvDix13Z4hUBPmwjqOry668GYd3iNPwT+FJuK5lKvotaBf\n fKptvF78qDI9C7h8hOsMYYf8ysLr9F9e8NkpjgfYTBCvVPZnkuMI195G6ouSwQf0RuqK\n aPyiGwqJYs2nA4pTWfo4OJTZYRiArnooopayeVojGcATH7S7IBY9g4hZwWT62MbnFW0h\n jajQj0BvvDNJInnBH18SMqhlL6IeHhI+toII6/EjFDpVLQT2aQUf8EcHTkO6B5Yvi64c\n +aXUYydKVwIL7lyb98+qhL/QZyDoGXF9sAuYlBLY0XMonWxa/9hM8gEEUrngfOEMIe/e NA==",
        "From": "Anoob Joseph <anoobj@marvell.com>",
        "To": "Akhil Goyal <akhil.goyal@nxp.com>, Declan Doherty\n <declan.doherty@intel.com>, Thomas Monjalon <thomas@monjalon.net>",
        "CC": "Tejasree Kondoj <ktejasree@marvell.com>, Jerin Jacob <jerinj@marvell.com>,\n Narayana Prasad <pathreya@marvell.com>, Kiran Kumar K\n <kirankumark@marvell.com>, Nithin Dabilpuram <ndabilpuram@marvell.com>,\n \"Pavan Nikhilesh\" <pbhagavatula@marvell.com>, Ankur Dwivedi\n <adwivedi@marvell.com>, Anoob Joseph <anoobj@marvell.com>,\n Archana Muniganti <marchana@marvell.com>,\n Vamsi Attunuru <vattunuru@marvell.com>, Lukasz\n Bartosik <lbartosik@marvell.com>, <dev@dpdk.org>",
        "Date": "Sat, 18 Jan 2020 16:19:09 +0530",
        "Message-ID": "<1579344553-11428-12-git-send-email-anoobj@marvell.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1579344553-11428-1-git-send-email-anoobj@marvell.com>",
        "References": "<1575806094-28391-1-git-send-email-anoobj@marvell.com>\n <1579344553-11428-1-git-send-email-anoobj@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-Virus-Version": "vendor=fsecure engine=2.50.10434:6.0.138, 18.0.572\n definitions=2020-01-18_02:2020-01-16,\n 2020-01-18 signatures=0",
        "Subject": "[dpdk-dev] [PATCH v2 11/15] net/octeontx2: add inline ipsec rx path\n\tchanges",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Tejasree Kondoj <ktejasree@marvell.com>\n\nAdding post-processing required for inline IPsec inbound packets.\n\nSigned-off-by: Ankur Dwivedi <adwivedi@marvell.com>\nSigned-off-by: Anoob Joseph <anoobj@marvell.com>\nSigned-off-by: Archana Muniganti <marchana@marvell.com>\nSigned-off-by: Tejasree Kondoj <ktejasree@marvell.com>\nSigned-off-by: Vamsi Attunuru <vattunuru@marvell.com>\n---\n drivers/crypto/octeontx2/Makefile        |  1 +\n drivers/crypto/octeontx2/otx2_security.h | 19 +++++++++\n drivers/event/octeontx2/Makefile         |  1 +\n drivers/event/octeontx2/meson.build      |  2 +\n drivers/net/octeontx2/Makefile           |  1 +\n drivers/net/octeontx2/meson.build        |  3 ++\n drivers/net/octeontx2/otx2_rx.h          | 73 ++++++++++++++++++++++++++++++++\n 7 files changed, 100 insertions(+)",
    "diff": "diff --git a/drivers/crypto/octeontx2/Makefile b/drivers/crypto/octeontx2/Makefile\nindex 5966ddc..62b630e 100644\n--- a/drivers/crypto/octeontx2/Makefile\n+++ b/drivers/crypto/octeontx2/Makefile\n@@ -20,6 +20,7 @@ VPATH += $(RTE_SDK)/drivers/crypto/octeontx2\n CFLAGS += -O3\n CFLAGS += -I$(RTE_SDK)/drivers/common/cpt\n CFLAGS += -I$(RTE_SDK)/drivers/common/octeontx2\n+CFLAGS += -I$(RTE_SDK)/drivers/crypto/octeontx2\n CFLAGS += -I$(RTE_SDK)/drivers/mempool/octeontx2\n CFLAGS += -I$(RTE_SDK)/drivers/net/octeontx2\n CFLAGS += -DALLOW_EXPERIMENTAL_API\ndiff --git a/drivers/crypto/octeontx2/otx2_security.h b/drivers/crypto/octeontx2/otx2_security.h\nindex b1a401b..6ec321d 100644\n--- a/drivers/crypto/octeontx2/otx2_security.h\n+++ b/drivers/crypto/octeontx2/otx2_security.h\n@@ -26,6 +26,25 @@ struct otx2_sec_eth_cfg {\n \trte_spinlock_t tx_cpt_lock;\n };\n \n+#define OTX2_SEC_CPT_COMP_GOOD\t0x1\n+#define OTX2_SEC_UC_COMP_GOOD\t0x0\n+#define OTX2_SEC_COMP_GOOD\t(OTX2_SEC_UC_COMP_GOOD << 8 | \\\n+\t\t\t\t OTX2_SEC_CPT_COMP_GOOD)\n+\n+/* CPT Result */\n+struct otx2_cpt_res {\n+\tunion {\n+\t\tstruct {\n+\t\t\tuint64_t compcode:8;\n+\t\t\tuint64_t uc_compcode:8;\n+\t\t\tuint64_t doneint:1;\n+\t\t\tuint64_t reserved_17_63:47;\n+\t\t\tuint64_t reserved_64_127;\n+\t\t};\n+\t\tuint16_t u16[8];\n+\t};\n+};\n+\n /*\n  * Security session for inline IPsec protocol offload. This is private data of\n  * inline capable PMD.\ndiff --git a/drivers/event/octeontx2/Makefile b/drivers/event/octeontx2/Makefile\nindex 6dab69c..bcd22ee 100644\n--- a/drivers/event/octeontx2/Makefile\n+++ b/drivers/event/octeontx2/Makefile\n@@ -11,6 +11,7 @@ LIB = librte_pmd_octeontx2_event.a\n \n CFLAGS += $(WERROR_FLAGS)\n CFLAGS += -I$(RTE_SDK)/drivers/common/octeontx2\n+CFLAGS += -I$(RTE_SDK)/drivers/crypto/octeontx2\n CFLAGS += -I$(RTE_SDK)/drivers/mempool/octeontx2\n CFLAGS += -I$(RTE_SDK)/drivers/event/octeontx2\n CFLAGS += -I$(RTE_SDK)/drivers/net/octeontx2\ndiff --git a/drivers/event/octeontx2/meson.build b/drivers/event/octeontx2/meson.build\nindex 807818b..56febb8 100644\n--- a/drivers/event/octeontx2/meson.build\n+++ b/drivers/event/octeontx2/meson.build\n@@ -32,3 +32,5 @@ foreach flag: extra_flags\n endforeach\n \n deps += ['bus_pci', 'common_octeontx2', 'mempool_octeontx2', 'pmd_octeontx2']\n+\n+includes += include_directories('../../crypto/octeontx2')\ndiff --git a/drivers/net/octeontx2/Makefile b/drivers/net/octeontx2/Makefile\nindex 68f5765..d31ce0a 100644\n--- a/drivers/net/octeontx2/Makefile\n+++ b/drivers/net/octeontx2/Makefile\n@@ -11,6 +11,7 @@ LIB = librte_pmd_octeontx2.a\n \n CFLAGS += $(WERROR_FLAGS)\n CFLAGS += -I$(RTE_SDK)/drivers/common/octeontx2\n+CFLAGS += -I$(RTE_SDK)/drivers/crypto/octeontx2\n CFLAGS += -I$(RTE_SDK)/drivers/mempool/octeontx2\n CFLAGS += -I$(RTE_SDK)/drivers/net/octeontx2\n CFLAGS += -O3\ndiff --git a/drivers/net/octeontx2/meson.build b/drivers/net/octeontx2/meson.build\nindex fad3076..4a06eb2 100644\n--- a/drivers/net/octeontx2/meson.build\n+++ b/drivers/net/octeontx2/meson.build\n@@ -25,6 +25,7 @@ sources = files('otx2_rx.c',\n \t\t)\n \n deps += ['bus_pci', 'common_octeontx2', 'mempool_octeontx2']\n+deps += ['cryptodev', 'security']\n \n cflags += ['-flax-vector-conversions']\n \n@@ -39,3 +40,5 @@ foreach flag: extra_flags\n \t\tcflags += flag\n \tendif\n endforeach\n+\n+includes += include_directories('../../crypto/octeontx2')\ndiff --git a/drivers/net/octeontx2/otx2_rx.h b/drivers/net/octeontx2/otx2_rx.h\nindex 351ad0f..e1715bd 100644\n--- a/drivers/net/octeontx2/otx2_rx.h\n+++ b/drivers/net/octeontx2/otx2_rx.h\n@@ -5,6 +5,12 @@\n #ifndef __OTX2_RX_H__\n #define __OTX2_RX_H__\n \n+#include <rte_ether.h>\n+\n+#include \"otx2_common.h\"\n+#include \"otx2_ipsec_fp.h\"\n+#include \"otx2_security.h\"\n+\n /* Default mark value used when none is provided. */\n #define OTX2_FLOW_ACTION_FLAG_DEFAULT\t0xffff\n \n@@ -31,6 +37,12 @@\n #define NIX_RX_MULTI_SEG_F            BIT(15)\n #define NIX_TIMESYNC_RX_OFFSET\t\t8\n \n+/* Inline IPsec offsets */\n+\n+#define INLINE_INB_RPTR_HDR\t\t16\n+/* nix_cqe_hdr_s + nix_rx_parse_s + nix_rx_sg_s + nix_iova_s */\n+#define INLINE_CPT_RESULT_OFFSET\t80\n+\n struct otx2_timesync_info {\n \tuint64_t\trx_tstamp;\n \trte_iova_t\ttx_tstamp_iova;\n@@ -190,6 +202,60 @@ nix_cqe_xtract_mseg(const struct nix_rx_parse_s *rx,\n \t}\n }\n \n+static __rte_always_inline uint16_t\n+nix_rx_sec_cptres_get(const void *cq)\n+{\n+\tvolatile const struct otx2_cpt_res *res;\n+\n+\tres = (volatile const struct otx2_cpt_res *)((const char *)cq +\n+\t\t\tINLINE_CPT_RESULT_OFFSET);\n+\n+\treturn res->u16[0];\n+}\n+\n+static __rte_always_inline void *\n+nix_rx_sec_sa_get(const void * const lookup_mem, int spi, uint16_t port)\n+{\n+\tconst uint64_t *const *sa_tbl = (const uint64_t * const *)\n+\t\t\t((const uint8_t *)lookup_mem + OTX2_NIX_SA_TBL_START);\n+\n+\treturn (void *)sa_tbl[port][spi];\n+}\n+\n+static __rte_always_inline uint64_t\n+nix_rx_sec_mbuf_update(const struct nix_cqe_hdr_s *cq, struct rte_mbuf *m,\n+\t\t       const void * const lookup_mem)\n+{\n+\tstruct otx2_ipsec_fp_in_sa *sa;\n+\tstruct rte_ipv4_hdr *ipv4;\n+\tuint16_t m_len;\n+\tuint32_t spi;\n+\tchar *data;\n+\n+\tif (unlikely(nix_rx_sec_cptres_get(cq) != OTX2_SEC_COMP_GOOD))\n+\t\treturn PKT_RX_SEC_OFFLOAD | PKT_RX_SEC_OFFLOAD_FAILED;\n+\n+\t/* 20 bits of tag would have the SPI */\n+\tspi = cq->tag & 0xFFFFF;\n+\n+\tsa = nix_rx_sec_sa_get(lookup_mem, spi, m->port);\n+\tm->udata64 = (uint64_t)sa->userdata;\n+\n+\tdata = rte_pktmbuf_mtod(m, char *);\n+\tmemcpy(data + INLINE_INB_RPTR_HDR, data, RTE_ETHER_HDR_LEN);\n+\n+\tm->data_off += INLINE_INB_RPTR_HDR;\n+\n+\tipv4 = (struct rte_ipv4_hdr *)(data + INLINE_INB_RPTR_HDR +\n+\t\t\t\t       RTE_ETHER_HDR_LEN);\n+\n+\tm_len = rte_be_to_cpu_16(ipv4->total_length) + RTE_ETHER_HDR_LEN;\n+\n+\tm->data_len = m_len;\n+\tm->pkt_len = m_len;\n+\treturn PKT_RX_SEC_OFFLOAD;\n+}\n+\n static __rte_always_inline void\n otx2_nix_cqe_to_mbuf(const struct nix_cqe_hdr_s *cq, const uint32_t tag,\n \t\t     struct rte_mbuf *mbuf, const void *lookup_mem,\n@@ -231,6 +297,13 @@ otx2_nix_cqe_to_mbuf(const struct nix_cqe_hdr_s *cq, const uint32_t tag,\n \tif (flag & NIX_RX_OFFLOAD_MARK_UPDATE_F)\n \t\tol_flags = nix_update_match_id(rx->match_id, ol_flags, mbuf);\n \n+\tif (cq->cqe_type == NIX_XQE_TYPE_RX_IPSECH) {\n+\t\t*(uint64_t *)(&mbuf->rearm_data) = val;\n+\t\tol_flags |= nix_rx_sec_mbuf_update(cq, mbuf, lookup_mem);\n+\t\tmbuf->ol_flags = ol_flags;\n+\t\treturn;\n+\t}\n+\n \tmbuf->ol_flags = ol_flags;\n \t*(uint64_t *)(&mbuf->rearm_data) = val;\n \tmbuf->pkt_len = len;\n",
    "prefixes": [
        "v2",
        "11/15"
    ]
}