gro: Only use skb_gro_header for completely non-linear packets
Currently skb_gro_header is used for packets which put the hardware header in skb->data with the rest in frags. Since the drivers that need this optimisation all provide completely non-linear packets, we can gain extra optimisations by only performing the frag0 optimisation for completely non-linear packets. In particular, we can simply test frag0 (instead of skb_headlen) to see whether the optimisation is in force. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
67147ba99a
commit
78d3fd0b7d
@@ -2510,7 +2510,8 @@ void skb_gro_reset_offset(struct sk_buff *skb)
|
||||
NAPI_GRO_CB(skb)->data_offset = 0;
|
||||
NAPI_GRO_CB(skb)->frag0 = NULL;
|
||||
|
||||
if (!skb_headlen(skb) && !PageHighMem(skb_shinfo(skb)->frags[0].page))
|
||||
if (skb->mac_header == skb->tail &&
|
||||
!PageHighMem(skb_shinfo(skb)->frags[0].page))
|
||||
NAPI_GRO_CB(skb)->frag0 =
|
||||
page_address(skb_shinfo(skb)->frags[0].page) +
|
||||
skb_shinfo(skb)->frags[0].page_offset;
|
||||
|
Reference in New Issue
Block a user