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)
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

Simple merge