summaryrefslogtreecommitdiffstats
path: root/net/ipv4/tcp_input.c
diff options
context:
space:
mode:
authorIlpo Järvinen2007-07-07 12:39:02 +0200
committerDavid S. Miller2007-10-11 01:47:58 +0200
commitd02596e32925edaeccee0af8eb6c229b5615de42 (patch)
treea15271083fa0b8d8da21297cfa1fc02089c62070 /net/ipv4/tcp_input.c
parent[TCP]: Restore over-zealous tcp_sync_left_out-like removals (diff)
downloadkernel-qcow2-linux-d02596e32925edaeccee0af8eb6c229b5615de42.tar.gz
kernel-qcow2-linux-d02596e32925edaeccee0af8eb6c229b5615de42.tar.xz
kernel-qcow2-linux-d02596e32925edaeccee0af8eb6c229b5615de42.zip
[TCP]: Keep state in Disorder also if only lost_out > 0
This happens rather infrequently and is only possible during FRTO. We must not allow TCP to slip to Open state because tcp_fastretrans_alert might then not be called on it's time when FRTO has exited. This become a problem when left_out got removed and was replaced by just sacked_out. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv4/tcp_input.c')
-rw-r--r--net/ipv4/tcp_input.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c
index 93823b83522b..bf4fc3516fb9 100644
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
@@ -2134,7 +2134,7 @@ static void tcp_try_to_open(struct sock *sk, int flag)
if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) {
int state = TCP_CA_Open;
- if (tp->sacked_out || tp->retrans_out || tp->undo_marker)
+ if (tcp_left_out(tp) || tp->retrans_out || tp->undo_marker)
state = TCP_CA_Disorder;
if (inet_csk(sk)->icsk_ca_state != state) {