Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/105587/?format=api
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" ] }{ "id": 105587, "url": "