Hello Mark,
Here is my question concerning the previous picture, according to the fact that uTasker see the TCP flow as below :
[-----------------PC-------------------] [----------------LPC2387---------------]
seq ack frame number length direction length frame number seq ack
177 25 24 133 >>>
<<< 0 25 25 310
<<< 8 27 25 310
310 25 26 133 >>>
<<< 0 28 25 443
<<< 8 29 25 443
443 33 30 0 >>>
When uTasker receive the frame 26, does it know that the seq=310 is acknowledging the frame 25 and not the 26 ? Because, we are able to check it, thanks to the next ack number counting. It should be 25+8=33 if it had acknowledging the frame 27. But here it is 25+0=25.
The problem is that in our application stack, we are waiting for a tcp ack before sending the frame 28, but we are mistaking about the TCP_EVENT_ACK interrupt (get from the 26 but concerning only the 25). Thus we thought the the TCP_EVENT_ACK is acknowledging the 27 and we send the 28 (TCP ACK for the 26) the the 29 (PUSH ACK).
On the PC side, the frame 27 is received after the 26. And the 27 is never acknowledged. Does the PC think that it is a retransmission of the 25 already acknowledged ?
Because it should check that the lenght and the TCP flag (ACK/ PUSH ACK) are different between the 25 and 27.
I hope you understand my explanation and I thank you in advance.