diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/net.c | 8 | ||||
-rw-r--r-- | net/tftp.c | 2 |
2 files changed, 6 insertions, 4 deletions
diff --git a/net/net.c b/net/net.c index ce7934180b6..dafcc561e6a 100644 --- a/net/net.c +++ b/net/net.c @@ -125,7 +125,8 @@ volatile uchar *NetRxPackets[PKTBUFSRX]; /* Receive packets */ static rxhand_f *packetHandler; /* Current RX packet handler */ static thand_f *timeHandler; /* Current timeout handler */ -static ulong timeValue; /* Current timeout value */ +static ulong timeStart; /* Time base value */ +static ulong timeDelta; /* Current timeout value */ volatile uchar *NetTxPacket = 0; /* THE transmit packet */ static int net_check_prereq (proto_t protocol); @@ -391,7 +392,7 @@ restart: * Check for a timeout, and run the timeout handler * if we have one. */ - if (timeHandler && (get_timer(0) > timeValue)) { + if (timeHandler && ((get_timer(0) - timeStart) > timeDelta)) { thand_f *x; x = timeHandler; @@ -491,7 +492,8 @@ NetSetTimeout(int iv, thand_f * f) timeHandler = (thand_f *)0; } else { timeHandler = f; - timeValue = get_timer(0) + iv; + timeStart = get_timer(0); + timeDelta = iv; } } diff --git a/net/tftp.c b/net/tftp.c index 5598be32f13..1154cb9120b 100644 --- a/net/tftp.c +++ b/net/tftp.c @@ -240,7 +240,7 @@ TftpHandler (uchar * pkt, unsigned dest, unsigned src, unsigned len) static void TftpTimeout (void) { - if (++TftpTimeoutCount >= TIMEOUT_COUNT) { + if (++TftpTimeoutCount > TIMEOUT_COUNT) { puts ("\nRetry count exceeded; starting again\n"); NetStartAgain (); } else { |