aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
authorNeal Cardwell <ncardwell@google.com>2011-11-16 03:58:05 -0500
committerDavid S. Miller <davem@davemloft.net>2011-11-27 18:54:09 -0500
commit8cd6d6162d998da579d40a1ee061bf8ce1610ff8 (patch)
treec57f017e0f0f4b0a12760918f999d411a6027c63 /net/ipv4/tcp_input.c
parentf698204bd0bfdc645642e271da117b56b795aee0 (diff)
tcp: skip cwnd moderation in TCP_CA_Open in tcp_try_to_open
The problem: Senders were overriding cwnd values picked during an undo by calling tcp_moderate_cwnd() in tcp_try_to_open(). The fix: Don't moderate cwnd in tcp_try_to_open() if we're in TCP_CA_Open, since doing so is generally unnecessary and specifically would override a DSACK-based undo of a cwnd reduction made in fast recovery. Signed-off-by: Neal Cardwell <ncardwell@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index a4efdd7cf5a1..78dd38cd5496 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2881,7 +2881,8 @@ static void tcp_try_to_open(struct sock *sk, int flag)
2881 2881
2882 if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) { 2882 if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) {
2883 tcp_try_keep_open(sk); 2883 tcp_try_keep_open(sk);
2884 tcp_moderate_cwnd(tp); 2884 if (inet_csk(sk)->icsk_ca_state != TCP_CA_Open)
2885 tcp_moderate_cwnd(tp);
2885 } else { 2886 } else {
2886 tcp_cwnd_down(sk, flag); 2887 tcp_cwnd_down(sk, flag);
2887 } 2888 }