• E
    tcp: makes tcp_try_coalesce aware of skb->head_frag · 329033f6
    Eric Dumazet 提交于
    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: NEric 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: NDavid S. Miller <davem@davemloft.net>
    329033f6
tcp_input.c 174.2 KB