|
From: | David Empson |
Subject: | Re: [lwip-users] TCP: ACK problem? |
Date: | Wed, 21 Aug 2013 14:46:03 +1200 |
User-agent: | Mozilla/5.0 (Windows NT 6.1; rv:17.0) Gecko/20130620 Thunderbird/17.0.7 |
On 2013-08-21 03:45, André P. wrote:
Hi, I have an application where I stream data regularly from an LPC board to a laptop. This works fine, until after some time the transmitter sends two packets without waiting for an ACK, and the receiver almost immediately acknowledges both using one packet. Somehow, the LWIP stack does not accept this ACK, and keeps resending a package. I have attached the Flow Graph. Why does LWIP not accept the ACK message 166213? It keeps resending Seq 162622. I am using LWIP 1.4.0. Thank you for your support.
The pattern looks like LWIP stopped processing the received ACK packets after the one with Ack=162622. LWIP subsequently sent three packets with new data (162622, 163648 and 165108), then timed out waiting for the ack for the oldest unacknowledged packet (162622), resending it with slowing retries: 1 second delay, then 3, 6, 12, 24, 48; all the subsequent ACKs were not processed.
You'll probably need to look at LWIP's internal error counts to confirm this, but my guess is that you ran out of pbufs, due to having three outgoing packets occupying all remaining pbufs, and none are left to store the received ACKs. If so, you need to allocate more pbufs and/or limit the amount of transmit data you can have outstanding to ensure there will always be free buffers for received packets.
A copy of your lwipopts.h might help to analyse the problem.
[Prev in Thread] | Current Thread | [Next in Thread] |