ixp4xx: (Titan Wireless 2662) check for invalid/null MAC before assigning a random one
authorAlexandros C. Couloumbis <alex@ozo.com>
Thu, 17 Jun 2010 08:17:17 +0000 (08:17 +0000)
committerAlexandros C. Couloumbis <alex@ozo.com>
Thu, 17 Jun 2010 08:17:17 +0000 (08:17 +0000)
SVN-Revision: 21825

target/linux/ixp4xx/patches-2.6.35/520-tw2662_support.patch

index cc796c504b11a2ad855668636405ee7115ca8bf6..a83a15dc99462e40d6e7d31658492db6a6a92419 100644 (file)
 +subsys_initcall(tw2662_pci_init);
 --- /dev/null
 +++ b/arch/arm/mach-ixp4xx/tw2662-setup.c
 +subsys_initcall(tw2662_pci_init);
 --- /dev/null
 +++ b/arch/arm/mach-ixp4xx/tw2662-setup.c
-@@ -0,0 +1,208 @@
+@@ -0,0 +1,215 @@
 +/*
 + * arch/arm/mach-ixp4xx/tw2662-setup.c
 + *
 +/*
 + * arch/arm/mach-ixp4xx/tw2662-setup.c
 + *
 +static void __init tw2662_init(void)
 +{
 +      ixp4xx_sys_init();
 +static void __init tw2662_init(void)
 +{
 +      ixp4xx_sys_init();
++      int i;
 +
 +      tw2662_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
 +      tw2662_flash_resource.end =
 +              IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;
 +
 +      platform_add_devices(tw2662_devices, ARRAY_SIZE(tw2662_devices));
 +
 +      tw2662_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
 +      tw2662_flash_resource.end =
 +              IXP4XX_EXP_BUS_BASE(0) + ixp4xx_exp_bus_size - 1;
 +
 +      platform_add_devices(tw2662_devices, ARRAY_SIZE(tw2662_devices));
-+      /* hack MACs as most of these boards have a broken eeprom */
-+      random_ether_addr(tw2662_plat_eth[0].hwaddr);
-+      random_ether_addr(tw2662_plat_eth[1].hwaddr);
++
++      for (i = 0; i < 6; i++)
++              if (tw2662_plat_eth[0].hwaddr[i] != 0x00)
++                      break;
++      if (i == 6) {
++              /* hack MACs as most of these boards have a broken eeprom */
++              random_ether_addr(tw2662_plat_eth[0].hwaddr);
++              tw2662_plat_eth[1].hwaddr = (tw2662_plat_eth[0].hwaddr + 1);
++      }
 +
 +}
 +
 +
 +}
 +