Hi,
I currently encounter a problem that my TI CC3235S device fails to respond ACK to my server's TCP keepalive packet in every 5mins - 4hours. I orginally thought maybe it was the problem of my application, so I tried the TI network terminal example, and the result is the same. Also, I cross checked with an broadcom wifi device, and it works fine on responding my server's keepalive packets.
Here is some test envrionment and backgrounds:
On the TI device side, the SDK version I am using is 4.30.00.06. My TI device runs the Network Terminal example of it. I used 'wlanconnect -s "Amba_tliu" -t WPA2 -p "Ambarella2015"' to connect the device to my router. After that, I entered 'recv -c 10.0.0.5 -p 8888' that connects the device to my TCP server at 8888 port.
On the server side, my TCP server runs on my Linux PC, and it connects to my local router. It has default keepalive interval value of 3 seconds and default retry times of 10 times. I created the simplest TCP server in order to make the test environment clean. It only accepts the TCP connection and will not send any data to TCP client.
Below is the wireshark log captured when the issue was happened. Service IP: 10.0.0.5; CC3235S IP:10.0.0.67. Please take a look at the row with timestamp of 218 seconds. There is no ACK appeared after keepalive packet. In addition, when TCP server retried to send the keepalive packet, CC3235S responded a RST message, which directly broke the TCP connection.
By looking through the network log, there seems to be two issues from CC3235S device. 1. No ACK at 218 seconds after receiving keepalive packet from TCP server. 2. Intead of responding ACK on server's retries, it breaks the connection by sending RST message to TCP server.
As you known, the purpose of using TCP keepalive function is to check and make sure the TCP connection/client is alive on long run. Both of the issues on CC3235S side create the obsticles for this purpose. Do you have any idea on how to fix these issues?