Skip to contentSkip to conversation

net: thunderx: Fix TCP/UDP checksum offload for IPv4 pkts

PATCH In review Florian Westphal 2 participants 2 messages Dec 6, 2017

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 net: thunderx: Fix TCP/UDP checksum offload for IPv4 pkts

Offload IP header checksum to NIC.

This fixes a previous patch which disabled checksum offloading for both IPv4 and IPv6 packets. So L3 checksum offload was getting disabled for IPv4 pkts. And HW is dropping these pkts for some reason.

Without this patch, IPv4 TSO appears to be broken:

WIthout this patch I get ~16kbyte/s, with patch close to 2mbyte/s when copying files via scp from test box to my home workstation.

Looking at tcpdump on sender it looks like hardware drops IPv4 TSO skbs. This patch restores performance for me, ipv6 looks good too.

Fixes fa6d7cb5d76c ("net: thunderx: Fix TCP/UDP checksum offload for IPv6 pkts")
Cc Sunil Goutham <[email protected]>
Cc Aleksey Makarov <[email protected]>
Cc Eric Dumazet <[email protected]>
---
 drivers/net/ethernet/cavium/thunder/nicvf_queues.c | 2 ++
 1 file changed, 2 insertions(+)
drivers/net/ethernet/cavium/thunder/nicvf_queues.c +2 -0
index 8b2c31e2a2b0..a3d12dbde95b 100644
@@ -1355,6 +1355,8 @@ nicvf_sq_add_hdr_subdesc(struct nicvf *nic, struct snd_queue *sq, int qentry,
 
 	/* Offload checksum calculation to HW */
 	if (skb->ip_summed == CHECKSUM_PARTIAL) {
+		if (ip.v4->version == 4)
+			hdr->csum_l3 = 1; /* Enable IP csum calculation */
 		hdr->l3_offset = skb_network_offset(skb);
 		hdr->l4_offset = skb_transport_offset(skb);
 
Signature · 1 line
2.13.6
maintainer
#1 lore raw

From: Florian Westphal <[email protected]>
Date: Wed, 6 Dec 2017 01:04:50 +0100

Quoted 12 lines

Offload IP header checksum to NIC.

This fixes a previous patch which disabled checksum offloading for both IPv4 and IPv6 packets. So L3 checksum offload was getting disabled for IPv4 pkts. And HW is dropping these pkts for some reason.

Without this patch, IPv4 TSO appears to be broken:

WIthout this patch I get ~16kbyte/s, with patch close to 2mbyte/s when copying files via scp from test box to my home workstation.

Quoted 8 lines

Looking at tcpdump on sender it looks like hardware drops IPv4 TSO skbs. This patch restores performance for me, ipv6 looks good too.

Fixes fa6d7cb5d76c ("net: thunderx: Fix TCP/UDP checksum offload for IPv6 pkts")
Cc Sunil Goutham <[email protected]>
Cc Aleksey Makarov <[email protected]>
Cc Eric Dumazet <[email protected]>

Applied and queued up for -stable, thanks Florian.