[PATCH] common/board_r.c: drop legacy and unused bi_enetaddr

The bi_enetaddr field in struct bd_info is write-only; nothing ever reads back the value.
Moreover, the value we write is more or less random, and certainly not something one can rely on: If the board has a writable environment and the mac address has been stored there, we fetch that value. But if the board doesn't, this code runs before initr_net() -> eth_initialize(), and thus before the code in eth-uclass which fetches MAC addresses from eeprom, fuses or whatnot and populates the (run-time) environment with those values.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk --- common/board_r.c | 15 --------------- include/asm-generic/u-boot.h | 1 - 2 files changed, 16 deletions(-)
diff --git a/common/board_r.c b/common/board_r.c index 6f4aca2077..3e6ba3a9bc 100644 --- a/common/board_r.c +++ b/common/board_r.c @@ -469,18 +469,6 @@ static int initr_malloc_bootparams(void) } #endif
-#ifdef CONFIG_CMD_NET -static int initr_ethaddr(void) -{ - struct bd_info *bd = gd->bd; - - /* kept around for legacy kernels only ... ignore the next section */ - eth_env_get_enetaddr("ethaddr", bd->bi_enetaddr); - - return 0; -} -#endif /* CONFIG_CMD_NET */ - #if defined(CONFIG_LED_STATUS) static int initr_status_led(void) { @@ -756,9 +744,6 @@ static init_fnc_t init_sequence_r[] = { initr_status_led, #endif /* PPC has a udelay(20) here dating from 2002. Why? */ -#ifdef CONFIG_CMD_NET - initr_ethaddr, -#endif #if defined(CONFIG_GPIO_HOG) gpio_hog_probe_all, #endif diff --git a/include/asm-generic/u-boot.h b/include/asm-generic/u-boot.h index 1becc669ae..70303acd55 100644 --- a/include/asm-generic/u-boot.h +++ b/include/asm-generic/u-boot.h @@ -48,7 +48,6 @@ struct bd_info { #endif unsigned long bi_bootflags; /* boot / reboot flag (Unused) */ unsigned long bi_ip_addr; /* IP Address */ - unsigned char bi_enetaddr[6]; /* OLD: see README.enetaddr */ unsigned short bi_ethspeed; /* Ethernet speed in Mbps */ unsigned long bi_intfreq; /* Internal Freq, in MHz */ unsigned long bi_busfreq; /* Bus Freq, in MHz */

On Fri, May 20, 2022 at 01:19:08PM +0200, Rasmus Villemoes wrote:
The bi_enetaddr field in struct bd_info is write-only; nothing ever reads back the value.
Moreover, the value we write is more or less random, and certainly not something one can rely on: If the board has a writable environment and the mac address has been stored there, we fetch that value. But if the board doesn't, this code runs before initr_net() -> eth_initialize(), and thus before the code in eth-uclass which fetches MAC addresses from eeprom, fuses or whatnot and populates the (run-time) environment with those values.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk
I believe in this case legacy means non-device tree PowerPC Linux (and perhaps VxWorks?) since for ARM we would pass in ATAGS stuff instead but PowerPC we did do gd? Been so long...
Reviewed-by: Tom Rini trini@konsulko.com

On Fri, May 20, 2022 at 01:19:08PM +0200, Rasmus Villemoes wrote:
The bi_enetaddr field in struct bd_info is write-only; nothing ever reads back the value.
Moreover, the value we write is more or less random, and certainly not something one can rely on: If the board has a writable environment and the mac address has been stored there, we fetch that value. But if the board doesn't, this code runs before initr_net() -> eth_initialize(), and thus before the code in eth-uclass which fetches MAC addresses from eeprom, fuses or whatnot and populates the (run-time) environment with those values.
Signed-off-by: Rasmus Villemoes rasmus.villemoes@prevas.dk Reviewed-by: Tom Rini trini@konsulko.com
Applied to u-boot/next, thanks!
participants (2)
-
Rasmus Villemoes
-
Tom Rini