net: Allow tunnels to use inner checksum offloads with outer checksums needed
authorAlexander Duyck <aduyck@mirantis.com>
Fri, 5 Feb 2016 23:28:26 +0000 (15:28 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 11 Feb 2016 13:55:34 +0000 (08:55 -0500)
This patch enables us to use inner checksum offloads if provided by
hardware with outer checksums computed by software.

It basically reduces encap_hdr_csum to an advisory flag for now, but based
on the fact that SCTP may be getting segmentation support before long I
thought we may want to keep it as it is possible we may need to support
CRC32c and 1's compliment checksum in the same packet at some point in the
future.

Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
Acked-by: Tom Herbert <tom@herbertland.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/skbuff.c

index 88262c82b96a5a54c1908b5a6420d76afb0b4552..b0cce744e2a05bb8771acd2702783d587dc88096 100644 (file)
@@ -3004,8 +3004,7 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb,
        if (unlikely(!proto))
                return ERR_PTR(-EINVAL);
 
-       csum = !head_skb->encap_hdr_csum &&
-           !!can_checksum_protocol(features, proto);
+       csum = !!can_checksum_protocol(features, proto);
 
        headroom = skb_headroom(head_skb);
        pos = skb_headlen(head_skb);