arm: mvebu: turris_mox: Better check for valid ethernet addresses in env

Currently we overwrite ethaddr and eth1addr only if these variables
don't exist.

Better overwrite them even if the env variable exists, but is invalid -
eth_env_get_enetaddr_by_index() checks for validity.

Refactor the code to use a for cycle.

Signed-off-by: Marek Behún <marek.behun@nic.cz>
Reviewed-by: Stefan Roese <sr@denx.de>
This commit is contained in:
Marek Behún 2021-10-09 19:33:42 +02:00 committed by Stefan Roese
parent f3c71e75b0
commit 0034d84a66

View file

@ -359,20 +359,22 @@ static int get_reset_gpio(struct gpio_desc *reset_gpio)
int misc_init_r(void) int misc_init_r(void)
{ {
int ret; u8 mac[2][6];
u8 mac1[6], mac2[6]; int i, ret;
ret = mbox_sp_get_board_info(NULL, mac1, mac2, NULL, NULL); ret = mbox_sp_get_board_info(NULL, mac[0], mac[1], NULL, NULL);
if (ret < 0) { if (ret < 0) {
printf("Cannot read data from OTP!\n"); printf("Cannot read data from OTP!\n");
return 0; return 0;
} }
if (is_valid_ethaddr(mac1) && !env_get("ethaddr")) for (i = 0; i < 2; ++i) {
eth_env_set_enetaddr("ethaddr", mac1); u8 oldmac[6];
if (is_valid_ethaddr(mac2) && !env_get("eth1addr")) if (is_valid_ethaddr(mac[i]) &&
eth_env_set_enetaddr("eth1addr", mac2); !eth_env_get_enetaddr_by_index("eth", i, oldmac))
eth_env_set_enetaddr_by_index("eth", i, mac[i]);
}
return 0; return 0;
} }