[U-Boot] [PATCH v3] davinci: cleanup davinci_sync_env_enetaddr() fucntion

Holger Freyther holger at freyther.de
Mon Jan 14 16:16:29 CET 2013


Manjunath Hadli <manjunath.hadli <at> ti.com> writes:

> 
> check for the return status for eth_getenv_enetaddr_by_index()
> and eth_setenv_enetaddr() functions and print appropriate message
> on failure.

I am upgrading from v2011.12 (as I have some ubifsmount issues and
don't want to debug this on an old ubi) and I saw that setting the
MAC address from EEPROM is broken.


> -	if (!memcmp(env_enetaddr, "\0\0\0\0\0\0", 6)) {
> +	ret = eth_getenv_enetaddr_by_index("eth", 0, env_enetaddr);
> +	if (ret) {

In case there is no mac address in the environment the net/eth.c code
will set env_enetaddr to all 0. This means that is_valid_ether_addr 
inside eth_getenv_enetaddr will return 0 (as of not valid). That
also means that the below function will not be called.

I assume the right fix is to change the condition to !ret.


> -		eth_setenv_enetaddr("ethaddr", rom_enetaddr);
> +		ret = !eth_setenv_enetaddr("ethaddr", rom_enetaddr);
>  	}
> +	if (!ret)
> +		printf("Failed to set mac address from EEPROM\n");

adding %d for 'ret' would be nice.





More information about the U-Boot mailing list