diff options
-rw-r--r-- | include/linux/netdevice.h | 1 | ||||
-rw-r--r-- | net/core/dev.c | 14 |
2 files changed, 8 insertions, 7 deletions
diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h index 01646aa53b0e..a659fd0ba965 100644 --- a/include/linux/netdevice.h +++ b/include/linux/netdevice.h | |||
@@ -1663,7 +1663,6 @@ extern int netpoll_trap(void); | |||
1663 | #endif | 1663 | #endif |
1664 | extern int skb_gro_receive(struct sk_buff **head, | 1664 | extern int skb_gro_receive(struct sk_buff **head, |
1665 | struct sk_buff *skb); | 1665 | struct sk_buff *skb); |
1666 | extern void skb_gro_reset_offset(struct sk_buff *skb); | ||
1667 | 1666 | ||
1668 | static inline unsigned int skb_gro_offset(const struct sk_buff *skb) | 1667 | static inline unsigned int skb_gro_offset(const struct sk_buff *skb) |
1669 | { | 1668 | { |
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 | } |
3632 | EXPORT_SYMBOL(napi_skb_finish); | 3632 | EXPORT_SYMBOL(napi_skb_finish); |
3633 | 3633 | ||
3634 | void skb_gro_reset_offset(struct sk_buff *skb) | 3634 | static 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 | } |
3647 | EXPORT_SYMBOL(skb_gro_reset_offset); | ||
3648 | 3650 | ||
3649 | gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) | 3651 | gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb) |
3650 | { | 3652 | { |