[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