net: fec: use netif_tx_disable() rather than netif_stop_queue()
We use netif_stop_queue() in several places where we want to ensure that the start_xmit function is not running. netif_stop_queue() is not sufficient to achieve that - it merely sets a flag to indicate that the transmit queue(s) should not be run. netif_tx_disable() gives this guarantee, since it takes the transmit queue lock while marking the queue stopped. This will wait for the transmit function to complete before returning. Acked-by: Fugang Duan <B38611@freescale.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
7a16807ce1
commit
b49cd504c4
|
@ -834,7 +834,7 @@ fec_restart(struct net_device *ndev, int duplex)
|
|||
if (netif_running(ndev)) {
|
||||
netif_device_detach(ndev);
|
||||
napi_disable(&fep->napi);
|
||||
netif_stop_queue(ndev);
|
||||
netif_tx_disable(ndev);
|
||||
netif_tx_lock_bh(ndev);
|
||||
}
|
||||
|
||||
|
@ -2181,7 +2181,7 @@ fec_enet_close(struct net_device *ndev)
|
|||
/* Don't know what to do yet. */
|
||||
napi_disable(&fep->napi);
|
||||
fep->opened = 0;
|
||||
netif_stop_queue(ndev);
|
||||
netif_tx_disable(ndev);
|
||||
fec_stop(ndev);
|
||||
|
||||
if (fep->phy_dev) {
|
||||
|
|
Loading…
Reference in New Issue