lantiq: Fix macaddr-setting code on DGN3500 and possibly other devices

Signed-off-by: Daniel Gimpelevich <daniel@gimpelevich.san-francisco.ca.us>
This commit is contained in:
Daniel Gimpelevich 2016-05-27 15:30:47 -07:00 committed by John Crispin
parent 96ad827e17
commit 8b321d45be

View file

@ -379,7 +379,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+ eth_mac_set = mac_pton(str, eth_mac); + eth_mac_set = mac_pton(str, eth_mac);
+ return !eth_mac_set; + return !eth_mac_set;
+} +}
+__setup("ethaddr=", setup_ethaddr); +early_param("ethaddr", setup_ethaddr);
+ +
+int __init of_eth_mac_probe(struct platform_device *pdev) +int __init of_eth_mac_probe(struct platform_device *pdev)
+{ +{
@ -620,10 +620,10 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
goto err_hw; goto err_hw;
- memcpy(&mac, &priv->pldata->mac, sizeof(struct sockaddr)); - memcpy(&mac, &priv->pldata->mac, sizeof(struct sockaddr));
+ if (priv->mac) + memcpy(&mac.sa_data, ltq_get_eth_mac(), ETH_ALEN);
+
+ if (priv->mac && !is_valid_ether_addr(mac.sa_data))
+ memcpy(&mac.sa_data, priv->mac, ETH_ALEN); + memcpy(&mac.sa_data, priv->mac, ETH_ALEN);
+ else
+ memcpy(&mac.sa_data, ltq_get_eth_mac(), ETH_ALEN);
+ +
if (!is_valid_ether_addr(mac.sa_data)) { if (!is_valid_ether_addr(mac.sa_data)) {
pr_warn("etop: invalid MAC, using random\n"); pr_warn("etop: invalid MAC, using random\n");