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.