I've been chasing a problem in LWIP (based on 1.1.0) which while not strictly a bug was causing me issues. The problem is related to the interface between sys_mbox_fetch( ) and sys_arch_mbox_fetch( ).
 
sys_arch_mbox_fetch is required to return the time in milliseconds that it waited for a message, the returned value is then used to reduce the sys_timeout on the next call.
 
With a fast interface (100 MHz), the stack was getting messages for received IP frames faster than one per millisecond. My implimentation in sys_arch_mbox_fetch was returning zero (i.e less than 1 ms) on a large number of the calls, and hence the timeout value was not getting decremented and timeout activity was not occurring.
 
The simplistic fix was to return a minimum value of one in sys_arch_mailbox_fetch, however this then has the side effect of reducing the timeouts.
 
A better solution would be to increase the returned resolution,  but this would then require a change to the sys_timeout structure to add a member for the parts of a millisec, or go through the entire code base changing all the timeout values to the higher resolution. 
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to