brcm47xx: wgt634u mac address fix
authorHauke Mehrtens <hauke@hauke-m.de>
Tue, 21 Dec 2010 13:34:09 +0000 (13:34 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Tue, 21 Dec 2010 13:34:09 +0000 (13:34 +0000)
The Netgear wgt634u uses minus between the hex digest of the mac
address and all other broadcom devices are using colons between the hex
digest. Now the mac address is correctly parsed also when minus is used.

SVN-Revision: 24749

target/linux/brcm47xx/patches-2.6.36/018-wgt634u_mac_address_parser_fix.patch [new file with mode: 0644]
target/linux/brcm47xx/patches-2.6.37/018-wgt634u_mac_address_parser_fix.patch [new file with mode: 0644]

diff --git a/target/linux/brcm47xx/patches-2.6.36/018-wgt634u_mac_address_parser_fix.patch b/target/linux/brcm47xx/patches-2.6.36/018-wgt634u_mac_address_parser_fix.patch
new file mode 100644 (file)
index 0000000..17d4ed6
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/arch/mips/include/asm/mach-bcm47xx/nvram.h
++++ b/arch/mips/include/asm/mach-bcm47xx/nvram.h
+@@ -39,8 +39,15 @@ extern int nvram_getenv(char *name, char
+ static inline void nvram_parse_macaddr(char *buf, u8 *macaddr)
+ {
+-      sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0], &macaddr[1],
+-             &macaddr[2], &macaddr[3], &macaddr[4], &macaddr[5]);
++      if (strchr(buf, ':')) {
++              sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0], &macaddr[1],
++                      &macaddr[2], &macaddr[3], &macaddr[4], &macaddr[5]);
++      } else if (strchr(buf, '-')) {
++              sscanf(buf, "%hhx-%hhx-%hhx-%hhx-%hhx-%hhx", &macaddr[0], &macaddr[1],
++                      &macaddr[2], &macaddr[3], &macaddr[4], &macaddr[5]);
++      } else {
++              printk(KERN_WARNING "Can not parse mac address: %s\n", buf);
++      }
+ }
+ #endif
diff --git a/target/linux/brcm47xx/patches-2.6.37/018-wgt634u_mac_address_parser_fix.patch b/target/linux/brcm47xx/patches-2.6.37/018-wgt634u_mac_address_parser_fix.patch
new file mode 100644 (file)
index 0000000..17d4ed6
--- /dev/null
@@ -0,0 +1,20 @@
+--- a/arch/mips/include/asm/mach-bcm47xx/nvram.h
++++ b/arch/mips/include/asm/mach-bcm47xx/nvram.h
+@@ -39,8 +39,15 @@ extern int nvram_getenv(char *name, char
+ static inline void nvram_parse_macaddr(char *buf, u8 *macaddr)
+ {
+-      sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0], &macaddr[1],
+-             &macaddr[2], &macaddr[3], &macaddr[4], &macaddr[5]);
++      if (strchr(buf, ':')) {
++              sscanf(buf, "%hhx:%hhx:%hhx:%hhx:%hhx:%hhx", &macaddr[0], &macaddr[1],
++                      &macaddr[2], &macaddr[3], &macaddr[4], &macaddr[5]);
++      } else if (strchr(buf, '-')) {
++              sscanf(buf, "%hhx-%hhx-%hhx-%hhx-%hhx-%hhx", &macaddr[0], &macaddr[1],
++                      &macaddr[2], &macaddr[3], &macaddr[4], &macaddr[5]);
++      } else {
++              printk(KERN_WARNING "Can not parse mac address: %s\n", buf);
++      }
+ }
+ #endif