Fix system hang with below sequences:
~# ifconfig ethx down
~# ifconfig ethx hw ether xx:xx:xx:xx:xx:xx
After ethx down, stmmac all clocks gated off and then register access
causes system hang.
Reviewed-by: Jun Li <jun.li@nxp.com>
Signed-off-by: Joakim Zhang <qiangqing.zhang@nxp.com>
Acked-by: Jason Liu <jason.hui.liu@nxp.com>
struct stmmac_priv *priv = netdev_priv(ndev);
int ret = 0;
- ret = eth_mac_addr(ndev, addr);
+ ret = stmmac_bus_clks_enable(priv, true);
if (ret)
return ret;
+ ret = eth_mac_addr(ndev, addr);
+ if (ret)
+ goto error_set_mac;
+
stmmac_set_umac_addr(priv, priv->hw, ndev->dev_addr, 0);
+error_set_mac:
+ stmmac_bus_clks_enable(priv, false);
return ret;
}