• Edward Cree's avatar
    net: use listified RX for handling GRO_NORMAL skbs · 323ebb61
    Edward Cree authored
    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: default avatarEdward Cree <ecree@solarflare.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    323ebb61
dev.c 249 KB