28 Jan, 2013

1 commit


12 Dec, 2012

1 commit

  • Dmitry Kravkov reported packet drops for GRE packets since GRO support
    was added.

    There is a race in gro_cell_poll() because we call napi_complete()
    without any synchronization with a concurrent gro_cells_receive()

    Once bug was triggered, we queued packets but did not schedule NAPI
    poll.

    We can fix this issue using the spinlock protected the napi_skbs queue,
    as we have to hold it to perform skb dequeue anyway.

    As we open-code skb_dequeue(), we no longer need to mask IRQS, as both
    producer and consumer run under BH context.

    Bug added in commit c9e6bc644e (net: add gro_cells infrastructure)

    Reported-by: Dmitry Kravkov
    Signed-off-by: Eric Dumazet
    Tested-by: Dmitry Kravkov
    Signed-off-by: David S. Miller

    Eric Dumazet
     

02 Oct, 2012

1 commit

  • This adds a new include file (include/net/gro_cells.h), to bring GRO
    (Generic Receive Offload) capability to tunnels, in a modular way.

    Because tunnels receive path is lockless, and GRO adds a serialization
    using a napi_struct, I chose to add an array of up to
    DEFAULT_MAX_NUM_RSS_QUEUES cells, so that multi queue devices wont be
    slowed down because of GRO layer.

    skb_get_rx_queue() is used as selector.

    In the future, we might add optional fanout capabilities, using rxhash
    for example.

    With help from Ben Hutchings who reminded me
    netif_get_num_default_rss_queues() function.

    Signed-off-by: Eric Dumazet
    Cc: Ben Hutchings
    Signed-off-by: David S. Miller

    Eric Dumazet