[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