diff options
author | Tom Herbert <therbert@google.com> | 2014-11-04 12:06:54 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2014-11-05 16:30:03 -0500 |
commit | e585f23636370320bc2071ca5ba2744ae37c3e51 (patch) | |
tree | c1d9d60bd084099f3e65155dd920ee72d41a808e /net/core/skbuff.c | |
parent | 5024c33ac354577635c5671498891eb197f3ec4d (diff) |
udp: Changes to udp_offload to support remote checksum offload
Add a new GSO type, SKB_GSO_TUNNEL_REMCSUM, which indicates remote
checksum offload being done (in this case inner checksum must not
be offloaded to the NIC).
Added logic in __skb_udp_tunnel_segment to handle remote checksum
offload case.
Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r-- | net/core/skbuff.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index e48e5c02e877..700189604f3d 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c | |||
@@ -3013,7 +3013,7 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, | |||
3013 | if (nskb->len == len + doffset) | 3013 | if (nskb->len == len + doffset) |
3014 | goto perform_csum_check; | 3014 | goto perform_csum_check; |
3015 | 3015 | ||
3016 | if (!sg) { | 3016 | if (!sg && !nskb->remcsum_offload) { |
3017 | nskb->ip_summed = CHECKSUM_NONE; | 3017 | nskb->ip_summed = CHECKSUM_NONE; |
3018 | nskb->csum = skb_copy_and_csum_bits(head_skb, offset, | 3018 | nskb->csum = skb_copy_and_csum_bits(head_skb, offset, |
3019 | skb_put(nskb, len), | 3019 | skb_put(nskb, len), |
@@ -3085,7 +3085,7 @@ skip_fraglist: | |||
3085 | nskb->truesize += nskb->data_len; | 3085 | nskb->truesize += nskb->data_len; |
3086 | 3086 | ||
3087 | perform_csum_check: | 3087 | perform_csum_check: |
3088 | if (!csum) { | 3088 | if (!csum && !nskb->remcsum_offload) { |
3089 | nskb->csum = skb_checksum(nskb, doffset, | 3089 | nskb->csum = skb_checksum(nskb, doffset, |
3090 | nskb->len - doffset, 0); | 3090 | nskb->len - doffset, 0); |
3091 | nskb->ip_summed = CHECKSUM_NONE; | 3091 | nskb->ip_summed = CHECKSUM_NONE; |