gianfar: Remove clean_rx_ring race from gfar_ethtool
authorClaudiu Manoil <claudiu.manoil@freescale.com>
Mon, 17 Feb 2014 10:53:19 +0000 (12:53 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 18 Feb 2014 20:03:02 +0000 (15:03 -0500)
commit7cca336ae1b27909526987e076388a388f668fe0
treea92907a1923cdce54573d29abcab62c03d097c9a
parentc10650b661b6c43c82c8e91b1d0b9b6adcf7f7dc
gianfar: Remove clean_rx_ring race from gfar_ethtool

gfar_clean_rx_ring() was designed to be called from napi
(rx softirq) context to do the Rx processing. Calling it
from a process context like this is a bug as it will
clearly race with the napi Rx processing.

There's also no point in initializing num_txbdfree since
startup_gfar() already does that, when bringing the device
up again (after reset). Changing num_txbdfree "on-the-fly"
like this is also subject to race conditions.  num_txbdfree
is handled by the Tx processing path and the device reset
procedure.  Also, don't assume that num_rx_queues is always
equal to num_tx_queues.

Signed-off-by: Claudiu Manoil <claudiu.manoil@freescale.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/freescale/gianfar_ethtool.c