From 4ce56cc4546c0f93e6e938760ed8eed5d1ae4d18 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Tue, 21 Dec 2010 13:34:09 +0000 Subject: brcm47xx: wgt634u mac address fix 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. git-svn-id: svn://svn.openwrt.org/openwrt/trunk@24749 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../018-wgt634u_mac_address_parser_fix.patch | 20 ++++++++++++++++++++ .../018-wgt634u_mac_address_parser_fix.patch | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 target/linux/brcm47xx/patches-2.6.36/018-wgt634u_mac_address_parser_fix.patch create mode 100644 target/linux/brcm47xx/patches-2.6.37/018-wgt634u_mac_address_parser_fix.patch (limited to 'target/linux/brcm47xx') 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 index 0000000000..17d4ed610a --- /dev/null +++ b/target/linux/brcm47xx/patches-2.6.36/018-wgt634u_mac_address_parser_fix.patch @@ -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 index 0000000000..17d4ed610a --- /dev/null +++ b/target/linux/brcm47xx/patches-2.6.37/018-wgt634u_mac_address_parser_fix.patch @@ -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 -- cgit v1.2.3