net/faraday: Disallow using reversed MAC address from hardware
authorGavin Shan <gwshan@linux.vnet.ibm.com>
Thu, 21 Jul 2016 01:42:54 +0000 (11:42 +1000)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Jul 2016 04:05:18 +0000 (21:05 -0700)
The initial MAC address is retrieved from hardware if it's not
provided by device-tree. The reserved MAC address from hardware
will be used if non-reserved MAC address is invalid. It will
cause mismatched MAC address seen by hardware and software.

This disallows using the reserved hardware MAC address to avoid
the mismatched MAC address seen by hardware and software.

Fixes: 113ce107afe9 ("net/faraday: Read MAC address from chip")
Suggested-by: David Laight <David.Laight@ACULAB.COM>
Suggested-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Gavin Shan <gwshan@linux.vnet.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/faraday/ftgmac100.c

index 2d4c7eab8b36b95f7514a2d5992cde381fd56f6c..36361f8bf894517b1e459a3a82cbd2210d05acc2 100644 (file)
@@ -163,15 +163,6 @@ static void ftgmac100_setup_mac(struct ftgmac100 *priv)
        mac[4] = (l >> 8) & 0xff;
        mac[5] = l & 0xff;
 
-       if (!is_valid_ether_addr(mac)) {
-               mac[5] = (m >> 8) & 0xff;
-               mac[4] = m & 0xff;
-               mac[3] = (l >> 24) & 0xff;
-               mac[2] = (l >> 16) & 0xff;
-               mac[1] = (l >>  8) & 0xff;
-               mac[0] = l & 0xff;
-       }
-
        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);