diff options
author | thompsa <thompsa@FreeBSD.org> | 2010-09-17 01:09:12 +0000 |
---|---|---|
committer | thompsa <thompsa@FreeBSD.org> | 2010-09-17 01:09:12 +0000 |
commit | 28dfe1ce48ce3ed12ed5179ad47a0bef5935005f (patch) | |
tree | d8f094fb507ef9bc595675ee838f9b580df663e6 /sys/mips/atheros | |
parent | e42c9c0204797e6d4e21ad8a7593f5e56adb1122 (diff) | |
download | FreeBSD-src-28dfe1ce48ce3ed12ed5179ad47a0bef5935005f.zip FreeBSD-src-28dfe1ce48ce3ed12ed5179ad47a0bef5935005f.tar.gz |
Use getenv to find the mac address since it could be in the bootloader
environment or command line and under different names.
Diffstat (limited to 'sys/mips/atheros')
-rw-r--r-- | sys/mips/atheros/ar71xx_machdep.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/sys/mips/atheros/ar71xx_machdep.c b/sys/mips/atheros/ar71xx_machdep.c index 3c1bd5f..f9bacb6 100644 --- a/sys/mips/atheros/ar71xx_machdep.c +++ b/sys/mips/atheros/ar71xx_machdep.c @@ -145,7 +145,7 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused, { uint64_t platform_counter_freq; int argc, i, count = 0; - char **argv, **envp; + char **argv, **envp, *var; vm_offset_t kernend; /* @@ -167,19 +167,9 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused, * Protect ourselves from garbage in registers */ if (MIPS_IS_VALID_PTR(envp)) { - for (i = 0; envp[i]; i += 2) - { + for (i = 0; envp[i]; i += 2) { if (strcmp(envp[i], "memsize") == 0) realmem = btoc(strtoul(envp[i+1], NULL, 16)); - else if (strcmp(envp[i], "ethaddr") == 0) { - count = sscanf(envp[i+1], "%x.%x.%x.%x.%x.%x", - &ar711_base_mac[0], &ar711_base_mac[1], - &ar711_base_mac[2], &ar711_base_mac[3], - &ar711_base_mac[4], &ar711_base_mac[5]); - if (count < 6) - memset(ar711_base_mac, 0, - sizeof(ar711_base_mac)); - } } } @@ -245,6 +235,18 @@ platform_start(__register_t a0 __unused, __register_t a1 __unused, else printf ("envp is invalid\n"); + if ((var = getenv("ethaddr")) != NULL || + (var = getenv("kmac")) != NULL) { + count = sscanf(var, "%x%*c%x%*c%x%*c%x%*c%x%*c%x", + &ar711_base_mac[0], &ar711_base_mac[1], + &ar711_base_mac[2], &ar711_base_mac[3], + &ar711_base_mac[4], &ar711_base_mac[5]); + if (count < 6) + memset(ar711_base_mac, 0, + sizeof(ar711_base_mac)); + freeenv(var); + } + init_param2(physmem); mips_cpu_init(); pmap_bootstrap(); |