Use getenv to find the mac address since it could be in the bootloader
environment or command line and under different names.
This commit is contained in:
parent
dbb34a64a0
commit
3441a301f2
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user