FreeRTOS+TCP/IP ARP Request Abort


I’ve encountered an issue where a short time after continuously sending UDP packets (4.5 min) the ARP request runs out of retries and aborts. As expected, if the board receives a response within this time, everything is good. If not, the only way to send or receive packets again is to power cycle the board. Oddly enough, the gratuitous ARP requests continue to send out once every 20 seconds. But that’s the only thing I see on wireshark.

The board is from Microchip SAM E70 family. I’m using Microchip Studio, FreeRTOS Kernel V10.4.3 and FreeRTOS+TCP V2.3.2.

Two questions:

  1. Is there a way to detect that the ARP request has aborted?
  2. Is there a way to make the ARP request be sent again?

What triggers the ARP to be sent in the first place? If you are trying to connect to an address that needs resolving, and the connect times out, if you try connecting again then the ARP should be sent again.

Thanks for your reply. It actually turned out to be something different entirely. Essentially once a second, a FreeRTOS_recvfrom call was made which timed out. After enough of those calls, the call to the Microchip SHA module hung in an infinite while loop. The SHA was needed to form part of the message sent out once a second. Still unsure why the SHA module got stuck, but probably not initializing it correctly.

Thanks for taking the time to report back.