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 | } |
