[PATCHv3] net: uclass: Save generated ethernet MAC addresses to the environment

Ramon Fried rfried.dev at gmail.com
Sat Nov 27 20:37:33 CET 2021


On Mon, Nov 22, 2021 at 3:45 PM Tom Rini <trini at konsulko.com> wrote:
>
> From: Michal Simek <michal.simek at xilinx.com>
>
> When a MAC address is randomly generated we currently only update the
> appropriate data structure.  For consistency and to re-align with
> historic usage, it should be also saved to the appropriate environment
> variable as well.
>
> Cc: Wolfgang Denk <wd at denx.de>
> Signed-off-by: Michal Simek <michal.simek at xilinx.com>
> Reviewed-by: Ramon Fried <rfried.dev at gmail.com>
> [trini: Update Kconfig, handle legacy networking case as well]
> Signed-off-by: Tom Rini <trini at konsulko.com>
> ---
> Changes in v3:
> - Update Kconfig help text with Wolfgang's suggestion
> - Reword the commit message to hopefully be clearer
>
> Changes in v2:
> - Update Kconfig help text to reflect this change.
> - Update the legacy path to match.
> ---
>  net/Kconfig      | 9 +++++----
>  net/eth-uclass.c | 2 ++
>  net/eth_legacy.c | 2 ++
>  3 files changed, 9 insertions(+), 4 deletions(-)
>
> diff --git a/net/Kconfig b/net/Kconfig
> index 7a2d14501881..cabe93c6bd29 100644
> --- a/net/Kconfig
> +++ b/net/Kconfig
> @@ -27,10 +27,11 @@ config BOOTP_SEND_HOSTNAME
>  config NET_RANDOM_ETHADDR
>         bool "Random ethaddr if unset"
>         help
> -         Selecting this will allow the Ethernet interface to function
> -         even when the ethaddr variable for that interface is unset.
> -         A new MAC address will be generated on every boot and it will
> -         not be added to the environment.
> +         Selecting this will allow the Ethernet interface to function even
> +         when the ethaddr variable for that interface is unset.  In this case,
> +         a random MAC address in the locally administered address space is
> +         generated. It will be saved to the appropriate environment variable,
> +         too.
>
>  config NETCONSOLE
>         bool "NetConsole support"
> diff --git a/net/eth-uclass.c b/net/eth-uclass.c
> index 0da0e85be031..58c308f33276 100644
> --- a/net/eth-uclass.c
> +++ b/net/eth-uclass.c
> @@ -583,6 +583,8 @@ static int eth_post_probe(struct udevice *dev)
>                 net_random_ethaddr(pdata->enetaddr);
>                 printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
>                        dev->name, dev_seq(dev), pdata->enetaddr);
> +               eth_env_set_enetaddr_by_index("eth", dev_seq(dev),
> +                                             pdata->enetaddr);
>  #else
>                 printf("\nError: %s address not set.\n",
>                        dev->name);
> diff --git a/net/eth_legacy.c b/net/eth_legacy.c
> index f383ccce0b92..e7f53b958b2e 100644
> --- a/net/eth_legacy.c
> +++ b/net/eth_legacy.c
> @@ -164,6 +164,8 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
>                 net_random_ethaddr(dev->enetaddr);
>                 printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
>                        dev->name, eth_number, dev->enetaddr);
> +               eth_env_set_enetaddr_by_index("eth", dev_seq(dev),
> +                                             pdata->enetaddr);
>  #else
>                 printf("\nError: %s address not set.\n",
>                        dev->name);
> --
> 2.25.1
>
Acked-by: Ramon Fried <rfried.dev at gmail.com>


More information about the U-Boot mailing list