cancel
Showing results for 
Search instead for 
Did you mean: 

, ETH[FIN, ACK] and HTTP GET retransmissions

pelgrimo
Associate

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

1 REPLY 1
STea
ST Employee

Hello @pelgrimo ,

this seems to be related to you application which handles the http server and if it happens only when GET requests status.xml. if I was to debug this I would try and focus on that part to see if the retransmission is caused by and inappropriate response or if the first transmit was corrupted for some reason related to LWIP buffer handling and packet segmentation for example.
Regards 
Hichem

In order to give better visibility on the answered topics, please click on Accept as Solution on the reply which solved your issue or answered your question.