On Mon, Oct 26, 2026 at 10:11:37AM +0100, Terry Zhou (Synaptics) wrote:

> eth_init() overwrites the error from eth_start_udev() with eth_errno,
> which may still be zero after a successful device probe. This can
> report success even when no Ethernet device could be started, causing
> DHCP to enter the BOOTP retry loop instead of failing immediately.
> 
> Preserve the return value from eth_start_udev() so that callers can
> detect the initialization failure.
> 
> Signed-off-by: Terry Zhou (Synaptics) <[email protected]>
> ---
> Validated using downstream SDK U-Boot on Synaptics VS640 and SL2610
> Without the fix, driver startup errors are followed by BOOTP retries.
> With the fix, DHCP fails without entering the BOOTP retry loop.
> DHCP succeeds with the cable connected.
> 
>  net/eth-uclass.c | 4 +---
>  1 file changed, 1 insertion(+), 3 deletions(-)
> 
> diff --git a/net/eth-uclass.c b/net/eth-uclass.c
> index 07ec59b97f0..18efbfeda71 100644
> --- a/net/eth-uclass.c
> +++ b/net/eth-uclass.c
> @@ -349,9 +349,7 @@ int eth_init(void)
>                       debug("Trying %s\n", current->name);
> 
>                       ret = eth_start_udev(current);
> -                     if (ret < 0)
> -                             ret = eth_errno;
> -                     else
> +                     if (!ret)
>                               break;
> 
>                       debug("FAIL\n");
> 
> base-commit: 8649a54d301a4d0ac526324c7a7ad2574939ff27

Did you re-validate this on your base-commit? The base-commit is after 
ff448fa9a1b8 ("u-boot: fix error check in eth init") which I believe
evolved from a patch that looked like the above at first. Thanks.

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to