|
@@ -685,7 +685,7 @@ struct sk_buff {
|
|
__u8 csum_valid:1;
|
|
__u8 csum_valid:1;
|
|
__u8 csum_complete_sw:1;
|
|
__u8 csum_complete_sw:1;
|
|
__u8 csum_level:2;
|
|
__u8 csum_level:2;
|
|
- __u8 csum_bad:1;
|
|
|
|
|
|
+ __u8 __csum_bad_unused:1; /* one bit hole */
|
|
|
|
|
|
__u8 dst_pending_confirm:1;
|
|
__u8 dst_pending_confirm:1;
|
|
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
|
#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
|
@@ -3336,21 +3336,6 @@ static inline void __skb_incr_checksum_unnecessary(struct sk_buff *skb)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static inline void __skb_mark_checksum_bad(struct sk_buff *skb)
|
|
|
|
-{
|
|
|
|
- /* Mark current checksum as bad (typically called from GRO
|
|
|
|
- * path). In the case that ip_summed is CHECKSUM_NONE
|
|
|
|
- * this must be the first checksum encountered in the packet.
|
|
|
|
- * When ip_summed is CHECKSUM_UNNECESSARY, this is the first
|
|
|
|
- * checksum after the last one validated. For UDP, a zero
|
|
|
|
- * checksum can not be marked as bad.
|
|
|
|
- */
|
|
|
|
-
|
|
|
|
- if (skb->ip_summed == CHECKSUM_NONE ||
|
|
|
|
- skb->ip_summed == CHECKSUM_UNNECESSARY)
|
|
|
|
- skb->csum_bad = 1;
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
/* Check if we need to perform checksum complete validation.
|
|
/* Check if we need to perform checksum complete validation.
|
|
*
|
|
*
|
|
* Returns true if checksum complete is needed, false otherwise
|
|
* Returns true if checksum complete is needed, false otherwise
|
|
@@ -3404,9 +3389,6 @@ static inline __sum16 __skb_checksum_validate_complete(struct sk_buff *skb,
|
|
skb->csum_valid = 1;
|
|
skb->csum_valid = 1;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
- } else if (skb->csum_bad) {
|
|
|
|
- /* ip_summed == CHECKSUM_NONE in this case */
|
|
|
|
- return (__force __sum16)1;
|
|
|
|
}
|
|
}
|
|
|
|
|
|
skb->csum = psum;
|
|
skb->csum = psum;
|
|
@@ -3466,8 +3448,7 @@ static inline __wsum null_compute_pseudo(struct sk_buff *skb, int proto)
|
|
|
|
|
|
static inline bool __skb_checksum_convert_check(struct sk_buff *skb)
|
|
static inline bool __skb_checksum_convert_check(struct sk_buff *skb)
|
|
{
|
|
{
|
|
- return (skb->ip_summed == CHECKSUM_NONE &&
|
|
|
|
- skb->csum_valid && !skb->csum_bad);
|
|
|
|
|
|
+ return (skb->ip_summed == CHECKSUM_NONE && skb->csum_valid);
|
|
}
|
|
}
|
|
|
|
|
|
static inline void __skb_checksum_convert(struct sk_buff *skb,
|
|
static inline void __skb_checksum_convert(struct sk_buff *skb,
|