summaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-06-18 10:54:24 +0000
committerflorian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-06-18 10:54:24 +0000
commitbc519178a2a80c14131551dc82dd99daca124acf (patch)
treea7bbf53b5919cf0bb94d544231bc9dcda6a93a0c /target
parentd0db379fe4cd6e03860c40e95d495528611851b2 (diff)
brcm63xx: provide a default sane MAC address for Cable Modem devices
Cable modem devices currently poke at some random location in RAM and may end up having an invalid MAC address which is not suitable. Provide a default one which is sane. Signed-off-by: Florian Fainelli <florian@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36957 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'target')
-rw-r--r--target/linux/brcm63xx/patches-3.9/426-hcs_mac_addr_pool.patch26
1 files changed, 26 insertions, 0 deletions
diff --git a/target/linux/brcm63xx/patches-3.9/426-hcs_mac_addr_pool.patch b/target/linux/brcm63xx/patches-3.9/426-hcs_mac_addr_pool.patch
new file mode 100644
index 0000000000..6354fe6214
--- /dev/null
+++ b/target/linux/brcm63xx/patches-3.9/426-hcs_mac_addr_pool.patch
@@ -0,0 +1,26 @@
+--- a/arch/mips/bcm63xx/nvram.c
++++ b/arch/mips/bcm63xx/nvram.c
+@@ -52,6 +52,7 @@ void __init bcm63xx_nvram_init(void *add
+ {
+ unsigned int check_len;
+ u32 crc, expected_crc;
++ u8 hcs_mac_addr[ETH_ALEN] = { 0x00, 0x10, 0x18, 0xff, 0xff, 0xff };
+
+ /* extract nvram data */
+ memcpy(&nvram, addr, sizeof(nvram));
+@@ -73,6 +74,15 @@ void __init bcm63xx_nvram_init(void *add
+ if (crc != expected_crc)
+ pr_warn("nvram checksum failed, contents may be invalid (expected %08x, got %08x)\n",
+ expected_crc, crc);
++
++ /* Cable modems have a different NVRAM which is embedded in the eCos
++ * firmware and not easily extractible, give at least a MAC address
++ * pool.
++ */
++ if (BCMCPU_IS_3368()) {
++ memcpy(nvram.mac_addr_base, hcs_mac_addr, ETH_ALEN);
++ nvram.mac_addr_count = 2;
++ }
+ }
+
+ u8 *bcm63xx_nvram_get_name(void)