aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
Diffstat (limited to 'net')
-rw-r--r--net/core/dev.c14
1 files changed, 8 insertions, 6 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 1e0a1847c3bb..de2bad717d56 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -3631,20 +3631,22 @@ gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb)
3631} 3631}
3632EXPORT_SYMBOL(napi_skb_finish); 3632EXPORT_SYMBOL(napi_skb_finish);
3633 3633
3634void skb_gro_reset_offset(struct sk_buff *skb) 3634static void skb_gro_reset_offset(struct sk_buff *skb)
3635{ 3635{
3636 const struct skb_shared_info *pinfo = skb_shinfo(skb);
3637 const skb_frag_t *frag0 = &pinfo->frags[0];
3638
3636 NAPI_GRO_CB(skb)->data_offset = 0; 3639 NAPI_GRO_CB(skb)->data_offset = 0;
3637 NAPI_GRO_CB(skb)->frag0 = NULL; 3640 NAPI_GRO_CB(skb)->frag0 = NULL;
3638 NAPI_GRO_CB(skb)->frag0_len = 0; 3641 NAPI_GRO_CB(skb)->frag0_len = 0;
3639 3642
3640 if (skb->mac_header == skb->tail && 3643 if (skb->mac_header == skb->tail &&
3641 !PageHighMem(skb_frag_page(&skb_shinfo(skb)->frags[0]))) { 3644 pinfo->nr_frags &&
3642 NAPI_GRO_CB(skb)->frag0 = 3645 !PageHighMem(skb_frag_page(frag0))) {
3643 skb_frag_address(&skb_shinfo(skb)->frags[0]); 3646 NAPI_GRO_CB(skb)->frag0 = skb_frag_address(frag0);
3644 NAPI_GRO_CB(skb)->frag0_len = skb_frag_size(&skb_shinfo(skb)->frags[0]); 3647 NAPI_GRO_CB(skb)->frag0_len = skb_frag_size(frag0);
3645 } 3648 }
3646} 3649}
3647EXPORT_SYMBOL(skb_gro_reset_offset);
3648 3650
3649gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) 3651gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
3650{ 3652{