diff options
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/e1000.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/drivers/net/e1000.c b/drivers/net/e1000.c index 060b51899..c8b4e98c6 100644 --- a/drivers/net/e1000.c +++ b/drivers/net/e1000.c @@ -513,9 +513,11 @@ e1000_read_mac_addr(struct eth_device *nic)  		nic->enetaddr[5] += 1;  	}  #ifdef CONFIG_E1000_FALLBACK_MAC -	if ( *(u32*)(nic->enetaddr) == 0 || *(u32*)(nic->enetaddr) == ~0 ) -		for ( i=0; i < NODE_ADDRESS_SIZE; i++ ) -			nic->enetaddr[i] = (CONFIG_E1000_FALLBACK_MAC >> (8*(5-i))) & 0xff; +	if ( *(u32*)(nic->enetaddr) == 0 || *(u32*)(nic->enetaddr) == ~0 ) { +		unsigned char fb_mac[NODE_ADDRESS_SIZE] = CONFIG_E1000_FALLBACK_MAC; + +		memcpy (nic->enetaddr, fb_mac, NODE_ADDRESS_SIZE); +	}  #endif  #else  	/* @@ -531,10 +533,9 @@ e1000_read_mac_addr(struct eth_device *nic)  	DEBUGFUNC();  	s = getenv ("ethaddr"); -	if (s == NULL){ +	if (s == NULL) {  		return -E1000_ERR_EEPROM; -	} -	else{ +	} else {  		for(ii = 0; ii < 6; ii++) {  			nic->enetaddr[ii] = s ? simple_strtoul (s, &e, 16) : 0;  			if (s){ |