| From foo@baz Wed Apr 29 11:59:49 CEST 2015 |
| From: Tom Herbert <tom@herbertland.com> |
| Date: Mon, 20 Apr 2015 14:10:04 -0700 |
| Subject: net: add skb_checksum_complete_unset |
| |
| From: Tom Herbert <tom@herbertland.com> |
| |
| [ Upstream commit 4e18b9adf2f910ec4d30b811a74a5b626e6c6125 ] |
| |
| This function changes ip_summed to CHECKSUM_NONE if CHECKSUM_COMPLETE |
| is set. This is called to discard checksum-complete when packet |
| is being modified and checksum is not pulled for headers in a layer. |
| |
| Signed-off-by: Tom Herbert <tom@herbertland.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| include/linux/skbuff.h | 12 ++++++++++++ |
| 1 file changed, 12 insertions(+) |
| |
| --- a/include/linux/skbuff.h |
| +++ b/include/linux/skbuff.h |
| @@ -3013,6 +3013,18 @@ static inline bool __skb_checksum_valida |
| */ |
| #define CHECKSUM_BREAK 76 |
| |
| +/* Unset checksum-complete |
| + * |
| + * Unset checksum complete can be done when packet is being modified |
| + * (uncompressed for instance) and checksum-complete value is |
| + * invalidated. |
| + */ |
| +static inline void skb_checksum_complete_unset(struct sk_buff *skb) |
| +{ |
| + if (skb->ip_summed == CHECKSUM_COMPLETE) |
| + skb->ip_summed = CHECKSUM_NONE; |
| +} |
| + |
| /* Validate (init) checksum based on checksum complete. |
| * |
| * Return values: |