
Make timeout implementation in net/net.c take into account the CONFIG_SYS_HZ variable. This is needed for all CPUs where the default timer is running on anything else than 1000.
Signed-off-by: Daniel Mack daniel@caiaq.de --- net/net.c | 15 ++++++++++----- 1 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/net/net.c b/net/net.c index 77e83b5..1c48236 100644 --- a/net/net.c +++ b/net/net.c @@ -206,6 +206,11 @@ uchar NetArpWaitPacketBuf[PKTSIZE_ALIGN + PKTALIGN]; ulong NetArpWaitTimerStart; int NetArpWaitTry;
+static long get_timer_ms(long base) +{ + return get_timer(base) / (CONFIG_SYS_HZ / 1000); +} + void ArpRequest (void) { int i; @@ -256,7 +261,7 @@ void ArpTimeoutCheck(void) if (!NetArpWaitPacketIP) return;
- t = get_timer(0); + t = get_timer_ms(0);
/* check for arp timeout */ if ((t - NetArpWaitTimerStart) > ARP_TIMEOUT) { @@ -517,7 +522,7 @@ restart: * Check for a timeout, and run the timeout handler * if we have one. */ - if (timeHandler && ((get_timer(0) - timeStart) > timeDelta)) { + if (timeHandler && ((get_timer_ms(0) - timeStart) > timeDelta)) { thand_f *x;
#if defined(CONFIG_MII) || defined(CONFIG_CMD_MII) @@ -639,7 +644,7 @@ NetSetTimeout(ulong iv, thand_f * f) timeHandler = (thand_f *)0; } else { timeHandler = f; - timeStart = get_timer(0); + timeStart = get_timer_ms(0); timeDelta = iv; } } @@ -684,7 +689,7 @@ NetSendUDPPacket(uchar *ether, IPaddr_t dest, int dport, int sport, int len)
/* and do the ARP request */ NetArpWaitTry = 1; - NetArpWaitTimerStart = get_timer(0); + NetArpWaitTimerStart = get_timer_ms(0); ArpRequest(); return 1; /* waiting */ } @@ -755,7 +760,7 @@ int PingSend(void)
/* and do the ARP request */ NetArpWaitTry = 1; - NetArpWaitTimerStart = get_timer(0); + NetArpWaitTimerStart = get_timer_ms(0); ArpRequest(); return 1; /* waiting */ }