• E
    net: use listified RX for handling GRO_NORMAL skbs · 323ebb61
    Edward Cree 提交于
    When GRO decides not to coalesce a packet, in napi_frags_finish(), instead
     of passing it to the stack immediately, place it on a list in the napi
     struct.  Then, at flush time (napi_complete_done(), napi_poll(), or
     napi_busy_loop()), call netif_receive_skb_list_internal() on the list.
    We'd like to do that in napi_gro_flush(), but it's not called if
     !napi->gro_bitmask, so we have to do it in the callers instead.  (There are
     a handful of drivers that call napi_gro_flush() themselves, but it's not
     clear why, or whether this will affect them.)
    Because a full 64 packets is an inefficiently large batch, also consume the
     list whenever it exceeds gro_normal_batch, a new net/core sysctl that
     defaults to 8.
    Signed-off-by: NEdward Cree <ecree@solarflare.com>
    Signed-off-by: NDavid S. Miller <davem@davemloft.net>
    323ebb61
netdevice.h 149.1 KB