aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/adi
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/ethernet/adi')
-rw-r--r--drivers/net/ethernet/adi/bfin_mac.c15
-rw-r--r--drivers/net/ethernet/adi/bfin_mac.h2
2 files changed, 10 insertions, 7 deletions
diff --git a/drivers/net/ethernet/adi/bfin_mac.c b/drivers/net/ethernet/adi/bfin_mac.c
index 49733696703a..ab4daeccdf98 100644
--- a/drivers/net/ethernet/adi/bfin_mac.c
+++ b/drivers/net/ethernet/adi/bfin_mac.c
@@ -621,6 +621,7 @@ static int bfin_mac_set_mac_address(struct net_device *dev, void *p)
621 if (netif_running(dev)) 621 if (netif_running(dev))
622 return -EBUSY; 622 return -EBUSY;
623 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len); 623 memcpy(dev->dev_addr, addr->sa_data, dev->addr_len);
624 dev->addr_assign_type &= ~NET_ADDR_RANDOM;
624 setup_mac_addr(dev->dev_addr); 625 setup_mac_addr(dev->dev_addr);
625 return 0; 626 return 0;
626} 627}
@@ -1494,12 +1495,14 @@ static int __devinit bfin_mac_probe(struct platform_device *pdev)
1494 * Grab the MAC from the board somehow 1495 * Grab the MAC from the board somehow
1495 * this is done in the arch/blackfin/mach-bfxxx/boards/eth_mac.c 1496 * this is done in the arch/blackfin/mach-bfxxx/boards/eth_mac.c
1496 */ 1497 */
1497 if (!is_valid_ether_addr(ndev->dev_addr)) 1498 if (!is_valid_ether_addr(ndev->dev_addr)) {
1498 bfin_get_ether_addr(ndev->dev_addr); 1499 if (bfin_get_ether_addr(ndev->dev_addr) ||
1499 1500 !is_valid_ether_addr(ndev->dev_addr)) {
1500 /* If still not valid, get a random one */ 1501 /* Still not valid, get a random one */
1501 if (!is_valid_ether_addr(ndev->dev_addr)) 1502 netdev_warn(ndev, "Setting Ethernet MAC to a random one\n");
1502 random_ether_addr(ndev->dev_addr); 1503 eth_hw_addr_random(ndev);
1504 }
1505 }
1503 1506
1504 setup_mac_addr(ndev->dev_addr); 1507 setup_mac_addr(ndev->dev_addr);
1505 1508
diff --git a/drivers/net/ethernet/adi/bfin_mac.h b/drivers/net/ethernet/adi/bfin_mac.h
index f8559ac9a403..960905c08223 100644
--- a/drivers/net/ethernet/adi/bfin_mac.h
+++ b/drivers/net/ethernet/adi/bfin_mac.h
@@ -101,6 +101,6 @@ struct bfin_mac_local {
101#endif 101#endif
102}; 102};
103 103
104extern void bfin_get_ether_addr(char *addr); 104extern int bfin_get_ether_addr(char *addr);
105 105
106#endif 106#endif