get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 105587,
    "url": "http://patchwork.dpdk.org/api/patches/105587/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20220103160149.1715058-4-gakhil@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": "<20220103160149.1715058-4-gakhil@marvell.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220103160149.1715058-4-gakhil@marvell.com",
    "date": "2022-01-03T16:01:47",
    "name": "[3/5] net/cnxk: support IP reassembly mbuf dynfield",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "740fca5f4eedf27b9c4539c459578898e4150570",
    "submitter": {
        "id": 2094,
        "url": "http://patchwork.dpdk.org/api/people/2094/?format=api",
        "name": "Akhil Goyal",
        "email": "gakhil@marvell.com"
    },
    "delegate": {
        "id": 310,
        "url": "http://patchwork.dpdk.org/api/users/310/?format=api",
        "username": "jerin",
        "first_name": "Jerin",
        "last_name": "Jacob",
        "email": "jerinj@marvell.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20220103160149.1715058-4-gakhil@marvell.com/mbox/",
    "series": [
        {
            "id": 21053,
            "url": "http://patchwork.dpdk.org/api/series/21053/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=21053",
            "date": "2022-01-03T16:01:44",
            "name": "net/cnxk: support IP reassembly offload",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/21053/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/105587/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/105587/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 C614CA04A3;\n\tMon,  3 Jan 2022 17:02:41 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id DA3F841156;\n\tMon,  3 Jan 2022 17:02:23 +0100 (CET)",
            "from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com\n [67.231.148.174])\n by mails.dpdk.org (Postfix) with ESMTP id E5E2B4003C\n for <dev@dpdk.org>; Mon,  3 Jan 2022 17:02:21 +0100 (CET)",
            "from pps.filterd (m0045849.ppops.net [127.0.0.1])\n by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id\n 203D4JO3005657;\n Mon, 3 Jan 2022 08:02:20 -0800",
            "from dc5-exch01.marvell.com ([199.233.59.181])\n by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3dbmvswuwm-1\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT);\n Mon, 03 Jan 2022 08:02:20 -0800",
            "from DC5-EXCH02.marvell.com (10.69.176.39) by DC5-EXCH01.marvell.com\n (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2;\n Mon, 3 Jan 2022 08:02:18 -0800",
            "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, 3 Jan 2022 08:02:18 -0800",
            "from localhost.localdomain (unknown [10.28.48.55])\n by maili.marvell.com (Postfix) with ESMTP id CE9A35B6930;\n Mon,  3 Jan 2022 08:02:15 -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=pfpt0220;\n bh=5gnabzA9OAN1OfDQWOS+3SxWoXakmEkMdsbb2G7rsQQ=;\n b=gKVaEYYCBg/0horcn+QIdFenojEF9NAomgbBXT4DFWC+1TbEu61zzjJkZf4b5qGEnLfk\n R0ngqxV5Uht+MqZe71deMM/SbwkceqVvOQG35Aglc5UM13RIyZlOenhQO8OvAa+i2sX3\n QjDjJpigkLAUETzz8mHZCCeBaCUebw4gHsAVohW02WJPGhdn/fTke7j9pEzIES06YXRr\n XyXqyx+XYi4QpfS9iaF0I6+h1cLCcNxh+XUnlb+Igv8P1D8ZX9oylLJylBZZPdVSuA1T\n 0KwE6lIBgkoHlbtBNWEdvqavi3groTblmzsaH5uQsQYGCJ9IteT+GwaKqKNSwHt4gR63 aw==",
        "From": "Akhil Goyal <gakhil@marvell.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<anoobj@marvell.com>, <thomas@monjalon.net>, <ferruh.yigit@intel.com>,\n <andrew.rybchenko@oktetlabs.ru>, <olivier.matz@6wind.com>,\n <rosen.xu@intel.com>, <jerinj@marvell.com>, <vvelumuri@marvell.com>,\n <ndabilpuram@marvell.com>",
        "Subject": "[PATCH 3/5] net/cnxk: support IP reassembly mbuf dynfield",
        "Date": "Mon, 3 Jan 2022 21:31:47 +0530",
        "Message-ID": "<20220103160149.1715058-4-gakhil@marvell.com>",
        "X-Mailer": "git-send-email 2.25.1",
        "In-Reply-To": "<20220103160149.1715058-1-gakhil@marvell.com>",
        "References": "<20220103160149.1715058-1-gakhil@marvell.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Proofpoint-ORIG-GUID": "al4gGLD9nCtq5tRgXtLyf-vKm2A5Np6a",
        "X-Proofpoint-GUID": "al4gGLD9nCtq5tRgXtLyf-vKm2A5Np6a",
        "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.205,Aquarius:18.0.790,Hydra:6.0.425,FMLib:17.11.62.513\n definitions=2022-01-03_06,2022-01-01_01,2021-12-02_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": "From: Vidya Sagar Velumuri <vvelumuri@marvell.com>\n\nRegister the dynamic field for IPsec reassembly.\nAttach the fragments using the dynamic field in case of incomplete\nreassembly\n\nSigned-off-by: Vidya Sagar Velumuri <vvelumuri@marvell.com>\n---\n drivers/net/cnxk/cn10k_ethdev_sec.c |  3 +++\n drivers/net/cnxk/cn10k_rx.h         | 38 +++++++++++++++++++++++------\n 2 files changed, 33 insertions(+), 8 deletions(-)",
    "diff": "diff --git a/drivers/net/cnxk/cn10k_ethdev_sec.c b/drivers/net/cnxk/cn10k_ethdev_sec.c\nindex 235c16840e..f20a111cd9 100644\n--- a/drivers/net/cnxk/cn10k_ethdev_sec.c\n+++ b/drivers/net/cnxk/cn10k_ethdev_sec.c\n@@ -249,6 +249,9 @@ cn10k_eth_sec_session_create(void *device,\n \tif (rte_security_dynfield_register() < 0)\n \t\treturn -ENOTSUP;\n \n+\tif (rte_eth_ip_reass_dynfield_register() < 0)\n+\t\treturn -rte_errno;\n+\n \tif (rte_eal_process_type() == RTE_PROC_PRIMARY)\n \t\troc_nix_inl_cb_register(cn10k_eth_sec_sso_work_cb, NULL);\n \ndiff --git a/drivers/net/cnxk/cn10k_rx.h b/drivers/net/cnxk/cn10k_rx.h\nindex 5c415634a9..0ba60ed22f 100644\n--- a/drivers/net/cnxk/cn10k_rx.h\n+++ b/drivers/net/cnxk/cn10k_rx.h\n@@ -94,7 +94,7 @@ nix_sec_attach_frags(const struct cpt_parse_hdr_s *hdr,\n \tuint32_t offset = hdr->w2.fi_offset;\n \tunion nix_rx_parse_u *frag_rx;\n \tstruct cpt_frag_info_s *finfo;\n-\tstruct rte_mbuf *head, *mbuf;\n+\tstruct rte_mbuf *head, *mbuf, *mbuf_prev;\n \tuint64_t *frag_ptr;\n \tuint16_t frag_size;\n \tuint16_t rlen;\n@@ -115,10 +115,15 @@ nix_sec_attach_frags(const struct cpt_parse_hdr_s *hdr,\n \tmbuf = (struct rte_mbuf *)(wqe - sizeof(struct rte_mbuf));\n \tmbuf->data_len = frag_size;\n \tmbuf->pkt_len = frag_size;\n+\tmbuf->ol_flags |= RTE_MBUF_F_RX_IPREASSEMBLY_INCOMPLETE;\n \thead = mbuf;\n+\tmbuf_prev = mbuf;\n \t/* Update dynamic field with userdata */\n \t*rte_security_dynfield(mbuf) = (uint64_t)inb_priv->userdata;\n \n+\trte_eth_ip_reass_dynfield(head)->nb_frags = hdr->w0.num_frags - 1;\n+\trte_eth_ip_reass_dynfield(head)->next_frag = NULL;\n+\n \t/* Frag-1: */\n \tif (hdr->w0.num_frags > 1) {\n \t\twqe = (uint64_t *)(rte_be_to_cpu_64(hdr->frag1_wqe_ptr));\n@@ -128,13 +133,19 @@ nix_sec_attach_frags(const struct cpt_parse_hdr_s *hdr,\n \t\tfrag_size = rlen + frag_rx->lcptr - frag_rx->laptr;\n \t\tfrag_rx->pkt_lenm1 = frag_size - 1;\n \n-\t\tmbuf->next = (struct rte_mbuf *)(wqe - sizeof(struct rte_mbuf));\n-\t\tmbuf = mbuf->next;\n+\t\tmbuf = (struct rte_mbuf *)(wqe - sizeof(struct rte_mbuf));\n \t\tmbuf->data_len = frag_size;\n \t\tmbuf->pkt_len = frag_size;\n+\t\tmbuf->ol_flags |= RTE_MBUF_F_RX_IPREASSEMBLY_INCOMPLETE;\n \n \t\t/* Update dynamic field with userdata */\n \t\t*rte_security_dynfield(mbuf) = (uint64_t)inb_priv->userdata;\n+\n+\t\trte_eth_ip_reass_dynfield(mbuf)->nb_frags =\n+\t\t\thdr->w0.num_frags - 2;\n+\t\trte_eth_ip_reass_dynfield(mbuf)->next_frag = NULL;\n+\t\trte_eth_ip_reass_dynfield(mbuf_prev)->next_frag = mbuf;\n+\t\tmbuf_prev = mbuf;\n \t}\n \n \t/* Frag-2: */\n@@ -147,13 +158,19 @@ nix_sec_attach_frags(const struct cpt_parse_hdr_s *hdr,\n \t\tfrag_size = rlen + frag_rx->lcptr - frag_rx->laptr;\n \t\tfrag_rx->pkt_lenm1 = frag_size - 1;\n \n-\t\tmbuf->next = (struct rte_mbuf *)(wqe - sizeof(struct rte_mbuf));\n-\t\tmbuf = mbuf->next;\n+\t\tmbuf = (struct rte_mbuf *)(wqe - sizeof(struct rte_mbuf));\n \t\tmbuf->data_len = frag_size;\n \t\tmbuf->pkt_len = frag_size;\n+\t\tmbuf->ol_flags |= RTE_MBUF_F_RX_IPREASSEMBLY_INCOMPLETE;\n \n \t\t/* Update dynamic field with userdata */\n \t\t*rte_security_dynfield(mbuf) = (uint64_t)inb_priv->userdata;\n+\n+\t\trte_eth_ip_reass_dynfield(mbuf)->nb_frags =\n+\t\t\thdr->w0.num_frags - 3;\n+\t\trte_eth_ip_reass_dynfield(mbuf)->next_frag = NULL;\n+\t\trte_eth_ip_reass_dynfield(mbuf_prev)->next_frag = mbuf;\n+\t\tmbuf_prev = mbuf;\n \t}\n \n \t/* Frag-3: */\n@@ -165,16 +182,21 @@ nix_sec_attach_frags(const struct cpt_parse_hdr_s *hdr,\n \t\tfrag_size = rlen + frag_rx->lcptr - frag_rx->laptr;\n \t\tfrag_rx->pkt_lenm1 = frag_size - 1;\n \n-\t\tmbuf->next = (struct rte_mbuf *)(wqe - sizeof(struct rte_mbuf));\n-\t\tmbuf = mbuf->next;\n+\t\tmbuf = (struct rte_mbuf *)(wqe - sizeof(struct rte_mbuf));\n \t\tmbuf->data_len = frag_size;\n \t\tmbuf->pkt_len = frag_size;\n+\t\tmbuf->ol_flags |= RTE_MBUF_F_RX_IPREASSEMBLY_INCOMPLETE;\n \n \t\t/* Update dynamic field with userdata */\n \t\t*rte_security_dynfield(mbuf) = (uint64_t)inb_priv->userdata;\n+\n+\t\trte_eth_ip_reass_dynfield(mbuf)->nb_frags =\n+\t\t\thdr->w0.num_frags - 4;\n+\t\trte_eth_ip_reass_dynfield(mbuf)->next_frag = NULL;\n+\t\trte_eth_ip_reass_dynfield(mbuf_prev)->next_frag = mbuf;\n \t}\n+\thead->next = NULL;\n \n-\tmbuf->next = NULL;\n \treturn head;\n }\n \n",
    "prefixes": [
        "3/5"
    ]
}