linux/drivers/net/sfc
Steve Hodgson 244558006c sfc: Recycle discarded rx buffers back onto the queue
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: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-06-02 02:21:09 -07:00
..
bitfield.h sfc: Update version, copyright dates, authors 2009-11-29 17:23:58 -08:00
efx.c sfc: Remove efx_rx_queue::add_lock 2010-06-02 02:21:08 -07:00
efx.h sfc: Remove efx_rx_queue::add_lock 2010-06-02 02:21:08 -07:00
enum.h sfc: Update version, copyright dates, authors 2009-11-29 17:23:58 -08:00
ethtool.c sfc: Create multiple TX queues 2010-04-28 12:44:44 -07:00
falcon_boards.c sfc: Change falcon_probe_board() to fail for unsupported boards 2010-04-28 12:18:27 -07:00
falcon_gmac.c sfc: Update version, copyright dates, authors 2009-11-29 17:23:58 -08:00
falcon_xmac.c sfc: Reconfigure the XAUI serdes after an EM reset 2010-04-28 12:44:34 -07:00
falcon.c sfc: Workaround flush failures on Falcon B0 2010-06-02 02:21:06 -07:00
io.h sfc: Rename register I/O header and functions used by both Falcon and Siena 2009-10-24 04:27:04 -07:00
Kconfig sfc: Add support for SFC9000 family (2) 2009-11-29 17:23:57 -08:00
mac.h sfc: Update version, copyright dates, authors 2009-11-29 17:23:58 -08:00
Makefile sfc: Add support for SFC9000 family (2) 2009-11-29 17:23:57 -08:00
mcdi_mac.c sfc: Set PERIODIC_NOEVENT flag for MC_CMD_MAC_STATS 2010-04-28 12:44:38 -07:00
mcdi_pcol.h sfc: Update MCDI protocol definitions 2010-04-28 12:44:37 -07:00
mcdi_phy.c sfc: Synchronise link_advertising and wanted_fc on Siena 2010-06-02 02:21:06 -07:00
mcdi.c sfc: Log specific message for failure of NVRAM self-test 2010-04-28 12:44:36 -07:00
mcdi.h sfc: Implement NVRAM selftest for SFC9000 family 2010-02-03 19:12:45 -08:00
mdio_10g.c sfc: Replace PHY MDIO test with an 'alive' test 2010-02-03 19:12:44 -08:00
mdio_10g.h sfc: Replace PHY MDIO test with an 'alive' test 2010-02-03 19:12:44 -08:00
mtd.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
net_driver.h sfc: Support only two rx buffers per page 2010-06-02 02:21:08 -07:00
nic.c sfc: Remove efx_rx_queue::add_lock 2010-06-02 02:21:08 -07:00
nic.h sfc: Remove efx_rx_queue::add_lock 2010-06-02 02:21:08 -07:00
phy.h sfc: Update version, copyright dates, authors 2009-11-29 17:23:58 -08:00
qt202x_phy.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
regs.h tree-wide: Assorted spelling fixes 2010-02-09 11:13:56 +01:00
rx.c sfc: Recycle discarded rx buffers back onto the queue 2010-06-02 02:21:09 -07:00
selftest.c sfc: Allow DRV_GEN events to be used outside of selftests 2010-06-02 02:21:07 -07:00
selftest.h sfc: Create multiple TX queues 2010-04-28 12:44:44 -07:00
siena.c Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6 2010-05-02 22:02:06 -07:00
spi.h sfc: Extend MTD driver for use with new NICs 2009-11-29 17:23:54 -08:00
tenxpress.c include cleanup: Update gfp.h and slab.h includes to prepare for breaking implicit slab.h inclusion from percpu.h 2010-03-30 22:02:32 +09:00
tx.c sfc: Create multiple TX queues 2010-04-28 12:44:44 -07:00
workarounds.h sfc: Workaround flush failures on Falcon B0 2010-06-02 02:21:06 -07:00