diff mbox

[2/2] fec: Invert the order of function calls in fec_restart()

Message ID 1368637587-13391-2-git-send-email-fabio.estevam@freescale.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Fabio Estevam May 15, 2013, 5:06 p.m. UTC
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>
---
 drivers/net/ethernet/freescale/fec_main.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

David Miller May 15, 2013, 9:54 p.m. UTC | #1
From: Fabio Estevam <fabio.estevam@freescale.com>
Date: Wed, 15 May 2013 14:06:27 -0300

> commit 54309fa6 ("net: fec: fix kernel oops when plug/unplug cable many times")
> introduced the following 'if' block in the beginning of fec_start():
 ...
> 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:
 ...
> Suggested-by: Eric Dumazet <eric.dumazet@gmail.com>
> Signed-off-by: Fabio Estevam <fabio.estevam@freescale.com>

Applied.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

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