From a9d4bdee43e0556020b1e0c6e153e39f86e51093 Mon Sep 17 00:00:00 2001 From: Florian Fainelli Date: Tue, 18 Jun 2013 10:54:24 +0000 Subject: [PATCH] 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 SVN-Revision: 36957 --- .../patches-3.9/426-hcs_mac_addr_pool.patch | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 target/linux/brcm63xx/patches-3.9/426-hcs_mac_addr_pool.patch 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 00000000000..6354fe62146 --- /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) -- 2.30.2