diff options
| -rw-r--r-- | drivers/net/ethernet/ti/davinci_emac.c | 22 | 
1 files changed, 12 insertions, 10 deletions
| diff --git a/drivers/net/ethernet/ti/davinci_emac.c b/drivers/net/ethernet/ti/davinci_emac.c index 23f8bc1cd20d..b0950a318c42 100644 --- a/drivers/net/ethernet/ti/davinci_emac.c +++ b/drivers/net/ethernet/ti/davinci_emac.c @@ -1928,18 +1928,20 @@ static int davinci_emac_probe(struct platform_device *pdev)  		goto err_free_rxchan;  	ndev->irq = rc; -	rc = davinci_emac_try_get_mac(pdev, res_ctrl ? 0 : 1, priv->mac_addr); -	if (!rc) -		eth_hw_addr_set(ndev, priv->mac_addr); - +	/* If the MAC address is not present, read the registers from the SoC */  	if (!is_valid_ether_addr(priv->mac_addr)) { -		/* Use random MAC if still none obtained. */ -		eth_hw_addr_random(ndev); -		memcpy(priv->mac_addr, ndev->dev_addr, ndev->addr_len); -		dev_warn(&pdev->dev, "using random MAC addr: %pM\n", -			 priv->mac_addr); +		rc = davinci_emac_try_get_mac(pdev, res_ctrl ? 0 : 1, priv->mac_addr); +		if (!rc) +			eth_hw_addr_set(ndev, priv->mac_addr); + +		if (!is_valid_ether_addr(priv->mac_addr)) { +			/* Use random MAC if still none obtained. */ +			eth_hw_addr_random(ndev); +			memcpy(priv->mac_addr, ndev->dev_addr, ndev->addr_len); +			dev_warn(&pdev->dev, "using random MAC addr: %pM\n", +				 priv->mac_addr); +		}  	} -  	ndev->netdev_ops = &emac_netdev_ops;  	ndev->ethtool_ops = ðtool_ops;  	netif_napi_add(ndev, &priv->napi, emac_poll); | 
