Re: [PATCH 5/6] net: bcmgenet: Fetch MAC address from the adapter

From: Jeremy Linton
Date: Sat Feb 01 2020 - 14:20:23 EST


Hi,

On 2/1/20 9:37 AM, Andrew Lunn wrote:
@@ -3601,6 +3605,23 @@ static int bcmgenet_probe(struct platform_device *pdev)
!strcasecmp(phy_mode_str, "internal"))
bcmgenet_power_up(priv, GENET_POWER_PASSIVE);
+ if (dn)
+ macaddr = of_get_mac_address(dn);
+ else if (pd)
+ macaddr = pd->mac_address;
+
+ if (IS_ERR_OR_NULL(macaddr) || !is_valid_ether_addr(macaddr)) {
+ if (has_acpi_companion(&pdev->dev))
+ bcmgenet_get_hw_addr(priv, dev->dev_addr);
+
+ if (!is_valid_ether_addr(dev->dev_addr)) {
+ dev_warn(&pdev->dev, "using random Ethernet MAC\n");
+ eth_hw_addr_random(dev);
+ }
+ } else {
+ ether_addr_copy(dev->dev_addr, macaddr);
+ }
+

Could you also maybe put in here somewhere a call to
device_get_mac_address(), to support getting the MAC address out of
ACPI?

I had that here until right before I posted it, mostly because I was trying to consolidate the DT/ACPI paths. I pulled it out because it wasn't making the code any clearer, and as I mentioned in my response to the general _DSD properties I would rather entirely depend on non DSD properties if possible.

I will put it back in, but IMHO we shouldn't be finding firmware using it. Since the discussion a few years back, its become clearer to me its not usually needed. As in this example, the addresses can usually be picked off the adapter if the firmware bothers to set them up.