diff options
-rw-r--r-- | drivers/net/ppp/ppp_generic.c | 1 | ||||
-rw-r--r-- | include/linux/skbuff.h | 12 |
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/ppp/ppp_generic.c b/drivers/net/ppp/ppp_generic.c index af034dba9bd6..9d15566521a7 100644 --- a/drivers/net/ppp/ppp_generic.c +++ b/drivers/net/ppp/ppp_generic.c | |||
@@ -1716,6 +1716,7 @@ ppp_receive_frame(struct ppp *ppp, struct sk_buff *skb, struct channel *pch) | |||
1716 | { | 1716 | { |
1717 | /* note: a 0-length skb is used as an error indication */ | 1717 | /* note: a 0-length skb is used as an error indication */ |
1718 | if (skb->len > 0) { | 1718 | if (skb->len > 0) { |
1719 | skb_checksum_complete_unset(skb); | ||
1719 | #ifdef CONFIG_PPP_MULTILINK | 1720 | #ifdef CONFIG_PPP_MULTILINK |
1720 | /* XXX do channel-level decompression here */ | 1721 | /* XXX do channel-level decompression here */ |
1721 | if (PPP_PROTO(skb) == PPP_MP) | 1722 | if (PPP_PROTO(skb) == PPP_MP) |
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 0991259643d6..06793b598f44 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h | |||
@@ -3016,6 +3016,18 @@ static inline bool __skb_checksum_validate_needed(struct sk_buff *skb, | |||
3016 | */ | 3016 | */ |
3017 | #define CHECKSUM_BREAK 76 | 3017 | #define CHECKSUM_BREAK 76 |
3018 | 3018 | ||
3019 | /* Unset checksum-complete | ||
3020 | * | ||
3021 | * Unset checksum complete can be done when packet is being modified | ||
3022 | * (uncompressed for instance) and checksum-complete value is | ||
3023 | * invalidated. | ||
3024 | */ | ||
3025 | static inline void skb_checksum_complete_unset(struct sk_buff *skb) | ||
3026 | { | ||
3027 | if (skb->ip_summed == CHECKSUM_COMPLETE) | ||
3028 | skb->ip_summed = CHECKSUM_NONE; | ||
3029 | } | ||
3030 | |||
3019 | /* Validate (init) checksum based on checksum complete. | 3031 | /* Validate (init) checksum based on checksum complete. |
3020 | * | 3032 | * |
3021 | * Return values: | 3033 | * Return values: |