mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-13 09:00:39 +09:00
net: fec: set mac address unconditionally
[ Upstream commitb82d44d784] If the mac address origin is not dt, you can only safely assign a mac address after "link up" of the device. If the link is off the clocks are disabled and because of issues assigning registers when clocks are off the new mac address cannot be written in .ndo_set_mac_address() on some soc's. This fix sets the mac address unconditionally in fec_restart(...) and ensures consistency between fec registers and the network layer. Signed-off-by: Gavin Schenk <g.schenk@eckelmann.de> Acked-by: Fugang Duan <fugang.duan@nxp.com> Acked-by: Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Fixes:9638d19e48("net: fec: add netif status check before set mac address") Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0ee4acb7b3
commit
bc5d8ced3c
@@ -944,11 +944,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(cpu_to_be32(temp_mac[0]), fep->hwp + FEC_ADDR_LOW);
|
||||
writel(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);
|
||||
|
||||
Reference in New Issue
Block a user