]> git.proxmox.com Git - mirror_ubuntu-kernels.git/commitdiff
net: core: add helper tcp_v6_gso_csum_prep
authorHeiner Kallweit <hkallweit1@gmail.com>
Tue, 18 Feb 2020 19:56:41 +0000 (20:56 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 19 Feb 2020 19:20:59 +0000 (11:20 -0800)
Several network drivers for chips that support TSO6 share the same code
for preparing the TCP header, so let's factor it out to a helper.
A difference is that some drivers reset the payload_len whilst others
don't do this. This value is overwritten by TSO anyway, therefore
the new helper resets it in general.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Alexander Duyck <alexander.h.duyck@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/ip6_checksum.h

index 7bec95df4f804c1e5fadff93815fe65de6a35da2..27ec612cd4a4598dc01e4984e61bc42c6ee5e77b 100644 (file)
@@ -76,6 +76,15 @@ static inline void __tcp_v6_send_check(struct sk_buff *skb,
        }
 }
 
+static inline void tcp_v6_gso_csum_prep(struct sk_buff *skb)
+{
+       struct ipv6hdr *ipv6h = ipv6_hdr(skb);
+       struct tcphdr *th = tcp_hdr(skb);
+
+       ipv6h->payload_len = 0;
+       th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0);
+}
+
 #if IS_ENABLED(CONFIG_IPV6)
 static inline void tcp_v6_send_check(struct sock *sk, struct sk_buff *skb)
 {