Commit 8b19c68c authored by Heiner Kallweit's avatar Heiner Kallweit Committed by David S. Miller

r8169: use new helper tcp_v6_gso_csum_prep

Simplify the code by using the new helper tcp_v6_gso_csum_prep.
Signed-off-by: default avatarHeiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 76eeb12b
...@@ -4108,29 +4108,6 @@ static bool rtl_test_hw_pad_bug(struct rtl8169_private *tp, struct sk_buff *skb) ...@@ -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; 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) static void rtl8169_tso_csum_v1(struct sk_buff *skb, u32 *opts)
{ {
u32 mss = skb_shinfo(skb)->gso_size; u32 mss = skb_shinfo(skb)->gso_size;
...@@ -4163,9 +4140,10 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp, ...@@ -4163,9 +4140,10 @@ static bool rtl8169_tso_csum_v2(struct rtl8169_private *tp,
break; break;
case htons(ETH_P_IPV6): case htons(ETH_P_IPV6):
if (msdn_giant_send_check(skb)) if (skb_cow_head(skb, 0))
return false; return false;
tcp_v6_gso_csum_prep(skb);
opts[0] |= TD1_GTSENV6; opts[0] |= TD1_GTSENV6;
break; break;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment