Messages in this thread | | | Subject | Re: [PATCH net-next] net: bcmgenet: Generate a random MAC if none is valid | From | Scott Branden <> | Date | Fri, 11 Oct 2019 16:22:28 -0700 |
| |
On 2019-10-11 4:19 p.m., Florian Fainelli wrote: > Instead of having a hard failure and stopping the driver's probe > routine, generate a random Ethernet MAC address to keep going. > > Signed-off-by: Florian Fainelli <f.fainelli@gmail.com> > --- > drivers/net/ethernet/broadcom/genet/bcmgenet.c | 15 ++++++--------- > 1 file changed, 6 insertions(+), 9 deletions(-) > > diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > index 12cb77ef1081..5c20829ffa0f 100644 > --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c > +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c > @@ -3461,16 +3461,10 @@ static int bcmgenet_probe(struct platform_device *pdev) > goto err; > } > > - if (dn) { > + if (dn) > macaddr = of_get_mac_address(dn); > - if (IS_ERR(macaddr)) { > - dev_err(&pdev->dev, "can't find MAC address\n"); We shouldn't hide the error that the MAC address wasn't found. We should continue to print some kind of error as generating a mac address is a stop-gap measure and a proper MAC address should be used for the board. > - err = -EINVAL; > - goto err; > - } > - } else { > + else > macaddr = pd->mac_address; > - } > > priv->base = devm_platform_ioremap_resource(pdev, 0); > if (IS_ERR(priv->base)) { > @@ -3482,7 +3476,10 @@ static int bcmgenet_probe(struct platform_device *pdev) > > SET_NETDEV_DEV(dev, &pdev->dev); > dev_set_drvdata(&pdev->dev, dev); > - ether_addr_copy(dev->dev_addr, macaddr); > + if (IS_ERR_OR_NULL(macaddr) || !is_valid_ether_addr(macaddr)) > + eth_hw_addr_random(dev); > + else > + ether_addr_copy(dev->dev_addr, macaddr); > dev->watchdog_timeo = 2 * HZ; > dev->ethtool_ops = &bcmgenet_ethtool_ops; > dev->netdev_ops = &bcmgenet_netdev_ops;
| |