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: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
76eeb12b71
commit
8b19c68c4f
@ -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;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user