net: uclass: Save generated ethernet MAC addresses to the environment

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@denx.de>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
[trini: Update Kconfig, handle legacy networking case as well]
Signed-off-by: Tom Rini <trini@konsulko.com>
Acked-by: Ramon Fried <rfried.dev@gmail.com>
Link: https://lore.kernel.org/r/1a2518e3cc19c14a41875ef64c5acc1f16edc813.1641893287.git.michal.simek@xilinx.com
This commit is contained in:
Michal Simek 2022-01-11 10:28:09 +01:00
parent 2a9caba1ce
commit 381e6e5494
3 changed files with 9 additions and 4 deletions

View file

@ -27,10 +27,11 @@ config BOOTP_SEND_HOSTNAME
config NET_RANDOM_ETHADDR config NET_RANDOM_ETHADDR
bool "Random ethaddr if unset" bool "Random ethaddr if unset"
help help
Selecting this will allow the Ethernet interface to function Selecting this will allow the Ethernet interface to function even
even when the ethaddr variable for that interface is unset. when the ethaddr variable for that interface is unset. In this case,
A new MAC address will be generated on every boot and it will a random MAC address in the locally administered address space is
not be added to the environment. generated. It will be saved to the appropriate environment variable,
too.
config NETCONSOLE config NETCONSOLE
bool "NetConsole support" bool "NetConsole support"

View file

@ -583,6 +583,8 @@ static int eth_post_probe(struct udevice *dev)
net_random_ethaddr(pdata->enetaddr); net_random_ethaddr(pdata->enetaddr);
printf("\nWarning: %s (eth%d) using random MAC address - %pM\n", printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
dev->name, dev_seq(dev), pdata->enetaddr); dev->name, dev_seq(dev), pdata->enetaddr);
eth_env_set_enetaddr_by_index("eth", dev_seq(dev),
pdata->enetaddr);
#else #else
printf("\nError: %s address not set.\n", printf("\nError: %s address not set.\n",
dev->name); dev->name);

View file

@ -164,6 +164,8 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name,
net_random_ethaddr(dev->enetaddr); net_random_ethaddr(dev->enetaddr);
printf("\nWarning: %s (eth%d) using random MAC address - %pM\n", printf("\nWarning: %s (eth%d) using random MAC address - %pM\n",
dev->name, eth_number, dev->enetaddr); dev->name, eth_number, dev->enetaddr);
eth_env_set_enetaddr_by_index("eth", eth_number,
dev->enetaddr);
#else #else
printf("\nError: %s address not set.\n", printf("\nError: %s address not set.\n",
dev->name); dev->name);