net: Fix delay in net_retry test
authorJoe Hershberger <joe.hershberger@ni.com>
Mon, 21 Dec 2015 22:31:35 +0000 (16:31 -0600)
committerSimon Glass <sjg@chromium.org>
Thu, 7 Jan 2016 19:18:58 +0000 (12:18 -0700)
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.

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@ni.com>
Reviewed-by: Stefan BrĂ¼ns <stefan.bruens@rwth-aachen.de>
Acked-by: Simon Glass <sjg@chromium.org>
drivers/net/sandbox.c
net/net.c

index 6763a248f28d0b327c8b14ff757206cf10a26432..d538d379bbec77cb54c7072b63480218f3d456dd 100644 (file)
@@ -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;
        }
 
index 4d5746a7b356d84319b91346c02661f6768e570d..fba111edfba263846f00e178852740efc3b08349 100644 (file)
--- 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.