gro: Avoid copying headers of unmerged packets
authorHerbert Xu <herbert@gondor.apana.org.au>
Thu, 29 Jan 2009 14:19:50 +0000 (14:19 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 30 Jan 2009 00:33:03 +0000 (16:33 -0800)
commit86911732d3996a9da07914b280621450111bb6da
treee787240d5ba869ddf4d0adfc3f9c69e0372e96ef
parent5d0d9be8ef456afc6c3fb5f8aad06ef19b704b05
gro: Avoid copying headers of unmerged packets

Unfortunately simplicity isn't always the best.  The fraginfo
interface turned out to be suboptimal.  The problem was quite
obvious.  For every packet, we have to copy the headers from
the frags structure into skb->head, even though for 99% of the
packets this part is immediately thrown away after the merge.

LRO didn't have this problem because it directly read the headers
from the frags structure.

This patch attempts to address this by creating an interface
that allows GRO to access the headers in the first frag without
having to copy it.  Because all drivers that use frags place the
headers in the first frag this optimisation should be enough.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/netdevice.h
include/linux/skbuff.h
net/8021q/vlan_core.c
net/core/dev.c
net/core/skbuff.c
net/ipv4/af_inet.c
net/ipv4/tcp.c
net/ipv4/tcp_ipv4.c
net/ipv6/af_inet6.c
net/ipv6/tcp_ipv6.c