[U-Boot] [PATCH] fdt: fix setting MAC addresses for multiple interfaces
Bin Meng
bmeng.cn at gmail.com
Thu Jan 7 03:42:47 CET 2016
Hi Lev,
On Thu, Jan 7, 2016 at 5:01 AM, Lev Iserovich
<iserovil at deshawresearch.com> wrote:
> For multiple ethernet interfaces the FDT offset of '/aliases' will change as we
> are adding MAC addresses to the FDT.
Could you please elaborate more under what situation the offset of
'/aliases' will change?
> 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.
>
> Switch to using fdt_get_alias() which is the proper way to get the FDT path.
>
> Signed-off-by: Lev Iserovich <iserovil at deshawresearch.com>
> ---
>
> common/fdt_support.c | 8 ++------
> 1 file changed, 2 insertions(+), 6 deletions(-)
>
> diff --git a/common/fdt_support.c b/common/fdt_support.c
> index 66464db..20e0e1c 100644
> --- a/common/fdt_support.c
> +++ b/common/fdt_support.c
> @@ -481,16 +481,12 @@ int fdt_fixup_memory(void *blob, u64 start, u64 size)
>
> void fdt_fixup_ethernet(void *fdt)
> {
> - int node, i, j;
> + int i, j;
> char enet[16], *tmp, *end;
> char mac[16];
> const char *path;
> unsigned char mac_addr[6];
>
> - node = fdt_path_offset(fdt, "/aliases");
> - if (node < 0)
> - return;
> -
> if (!getenv("ethaddr")) {
> if (getenv("usbethaddr")) {
> strcpy(mac, "usbethaddr");
> @@ -505,7 +501,7 @@ void fdt_fixup_ethernet(void *fdt)
> i = 0;
> while ((tmp = getenv(mac)) != NULL) {
> sprintf(enet, "ethernet%d", i);
> - path = fdt_getprop(fdt, node, enet, NULL);
> + path = fdt_get_alias(fdt, enet);
Can you please rebase your patch on top of the following two:
http://patchwork.ozlabs.org/patch/539373/
http://patchwork.ozlabs.org/patch/539374/
> if (!path) {
> debug("No alias for %s\n", enet);
> sprintf(mac, "eth%daddr", ++i);
> --
Regards,
Bin
More information about the U-Boot
mailing list