aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ar71xx/files/arch/mips
diff options
context:
space:
mode:
authorGabor Juhos <juhosg@openwrt.org>2009-01-26 14:55:09 +0000
committerGabor Juhos <juhosg@openwrt.org>2009-01-26 14:55:09 +0000
commitfc9fbf2abb37e65a2cf07b3d2b07550ee53aee9d (patch)
tree4c39da6efb6ce332ca8a11f0eeee16e789664400 /target/linux/ar71xx/files/arch/mips
parentfc32548f2a4c56ab530aa69ac5abedfd15491634 (diff)
downloadupstream-fc9fbf2abb37e65a2cf07b3d2b07550ee53aee9d.tar.gz
upstream-fc9fbf2abb37e65a2cf07b3d2b07550ee53aee9d.tar.bz2
upstream-fc9fbf2abb37e65a2cf07b3d2b07550ee53aee9d.zip
[ar71xx] move random MAC address generation into the platform initialization code
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@14204 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target/linux/ar71xx/files/arch/mips')
-rw-r--r--target/linux/ar71xx/files/arch/mips/ar71xx/platform.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c b/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c
index ef70867a2b..a01aecbd99 100644
--- a/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c
+++ b/target/linux/ar71xx/files/arch/mips/ar71xx/platform.c
@@ -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++;