diff options
author | Antoine Tenart <antoine.tenart@free-electrons.com> | 2017-09-02 12:06:48 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-09-04 06:16:55 +0300 |
commit | d2a6e48e5254f653decc1612f3cbee3e5c8592c7 (patch) | |
tree | d52f1ed6fc60bb1975dc50ffd9d5eb13aff64c7d /drivers/net | |
parent | 3ba8c81e15c11fc396d0b5d11adaf9db6ed39533 (diff) | |
download | linux-d2a6e48e5254f653decc1612f3cbee3e5c8592c7.tar.xz |
net: mvpp2: fix use of the random mac address for PPv2.2
The MAC retrieval logic is using a variable to store an h/w stored mac
address and checks this mac against invalid ones before using it. But
the mac address is only read from h/w when using PPv2.1. So when using
PPv2.2 it defaults to its init state.
This patches fixes the logic to only check if the h/w mac is valid when
actually retrieving a mac from h/w.
Signed-off-by: Antoine Tenart <antoine.tenart@free-electrons.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/ethernet/marvell/mvpp2.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/drivers/net/ethernet/marvell/mvpp2.c b/drivers/net/ethernet/marvell/mvpp2.c index a702e60ba70d..c6003508f166 100644 --- a/drivers/net/ethernet/marvell/mvpp2.c +++ b/drivers/net/ethernet/marvell/mvpp2.c @@ -7478,15 +7478,17 @@ static void mvpp2_port_copy_mac_addr(struct net_device *dev, struct mvpp2 *priv, *mac_from = "device tree"; ether_addr_copy(dev->dev_addr, dt_mac_addr); } else { - if (priv->hw_version == MVPP21) + if (priv->hw_version == MVPP21) { mvpp21_get_mac_address(port, hw_mac_addr); - if (is_valid_ether_addr(hw_mac_addr)) { - *mac_from = "hardware"; - ether_addr_copy(dev->dev_addr, hw_mac_addr); - } else { - *mac_from = "random"; - eth_hw_addr_random(dev); + if (is_valid_ether_addr(hw_mac_addr)) { + *mac_from = "hardware"; + ether_addr_copy(dev->dev_addr, hw_mac_addr); + return; + } } + + *mac_from = "random"; + eth_hw_addr_random(dev); } } |