[ar71xx] move random MAC address generation into the platform initialization code
authorjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 26 Jan 2009 14:55:09 +0000 (14:55 +0000)
committerjuhosg <juhosg@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 26 Jan 2009 14:55:09 +0000 (14:55 +0000)
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14204 3c298f89-4303-0410-b956-a3cf2f4a3e73

target/linux/ar71xx/files/arch/mips/ar71xx/platform.c
target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx.h
target/linux/ar71xx/files/drivers/net/ag71xx/ag71xx_main.c

index ef70867a2b7cdbb8ca4e1acc045235051036466e..a01aecbd99ce2b562569ea6dc55ff555e776cf8b 100644 (file)
@@ -15,6 +15,7 @@
 #include <linux/init.h>
 #include <linux/delay.h>
 #include <linux/dma-mapping.h>
+#include <linux/etherdevice.h>
 #include <linux/platform_device.h>
 #include <linux/serial_8250.h>
 #include <linux/ath9k_platform.h>
@@ -456,8 +457,15 @@ void __init ar71xx_add_device_eth(unsigned int id)
                break;
        }
 
-       memcpy(pdata->mac_addr, ar71xx_mac_base, ETH_ALEN);
-       pdata->mac_addr[5] += ar71xx_eth_instance;
+       if (is_valid_ether_addr(ar71xx_mac_base)) {
+               memcpy(pdata->mac_addr, ar71xx_mac_base, ETH_ALEN);
+               pdata->mac_addr[5] += ar71xx_eth_instance;
+       } else {
+               random_ether_addr(pdata->mac_addr);
+               printk(KERN_DEBUG
+                       "ar71xx: using random MAC address for eth%d\n",
+                       ar71xx_eth_instance);
+       }
 
        platform_device_register(pdev);
        ar71xx_eth_instance++;
index 2db35ec12e0c4733b8cd7cc5fb5cac37cefb979c..2bbc7486e21f06d95a9b7222096f46e86ac1150f 100644 (file)
@@ -38,7 +38,7 @@
 #define ETH_FCS_LEN    4
 
 #define AG71XX_DRV_NAME                "ag71xx"
-#define AG71XX_DRV_VERSION     "0.5.16"
+#define AG71XX_DRV_VERSION     "0.5.17"
 
 #define AG71XX_NAPI_WEIGHT     64
 #define AG71XX_OOM_REFILL      (1 + HZ/10)
index 58e3b115189804bb37a1373e03e6228c728d8e08..8921639ab89eec4e0ee3e36e08f992c2c75ead58 100644 (file)
@@ -868,16 +868,9 @@ static int __init ag71xx_probe(struct platform_device *pdev)
        ag->oom_timer.data = (unsigned long) dev;
        ag->oom_timer.function = ag71xx_oom_timer_handler;
 
-       netif_napi_add(dev, &ag->napi, ag71xx_poll, AG71XX_NAPI_WEIGHT);
+       memcpy(dev->dev_addr, pdata->mac_addr, ETH_ALEN);
 
-       if (is_valid_ether_addr(pdata->mac_addr))
-               memcpy(dev->dev_addr, pdata->mac_addr, ETH_ALEN);
-       else {
-               dev->dev_addr[0] = 0xde;
-               dev->dev_addr[1] = 0xad;
-               get_random_bytes(&dev->dev_addr[2], 3);
-               dev->dev_addr[5] = pdev->id & 0xff;
-       }
+       netif_napi_add(dev, &ag->napi, ag71xx_poll, AG71XX_NAPI_WEIGHT);
 
        err = register_netdev(dev);
        if (err) {