diff options
author | David S. Miller <davem@sunset.davemloft.net> | 2005-09-28 19:31:48 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2005-09-28 19:31:48 -0400 |
commit | 6b251858d377196b8cea20e65cae60f584a42735 (patch) | |
tree | 4078d1d7fb50c25e222db5c54562da10ea4b4d5d | |
parent | 64233bffbb50f12e576c61d1698a573c8033004a (diff) |
[TCP]: Fix init_cwnd calculations in tcp_select_initial_window()
Match it up to what RFC2414 really specifies.
Noticed by Rick Jones.
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | net/ipv4/tcp_output.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c index d6e3d269e906..caf2e2cff293 100644 --- a/net/ipv4/tcp_output.c +++ b/net/ipv4/tcp_output.c | |||
@@ -190,15 +190,16 @@ void tcp_select_initial_window(int __space, __u32 mss, | |||
190 | } | 190 | } |
191 | 191 | ||
192 | /* Set initial window to value enough for senders, | 192 | /* Set initial window to value enough for senders, |
193 | * following RFC1414. Senders, not following this RFC, | 193 | * following RFC2414. Senders, not following this RFC, |
194 | * will be satisfied with 2. | 194 | * will be satisfied with 2. |
195 | */ | 195 | */ |
196 | if (mss > (1<<*rcv_wscale)) { | 196 | if (mss > (1<<*rcv_wscale)) { |
197 | int init_cwnd = 4; | 197 | int init_cwnd; |
198 | if (mss > 1460*3) | 198 | |
199 | if (mss > 1460) | ||
199 | init_cwnd = 2; | 200 | init_cwnd = 2; |
200 | else if (mss > 1460) | 201 | else |
201 | init_cwnd = 3; | 202 | init_cwnd = (mss > 1095) ? 3 : 4; |
202 | if (*rcv_wnd > init_cwnd*mss) | 203 | if (*rcv_wnd > init_cwnd*mss) |
203 | *rcv_wnd = init_cwnd*mss; | 204 | *rcv_wnd = init_cwnd*mss; |
204 | } | 205 | } |