Thread (4 messages) 4 messages, 3 authors, 2016-09-22

RE: [PATCH] net: fec: set mac address unconditionally

flat view

From: Andy Duan <hidden>
Date: 2016-09-21 18:00:35

From: Gavin Schenk <redacted> Sent: Wednesday, September 21, 2016 9:31 PM
To: Andy Duan <redacted>
Cc: netdev@vger.kernel.org; kernel@pengutronix.de; Gavin Schenk
[off-list ref]
Subject: [PATCH] net: fec: set mac address unconditionally

Fixes: 9638d19e4816 ("net: fec: add netif status check before set mac
address")

If the mac address origin is not dt, you can only safe assign a mac address
after "link up" of the device. If the link is down the clocks are disabled and
because of issues assigning registers when clocks are down the new mac
address is discarded on some soc's. This fix sets the mac address
unconditionally in fec_restart(...) and ensures consistens between fec
registers and the network layer.

Signed-off-by: Gavin Schenk <redacted>
---
It make sense, thanks.

Acked-by: Fugang Duan <redacted>
quoted hunk ↗ jump to hunk
 drivers/net/ethernet/freescale/fec_main.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)
diff --git a/drivers/net/ethernet/freescale/fec_main.c
b/drivers/net/ethernet/freescale/fec_main.c
index 2a03857cca18..bdabea6cd981 100644
--- a/drivers/net/ethernet/freescale/fec_main.c
+++ b/drivers/net/ethernet/freescale/fec_main.c
@@ -903,13 +903,11 @@ fec_restart(struct net_device *ndev)
 	 * enet-mac reset will reset mac address registers too,
 	 * so need to reconfigure it.
 	 */
-	if (fep->quirks & FEC_QUIRK_ENET_MAC) {
-		memcpy(&temp_mac, ndev->dev_addr, ETH_ALEN);
-		writel((__force u32)cpu_to_be32(temp_mac[0]),
-		       fep->hwp + FEC_ADDR_LOW);
-		writel((__force u32)cpu_to_be32(temp_mac[1]),
-		       fep->hwp + FEC_ADDR_HIGH);
-	}
+	memcpy(&temp_mac, ndev->dev_addr, ETH_ALEN);
+	writel((__force u32)cpu_to_be32(temp_mac[0]),
+	       fep->hwp + FEC_ADDR_LOW);
+	writel((__force u32)cpu_to_be32(temp_mac[1]),
+	       fep->hwp + FEC_ADDR_HIGH);

 	/* Clear any outstanding interrupt. */
 	writel(0xffffffff, fep->hwp + FEC_IEVENT);
--
1.9.1


Eckelmann AG
Vorstand: Dipl.-Ing. Peter Frankenbach (Sprecher) Dipl.-Wi.-Ing. Philipp
Eckelmann
Dr.-Ing. Frank-Thomas Mellert Dr.-Ing. Marco Münchhof Dr.-Ing. Frank
Uhlemann
Vorsitzender des Aufsichtsrats: Hubertus G. Krossa
Sitz der Gesellschaft: Berliner Str. 161, 65205 Wiesbaden, Amtsgericht
Wiesbaden HRB 12636
http://www.eckelmann.de
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help