• Steve Hodgson's avatar
    sfc: Recycle discarded rx buffers back onto the queue · 24455800
    Steve Hodgson authored
    The cut-through design of the receive path means that packets that
    fail to match the appropriate MAC filter are not discarded at the MAC
    but are flagged in the completion event as 'to be discarded'.  On
    networks with heavy multicast traffic, this can account for a
    significant proportion of received packets, so it is worthwhile to
    recycle the buffer immediately in this case rather than freeing it
    and then reallocating it shortly after.
    
    The only complication here is dealing with a page shared
    between two receive buffers. In that case, we need to be
    careful to free the dma mapping when both buffers have
    been free'd by the kernel. This means that we can only
    recycle such a page if both receive buffers are discarded.
    Unfortunately, in an environment with 1500mtu,
    rx_alloc_method=PAGE, and a mixture of discarded and
    not-discarded frames hitting the same receive queue,
    buffer recycling won't always be possible.
    Signed-off-by: default avatarBen Hutchings <bhutchings@solarflare.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    24455800
rx.c 20.2 KB