From: Russell King <rmk+kernel@arm.linux.org.uk>
To: "David S. Miller" <davem@davemloft.net>
Cc: netdev@vger.kernel.org, linux-arm-kernel@lists.infradead.org
Subject: [PATCH A 07/12] net: fec: stop the phy before shutting down the MAC
Date: Tue, 08 Jul 2014 00:23:04 +0100 [thread overview]
Message-ID: <E1X4IFU-0004x5-Kp@rmk-PC.arm.linux.org.uk> (raw)
In-Reply-To: <20140707232148.GG21766@n2100.arm.linux.org.uk>
When the network interface goes down, stop the phy to prevent further
link up status changes before taking the MAC or netif sections down.
This prevents further reception of link up events which could
potentially call fec_restart().
Since phy_stop() takes the mutex which adjust_link() runs under, we
also ensure that adjust_link() will not already be processing a link
up event.
We also need to do this when suspending as well - we don't want a
mis-timed phy state change to restart the MAC after we have stopped
it for suspend, and thus need to restart the phy when resuming.
Acked-by: Fugang Duan <B38611@freescale.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
drivers/net/ethernet/freescale/fec_main.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c
index cf805468eecc..e0a1ac1826b7 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -2181,13 +2181,14 @@ fec_enet_close(struct net_device *ndev)
{
struct fec_enet_private *fep = netdev_priv(ndev);
+ phy_stop(fep->phy_dev);
+
/* Don't know what to do yet. */
napi_disable(&fep->napi);
fep->opened = 0;
netif_tx_disable(ndev);
fec_stop(ndev);
- phy_stop(fep->phy_dev);
phy_disconnect(fep->phy_dev);
fep->phy_dev = NULL;
@@ -2669,6 +2670,7 @@ fec_suspend(struct device *dev)
struct fec_enet_private *fep = netdev_priv(ndev);
if (netif_running(ndev)) {
+ phy_stop(fep->phy_dev);
fec_stop(ndev);
netif_device_detach(ndev);
}
@@ -2702,6 +2704,7 @@ fec_resume(struct device *dev)
if (netif_running(ndev)) {
fec_restart(ndev, fep->full_duplex);
netif_device_attach(ndev);
+ phy_start(fep->phy_dev);
}
return 0;
--
1.8.3.1
next prev parent reply other threads:[~2014-07-07 23:23 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-07 23:21 [PATCH A 00/12] Freescale ethernet driver updates Russell King - ARM Linux
2014-07-07 23:22 ` [PATCH A 01/12] net: fec: iMX6 FEC does not support half-duplex gigabit Russell King
2014-07-08 16:52 ` Sergei Shtylyov
2014-07-07 23:22 ` [PATCH A 02/12] net: fec: fix ethtool set_pauseparam duplex bug Russell King
2014-07-07 23:22 ` [PATCH A 03/12] net: fec: fix interrupt handling races Russell King
2014-07-07 23:22 ` [PATCH A 04/12] net: fec: use netif_tx_disable() rather than netif_stop_queue() Russell King
2014-07-07 23:22 ` [PATCH A 05/12] net: fec: remove checking for NULL phy_dev in fec_enet_close() Russell King
2014-07-07 23:22 ` [PATCH A 06/12] net: fec: ensure that a disconnected phy isn't configured Russell King
2014-07-07 23:23 ` Russell King [this message]
2014-07-07 23:23 ` [PATCH A 08/12] net: fec: remove useless fep->opened Russell King
2014-07-07 23:23 ` [PATCH A 09/12] net: fec: make rx skb handling more robust Russell King
2014-07-07 23:23 ` [PATCH A 10/12] net: fec: clean up transmit descriptor setup Russell King
2014-07-07 23:23 ` [PATCH A 11/12] net: fec: ensure fec_enet_free_buffers() properly cleans the rings Russell King
2014-07-07 23:23 ` [PATCH A 12/12] net: fec: fix missing kmalloc() failure check in fec_enet_alloc_buffers() Russell King
2014-07-08 4:22 ` [PATCH A 00/12] Freescale ethernet driver updates David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1X4IFU-0004x5-Kp@rmk-PC.arm.linux.org.uk \
--to=rmk+kernel@arm.linux.org.uk \
--cc=davem@davemloft.net \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).