cancel
Showing results for 
Search instead for 
Did you mean: 

[FIN, ACK] and HTTP GET retransmissions

pelgrimo
Visitor

Good morning.

I'm running an STM32F767Zi on a custom board, LwIP 2.1.2, no OS. The device acts as a HTTP server. I've got an issue where I get GET requests and [FIN, ACK] packets retransmitted by the web browser.
192.168.5.106 - Client
192.168.5.196 - Server

Screenshot 2024-10-21 092806.png
The issue seems to be intermittent and appears only when a portion of the webpage content is requested (status.xml) once per second. When the entire webpage content is first loaded I don't get any packets retransmitted.

The pattern is:

  1. GET / [FIN, ACK] packet
  2. retransmission after 200 - 500 ms
  3. response immediately after (2)
  4. Dup ACK immediately after (3)

Looks like the first GET request is not processed until the retransmitted packet arrives.

What I've done so far:

  • Confirmed data cache is disabled to avoid data coherency issues caused by ETH DMA.
  • Disabled Nagle's algorithm.

Also:

  • Once GET request is received, processing the response takes 8-9 ms.

I don't know what I'm missing, I would appreciate if somebody could point me in the right direction. I spent days on troubleshooting and trying to find what the issue is, but run out of ideas...

EDIT:

I noticed that the problem goes away when I disable LCACHE by resetting IC bit in SCB_CCR. Also, GET message processing time increases from 8-9 ms to 16-17ms.

EDIT2:
I made another observation. I flooded the device with ICMP requests simultaneously from 8 terminals. If an ICMP packet arrives after a GET request, I get the correct response from the HTTP  server and the GET packet doesn't get retransmitted.

Screenshot 2024-10-21 150452.png

0 REPLIES 0