From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id A944B45610 for ; Fri, 12 Jul 2024 12:50:09 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A31BB402E5; Fri, 12 Jul 2024 12:50:09 +0200 (CEST) Received: from NAM10-DM6-obe.outbound.protection.outlook.com (mail-dm6nam10on2048.outbound.protection.outlook.com [40.107.93.48]) by mails.dpdk.org (Postfix) with ESMTP id 3718A40261 for ; Fri, 12 Jul 2024 12:50:08 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=xNJHDfx3vDtFUExuOIvFn39pM8vIFBkxP6iIBT2SGApfqBugMTUxagSwAm6sForUghvg4HJ9fYlOX3hCH15H9lB8abzXlqb+31b7okbHWyWEcACvvt4AGauLGgxGqsSD2zF/NqskbHr7y0hezVlxWntvlbJZoBdAaVe3cwMEt25gyKSaMD7yHMyoiRE252tREDwy1us82uboRXTibXR9eJIa1MXRAwGRKYEDkr24RqFlD84xaSW/SZP4yh1Pqd1Zz2W/iyADsrb+vFYuC0itBh1Rd/ZqdbEMXg5EvogW237RYrmyCAiWwq7M2RhB83CZOEZIARBVzii7HrHLJxf+Mw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+tW+VDN5XpcOKL1JVb6j+pxeDab8+1kJxW+/mow+7kM=; b=Fv+xQ81hUWZiRjHe3IJ2WAFHN8pNEAx0/gliei3MsHG8rHjnfPNefVhoNC9jSk1NP4O1FUAi5Ix4VGtWQPZWU9ZmWfol4eFNWa9EBXJz5gTmU6F/uFgYkYXH2OcF/MP+b2V77JqAqbThTaaxnKpnhX/EchWoZVzFGzX888k0uDPEltm0qV24LCUeHFBKZ09vu9rd7/e454ssdBaDwEi612uDruiU2UEUmYqmSkxb5pbY8rUQhCGncMkgz4e3uSVzCz1db3+bDKBDm6AewtXZWkdrtkmWWmbFWtNXG/q5s4Fp2lpXiOwImEQ+Ml4b+Ja4xx2u4vT6Zzk7mb9zoFyARw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 216.228.117.161) smtp.rcpttodomain=redhat.com smtp.mailfrom=nvidia.com; dmarc=pass (p=reject sp=reject pct=100) action=none header.from=nvidia.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+tW+VDN5XpcOKL1JVb6j+pxeDab8+1kJxW+/mow+7kM=; b=T2hrTJ5p4AGistJIwv67bL/C6p8oxncPT3FMmtZKGk9czEYEJ6JPKsrZGOIe9l2xCLkfByVdqAJYdxggnMLMcUirFWXIzI38BHcEWSurAHHuDeVSFr0m7KP9n6IDsl+ki++yNaJMGS3KcJ7sOnqXtQ7RKXlEM/WkFt2AYM0kcX8gLnrI6ALCPy3YdjnHnOgXCLzJhXSTzeOQw5Hgh2KLEdDq0ioOKe1ijg/wfiuksRc5lP+SB3HA4OCebG5xjcQfifdoj6BvWacAuGcvUyH5YeoTPJWhiVkf6tQhspMTLQsu2ICSBafqokQJcHU9I9ASO22c4y8vTlac52kwYlBngQ== Received: from DM6PR10CA0001.namprd10.prod.outlook.com (2603:10b6:5:60::14) by IA0PR12MB8352.namprd12.prod.outlook.com (2603:10b6:208:3dd::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.21; Fri, 12 Jul 2024 10:50:05 +0000 Received: from DS1PEPF00017099.namprd05.prod.outlook.com (2603:10b6:5:60:cafe::d4) by DM6PR10CA0001.outlook.office365.com (2603:10b6:5:60::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.23 via Frontend Transport; Fri, 12 Jul 2024 10:50:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 216.228.117.161) smtp.mailfrom=nvidia.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=nvidia.com; Received-SPF: Pass (protection.outlook.com: domain of nvidia.com designates 216.228.117.161 as permitted sender) receiver=protection.outlook.com; client-ip=216.228.117.161; helo=mail.nvidia.com; pr=C Received: from mail.nvidia.com (216.228.117.161) by DS1PEPF00017099.mail.protection.outlook.com (10.167.18.103) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7762.17 via Frontend Transport; Fri, 12 Jul 2024 10:50:04 +0000 Received: from rnnvmail201.nvidia.com (10.129.68.8) by mail.nvidia.com (10.129.200.67) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Fri, 12 Jul 2024 03:49:52 -0700 Received: from nvidia.com (10.126.231.35) by rnnvmail201.nvidia.com (10.129.68.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.4; Fri, 12 Jul 2024 03:49:50 -0700 From: Xueming Li To: David Marchand CC: Ali Alnubani , dpdk stable Subject: patch 'net: fix outer UDP checksum in Intel prepare helper' has been queued to stable release 23.11.2 Date: Fri, 12 Jul 2024 18:44:30 +0800 Message-ID: <20240712104528.308638-45-xuemingl@nvidia.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240712104528.308638-1-xuemingl@nvidia.com> References: <20240712104528.308638-1-xuemingl@nvidia.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Content-Type: text/plain X-Originating-IP: [10.126.231.35] X-ClientProxiedBy: rnnvmail203.nvidia.com (10.129.68.9) To rnnvmail201.nvidia.com (10.129.68.8) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS1PEPF00017099:EE_|IA0PR12MB8352:EE_ X-MS-Office365-Filtering-Correlation-Id: 8412c509-c40e-44ad-1f18-08dca2606396 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|376014|82310400026|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?wGUg166/6NL568/E3a0kLgOzTCk+mBnGNmZamSOV1svkHaRa+Cd2lHsRlJNx?= =?us-ascii?Q?yrn3qnm2n3kWuaP0OLrc/iziXBViMQiC+syD0uu8Ke26Yq3Uz7hnoKt7wZ4B?= =?us-ascii?Q?IoPw6QCDa0IrseobaKk2QMD/JxnnGj8vrrWvHoIKyCoo+Mj/ITGh4bH2mveJ?= =?us-ascii?Q?tkASVJfMj2vPLiwmniOeGkfslwKZE+/ZBWtMHwyYbkxlK8ze9sVC78ipgGEa?= =?us-ascii?Q?Kx8mfHzZOpiuNJYKrWdtfaOtFnSk/lNz+rasTQ0sMKznXIzh3mC7l4XSMQN9?= =?us-ascii?Q?IXSk7APMPaGHrMK9efWjDVQT+/dhwG6m00n4RwKr2aPeQ9ZtfSs6+PATGuZC?= =?us-ascii?Q?aqLfXk8if3LgLqzjjWYT9TERR07kCCdLdz1NfSOY49U5NC47WAejI1xa7jKr?= =?us-ascii?Q?gRiurljL6ZJoqQNUw88LkC+d8qxkMEYs0BQ+Vw/j3EWJUPVHBYhhaPwvkZ0r?= =?us-ascii?Q?+W1qKduLi25DhFAFUVc7sNimKwZDdCD9MNKBmdYWpvBC38bi6WNgt9h0HK+p?= =?us-ascii?Q?xK1s6/0qa64XAQy+ydU3NQSkABBM+J5AlgOe36q7AM5ExRlXjlL3SLIccR4C?= =?us-ascii?Q?MY2l4zeqsM51tEB0z0g+H4jyUELLhJVkuwi39gAtjgjp1AM74cQRpU60HsSG?= =?us-ascii?Q?0TZODXYTVGEXd3QF3u24AQwX8TOYzR0WFa7ocT7auWmvGFStZohakb3pgxXJ?= =?us-ascii?Q?mthbLzkfAiczJYuX72yrnl0bP1JutIbPfFevafZNYr5cqF53FTmeAOvP3Z/+?= =?us-ascii?Q?hAAQJgObtzQVHrwqyLzjj4ydhgP8uAbUaohhlcS8W5GCcIMMQqYgmDz3z5fh?= =?us-ascii?Q?ns7hwulpjrz2stynVfJTdvwvUgTDBYQjLs1fib6Ux1PqQ7kfADoO9jzmjZOb?= =?us-ascii?Q?6NJxMMHQApnQCi/2orJhf8k+E8GhZp5j6KvXqoFqdBmJZZ1VabwxLdk8yRVv?= =?us-ascii?Q?UDkh3/jx650Nl3pEVjgaVMON1aRaq5qabUXw7CeJmb+J4iaRz03voL4XON5+?= =?us-ascii?Q?bLyWoT7OovXH4NbPpoi0Mn/pPFGSV2yJON6FAW0d1u54mRSQ12L84fOyoXGl?= =?us-ascii?Q?VsUTFoZAEeVEqovG5qBoRvU5GcnBd5ic7aulQ1s+CMoPkIRgABDRaE31C18y?= =?us-ascii?Q?Uo1Rl5ETySXXMT4ZFGdQmQArRuayl0Ro92uKf7BolNYbFpNF0j4BIdzN19iK?= =?us-ascii?Q?0Ef4c2tOfygF8ND0UZuuqPDUs1fEUePNwAneCSn2Zbs5yAVUsf/M5ATRrmE2?= =?us-ascii?Q?4hDZYRn9YYRujJUUpJjK6fjqU8a1L7vk4ox+G8m90ltkxhAHGO6YkMZ8ovIS?= =?us-ascii?Q?TzPS6EZ2VP3luEpJ50+80eDS0//StkhXuBqx5RWKKRdIPKqN+S9myEBz09NW?= =?us-ascii?Q?8nvIgr8evQJByHC/YJD1DjfpRJxcC1QF4xrF19OZ0Pq2jktxkbRL3pR7WhtD?= =?us-ascii?Q?QPyPpN//t1BVg/NaMByuhihoNARK2mEc?= X-Forefront-Antispam-Report: CIP:216.228.117.161; CTRY:US; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:dc6edge2.nvidia.com; CAT:NONE; SFS:(13230040)(376014)(82310400026)(36860700013)(1800799024); DIR:OUT; SFP:1101; X-OriginatorOrg: Nvidia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jul 2024 10:50:04.9704 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 8412c509-c40e-44ad-1f18-08dca2606396 X-MS-Exchange-CrossTenant-Id: 43083d15-7273-40c1-b7db-39efd9ccc17a X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.117.161]; Helo=[mail.nvidia.com] X-MS-Exchange-CrossTenant-AuthSource: DS1PEPF00017099.namprd05.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA0PR12MB8352 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 23.11.2 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 07/14/24. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://git.dpdk.org/dpdk-stable/log/?h=23.11-staging This queued commit can be viewed at: https://git.dpdk.org/dpdk-stable/commit/?h=23.11-staging&id=700c66d35f34838806f02dfd1056b7cecfb598c1 Thanks. Xueming Li --- >From 700c66d35f34838806f02dfd1056b7cecfb598c1 Mon Sep 17 00:00:00 2001 From: David Marchand Date: Thu, 18 Apr 2024 10:20:18 +0200 Subject: [PATCH] net: fix outer UDP checksum in Intel prepare helper Cc: Xueming Li [ upstream commit f876dbef080932dbeb1de075d7ca3cbe2ed6d7eb ] Setting a pseudo header checksum in the outer UDP checksum is a Intel (and some other vendors) requirement. Applications (like OVS) requesting outer UDP checksum without doing this extra setup have broken outer UDP checksums. Move this specific setup from testpmd to the "common" helper rte_net_intel_cksum_flags_prepare(). net/hns3 can then be adjusted. Bugzilla ID: 1406 Fixes: d8e5e69f3a9b ("app/testpmd: add GTP parsing and Tx checksum offload") Signed-off-by: David Marchand Tested-by: Ali Alnubani --- app/test-pmd/csumonly.c | 11 +---- drivers/net/hns3/hns3_rxtx.c | 93 ++++++++++-------------------------- lib/net/rte_net.h | 18 ++++++- 3 files changed, 44 insertions(+), 78 deletions(-) diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c index f5125c2788..71add6ca47 100644 --- a/app/test-pmd/csumonly.c +++ b/app/test-pmd/csumonly.c @@ -577,8 +577,6 @@ static uint64_t process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, uint64_t tx_offloads, int tso_enabled, struct rte_mbuf *m) { - struct rte_ipv4_hdr *ipv4_hdr = outer_l3_hdr; - struct rte_ipv6_hdr *ipv6_hdr = outer_l3_hdr; struct rte_udp_hdr *udp_hdr; uint64_t ol_flags = 0; @@ -588,6 +586,8 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, if (tx_offloads & RTE_ETH_TX_OFFLOAD_OUTER_IPV4_CKSUM) { ol_flags |= RTE_MBUF_F_TX_OUTER_IP_CKSUM; } else { + struct rte_ipv4_hdr *ipv4_hdr = outer_l3_hdr; + ipv4_hdr->hdr_checksum = 0; ipv4_hdr->hdr_checksum = rte_ipv4_cksum(ipv4_hdr); } @@ -608,13 +608,6 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info, /* Skip SW outer UDP checksum generation if HW supports it */ if (tx_offloads & RTE_ETH_TX_OFFLOAD_OUTER_UDP_CKSUM) { - if (info->outer_ethertype == _htons(RTE_ETHER_TYPE_IPV4)) - udp_hdr->dgram_cksum - = rte_ipv4_phdr_cksum(ipv4_hdr, ol_flags); - else - udp_hdr->dgram_cksum - = rte_ipv6_phdr_cksum(ipv6_hdr, ol_flags); - ol_flags |= RTE_MBUF_F_TX_OUTER_UDP_CKSUM; return ol_flags; } diff --git a/drivers/net/hns3/hns3_rxtx.c b/drivers/net/hns3/hns3_rxtx.c index d20e03b103..75ea6bdca9 100644 --- a/drivers/net/hns3/hns3_rxtx.c +++ b/drivers/net/hns3/hns3_rxtx.c @@ -3628,58 +3628,6 @@ hns3_pkt_need_linearized(struct rte_mbuf *tx_pkts, uint32_t bd_num, return false; } -static bool -hns3_outer_ipv4_cksum_prepared(struct rte_mbuf *m, uint64_t ol_flags, - uint32_t *l4_proto) -{ - struct rte_ipv4_hdr *ipv4_hdr; - ipv4_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ipv4_hdr *, - m->outer_l2_len); - if (ol_flags & RTE_MBUF_F_TX_OUTER_IP_CKSUM) - ipv4_hdr->hdr_checksum = 0; - if (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM) { - struct rte_udp_hdr *udp_hdr; - /* - * If OUTER_UDP_CKSUM is support, HW can calculate the pseudo - * header for TSO packets - */ - if (ol_flags & RTE_MBUF_F_TX_TCP_SEG) - return true; - udp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_udp_hdr *, - m->outer_l2_len + m->outer_l3_len); - udp_hdr->dgram_cksum = rte_ipv4_phdr_cksum(ipv4_hdr, ol_flags); - - return true; - } - *l4_proto = ipv4_hdr->next_proto_id; - return false; -} - -static bool -hns3_outer_ipv6_cksum_prepared(struct rte_mbuf *m, uint64_t ol_flags, - uint32_t *l4_proto) -{ - struct rte_ipv6_hdr *ipv6_hdr; - ipv6_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ipv6_hdr *, - m->outer_l2_len); - if (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM) { - struct rte_udp_hdr *udp_hdr; - /* - * If OUTER_UDP_CKSUM is support, HW can calculate the pseudo - * header for TSO packets - */ - if (ol_flags & RTE_MBUF_F_TX_TCP_SEG) - return true; - udp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_udp_hdr *, - m->outer_l2_len + m->outer_l3_len); - udp_hdr->dgram_cksum = rte_ipv6_phdr_cksum(ipv6_hdr, ol_flags); - - return true; - } - *l4_proto = ipv6_hdr->proto; - return false; -} - static void hns3_outer_header_cksum_prepare(struct rte_mbuf *m) { @@ -3687,29 +3635,38 @@ hns3_outer_header_cksum_prepare(struct rte_mbuf *m) uint32_t paylen, hdr_len, l4_proto; struct rte_udp_hdr *udp_hdr; - if (!(ol_flags & (RTE_MBUF_F_TX_OUTER_IPV4 | RTE_MBUF_F_TX_OUTER_IPV6))) + if (!(ol_flags & (RTE_MBUF_F_TX_OUTER_IPV4 | RTE_MBUF_F_TX_OUTER_IPV6)) && + ((ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM) || + !(ol_flags & RTE_MBUF_F_TX_TCP_SEG))) return; if (ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) { - if (hns3_outer_ipv4_cksum_prepared(m, ol_flags, &l4_proto)) - return; + struct rte_ipv4_hdr *ipv4_hdr; + + ipv4_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ipv4_hdr *, + m->outer_l2_len); + l4_proto = ipv4_hdr->next_proto_id; } else { - if (hns3_outer_ipv6_cksum_prepared(m, ol_flags, &l4_proto)) - return; + struct rte_ipv6_hdr *ipv6_hdr; + + ipv6_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ipv6_hdr *, + m->outer_l2_len); + l4_proto = ipv6_hdr->proto; } + if (l4_proto != IPPROTO_UDP) + return; + /* driver should ensure the outer udp cksum is 0 for TUNNEL TSO */ - if (l4_proto == IPPROTO_UDP && (ol_flags & RTE_MBUF_F_TX_TCP_SEG)) { - hdr_len = m->l2_len + m->l3_len + m->l4_len; - hdr_len += m->outer_l2_len + m->outer_l3_len; - paylen = m->pkt_len - hdr_len; - if (paylen <= m->tso_segsz) - return; - udp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_udp_hdr *, - m->outer_l2_len + - m->outer_l3_len); - udp_hdr->dgram_cksum = 0; - } + hdr_len = m->l2_len + m->l3_len + m->l4_len; + hdr_len += m->outer_l2_len + m->outer_l3_len; + paylen = m->pkt_len - hdr_len; + if (paylen <= m->tso_segsz) + return; + udp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_udp_hdr *, + m->outer_l2_len + + m->outer_l3_len); + udp_hdr->dgram_cksum = 0; } static int diff --git a/lib/net/rte_net.h b/lib/net/rte_net.h index ef3ff4c6fd..efd9d5f5ee 100644 --- a/lib/net/rte_net.h +++ b/lib/net/rte_net.h @@ -121,7 +121,8 @@ rte_net_intel_cksum_flags_prepare(struct rte_mbuf *m, uint64_t ol_flags) * no offloads are requested. */ if (!(ol_flags & (RTE_MBUF_F_TX_IP_CKSUM | RTE_MBUF_F_TX_L4_MASK | RTE_MBUF_F_TX_TCP_SEG | - RTE_MBUF_F_TX_UDP_SEG | RTE_MBUF_F_TX_OUTER_IP_CKSUM))) + RTE_MBUF_F_TX_UDP_SEG | RTE_MBUF_F_TX_OUTER_IP_CKSUM | + RTE_MBUF_F_TX_OUTER_UDP_CKSUM))) return 0; if (ol_flags & (RTE_MBUF_F_TX_OUTER_IPV4 | RTE_MBUF_F_TX_OUTER_IPV6)) { @@ -135,6 +136,21 @@ rte_net_intel_cksum_flags_prepare(struct rte_mbuf *m, uint64_t ol_flags) struct rte_ipv4_hdr *, m->outer_l2_len); ipv4_hdr->hdr_checksum = 0; } + if (ol_flags & RTE_MBUF_F_TX_OUTER_UDP_CKSUM) { + if (ol_flags & RTE_MBUF_F_TX_OUTER_IPV4) { + ipv4_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ipv4_hdr *, + m->outer_l2_len); + udp_hdr = (struct rte_udp_hdr *)((char *)ipv4_hdr + + m->outer_l3_len); + udp_hdr->dgram_cksum = rte_ipv4_phdr_cksum(ipv4_hdr, m->ol_flags); + } else { + ipv6_hdr = rte_pktmbuf_mtod_offset(m, struct rte_ipv6_hdr *, + m->outer_l2_len); + udp_hdr = rte_pktmbuf_mtod_offset(m, struct rte_udp_hdr *, + m->outer_l2_len + m->outer_l3_len); + udp_hdr->dgram_cksum = rte_ipv6_phdr_cksum(ipv6_hdr, m->ol_flags); + } + } } /* -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2024-07-12 18:40:16.097606388 +0800 +++ 0044-net-fix-outer-UDP-checksum-in-Intel-prepare-helper.patch 2024-07-12 18:40:14.036594235 +0800 @@ -1 +1 @@ -From f876dbef080932dbeb1de075d7ca3cbe2ed6d7eb Mon Sep 17 00:00:00 2001 +From 700c66d35f34838806f02dfd1056b7cecfb598c1 Mon Sep 17 00:00:00 2001 @@ -4,0 +5,3 @@ +Cc: Xueming Li + +[ upstream commit f876dbef080932dbeb1de075d7ca3cbe2ed6d7eb ] @@ -18 +20,0 @@ -Cc: stable@dpdk.org @@ -65 +67 @@ -index bf10da1928..59a95aba7c 100644 +index d20e03b103..75ea6bdca9 100644 @@ -68 +70 @@ -@@ -3629,58 +3629,6 @@ hns3_pkt_need_linearized(struct rte_mbuf *tx_pkts, uint32_t bd_num, +@@ -3628,58 +3628,6 @@ hns3_pkt_need_linearized(struct rte_mbuf *tx_pkts, uint32_t bd_num, @@ -127 +129 @@ -@@ -3688,29 +3636,38 @@ hns3_outer_header_cksum_prepare(struct rte_mbuf *m) +@@ -3687,29 +3635,38 @@ hns3_outer_header_cksum_prepare(struct rte_mbuf *m)