r8169: use new helper tcp_v6_gso_csum_prep
authorHeiner Kallweit <hkallweit1@gmail.com>
Tue, 18 Feb 2020 19:58:14 +0000 (20:58 +0100)
committerDavid S. Miller <davem@davemloft.net>
Wed, 19 Feb 2020 19:20:59 +0000 (11:20 -0800)
Simplify the code by using the new helper tcp_v6_gso_csum_prep.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/realtek/r8169_main.c

index ad4bb5a..267b7ae 100644 (file)
@@ -4108,29 +4108,6 @@ static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb)
        return skb->len < ETH_ZLEN && tp->mac_version == RTL_GIGA_MAC_VER_34;
 }
 
-/* msdn_giant_send_check()
- * According to the document of microsoft, the TCP Pseudo Header excludes the
- * packet length for IPv6 TCP large packets.
- */
-static int msdn_giant_send_check(struct sk_buff *skb)
-{
-       const struct ipv6hdr *ipv6h;
-       struct tcphdr *th;
-       int ret;
-
-       ret = skb_cow_head(skb, 0);
-       if (ret)
-               return ret;
-
-       ipv6h = ipv6_hdr(skb);
-       th = tcp_hdr(skb);
-
-       th->check = 0;
-       th->check = ~tcp_v6_check(0, &ipv6h->saddr, &ipv6h->daddr, 0);
-
-       return ret;
-}
-
 static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)
 {
        u32 mss = skb_shinfo(skb)->gso_size;
@@ -4163,9 +4140,10 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
                        break;
 
                case htons(ETH_P_IPV6):
-                       if (msdn_giant_send_check(skb))
+                       if (skb_cow_head(skb, 0))
                                return false;
 
+                       tcp_v6_gso_csum_prep(skb);
                        opts[0] |= TD1_GTSENV6;
                        break;