summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
diff options
context:
space:
mode:
authorFabio Estevam <fabio.estevam@freescale.com>2013-05-15 07:06:27 +0000
committerDavid S. Miller <davem@davemloft.net>2013-05-15 14:42:15 -0700
commit1ed0d56c1d5ff07a5d57e6467621f9a0c09b0b65 (patch)
tree55b88d5fd4bc5d6d4be8cdbd40971d67c08d8c3b /drivers/net/ethernet
parent3169134478a9638baf0dbb4fdca5a0718cbe8e27 (diff)
downloadop-kernel-dev-1ed0d56c1d5ff07a5d57e6467621f9a0c09b0b65.zip
op-kernel-dev-1ed0d56c1d5ff07a5d57e6467621f9a0c09b0b65.tar.gz
fec: Invert the order of function calls in fec_restart()
commit 54309fa6 ("net: fec: fix kernel oops when plug/unplug cable many times") introduced the following 'if' block in the beginning of fec_start(): if (netif_running(ndev)) { netif_device_detach(ndev); napi_disable(&fep->napi); netif_stop_queue(ndev); netif_tx_lock_bh(ndev); } Then later in the end of fec_restart() there is another block that calls the opposite of each one of these functions. The correct approach would be to also call them with in the reverse order, so that we have as result: if (netif_running(ndev)) { netif_tx_unlock_bh(ndev); netif_wake_queue(ndev); napi_enable(&fep->napi); netif_device_attach(ndev); } Suggested-by: Eric Dumazet <eric.dumazet@gmail.com> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet')
-rw-r--r--drivers/net/ethernet/freescale/fec_main.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index 658fbc1..570dfad 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -616,10 +616,10 @@ fec_restart(struct net_device *ndev, int duplex)
writel(FEC_DEFAULT_IMASK, fep->hwp + FEC_IMASK);
if (netif_running(ndev)) {
- netif_device_attach(ndev);
- napi_enable(&fep->napi);
- netif_wake_queue(ndev);
netif_tx_unlock_bh(ndev);
+ netif_wake_queue(ndev);
+ napi_enable(&fep->napi);
+ netif_device_attach(ndev);
}
}
OpenPOWER on IntegriCloud