Hi Lev, On Fri, Jan 8, 2016 at 7:04 AM, Lev Iserovich <lev.iserov...@deshawresearch.com> wrote: > For multiple ethernet interfaces the FDT offset of '/aliases' will change as > we > are adding MAC addresses to the FDT. > Therefore only the first interface ('ethernet0') will get properly updated > in > the FDT, with the rest getting FDT errors when we try to set their MAC > address. > > Signed-off-by: Lev Iserovich<isero...@deshawresearch.com> > --- > > Changes in v2: > - Rebase on u-boot-net patches: > http://patchwork.ozlabs.org/patch/539373/ > http://patchwork.ozlabs.org/patch/539374/ > - Recompute offset based on property index > > --- > > common/fdt_support.c | 21 ++++++++++++++------- > 1 file changed, 14 insertions(+), 7 deletions(-) > > diff --git a/common/fdt_support.c b/common/fdt_support.c > index 48faba9..713d2a4 100644 > --- a/common/fdt_support.c > +++ b/common/fdt_support.c > @@ -481,23 +481,30 @@ int fdt_fixup_memory(void *blob, u64 start, u64 size) > > void fdt_fixup_ethernet(void *fdt) > { > - int node, i, j; > + int i, j, prop; > char *tmp, *end; > char mac[16]; > const char *path; > unsigned char mac_addr[6]; > int offset; > > - node = fdt_path_offset(fdt, "/aliases"); > - if (node < 0) > + if (fdt_path_offset(fdt, "/aliases") < 0) > return; > - > - for (offset = fdt_first_property_offset(fdt, node); > - offset > 0; > - offset = fdt_next_property_offset(fdt, offset)) { > + > + // Cycle through all aliases
Please do not use C++ comment style. > + for (prop = 0; ; prop++) { > const char *name; > int len = strlen("ethernet"); > > + // FDT might have been edited, recompute the offset ditto. > + offset = fdt_first_property_offset(fdt, fdt_path_offset(fdt, > "/aliases")); > + // Select property number 'prop' ditto. > + for (i = 0; i < prop; i++) { > + offset = fdt_next_property_offset(fdt, offset); > + } > + if (offset < 0) > + break; > + > path = fdt_getprop_by_offset(fdt, offset, &name, NULL); > if (!strncmp(name, "ethernet", len)) { > i = trailing_strtol(name); > Regards, Bin _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot