gianfar: Revive SKB recycling
authorAnton Vorontsov <avorontsov@ru.mvista.com>
Tue, 10 Nov 2009 14:11:10 +0000 (14:11 +0000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 12 Nov 2009 03:03:36 +0000 (19:03 -0800)
commita3bc1f11e9b867a4f49505ecac486a33af248b2e
tree026512ce0362e0f13f0c35d2fc6bc01d2498a2ed
parent836cf7faf8c75743477ed6ed341cce491f3183fb
gianfar: Revive SKB recycling

Before calling gfar_clean_tx_ring() the driver grabs an irqsave
spinlock, and then tries to recycle skbs. But since
skb_recycle_check() returns 0 with IRQs disabled, we'll never
recycle any skbs.

It appears that gfar_clean_tx_ring() and gfar_start_xmit() are
mostly idependent and can work in parallel, except when they
modify num_txbdfree.

So we can drop the lock from most sections and thus fix the skb
recycling.

Signed-off-by: Anton Vorontsov <avorontsov@ru.mvista.com>
Acked-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/gianfar.c