On Fri, Mar 17, 2017 at 09:44:59PM +0200, Tuomas Tynkkynen wrote: > The Raspberry Pi device tree files since Linux v4.9 have a "ethernet" > alias pointing to the on-board Ethernet device node. However, > U-Boot's fdt_fixup_ethernet() (and the kernel's of_alias_scan()) only > looks at ethernet aliases ending in digits. Make it also check the > "ethernet" alias. > > Without this Linux isn't told of the MAC address provided by the > RPI firmware and the ethernet device is always assigned a random MAC > address. > > The device trees themselves can't be fixed as someone is already > depending on the "ethernet" alias: > https://github.com/raspberrypi/firmware/issues/613 > > Signed-off-by: Tuomas Tynkkynen <[email protected]>
I looked into this a bit and there's a few other (much older) examples
of 'ethernet' rather than 'ethernet0' and the spec doesn't mandate
aliases end in a number.
That said, looking at the code, I think we can do this in a more clear
manner. Can you test this please?
diff --git a/common/fdt_support.c b/common/fdt_support.c
index 55d4d6f6d444..80186a95baf0 100644
--- a/common/fdt_support.c
+++ b/common/fdt_support.c
@@ -482,7 +482,6 @@ void fdt_fixup_ethernet(void *fdt)
/* Cycle through all aliases */
for (prop = 0; ; prop++) {
const char *name;
- int len = strlen("ethernet");
/* FDT might have been edited, recompute the offset */
offset = fdt_first_property_offset(fdt,
@@ -495,16 +494,13 @@ void fdt_fixup_ethernet(void *fdt)
break;
path = fdt_getprop_by_offset(fdt, offset, &name, NULL);
- if (!strncmp(name, "ethernet", len)) {
+ if (!strncmp(name, "ethernet", 8)) {
i = trailing_strtol(name);
- if (i != -1) {
- if (i == 0)
- strcpy(mac, "ethaddr");
- else
- sprintf(mac, "eth%daddr", i);
- } else {
- continue;
- }
+ /* Handle 'ethernet0' (0) and 'ethernet' (-1) */
+ if (i <= 0)
+ strcpy(mac, "ethaddr");
+ else
+ sprintf(mac, "eth%daddr", i);
tmp = getenv(mac);
if (!tmp)
continue;
--
Tom
signature.asc
Description: Digital signature
_______________________________________________ U-Boot mailing list [email protected] https://lists.denx.de/listinfo/u-boot

