summaryrefslogtreecommitdiff
path: root/net
diff options
context:
space:
mode:
authorNandita Dukkipati <nanditad@google.com>2010-12-03 13:33:44 +0000
committerPaul Gortmaker <paul.gortmaker@windriver.com>2011-04-17 16:16:02 -0400
commit9436887e4dd873e46337048a48d17aa413cfc83a (patch)
treebac8c0cbbd4db4c8a70219eed99ab1923631b1c2 /net
parent8b95a0a46853086fad423fc1ede3c81b28f90000 (diff)
tcp: Bug fix in initialization of receive window.
commit b1afde60f2b9ee8444fba4e012dc99a3b28d224d upstream The bug has to do with boundary checks on the initial receive window. If the initial receive window falls between init_cwnd and the receive window specified by the user, the initial window is incorrectly brought down to init_cwnd. The correct behavior is to allow it to remain unchanged. Signed-off-by: Nandita Dukkipati <nanditad@google.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/ipv4/tcp_output.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/net/ipv4/tcp_output.c b/net/ipv4/tcp_output.c
index a5cf575f1363..e1819aa972d4 100644
--- a/net/ipv4/tcp_output.c
+++ b/net/ipv4/tcp_output.c
@@ -237,11 +237,10 @@ void tcp_select_initial_window(int __space, __u32 mss,
/* when initializing use the value from init_rcv_wnd
* rather than the default from above
*/
- if (init_rcv_wnd &&
- (*rcv_wnd > init_rcv_wnd * mss))
- *rcv_wnd = init_rcv_wnd * mss;
- else if (*rcv_wnd > init_cwnd * mss)
- *rcv_wnd = init_cwnd * mss;
+ if (init_rcv_wnd)
+ *rcv_wnd = min(*rcv_wnd, init_rcv_wnd * mss);
+ else
+ *rcv_wnd = min(*rcv_wnd, init_cwnd * mss);
}
/* Set the clamp no higher than max representable value */