ip_tunnel: Create percpu gro_cell
authorMartin KaFai Lau <kafai@fb.com>
Fri, 16 Jan 2015 18:11:00 +0000 (10:11 -0800)
committerDavid S. Miller <davem@davemloft.net>
Sun, 18 Jan 2015 06:56:32 +0000 (01:56 -0500)
commit88340160f3ad22401b00f4efcee44f7ec4769b19
treedebe361cc6501cc3584f70015e648b7d51cc2456
parentf2bbca513c80081245ce2cb39f314ec37703afb3
ip_tunnel: Create percpu gro_cell

In the ipip tunnel, the skb->queue_mapping is lost in ipip_rcv().
All skb will be queued to the same cell->napi_skbs.  The
gro_cell_poll is pinned to one core under load.  In production traffic,
we also see severe rx_dropped in the tunl iface and it is probably due to
this limit: skb_queue_len(&cell->napi_skbs) > netdev_max_backlog.

This patch is trying to alloc_percpu(struct gro_cell) and schedule
gro_cell_poll to process the skb in the same core.

Signed-off-by: Martin KaFai Lau <kafai@fb.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/net/gro_cells.h