diff mbox

[net-next,v1,1/1] net: fec: init MAC prior to mii bus probe

Message ID 1435044771-22828-1-git-send-email-B38611@freescale.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Nimrod Andy June 23, 2015, 7:32 a.m. UTC
Below case causes mii bus probe failed:
ifconfig eth0 down -> suspend/resume with Mega/fax mix off -> ifconfig eth0 up

In i.MX6SX/i.MX7D chip, Mega/fast mix off feature is supported that means most of
SOC power will be off including ENET MAC for power saving. Once ENET MAC power
off, all initialized MAC registers reset to default, so in the case, it must
init MAC prior to mii bus probe.

Signed-off-by: Fugang Duan <B38611@freescale.com>
---
 drivers/net/ethernet/freescale/fec_main.c |    4 +++-
 1 files changed, 3 insertions(+), 1 deletions(-)

Comments

David Miller June 23, 2015, 2:11 p.m. UTC | #1
From: Fugang Duan <B38611@freescale.com>
Date: Tue, 23 Jun 2015 15:32:51 +0800

> Below case causes mii bus probe failed:
> ifconfig eth0 down -> suspend/resume with Mega/fax mix off -> ifconfig eth0 up
> 
> In i.MX6SX/i.MX7D chip, Mega/fast mix off feature is supported that means most of
> SOC power will be off including ENET MAC for power saving. Once ENET MAC power
> off, all initialized MAC registers reset to default, so in the case, it must
> init MAC prior to mii bus probe.
> 
> Signed-off-by: Fugang Duan <B38611@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 bf4cf3f..e464aea 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -2856,12 +2856,14 @@  fec_enet_open(struct net_device *ndev)
 	if (ret)
 		goto err_enet_alloc;
 
+	/* Init MAC prior to mii bus probe */
+	fec_restart(ndev);
+
 	/* Probe and connect to PHY when open the interface */
 	ret = fec_enet_mii_probe(ndev);
 	if (ret)
 		goto err_enet_mii_probe;
 
-	fec_restart(ndev);
 	napi_enable(&fep->napi);
 	phy_start(fep->phy_dev);
 	netif_tx_start_all_queues(ndev);