intel-wired-lan.lists.osuosl.org archive mirror
 help / color / mirror / Atom feed
* [Intel-wired-lan] [PATCH net v1] i40e: Fix tunnel checksum offload with fragmented traffic
@ 2022-07-27  9:19 Mateusz Palczewski
  2022-08-01 12:03 ` Szlosek, Marek
  0 siblings, 1 reply; 2+ messages in thread
From: Mateusz Palczewski @ 2022-07-27  9:19 UTC (permalink / raw)
  To: intel-wired-lan; +Cc: Przemyslaw Patynowski

From: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>

Fix checksum offload on VXLAN tunnels.
In case, when mpls protocol is not used, set l4 header to transport
header of skb. This fixes case, when user tries to offload checksums
of VXLAN tunneled traffic.

Steps for reproduction (requires link partner with tunnels):
ip l s enp130s0f0 up
ip a f enp130s0f0
ip a a 10.10.110.2/24 dev enp130s0f0
ip l s enp130s0f0 mtu 1600
ip link add vxlan12_sut type vxlan id 12 group 238.168.100.100 dev \
enp130s0f0 dstport 4789
ip l s vxlan12_sut up
ip a a 20.10.110.2/24 dev vxlan12_sut
iperf3 -c 20.10.110.1 #should connect

Without this patch, TX descriptor was using wrong data, due to
l4 header pointing wrong address. NIC would then drop those packets
internally, due to incorrect TX descriptor data, which increased
GLV_TEPC register.

Fixes: b4fb2d33514a ("i40e: Add support for MPLS + TSO")
Signed-off-by: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
---
 drivers/net/ethernet/intel/i40e/i40e_txrx.c | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
index 7bc1174edf6b..af69ccc6e8d2 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
@@ -3204,11 +3204,13 @@ static int i40e_tx_enable_csum(struct sk_buff *skb, u32 *tx_flags,
 
 	protocol = vlan_get_protocol(skb);
 
-	if (eth_p_mpls(protocol))
+	if (eth_p_mpls(protocol)) {
 		ip.hdr = skb_inner_network_header(skb);
-	else
+		l4.hdr = skb_checksum_start(skb);
+	} else {
 		ip.hdr = skb_network_header(skb);
-	l4.hdr = skb_checksum_start(skb);
+		l4.hdr = skb_transport_header(skb);
+	}
 
 	/* set the tx_flags to indicate the IP protocol type. this is
 	 * required so that checksum header computation below is accurate.
-- 
2.27.0

_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [Intel-wired-lan] [PATCH net v1] i40e: Fix tunnel checksum offload with fragmented traffic
  2022-07-27  9:19 [Intel-wired-lan] [PATCH net v1] i40e: Fix tunnel checksum offload with fragmented traffic Mateusz Palczewski
@ 2022-08-01 12:03 ` Szlosek, Marek
  0 siblings, 0 replies; 2+ messages in thread
From: Szlosek, Marek @ 2022-08-01 12:03 UTC (permalink / raw)
  To: Palczewski, Mateusz, intel-wired-lan; +Cc: Patynowski, PrzemyslawX



> -----Original Message-----
> From: Intel-wired-lan <intel-wired-lan-bounces@osuosl.org> On Behalf Of
> Mateusz Palczewski
> Sent: środa, 27 lipca 2022 11:20
> To: intel-wired-lan@lists.osuosl.org
> Cc: Patynowski, PrzemyslawX <przemyslawx.patynowski@intel.com>
> Subject: [Intel-wired-lan] [PATCH net v1] i40e: Fix tunnel checksum offload
> with fragmented traffic
> 
> From: Przemyslaw Patynowski <przemyslawx.patynowski@intel.com>
> 
> Fix checksum offload on VXLAN tunnels.
> In case, when mpls protocol is not used, set l4 header to transport header of
> skb. This fixes case, when user tries to offload checksums of VXLAN tunneled
> traffic.
> 
> Steps for reproduction (requires link partner with tunnels):
> ip l s enp130s0f0 up
> ip a f enp130s0f0
> ip a a 10.10.110.2/24 dev enp130s0f0
> ip l s enp130s0f0 mtu 1600
> ip link add vxlan12_sut type vxlan id 12 group 238.168.100.100 dev \
> enp130s0f0 dstport 4789
> ip l s vxlan12_sut up
> ip a a 20.10.110.2/24 dev vxlan12_sut
> iperf3 -c 20.10.110.1 #should connect
> 
> Without this patch, TX descriptor was using wrong data, due to
> l4 header pointing wrong address. NIC would then drop those packets
> internally, due to incorrect TX descriptor data, which increased GLV_TEPC
> register.
> 
> Fixes: b4fb2d33514a ("i40e: Add support for MPLS + TSO")
> Signed-off-by: Przemyslaw Patynowski
> <przemyslawx.patynowski@intel.com>
> Signed-off-by: Mateusz Palczewski <mateusz.palczewski@intel.com>
> ---
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c | 8 +++++---
>  1 file changed, 5 insertions(+), 3 deletions(-)
> 
> diff --git a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> b/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> index 7bc1174edf6b..af69ccc6e8d2 100644
> --- a/drivers/net/ethernet/intel/i40e/i40e_txrx.c
> +++ b/drivers/net/ethernet/intel/i40e/i40e_txrx.c

Tested-by: Marek Szlosek <marek.szlosek@intel.com>
_______________________________________________
Intel-wired-lan mailing list
Intel-wired-lan@osuosl.org
https://lists.osuosl.org/mailman/listinfo/intel-wired-lan

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-08-01 12:03 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-27  9:19 [Intel-wired-lan] [PATCH net v1] i40e: Fix tunnel checksum offload with fragmented traffic Mateusz Palczewski
2022-08-01 12:03 ` Szlosek, Marek

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).