diff options
Diffstat (limited to 'drivers/net/ethernet/freescale/fec_main.c')
| -rw-r--r-- | drivers/net/ethernet/freescale/fec_main.c | 12 | 
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/net/ethernet/freescale/fec_main.c b/drivers/net/ethernet/freescale/fec_main.c index 85a06037b242..a667015be22a 100644 --- a/drivers/net/ethernet/freescale/fec_main.c +++ b/drivers/net/ethernet/freescale/fec_main.c @@ -1038,6 +1038,18 @@ static void fec_get_mac(struct net_device *ndev)  		iap = &tmpaddr[0];  	} +	/* +	 * 5) random mac address +	 */ +	if (!is_valid_ether_addr(iap)) { +		/* Report it and use a random ethernet address instead */ +		netdev_err(ndev, "Invalid MAC address: %pM\n", iap); +		eth_hw_addr_random(ndev); +		netdev_info(ndev, "Using random MAC address: %pM\n", +			    ndev->dev_addr); +		return; +	} +  	memcpy(ndev->dev_addr, iap, ETH_ALEN);  	/* Adjust MAC if using macaddr */  |