net: make GRO aware of skb->head_frag
authorEric Dumazet <edumazet@google.com>
Mon, 30 Apr 2012 08:10:34 +0000 (08:10 +0000)
committerDavid S. Miller <davem@davemloft.net>
Tue, 1 May 2012 01:35:49 +0000 (21:35 -0400)
commitd7e8883cfcf4851afe74fb380cc62b7fa9cf66ba
tree1b513349c4f1c7edf7991de2016b3a2ed1083deb
parent8d4057a938481351dc690fbe23e8c72af08d5890
net: make GRO aware of skb->head_frag

GRO can check if skb to be merged has its skb->head mapped to a page
fragment, instead of a kmalloc() area.

We 'upgrade' skb->head as a fragment in itself

This avoids the frag_list fallback, and permits to build true GRO skb
(one sk_buff and up to 16 fragments), using less memory.

This reduces number of cache misses when user makes its copy, since a
single sk_buff is fetched.

This is a followup of patch "net: allow skb->head to be a page fragment"

Signed-off-by: Eric Dumazet <edumazet@google.com>
Cc: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi>
Cc: Herbert Xu <herbert@gondor.apana.org.au>
Cc: Maciej Żenczykowski <maze@google.com>
Cc: Neal Cardwell <ncardwell@google.com>
Cc: Tom Herbert <therbert@google.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Cc: Ben Hutchings <bhutchings@solarflare.com>
Cc: Matt Carlson <mcarlson@broadcom.com>
Cc: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
include/linux/skbuff.h
net/core/dev.c
net/core/skbuff.c