aboutsummaryrefslogtreecommitdiff
path: root/board
diff options
context:
space:
mode:
authorMarek BehĂșn <marek.behun@nic.cz>2021-10-09 19:33:43 +0200
committerStefan Roese <sr@denx.de>2021-10-21 07:39:05 +0200
commit1335e31ecc2cd7e4e51b730499198c7548ac0a3f (patch)
treea0af1b18c1130b7dd33ce6820cd2be22deab57d7 /board
parent0034d84a66eaa51263a4881274b75de5b1c4f800 (diff)
downloadu-boot-1335e31ecc2cd7e4e51b730499198c7548ac0a3f.zip
u-boot-1335e31ecc2cd7e4e51b730499198c7548ac0a3f.tar.gz
u-boot-1335e31ecc2cd7e4e51b730499198c7548ac0a3f.tar.bz2
arm: mvebu: turris_omnia: Overwrite ethaddr only if invalid
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>
Diffstat (limited to 'board')
-rw-r--r--board/CZ.NIC/turris_omnia/turris_omnia.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
index a48e1f5..7a86111 100644
--- a/board/CZ.NIC/turris_omnia/turris_omnia.c
+++ b/board/CZ.NIC/turris_omnia/turris_omnia.c
@@ -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;