We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
I am using Keil's RL-TCPnet for network communications. The controller (STM32F107) is supposed to send up to 10 consecutive tcp messages every 10 ms. I am calling timer_poll() and main_TcpNet every cycle (every 10 ms), system timer is 100 ms. When I am sending consecutive messages, only the first one goes through. I tried to insert
while (tcp_check_send(socket_tcp) != __TRUE) {;}
before each message. In this case the controller just hangs there.
What can I do to send all the messages in succession? Any suggestions are highly appreciated.
Gennady
The Delayed ACK that windows is using is based off of RFC 2581. Here is a good description of this RFC:
"The delayed ACK algorithm is also a method for congestion control (RFC 2581), so the receiver won't flood the network with ACK packets. When the receiver has to sent an ACK in response to a packet, then it waits a little (200 ms or until it has 2 outstanding ACKs) to see if more packets should arrive that it can acknowledge with that single ACK."
From smallvoid.com/.../winnt-nagle-algorithm.html
So since we send 2 packets - one big, one small - this creates a 2 outstanding ACK scenario, and windows will respond to both packets.
Since these devices will not be able to attain full 100 MB/s speeds anyways, the Delayed ACK does not help.