[PATCH 2/4] net: dsa: probe master device

Ramon Fried rfried.dev at gmail.com
Thu Feb 25 20:13:14 CET 2021


On Wed, Feb 24, 2021 at 6:40 PM Michael Walle <michael at walle.cc> wrote:
>
> DSA needs to have the master device probed first for MAC inheritance.
> Until now, it only works by chance because the only user (LS1028A SoC)
> will probe the master device first. The probe order is given by the PCI
> device ordering, thus it works because the master device has a "smaller"
> BDF then the switch device.
>
> Explicitly probe the master device in dsa_port_probe().
>
> Fixes: fc054d563bfb ("net: Introduce DSA class for Ethernet switches")
> Signed-off-by: Michael Walle <michael at walle.cc>
> Reviewed-by: Vladimir Oltean <vladimir.oltean at nxp.com>
> ---
>  net/dsa-uclass.c | 9 +++++++++
>  1 file changed, 9 insertions(+)
>
> diff --git a/net/dsa-uclass.c b/net/dsa-uclass.c
> index 88a8ea9352..7898f30e15 100644
> --- a/net/dsa-uclass.c
> +++ b/net/dsa-uclass.c
> @@ -272,6 +272,7 @@ static int dsa_port_probe(struct udevice *pdev)
>         struct dsa_port_pdata *port_pdata;
>         struct dsa_priv *dsa_priv;
>         struct udevice *master;
> +       int ret;
>
>         port_pdata = dev_get_parent_plat(pdev);
>         dsa_priv = dev_get_uclass_priv(dev);
> @@ -284,6 +285,14 @@ static int dsa_port_probe(struct udevice *pdev)
>         if (!master)
>                 return -ENODEV;
>
> +       /*
> +        * Probe the master device. We depend on the master device for proper
> +        * operation and we also need it for MAC inheritance below.
> +        */
> +       ret = device_probe(master);
> +       if (ret)
> +               return ret;
> +
>         /*
>          * Inherit port's hwaddr from the DSA master, unless the port already
>          * has a unique MAC address specified in the environment.
> --
> 2.20.1
>
Reviewed-By: Ramon Fried <rfried.dev at gmail.com>


More information about the U-Boot mailing list