From: Antoine Tenart Date: Sat, 2 Sep 2017 09:06:48 +0000 (+0200) Subject: net: mvpp2: fix use of the random mac address for PPv2.2 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=d2a6e48e5254f653decc1612f3cbee3e5c8592c7;p=GitHub%2Fmoto-9609%2Fandroid_kernel_motorola_exynos9610.git 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 Signed-off-by: David S. Miller --- 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); } }