Hello
Recently many lwip users had problems with not received TCP ACK packets. In many cases source of this problem is ETH driver behavior. When there are no free pbufs, pbuf_alloc returns ERR_MEM, and received packet is dropped. Sometimes that received packet is part of ongoing TCP connection. As a result, resources assigned to that TCP connection are locked. Sometimes these resources are freed after successful retransmission. But in some cases that problem can make device totally unresponsive.
After some ussually long time resources are freed and device start to work correctly again. Probably due to some kind of timeout (is it possible to change that timeout?). Common advise in these situations is to increase pbuf count. Of course assigning more memory to pbufs could be helpful. But it wont solve the problem, it only makes it occur less frequently.
What is the best way to avoid that kind of issues? I believe it can be achieved with good lwipopt settings combined with proper ethernetif implementation and some changes in application or even lwip code. Maybe we can create some guidelines to avoid TCP ACK problems and add them to lwip wiki?
__
Best Regards
Maciek