On Thu, 3 Oct 2024 at 18:24, Jerome Forissier <jerome.foriss...@linaro.org> wrote: > > Add a function to start a given network device, and update eth_init() > to use it. > > Signed-off-by: Jerome Forissier <jerome.foriss...@linaro.org> > --- > include/net-common.h | 1 + > net/eth-uclass.c | 38 +++++++++++++++++++++++++------------- > 2 files changed, 26 insertions(+), 13 deletions(-) > > diff --git a/include/net-common.h b/include/net-common.h > index 543f528a4a4..6bc76658d9d 100644 > --- a/include/net-common.h > +++ b/include/net-common.h > @@ -192,6 +192,7 @@ int eth_env_set_enetaddr_by_index(const char *base_name, > int index, > int usb_ether_init(void); > > int eth_init(void); /* Initialize the device */ > +int eth_start_udev(struct udevice *dev); /* ->start() if not already running > */ > int eth_send(void *packet, int length); /* Send a packet */ > #if defined(CONFIG_API) || defined(CONFIG_EFI_LOADER) > int eth_receive(void *packet, int length); /* Receive a packet*/ > diff --git a/net/eth-uclass.c b/net/eth-uclass.c > index e34d7af0229..5555f82f23e 100644 > --- a/net/eth-uclass.c > +++ b/net/eth-uclass.c > @@ -284,6 +284,27 @@ static int on_ethaddr(const char *name, const char > *value, enum env_op op, > } > U_BOOT_ENV_CALLBACK(ethaddr, on_ethaddr); > > +int eth_start_udev(struct udevice *dev) > +{ > + struct eth_device_priv *priv = dev_get_uclass_priv(dev); > + int ret; > + > + if (priv->running) > + return 0; > + > + if (!device_active(dev)) > + return -EINVAL; > + > + ret = eth_get_ops(dev)->start(dev); > + if (ret < 0) > + return ret; > + > + priv->state = ETH_STATE_ACTIVE; > + priv->running = true; > + > + return 0; > +} > + > int eth_init(void) > { > struct udevice *current = NULL; > @@ -328,20 +349,11 @@ int eth_init(void) > if (current) { > debug("Trying %s\n", current->name); > > - if (device_active(current)) { > - ret = eth_get_ops(current)->start(current); > - if (ret >= 0) { > - struct eth_device_priv *priv = > - dev_get_uclass_priv(current); > - > - priv->state = ETH_STATE_ACTIVE; > - priv->running = true; > - ret = 0; > - goto end; > - } > - } else { > + ret = eth_start_udev(current); > + if (ret < 0) > ret = eth_errno; > - } > + else > + break; > > debug("FAIL\n"); > } else { > -- > 2.40.1 >
Reviewed-by: Ilias Apalodimas <ilias.apalodi...@linaro.org>