Change the order of reading MAC address, try to read it from MAC chip
first, if it's not availabe, then try to read it from device tree.

Fixes: 35c54922dc97 ("ARM: dts: tacoma: Add reserved memory for ramoops")
Signed-off-by: Hongwei Zhang <hongw...@ami.com>
---
 drivers/net/ethernet/faraday/ftgmac100.c | 22 +++++++++++++---------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/drivers/net/ethernet/faraday/ftgmac100.c 
b/drivers/net/ethernet/faraday/ftgmac100.c
index 65cd25372020..713e9325bef8 100644
--- a/drivers/net/ethernet/faraday/ftgmac100.c
+++ b/drivers/net/ethernet/faraday/ftgmac100.c
@@ -184,14 +184,7 @@ static void ftgmac100_initial_mac(struct ftgmac100 *priv)
        unsigned int l;
        void *addr;
 
-       addr = device_get_mac_address(priv->dev, mac, ETH_ALEN);
-       if (addr) {
-               ether_addr_copy(priv->netdev->dev_addr, mac);
-               dev_info(priv->dev, "Read MAC address %pM from device tree\n",
-                        mac);
-               return;
-       }
-
+       /* Try to read MAC from chip first */
        m = ioread32(priv->base + FTGMAC100_OFFSET_MAC_MADR);
        l = ioread32(priv->base + FTGMAC100_OFFSET_MAC_LADR);
 
@@ -205,7 +198,18 @@ static void ftgmac100_initial_mac(struct ftgmac100 *priv)
        if (is_valid_ether_addr(mac)) {
                ether_addr_copy(priv->netdev->dev_addr, mac);
                dev_info(priv->dev, "Read MAC address %pM from chip\n", mac);
-       } else {
+               return;
+       }
+
+       /* Get MAC from device tree if it cannot be read from the chip */
+       addr = device_get_mac_address(priv->dev, mac, ETH_ALEN);
+       if (addr) {
+               ether_addr_copy(priv->netdev->dev_addr, mac);
+               dev_info(priv->dev, "Read MAC address %pM from device tree\n",
+                               mac);
+               return;
+       }
+       else {
                eth_hw_addr_random(priv->netdev);
                dev_info(priv->dev, "Generated random MAC address %pM\n",
                         priv->netdev->dev_addr);
-- 
2.17.1

Reply via email to