On Tue, Oct 27, 2026 at 11:06:35AM +0800, terry zhou wrote:

> Hi Tom:
> 
> Yes, I checked that the base commit includes ff448fa9a1b8.
> I re-tested its change with and without my fix using downstream
> SDK U-Boot on VS640 and SL2610, rather than running the exact mainline
> base on hardware since these boards are not supported in mainline yet,
> 
> We are now adding SL2610 into U-Boot, below is the first patch from
> Richard GENOUD <[email protected]>.
> But only few interfaces are ready in it:
> https://lore.kernel.org/all/[email protected]/
> 
> ff448fa9a1b8 sets eth_errno when device_active() is false. In the
> failures I reproduced, however, the device is active and the driver's
> start() callback fails. eth_start_udev() returns that error without
> updating eth_errno, which remains zero.
> 
> With ff448fa9a1b8 alone, the diagnostics showed:
>   VS640:  start_ret=-5,   eth_errno=0, active=1
>   SL2610: start_ret=-110, eth_errno=0, active=1
> 
> In both cases, eth_init() overwrote the error with zero, and DHCP
> continued with 17 BOOTP attempts before timing out. With my patch
> added, DHCP failed at initialization without entering the BOOTP retry
> loop.

Thanks for confirming.

> 
> Thanks,
> Terry
> 
> 
> On Mon, Oct 26, 2026 at 10:29 PM Tom Rini <[email protected]> wrote:
> >
> > 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

-- 
Tom

Attachment: signature.asc
Description: PGP signature

Reply via email to