net: Infrastructure for CHECKSUM_PARTIAL with remote checsum offload
authorTom Herbert <therbert@google.com>
Wed, 11 Feb 2015 00:30:31 +0000 (16:30 -0800)
committerDavid S. Miller <davem@davemloft.net>
Wed, 11 Feb 2015 23:12:12 +0000 (15:12 -0800)
This patch adds infrastructure so that remote checksum offload can
set CHECKSUM_PARTIAL instead of calling csum_partial and writing
the modfied checksum field.

Add skb_remcsum_adjust_partial function to set an skb for using
CHECKSUM_PARTIAL with remote checksum offload.  Changed
skb_remcsum_process and skb_gro_remcsum_process to take a boolean
argument to indicate if checksum partial can be set or the
checksum needs to be modified using the normal algorithm.

Signed-off-by: Tom Herbert <therbert@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/vxlan.c
include/linux/netdevice.h
include/linux/skbuff.h
net/core/dev.c
net/ipv4/fou.c

index 30310a6..4f04443 100644 (file)
@@ -580,7 +580,7 @@ static struct vxlanhdr *vxlan_gro_remcsum(struct sk_buff *skb,
        }
 
        skb_gro_remcsum_process(skb, (void *)vh + hdrlen,
-                               start, offset, grc);
+                               start, offset, grc, true);
 
        skb->remcsum_offload = 1;
 
@@ -1171,7 +1171,7 @@ static struct vxlanhdr *vxlan_remcsum(struct sk_buff *skb, struct vxlanhdr *vh,
 
        vh = (struct vxlanhdr *)(udp_hdr(skb) + 1);
 
-       skb_remcsum_process(skb, (void *)vh + hdrlen, start, offset);
+       skb_remcsum_process(skb, (void *)vh + hdrlen, start, offset, true);
 
        return vh;
 }
Simple merge
Simple merge
diff --cc net/core/dev.c
Simple merge
diff --cc net/ipv4/fou.c
Simple merge