|
@@ -3131,6 +3131,7 @@ static inline void *skb_push_rcsum(struct sk_buff *skb, unsigned int len)
|
|
return skb->data;
|
|
return skb->data;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+int pskb_trim_rcsum_slow(struct sk_buff *skb, unsigned int len);
|
|
/**
|
|
/**
|
|
* pskb_trim_rcsum - trim received skb and update checksum
|
|
* pskb_trim_rcsum - trim received skb and update checksum
|
|
* @skb: buffer to trim
|
|
* @skb: buffer to trim
|
|
@@ -3144,9 +3145,7 @@ static inline int pskb_trim_rcsum(struct sk_buff *skb, unsigned int len)
|
|
{
|
|
{
|
|
if (likely(len >= skb->len))
|
|
if (likely(len >= skb->len))
|
|
return 0;
|
|
return 0;
|
|
- if (skb->ip_summed == CHECKSUM_COMPLETE)
|
|
|
|
- skb->ip_summed = CHECKSUM_NONE;
|
|
|
|
- return __pskb_trim(skb, len);
|
|
|
|
|
|
+ return pskb_trim_rcsum_slow(skb, len);
|
|
}
|
|
}
|
|
|
|
|
|
static inline int __skb_trim_rcsum(struct sk_buff *skb, unsigned int len)
|
|
static inline int __skb_trim_rcsum(struct sk_buff *skb, unsigned int len)
|