Просмотр исходного кода

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 <[email protected]>

SVN-Revision: 44166
John Crispin 11 лет назад
Родитель
Сommit
c56cf3edc7

+ 3 - 1
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)