are as follows: - app/testpmd: revert MAC update in checksum forwarding - net/bonding: fix bond4 drop valid MAC packets - net/bonding: fix slave device Rx/Tx offload configuration - app/testpmd: fix MAC header in csum forward engine - app/testpmd: update bond port configurations when add slave - app/testpmd: fix GENEVE parsing in checksum mode - net: add UDP/TCP checksum in mbuf segments - app/testpmd: add SW L4 checksum in multi-segments - app/testpmd: fix L4 checksum in multi-segments - net/bonding: fix mbuf fast free handling (cherry picked from commit e33f71a88757d130f19712e0efd64ab7623510fb)
60 lines
2.1 KiB
Diff
60 lines
2.1 KiB
Diff
From e6b89f7ed49494302ef1e9cd852281c808f5b14f Mon Sep 17 00:00:00 2001
|
|
From: Kevin Liu <kevinx.liu@intel.com>
|
|
Date: Tue, 15 Nov 2022 12:06:14 +0800
|
|
Subject: app/testpmd: fix L4 checksum in multi-segments
|
|
|
|
[ upstream commit 7dc92d17298d8fd05a912606f02a094566ec0b3f ]
|
|
|
|
Testpmd forwards packets in checksum mode that it needs to calculate
|
|
the checksum of each layer's protocol.
|
|
|
|
In process_inner_cksums, when parsing tunnel packets, inner L4 offset
|
|
should be outer_l2_len + outer_l3_len + l2_len + l3_len.
|
|
|
|
In process_outer_cksums, when parsing tunnel packets, outer L4 offset
|
|
should be outer_l2_len + outer_l3_len.
|
|
|
|
Fixes: e6b9d6411e91 ("app/testpmd: add SW L4 checksum in multi-segments")
|
|
|
|
Signed-off-by: Kevin Liu <kevinx.liu@intel.com>
|
|
Acked-by: Yuying Zhang <yuying.zhang@intel.com>
|
|
Acked-by: Aman Singh <aman.deep.singh@intel.com>
|
|
---
|
|
app/test-pmd/csumonly.c | 6 +++---
|
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
|
diff --git a/app/test-pmd/csumonly.c b/app/test-pmd/csumonly.c
|
|
index 10aab3431b..47856dd70a 100644
|
|
--- a/app/test-pmd/csumonly.c
|
|
+++ b/app/test-pmd/csumonly.c
|
|
@@ -511,7 +511,7 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
|
|
ol_flags |= RTE_MBUF_F_TX_UDP_CKSUM;
|
|
} else {
|
|
if (info->is_tunnel)
|
|
- l4_off = info->l2_len +
|
|
+ l4_off = info->outer_l2_len +
|
|
info->outer_l3_len +
|
|
info->l2_len + info->l3_len;
|
|
else
|
|
@@ -534,7 +534,7 @@ process_inner_cksums(void *l3_hdr, const struct testpmd_offload_info *info,
|
|
ol_flags |= RTE_MBUF_F_TX_TCP_CKSUM;
|
|
} else {
|
|
if (info->is_tunnel)
|
|
- l4_off = info->l2_len + info->outer_l3_len +
|
|
+ l4_off = info->outer_l2_len + info->outer_l3_len +
|
|
info->l2_len + info->l3_len;
|
|
else
|
|
l4_off = info->l2_len + info->l3_len;
|
|
@@ -623,7 +623,7 @@ process_outer_cksums(void *outer_l3_hdr, struct testpmd_offload_info *info,
|
|
if (udp_hdr->dgram_cksum != 0) {
|
|
udp_hdr->dgram_cksum = 0;
|
|
udp_hdr->dgram_cksum = get_udptcp_checksum(m, outer_l3_hdr,
|
|
- info->l2_len + info->outer_l3_len,
|
|
+ info->outer_l2_len + info->outer_l3_len,
|
|
info->outer_ethertype);
|
|
}
|
|
|
|
--
|
|
2.23.0
|
|
|