diff options
Diffstat (limited to 'net/ipv6/tcp_ipv6.c')
-rw-r--r-- | net/ipv6/tcp_ipv6.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/net/ipv6/tcp_ipv6.c b/net/ipv6/tcp_ipv6.c index 4a55da079f5f..7e824b97126d 100644 --- a/net/ipv6/tcp_ipv6.c +++ b/net/ipv6/tcp_ipv6.c | |||
@@ -950,6 +950,7 @@ static void tcp_v6_send_check(struct sock *sk, int len, struct sk_buff *skb) | |||
950 | 950 | ||
951 | if (skb->ip_summed == CHECKSUM_PARTIAL) { | 951 | if (skb->ip_summed == CHECKSUM_PARTIAL) { |
952 | th->check = ~csum_ipv6_magic(&np->saddr, &np->daddr, len, IPPROTO_TCP, 0); | 952 | th->check = ~csum_ipv6_magic(&np->saddr, &np->daddr, len, IPPROTO_TCP, 0); |
953 | skb->csum_start = skb_transport_header(skb) - skb->head; | ||
953 | skb->csum_offset = offsetof(struct tcphdr, check); | 954 | skb->csum_offset = offsetof(struct tcphdr, check); |
954 | } else { | 955 | } else { |
955 | th->check = csum_ipv6_magic(&np->saddr, &np->daddr, len, IPPROTO_TCP, | 956 | th->check = csum_ipv6_magic(&np->saddr, &np->daddr, len, IPPROTO_TCP, |
@@ -972,6 +973,7 @@ static int tcp_v6_gso_send_check(struct sk_buff *skb) | |||
972 | th->check = 0; | 973 | th->check = 0; |
973 | th->check = ~csum_ipv6_magic(&ipv6h->saddr, &ipv6h->daddr, skb->len, | 974 | th->check = ~csum_ipv6_magic(&ipv6h->saddr, &ipv6h->daddr, skb->len, |
974 | IPPROTO_TCP, 0); | 975 | IPPROTO_TCP, 0); |
976 | skb->csum_start = skb_transport_header(skb) - skb->head; | ||
975 | skb->csum_offset = offsetof(struct tcphdr, check); | 977 | skb->csum_offset = offsetof(struct tcphdr, check); |
976 | skb->ip_summed = CHECKSUM_PARTIAL; | 978 | skb->ip_summed = CHECKSUM_PARTIAL; |
977 | return 0; | 979 | return 0; |