Hi all - Back to look at this delay issue. Update:
I studied the driver and ST-provided FreeRTOS/LwIP/cmsis glue and all looks AOK,
unlike the extremely buggy code ST provides for ST32F7xx series.

Again, after a lost packet, the host (PC running Windows 10) issues a _*single*_ duplicate-ack and waits. LwIP receives the single duplicate ack and by design _*ignores it*_ (tcp_in.c lines 1207-1227). LwIP takes two passes through slow_tmr (.5 sec intervals) before retransmitting the lost packet.
Hence nasty >1 second delay.

I tried patching LwIP to _immediately_ retransmit on a duplicate ack (line 1215):               if (pcb->dupacks >= 1 /* DRN kludge prevents 1+sec delays after lost packet, should be: 3 */) {                 /* Do fast retransmit (checked via TF_INFR, not via dupacks count) */
                tcp_rexmit_fast(pcb);
              }
Wireshark shows a TCP out-of-order packet, which it did not do unpatched (after the 1.5 sec delay):

http://www.nadler.com/backups/20190503_Lwip_pause_kludgeFix.pcapng

Is this OK? Or is there something wrong in tcp_rexmit_fast?
The client picks up and continues happily regardless and I get the desired through-put with no problematic long pauses...

Thanks!
Best Regards, Dave

On 3/15/2019 5:56 PM, Dave Nadler wrote:
To recap: LwIP 2.1.2 on FreeRTOS 9, ST32F429, IPv4, TCP.
I want to see how much I can consistently push through the stack.
Made a simple test server (sockets API) which repeatedly outputs 101-character lines.
I access the server via PuTTY raw mode on Winbloze over a local network.
I can usually send 3 lines per msec for a second (3000 lines in 1 second), but...
Sometimes, I get ~ 1-second pauses (as seen in Putty or TeraTerm).

Here's the capture:

http://www.nadler.com/backups/20190227_Lwip_pause.pcapng

Everything is going swimmingly until 4316.

The windows client notes a missing segment and issues a duplicate ACK as expected.
This exact pattern is quite repeatable.
FreeRTOS is running happily during the evil pause (LED blinky task uninterrupted).

Why does the LwIP application take ~1.5 seconds to retransmit the data?

Again, thanks for your time and any hints...
Best Regards, Dave


--
Dave Nadler, USA East Coast voice (978) 263-0097, d...@nadler.com, Skype
 Dave.Nadler1

_______________________________________________
lwip-users mailing list
lwip-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/lwip-users

Reply via email to