net/tcp/tcp_appsend.c: Update some comments.

This commit is contained in:
Gregory Nutt 2019-12-09 06:06:17 -06:00
parent 8cd5e04d53
commit 6a0ab27bd5
1 changed files with 14 additions and 4 deletions

View File

@ -99,11 +99,21 @@ void tcp_appsend(FAR struct net_driver_s *dev, FAR struct tcp_conn_s *conn,
conn->rx_acktimer = 0; conn->rx_acktimer = 0;
/* Per RFC 1122: "...there SHOULD be an ACK for at least every second /* Per RFC 1122: "...in a stream of full-sized segments there
* segment." * SHOULD be an ACK for at least every second segment."
* *
* NOTE: If there is a data payload or other flags to be sent with the * NOTES:
* outgoing packet, then we may as well include the ACK too. * 1. If there is a data payload or other flags to be sent with the
* outgoing packet, then we may as well include the ACK too.
* 2. The RFC refers to full-size segments. It is not clear what
* "full-size" means. Does that mean that the payload is the size
* of the MSS? Payload size is not considered other there being
* a payload or or not. Should there be some special action for
* small payloads of size < MSS?
* 3. Experimentation shows that Windows and Linux behave somewhat
* differently; they delay the ACKs for many more segments (6 or
* more). Delaying for more segments would provide less network
* traffic and better performance but seems non-compliant.
*/ */
if (conn->rx_unackseg > 0 || dev->d_sndlen > 0 || if (conn->rx_unackseg > 0 || dev->d_sndlen > 0 ||