udp: call __skb_checksum_complete when doing full checksum
In __udp_lib_checksum_complete check if checksum is being done over all the data (len is equal to skb->len) and if it is call __skb_checksum_complete instead of __skb_checksum_complete_head. This allows checksum to be saved in checksum complete. Signed-off-by: Tom Herbert <therbert@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
46fb51eb96
commit
bbdff225ed
@@ -111,7 +111,9 @@ struct sk_buff;
|
|||||||
*/
|
*/
|
||||||
static inline __sum16 __udp_lib_checksum_complete(struct sk_buff *skb)
|
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)
|
static inline int udp_lib_checksum_complete(struct sk_buff *skb)
|
||||||
|
Reference in New Issue
Block a user