diff options
author | Ben Hutchings <bhutchings@solarflare.com> | 2012-05-17 19:40:54 +0200 |
---|---|---|
committer | Ben Hutchings <bhutchings@solarflare.com> | 2012-08-24 21:10:11 +0200 |
commit | f7251a9ce936f1006fbfdef63dbe42ae5e0fee7c (patch) | |
tree | e0187036af8587b61f4f492a31f3429b33dc0ffb /drivers/net/ethernet/sfc/nic.c | |
parent | sfc: Stop TX queues before they fill up (diff) | |
download | linux-f7251a9ce936f1006fbfdef63dbe42ae5e0fee7c.tar.xz linux-f7251a9ce936f1006fbfdef63dbe42ae5e0fee7c.zip |
sfc: Simplify TSO header buffer allocation
TSO header buffers contain a control structure immediately followed by
the packet headers, and are kept on a free list when not in use. This
complicates buffer management and tends to result in cache read misses
when we recycle such buffers (particularly if DMA-coherent memory
requires caches to be disabled).
Replace the free list with a simple mapping by descriptor index. We
know that there is always a payload descriptor between any two
descriptors with TSO header buffers, so we can allocate only one
such buffer for each two descriptors.
While we're at it, use a standard error code for allocation failure,
not -1.
Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Diffstat (limited to 'drivers/net/ethernet/sfc/nic.c')
-rw-r--r-- | drivers/net/ethernet/sfc/nic.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/net/ethernet/sfc/nic.c b/drivers/net/ethernet/sfc/nic.c index aa113709831d..cdff40b65729 100644 --- a/drivers/net/ethernet/sfc/nic.c +++ b/drivers/net/ethernet/sfc/nic.c @@ -298,7 +298,7 @@ efx_free_special_buffer(struct efx_nic *efx, struct efx_special_buffer *buffer) /************************************************************************** * * Generic buffer handling - * These buffers are used for interrupt status and MAC stats + * These buffers are used for interrupt status, MAC stats, etc. * **************************************************************************/ |