[OpenWrt-Devel] ralink: check ethernet MAC address whether it is valid
diff mbox

Message ID 1422426261-3261-1-git-send-email-fl.service@t-firefly.com
State Accepted
Headers show

Commit Message

wengbj Jan. 28, 2015, 6:24 a.m. UTC
From: wengbj <linux.c@foxmail.com>

The mac address usually write in factory block. but sometime user erase this block , the mac address will change to ff:ff:ff:ff:ff:ff.
This patch is purpose to fix this issue.
---
 .../drivers/net/ethernet/ralink/ralink_soc_eth.c   |    4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Patch
diff mbox

diff --git a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
index d7d1e8e..9900a5e 100644
--- a/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
+++ b/target/linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c
@@ -1220,8 +1220,10 @@  static int __init fe_init(struct net_device *dev)
 	if (priv->soc->switch_init)
 		priv->soc->switch_init(priv);
 
-	memcpy(dev->dev_addr, priv->soc->mac, ETH_ALEN);
 	of_get_mac_address_mtd(priv->device->of_node, dev->dev_addr);
+	/*If the mac address is invalid, use default mac address  */
+	if (!is_valid_ether_addr(dev->dev_addr))
+		memcpy(dev->dev_addr, priv->soc->mac, ETH_ALEN);
 
 	err = fe_mdio_init(priv);
 	if (err)