|
@@ -2789,11 +2789,31 @@ static inline void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff **pp,
|
|
if (PTR_ERR(pp) != -EINPROGRESS)
|
|
if (PTR_ERR(pp) != -EINPROGRESS)
|
|
NAPI_GRO_CB(skb)->flush |= flush;
|
|
NAPI_GRO_CB(skb)->flush |= flush;
|
|
}
|
|
}
|
|
|
|
+static inline void skb_gro_flush_final_remcsum(struct sk_buff *skb,
|
|
|
|
+ struct sk_buff **pp,
|
|
|
|
+ int flush,
|
|
|
|
+ struct gro_remcsum *grc)
|
|
|
|
+{
|
|
|
|
+ if (PTR_ERR(pp) != -EINPROGRESS) {
|
|
|
|
+ NAPI_GRO_CB(skb)->flush |= flush;
|
|
|
|
+ skb_gro_remcsum_cleanup(skb, grc);
|
|
|
|
+ skb->remcsum_offload = 0;
|
|
|
|
+ }
|
|
|
|
+}
|
|
#else
|
|
#else
|
|
static inline void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff **pp, int flush)
|
|
static inline void skb_gro_flush_final(struct sk_buff *skb, struct sk_buff **pp, int flush)
|
|
{
|
|
{
|
|
NAPI_GRO_CB(skb)->flush |= flush;
|
|
NAPI_GRO_CB(skb)->flush |= flush;
|
|
}
|
|
}
|
|
|
|
+static inline void skb_gro_flush_final_remcsum(struct sk_buff *skb,
|
|
|
|
+ struct sk_buff **pp,
|
|
|
|
+ int flush,
|
|
|
|
+ struct gro_remcsum *grc)
|
|
|
|
+{
|
|
|
|
+ NAPI_GRO_CB(skb)->flush |= flush;
|
|
|
|
+ skb_gro_remcsum_cleanup(skb, grc);
|
|
|
|
+ skb->remcsum_offload = 0;
|
|
|
|
+}
|
|
#endif
|
|
#endif
|
|
|
|
|
|
static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
|
|
static inline int dev_hard_header(struct sk_buff *skb, struct net_device *dev,
|