From: Gavin Schenk <g.sch...@eckelmann.de> Sent: Wednesday, September 21, 2016 9:31 PM > To: Andy Duan <fugang.d...@nxp.com> > Cc: netdev@vger.kernel.org; ker...@pengutronix.de; Gavin Schenk > <g.sch...@eckelmann.de> > 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 <g.sch...@eckelmann.de> > ---
It make sense, thanks. Acked-by: Fugang Duan <fugang.d...@nxp.com> > 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