diff options
author | Gabor Juhos <juhosg@openwrt.org> | 2007-12-12 08:43:41 +0000 |
---|---|---|
committer | Gabor Juhos <juhosg@openwrt.org> | 2007-12-12 08:43:41 +0000 |
commit | a6a8cb6a554d0a99d05d7c7c69e0766895ce7ce8 (patch) | |
tree | 04db01fc4731103b052fa9b039a652f0a38bf11d | |
parent | a3d681bba552ca210d1795845bd1bf89a5c1b38d (diff) | |
download | mtk-20170518-a6a8cb6a554d0a99d05d7c7c69e0766895ce7ce8.zip mtk-20170518-a6a8cb6a554d0a99d05d7c7c69e0766895ce7ce8.tar.gz mtk-20170518-a6a8cb6a554d0a99d05d7c7c69e0766895ce7ce8.tar.bz2 |
fix mac address setup on RouterBOARDs
SVN-Revision: 9713
3 files changed, 12 insertions, 17 deletions
diff --git a/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c index 3d2facf..744c82f 100644 --- a/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c +++ b/target/linux/adm5120/files/arch/mips/adm5120/boards/mikrotik.c @@ -64,8 +64,6 @@ #define RB153_GPIO_CF_RDY ADM5120_GPIO_P1L1 #define RB153_GPIO_CF_WT ADM5120_GPIO_P0L0 -extern struct rb_hard_settings rb_hs; - /*--------------------------------------------------------------------------*/ static struct adm5120_pci_irq rb1xx_pci_irqs[] __initdata = { @@ -219,9 +217,13 @@ static void __init rb1xx_mac_setup(void) { int i, j; - for (i = 0; i < rb_hs.mac_count; i++) { - for (j = 0; j < RB_MAC_SIZE; j++) - adm5120_eth_macs[i][j] = rb_hs.macs[i][j]; + if (!rb_hs.mac_base) + return; + + for (i = 0; i < 6; i++) { + for (j = 0; j < 5; j++) + adm5120_eth_macs[i][j] = rb_hs.mac_base[j]; + adm5120_eth_macs[i][5] = rb_hs.mac_base[5]+i; } } diff --git a/target/linux/adm5120/files/arch/mips/adm5120/prom/routerboot.c b/target/linux/adm5120/files/arch/mips/adm5120/prom/routerboot.c index a93382d..0effe24 100644 --- a/target/linux/adm5120/files/arch/mips/adm5120/prom/routerboot.c +++ b/target/linux/adm5120/files/arch/mips/adm5120/prom/routerboot.c @@ -37,7 +37,6 @@ #include "prom_read.h" struct rb_hard_settings rb_hs; -EXPORT_SYMBOL(rb_hs); static int rb_found; static int __init routerboot_load_hs(u8 *buf, u16 buflen) @@ -86,15 +85,8 @@ static int __init routerboot_load_hs(u8 *buf, u16 buflen) rb_hs.mac_count = prom_read_le32(buf); break; case RB_ID_MAC_ADDRESS_PACK: - rb_hs.mac_count = len/RB_MAC_SIZE; - if (rb_hs.mac_count > RB_MAX_MAC_COUNT) - rb_hs.mac_count = RB_MAX_MAC_COUNT; - mac = buf; - for (i = 0; i < rb_hs.mac_count; i++) { - for (j = 0; j < RB_MAC_SIZE; j++) - rb_hs.macs[i][j] = mac[j]; - mac += RB_MAC_SIZE; - } + if ((len / RB_MAC_SIZE) > 0) + rb_hs.mac_base = buf; break; } diff --git a/target/linux/adm5120/files/include/asm-mips/mach-adm5120/prom/routerboot.h b/target/linux/adm5120/files/include/asm-mips/mach-adm5120/prom/routerboot.h index 3c0898b..41121c9 100644 --- a/target/linux/adm5120/files/include/asm-mips/mach-adm5120/prom/routerboot.h +++ b/target/linux/adm5120/files/include/asm-mips/mach-adm5120/prom/routerboot.h @@ -26,7 +26,6 @@ #define _ROUTERBOOT_H #define RB_MAC_SIZE 6 -#define RB_MAX_MAC_COUNT 6 struct rb_bios_settings { u32 hs_offs; /* hard settings offset */ @@ -41,7 +40,7 @@ struct rb_hard_settings { char *bios_ver; /* BIOS version */ u32 mem_size; /* memory size in bytes */ u32 mac_count; /* number of mac addresses */ - u8 macs[RB_MAC_SIZE][RB_MAX_MAC_COUNT]; /* mac addresses */ + u8 *mac_base; /* mac address base */ }; /* @@ -134,4 +133,6 @@ struct rb_hard_settings { extern int routerboot_present(void) __init; extern char *routerboot_get_boardname(void); +extern struct rb_hard_settings rb_hs; + #endif /* _ROUTERBOOT_H */ |