diff options
Diffstat (limited to 'net/eth.c')
| -rw-r--r-- | net/eth.c | 14 | 
1 files changed, 14 insertions, 0 deletions
| @@ -62,6 +62,15 @@ int eth_getenv_enetaddr_by_index(const char *base_name, int index,  	return eth_getenv_enetaddr(enetvar, enetaddr);  } +static inline int eth_setenv_enetaddr_by_index(const char *base_name, int index, +				 uchar *enetaddr) +{ +	char enetvar[32]; +	sprintf(enetvar, index ? "%s%daddr" : "%saddr", base_name, index); +	return eth_setenv_enetaddr(enetvar, enetaddr); +} + +  static int eth_mac_skip(int index)  {  	char enetvar[15]; @@ -205,6 +214,11 @@ int eth_write_hwaddr(struct eth_device *dev, const char *base_name,  		}  		memcpy(dev->enetaddr, env_enetaddr, 6); +	} else if (is_valid_ether_addr(dev->enetaddr)) { +		eth_setenv_enetaddr_by_index(base_name, eth_number, +					     dev->enetaddr); +		printf("\nWarning: %s using MAC address from net device\n", +			dev->name);  	}  	if (dev->write_hwaddr && |