aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/udp.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2014-06-15 16:37:03 -1000
committerLinus Torvalds <torvalds@linux-foundation.org>2014-06-15 16:37:03 -1000
commita9be22425e767d936105679fdc9f568b97bd47cf (patch)
tree37a63136da83dcf272668462f96eed1e96f37de3 /include/net/udp.h
parentdd1845af24a47b70cf84c29126698884f740ff9c (diff)
parentb58537a1f5629bdc98a8b9dc2051ce0e952f6b4b (diff)
downloadkernel_replicant_linux-a9be22425e767d936105679fdc9f568b97bd47cf.tar.gz
kernel_replicant_linux-a9be22425e767d936105679fdc9f568b97bd47cf.tar.bz2
kernel_replicant_linux-a9be22425e767d936105679fdc9f568b97bd47cf.zip
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes from David Miller: 1) Fix checksumming regressions, from Tom Herbert. 2) Undo unintentional permissions changes for SCTP rto_alpha and rto_beta sysfs knobs, from Denial Borkmann. 3) VXLAN, like other IP tunnels, should advertize it's encapsulation size using dev->needed_headroom instead of dev->hard_header_len. From Cong Wang. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: net: sctp: fix permissions for rto_alpha and rto_beta knobs vxlan: Checksum fixes net: add skb_pop_rcv_encapsulation udp: call __skb_checksum_complete when doing full checksum net: Fix save software checksum complete net: Fix GSO constants to match NETIF flags udp: ipv4: do not waste time in __udp4_lib_mcast_demux_lookup vxlan: use dev->needed_headroom instead of dev->hard_header_len MAINTAINERS: update cxgb4 maintainer
Diffstat (limited to 'include/net/udp.h')
-rw-r--r--include/net/udp.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/include/net/udp.h b/include/net/udp.h
index 2ecfc6e15609..68a1fefe3dfe 100644
--- a/include/net/udp.h
+++ b/include/net/udp.h
@@ -111,7 +111,9 @@ struct sk_buff;
*/
static inline __sum16 __udp_lib_checksum_complete(struct sk_buff *skb)
{
- return __skb_checksum_complete_head(skb, UDP_SKB_CB(skb)->cscov);
+ return (UDP_SKB_CB(skb)->cscov == skb->len ?
+ __skb_checksum_complete(skb) :
+ __skb_checksum_complete_head(skb, UDP_SKB_CB(skb)->cscov));
}
static inline int udp_lib_checksum_complete(struct sk_buff *skb)