This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Delayed Ack Issue in Using RL-TCPnet on ARM7

Hi.

I am using RL-TCPnet on Arm 7 LPC2468, and trying to set Arm7 as a server in TCP communications.

TcpRxTx::socket_tcp = tcp_get_socket (TCP_TYPE_SERVER, 0, 10, TcpRxTx::tcp_callback);

Everything seems ok, however, I found length 0 acknowledge packets sent by Arm7 right after it receives a packet without delay:

Time Source Destination Protocol Length Info

0.667373 196.168.1.100 196.168.1.1 TCP 76 itose > rrac [PSH, ACK] Seq=167 Ack=71 Win=64637 Len=22
0.667527 196.168.1.1 196.168.1.100 TCP 60 rrac > itose [ACK] Seq=71 Ack=189 Win=4380 Len=0
0.66762 196.168.1.1 196.168.1.100 TCP 61 rrac > itose [ACK] Seq=71 Ack=189 Win=4380 Len=7
0.667655 196.168.1.1 196.168.1.100 TCP 60 rrac > itose [PSH, ACK] Seq=78 Ack=189 Win=4380 Len=4
0.667668 196.168.1.100 196.168.1.1 TCP 54 itose > rrac [ACK] Seq=189 Ack=82 Win=64626 Len=0
1.088905 196.168.1.100 196.168.1.1 TCP 76 itose > rrac [PSH, ACK] Seq=189 Ack=82 Win=64626 Len=22
1.089072 196.168.1.1 196.168.1.100 TCP 60 rrac > itose [ACK] Seq=82 Ack=211 Win=4380 Len=0
1.089205 196.168.1.1 196.168.1.100 TCP 75 rrac > itose [ACK] Seq=82 Ack=211 Win=4380 Len=21
1.089238 196.168.1.1 196.168.1.100 TCP 60 rrac > itose [PSH, ACK] Seq=103 Ack=211 Win=4380 Len=4
1.08925 196.168.1.100 196.168.1.1 TCP 54 itose > rrac [ACK] Seq=211 Ack=107 Win=64601 Len=0
1.089336 196.168.1.100 196.168.1.1 TCP 110 itose > rrac [PSH, ACK] Seq=211 Ack=107 Win=64601 Len=56
1.089542 196.168.1.1 196.168.1.100 TCP 60 rrac > itose [ACK] Seq=107 Ack=267 Win=4380 Len=0

I remember in TCP protocal, we can set the ACK response as delayed ACK (randomly 1~200ms delay), so that it might be sent back along with possible data.

Is there a way to config RL-TCPnet to act that way? coz the 0 lenghth packets won't work with my PC client for some reasons.

I also tried to use TCP_TYPE_DELAY_ACK parameter, it didn't work, it seems that this parameter is used to reduce the number of small packets, not 0 byte length packets.

TcpRxTx::socket_tcp = tcp_get_socket ((TCP_TYPE_SERVER|TCP_TYPE_DELAY_ACK), 0, 10, TcpRxTx::tcp_callback);

Any clue is welcome and Thanks a lot.

0