|
@@ -1294,25 +1294,6 @@ out:
|
|
|
return NULL;
|
|
|
}
|
|
|
|
|
|
-static __sum16 tcp_v6_checksum_init(struct sk_buff *skb)
|
|
|
-{
|
|
|
- if (skb->ip_summed == CHECKSUM_COMPLETE) {
|
|
|
- if (!tcp_v6_check(skb->len, &ipv6_hdr(skb)->saddr,
|
|
|
- &ipv6_hdr(skb)->daddr, skb->csum)) {
|
|
|
- skb->ip_summed = CHECKSUM_UNNECESSARY;
|
|
|
- return 0;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- skb->csum = ~csum_unfold(tcp_v6_check(skb->len,
|
|
|
- &ipv6_hdr(skb)->saddr,
|
|
|
- &ipv6_hdr(skb)->daddr, 0));
|
|
|
-
|
|
|
- if (skb->len <= 76)
|
|
|
- return __skb_checksum_complete(skb);
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
/* The socket must have it's spinlock held when we get
|
|
|
* here.
|
|
|
*
|
|
@@ -1486,7 +1467,7 @@ static int tcp_v6_rcv(struct sk_buff *skb)
|
|
|
if (!pskb_may_pull(skb, th->doff*4))
|
|
|
goto discard_it;
|
|
|
|
|
|
- if (!skb_csum_unnecessary(skb) && tcp_v6_checksum_init(skb))
|
|
|
+ if (skb_checksum_init(skb, IPPROTO_TCP, ip6_compute_pseudo))
|
|
|
goto csum_error;
|
|
|
|
|
|
th = tcp_hdr(skb);
|