diff mbox

[net-next,10/10] net: Allow tunnels to use inner checksum offloads with outer checksums needed

Message ID 20160205232826.18529.69333.stgit@localhost.localdomain
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Alexander Duyck Feb. 5, 2016, 11:28 p.m. UTC
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>
---
 net/core/skbuff.c |    3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Tom Herbert Feb. 6, 2016, 9 p.m. UTC | #1
On Fri, Feb 5, 2016 at 3:28 PM, Alexander Duyck <aduyck@mirantis.com> wrote:
> 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>

> ---
>  net/core/skbuff.c |    3 +--
>  1 file changed, 1 insertion(+), 2 deletions(-)
>
> diff --git a/net/core/skbuff.c b/net/core/skbuff.c
> index 88262c82b96a..b0cce744e2a0 100644
> --- a/net/core/skbuff.c
> +++ b/net/core/skbuff.c
> @@ -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);
>
diff mbox

Patch

diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 88262c82b96a..b0cce744e2a0 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -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);