[U-Boot-Users] [PATCH] net: make ARP timeout configurable
Ben Warren
biggerbadderben at gmail.com
Thu Apr 3 17:00:23 CEST 2008
Guennadi Liakhovetski wrote:
> On Thu, 3 Apr 2008, Ben Warren wrote:
>
>
>> Hi Guennadi,
>>
>> Guennadi Liakhovetski wrote:
>>
>>> Currently the timeout waiting for an ARP reply is hard set to 5 seconds. On
>>> i.MX31ADS due to a hardware "strangeness" up to four first IP packets to the
>>> boards get lost, which typically are ARP replies. By configuring the timeout
>>> to a lower value we significantly improve the first network transfer time on
>>> this board. The timeout is specified in deciseconds, because it has to be
>>> converted to hardware ticks, and CFG_HZ ranges from 900 to 27000000 on
>>> different boards.
>>>
>>>
>> I like this, but let's stick to SI units please, probably ms. This isn't an
>> important enough calculation to worry about precision, only overflow, so just
>> make sure you handle order of operations properly and it should be fine. If
>> I'm not thinking this through properly, which is entirely possible, make the
>> code do a /100 to get into ds rather than asking the user to provide it. I'm
>> concerned that people will say ***WTF is a decisecond!***
>>
>
> Ok, expect a new version shortly.
>
>
>>> @@ -253,7 +258,7 @@ void ArpTimeoutCheck(void)
>>> t = get_timer(0);
>>> /* check for arp timeout */
>>> - if ((t - NetArpWaitTimerStart) > ARP_TIMEOUT * CFG_HZ) {
>>> + if ((t - NetArpWaitTimerStart) > ARP_TIMEOUT * CFG_HZ / 10) {
>>> NetArpWaitTry++;
>>> if (NetArpWaitTry >= ARP_TIMEOUT_COUNT) {
>>> @@ -494,7 +499,7 @@ restart:
>>> * Check the ethernet for a new packet. The ethernet
>>> * receive routine will process it.
>>> */
>>> - eth_rx();
>>> + eth_rx();
>>>
>>>
>> Not sure why you did this. Is it indented from the if() once applied?
>>
>
> It is not under an if - it is another hunk.
>
Oh yeah. Sorry.
regards,
Ben
More information about the U-Boot
mailing list