, ETH[FIN, ACK] and HTTP GET retransmissions
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

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:
- GET / [FIN, ACK] packet
- retransmission after 200 - 500 ms
- response immediately after (2)
- 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.

