Don't get the MAC address by the environment, but by the platform data
of the udevice. This will fix "net list" if the MAC address is randomly
generated and won't change behavior when linux is booted.

Signed-off-by: Michael Walle <mich...@walle.cc>
---

Hi,

this is a proposal to fix the "net list" in a way that linux still can have
its own fallback mechanism of MAC addresses even if the bootloader has
CONFIG_NET_RANDOM_ETHADDR enabled.

The intention is to replace [1], where if I understood correctly, the
intention was to fix "net list".

[1] 
https://lore.kernel.org/u-boot/3996ba2ee4e6ac136c0802dc0df4ef9b1750157c.1635506067.git.michal.si...@xilinx.com/

 cmd/net.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/cmd/net.c b/cmd/net.c
index 651c1411f4..1df0f4eb99 100644
--- a/cmd/net.c
+++ b/cmd/net.c
@@ -486,14 +486,14 @@ U_BOOT_CMD(
 static int do_net_list(struct cmd_tbl *cmdtp, int flag, int argc, char *const 
argv[])
 {
        const struct udevice *current = eth_get_dev();
-       unsigned char env_enetaddr[ARP_HLEN];
        const struct udevice *dev;
+       struct eth_pdata *pdata;
        struct uclass *uc;
 
        uclass_id_foreach_dev(UCLASS_ETH, dev, uc) {
-               eth_env_get_enetaddr_by_index("eth", dev_seq(dev), 
env_enetaddr);
-               printf("eth%d : %s %pM %s\n", dev_seq(dev), dev->name, 
env_enetaddr,
-                      current == dev ? "active" : "");
+               pdata = dev_get_plat(dev);
+               printf("eth%d : %s %pM %s\n", dev_seq(dev), dev->name,
+                      pdata->enetaddr, current == dev ? "active" : "");
        }
        return CMD_RET_SUCCESS;
 }
-- 
2.30.2

Reply via email to