On Tue, Apr 26, 2016 at 8:57 PM, Bin Meng <bmeng...@gmail.com> wrote: > On Wed, Apr 27, 2016 at 8:06 AM, Bin Meng <bmeng...@gmail.com> wrote: >> 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. > > +Joe
I fixed these in place when applying. >> >>> + 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); >>> + } This is not checkpatch.pl clean either. Fixed when applied. >>> + 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 _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot