diff options
author | Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> | 2007-07-07 06:39:02 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2007-10-10 19:47:58 -0400 |
commit | d02596e32925edaeccee0af8eb6c229b5615de42 (patch) | |
tree | a15271083fa0b8d8da21297cfa1fc02089c62070 | |
parent | 86426c22d24e0c904012711a14cb5021f4a167dc (diff) |
[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>
-rw-r--r-- | net/ipv4/tcp_input.c | 2 |
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) | |||
2134 | if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) { | 2134 | if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) { |
2135 | int state = TCP_CA_Open; | 2135 | int state = TCP_CA_Open; |
2136 | 2136 | ||
2137 | if (tp->sacked_out || tp->retrans_out || tp->undo_marker) | 2137 | if (tcp_left_out(tp) || tp->retrans_out || tp->undo_marker) |
2138 | state = TCP_CA_Disorder; | 2138 | state = TCP_CA_Disorder; |
2139 | 2139 | ||
2140 | if (inet_csk(sk)->icsk_ca_state != state) { | 2140 | if (inet_csk(sk)->icsk_ca_state != state) { |