[PATCH 3/6] net: dsa: refactor the code to set the port MAC address into a dedicated function
Ramon Fried
rfried.dev at gmail.com
Wed Jun 30 00:17:27 CEST 2021
On Tue, Jun 29, 2021 at 8:09 PM Vladimir Oltean <olteanv at gmail.com> wrote:
>
> From: Vladimir Oltean <vladimir.oltean at nxp.com>
>
> This snippet of code has a bothering "if (...) return 0" in it which
> assumes it is the last piece of code running in dsa_port_probe().
>
> This makes it difficult to add further code at the end of dsa_port_probe()
> which does not depend on MAC address stuff.
>
> So move the code to a dedicated function which returns void and let the
> code flow through.
>
> Signed-off-by: Vladimir Oltean <vladimir.oltean at nxp.com>
> ---
> net/dsa-uclass.c | 35 +++++++++++++++++++++--------------
> 1 file changed, 21 insertions(+), 14 deletions(-)
>
> diff --git a/net/dsa-uclass.c b/net/dsa-uclass.c
> index 17b33834f585..e23da2ed0e95 100644
> --- a/net/dsa-uclass.c
> +++ b/net/dsa-uclass.c
> @@ -240,11 +240,29 @@ static const struct eth_ops dsa_port_ops = {
> .free_pkt = dsa_port_free_pkt,
> };
>
> -static int dsa_port_probe(struct udevice *pdev)
> +/*
> + * Inherit port's hwaddr from the DSA master, unless the port already has a
> + * unique MAC address specified in the environment.
> + */
> +static void dsa_port_set_hwaddr(struct udevice *pdev, struct udevice *master)
> {
> - struct udevice *dev = dev_get_parent(pdev);
> struct eth_pdata *eth_pdata, *master_pdata;
> unsigned char env_enetaddr[ARP_HLEN];
> +
> + eth_env_get_enetaddr_by_index("eth", dev_seq(pdev), env_enetaddr);
> + if (!is_zero_ethaddr(env_enetaddr))
> + return;
> +
> + master_pdata = dev_get_plat(master);
> + eth_pdata = dev_get_plat(pdev);
> + memcpy(eth_pdata->enetaddr, master_pdata->enetaddr, ARP_HLEN);
> + eth_env_set_enetaddr_by_index("eth", dev_seq(pdev),
> + master_pdata->enetaddr);
> +}
> +
> +static int dsa_port_probe(struct udevice *pdev)
> +{
> + struct udevice *dev = dev_get_parent(pdev);
> struct dsa_port_pdata *port_pdata;
> struct dsa_priv *dsa_priv;
> struct udevice *master;
> @@ -272,19 +290,8 @@ static int dsa_port_probe(struct udevice *pdev)
> if (err)
> return err;
>
> - /*
> - * Inherit port's hwaddr from the DSA master, unless the port already
> - * has a unique MAC address specified in the environment.
> - */
> - eth_env_get_enetaddr_by_index("eth", dev_seq(pdev), env_enetaddr);
> - if (!is_zero_ethaddr(env_enetaddr))
> - return 0;
> + dsa_port_set_hwaddr(pdev, master);
>
> - master_pdata = dev_get_plat(master);
> - eth_pdata = dev_get_plat(pdev);
> - memcpy(eth_pdata->enetaddr, master_pdata->enetaddr, ARP_HLEN);
> - eth_env_set_enetaddr_by_index("eth", dev_seq(pdev),
> - master_pdata->enetaddr);
>
> return 0;
> }
> --
> 2.25.1
>
Reviewed-by: Ramon Fried <rfried.dev at gmail.com>
More information about the U-Boot
mailing list