From 3e6b801eb487cf2339f779e69222540f37d7d821 Mon Sep 17 00:00:00 2001 From: John Crispin Date: Wed, 28 Jan 2015 12:06:22 +0000 Subject: [PATCH] ralink: check ethernet MAC address whether it is valid 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. Signed-off-by: wengbj git-svn-id: svn://svn.openwrt.org/openwrt/trunk@44166 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../linux/ramips/files/drivers/net/ethernet/ralink/ralink_soc_eth.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 d7d1e8efc9..9900a5e508 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) -- 2.11.0