]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
arm: mvebu: turris_omnia: Overwrite ethaddr only if invalid
authorMarek Behún <marek.behun@nic.cz>
Sat, 9 Oct 2021 17:33:43 +0000 (19:33 +0200)
committerStefan Roese <sr@denx.de>
Thu, 21 Oct 2021 05:39:05 +0000 (07:39 +0200)
Currently we always overwrite ethaddrs with those from EEPROM.

In order to allow user to use a cloned MAC address in U-Boot, change the
code so that it sets ethaddr variables only if they aren't set or are
invalid.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
board/CZ.NIC/turris_omnia/turris_omnia.c

index a48e1f5c305d3bfef69d00f64519ed416a732524..7a86111890e7cafe48239cd087bc5209e1b2845b 100644 (file)
@@ -518,6 +518,15 @@ static void increment_mac(u8 *mac)
        }
 }
 
+static void set_mac_if_invalid(int i, u8 *mac)
+{
+       u8 oldmac[6];
+
+       if (is_valid_ethaddr(mac) &&
+           !eth_env_get_enetaddr_by_index("eth", i, oldmac))
+               eth_env_set_enetaddr_by_index("eth", i, mac);
+}
+
 int misc_init_r(void)
 {
        int err;
@@ -550,18 +559,11 @@ int misc_init_r(void)
        mac[4] = mac1[2];
        mac[5] = mac1[3];
 
-       if (is_valid_ethaddr(mac))
-               eth_env_set_enetaddr("eth1addr", mac);
-
+       set_mac_if_invalid(1, mac);
        increment_mac(mac);
-
-       if (is_valid_ethaddr(mac))
-               eth_env_set_enetaddr("eth2addr", mac);
-
+       set_mac_if_invalid(2, mac);
        increment_mac(mac);
-
-       if (is_valid_ethaddr(mac))
-               eth_env_set_enetaddr("ethaddr", mac);
+       set_mac_if_invalid(0, mac);
 
 out:
        return 0;