Eric Dumazet 329033f645 tcp: makes tcp_try_coalesce aware of skb->head_frag
TCP coalesce can check if skb to be merged has its skb->head mapped to a
page fragment, instead of a kmalloc() area.

We had to disable coalescing in this case, for performance reasons.

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

This reduces number of cache misses when user makes its copies, since a
less sk_buff are fetched.

This makes receive and ofo queues shorter and thus reduce cache line
misses in TCP stack.

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

Tested with tg3 nic, with GRO on or off. We can see "TCPRcvCoalesce"
counter being incremented.

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>
2012-04-30 21:35:49 -04:00
..
2012-04-15 12:37:19 -04:00
2012-04-15 12:44:40 -04:00
2012-04-02 04:33:43 -04:00
2012-03-28 18:30:03 +01:00
2012-04-15 12:37:19 -04:00
2012-04-15 12:37:19 -04:00
2011-10-19 03:10:46 -04:00
2012-03-08 00:30:32 -08:00
2012-04-15 12:37:19 -04:00
2012-04-15 12:37:19 -04:00
2012-03-11 23:42:51 -07:00
2012-04-15 12:37:19 -04:00
2011-12-12 19:04:10 -05:00
2012-04-15 12:44:40 -04:00
2012-03-19 16:53:08 -04:00
2012-04-15 12:37:19 -04:00
2012-03-11 15:52:12 -07:00
2012-01-20 14:17:26 -05:00
2012-01-20 14:17:26 -05:00
2011-03-31 11:26:23 -03:00
2012-01-31 12:14:00 -05:00
2011-03-31 11:26:23 -03:00
2012-03-11 23:42:51 -07:00
2012-01-17 10:31:12 -05:00
2012-04-15 12:37:19 -04:00
2010-07-12 12:57:54 -07:00