Secondly, TCP_WND controls how many bytes can be "in flight". You also
need to consider how many bytes are queued waiting to be sent. This is
controlled by TCP_SND_BUF (a value in bytes) and TCP_SND_QUEUELEN (a
additional limit in "packet buffers" to stop all of them being used on
the send queue leaving none for receive). Assuming all your segments
are full size and the same settings are used at both ends, the total
number of segments required will be:
(TCP_WND + TCP_SND_BUF) / TCP_MSS
These are the settings I had:
TCP_MSS = 1460
TCP_WND = 16k
TCP_SND_BUF = 16k
TCP_SND_QUEUELEN = 16 * TCP_SND_BUF/TCP_MSS
Looks like I have a SND_QUEUELEN setting that just says don't worry about this.
I will post an update after I do some more experiments. Thanks for the reply.
-Siva