Эх сурвалжийг харах

[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>
Ilpo Järvinen 18 жил өмнө
parent
commit
d02596e329

+ 1 - 1
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) {
 	if (inet_csk(sk)->icsk_ca_state != TCP_CA_CWR) {
 		int state = TCP_CA_Open;
 		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;
 			state = TCP_CA_Disorder;
 
 
 		if (inet_csk(sk)->icsk_ca_state != state) {
 		if (inet_csk(sk)->icsk_ca_state != state) {