[U-Boot] [PATCH] net: Fix delay in net_retry test

Stefan Bruens stefan.bruens at rwth-aachen.de
Tue Dec 22 00:30:19 CET 2015


Hi Joe,

On Monday 21 December 2015 16:50:52 Joe Hershberger wrote:
> Hi Stefan,
> 
> On Mon, Dec 21, 2015 at 4:31 PM, Joe Hershberger <joe.hershberger at ni.com> 
wrote:
> > Introduced in 45b4773 (net/arp: account for ARP delay, avoid duplicate
> > packets on timeout)
> > 
> > Check the arp timeout and adjust the timeout start time before the call
> > to eth_recv() so that the sandbox driver has the opportunity to adjust
> > the sandbox timer after the new start time has been recorded.
> 
> This had to change to allow sandbox tests to work. Please verify that
> it does not impair the behavior you intended with your patch.

I can't see any reason this change would impair the behaviour. The runtime
of the eth_rx() function should be small compared to the request timeout.

I haven't actually tested your change and won't be able to do until after the 
holydays, but as I think it is fine:

Reviewed-by: Stefan Brüns <stefan.bruens at rwth-aachen.de>

> > Also, change the adjustment amount by 11 seconds instead of exactly the
> > 10 seconds that the ping timout is expecting since the timeout check is
> > looking for the time elapsed to be greater than but not equal to the
> > specified delay.
> > 
> > Signed-off-by: Joe Hershberger <joe.hershberger at ni.com>
> > 
> > ---
> > 
> >  drivers/net/sandbox.c | 2 +-
> >  net/net.c             | 7 +++----
> >  2 files changed, 4 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/net/sandbox.c b/drivers/net/sandbox.c
> > index 6763a24..d538d37 100644
> > --- a/drivers/net/sandbox.c
> > +++ b/drivers/net/sandbox.c
> > @@ -157,7 +157,7 @@ static int sb_eth_recv(struct udevice *dev, int flags,
> > uchar **packetp)> 
> >         struct eth_sandbox_priv *priv = dev_get_priv(dev);
> >         
> >         if (skip_timeout) {
> > 
> > -               sandbox_timer_add_offset(10000UL);
> > +               sandbox_timer_add_offset(11000UL);
> > 
> >                 skip_timeout = false;
> >         
> >         }
> > 
> > diff --git a/net/net.c b/net/net.c
> > index 4d5746a..fba111e 100644
> > --- a/net/net.c
> > +++ b/net/net.c
> > 
> > @@ -542,6 +542,9 @@ restart:
> >  #ifdef CONFIG_SHOW_ACTIVITY
> >  
> >                 show_activity(1);
> >  
> >  #endif
> > 
> > +               if (arp_timeout_check() > 0)
> > +                       time_start = get_timer(0);
> > +
> > 
> >                 /*
> >                 
> >                  *      Check the ethernet for a new packet.  The ethernet
> >                  *      receive routine will process it.
> > 
> > @@ -570,10 +573,6 @@ restart:
> >                         goto done;
> >                 
> >                 }
> > 
> > -               if (arp_timeout_check() > 0) {
> > -                   time_start = get_timer(0);
> > -               }
> > -
> > 
> >                 /*
> >                 
> >                  *      Check for a timeout, and run the timeout handler
> >                  *      if we have one.
> > 
> > --
> > 2.5.0
> > 
> > _______________________________________________
> > U-Boot mailing list
> > U-Boot at lists.denx.de
> > http://lists.denx.de/mailman/listinfo/u-boot

-- 
Stefan Brüns  /  Bergstraße 21  /  52062 Aachen
home: +49 241 53809034     mobile: +49 151 50412019
work: +49 2405 49936-424


More information about the U-Boot mailing list