diff options
-rw-r--r-- | net/ipv4/tcp_input.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/net/ipv4/tcp_input.c b/net/ipv4/tcp_input.c index 4b27739031fb..904289d2b6bb 100644 --- a/net/ipv4/tcp_input.c +++ b/net/ipv4/tcp_input.c | |||
@@ -1467,8 +1467,9 @@ tcp_sacktag_write_queue(struct sock *sk, struct sk_buff *ack_skb, u32 prior_snd_ | |||
1467 | return flag; | 1467 | return flag; |
1468 | } | 1468 | } |
1469 | 1469 | ||
1470 | /* F-RTO can only be used if TCP has never retransmitted anything other than | 1470 | /* If we receive more dupacks than we expected counting segments |
1471 | * head (SACK enhanced variant from Appendix B of RFC4138 is more robust here) | 1471 | * in assumption of absent reordering, interpret this as reordering. |
1472 | * The only another reason could be bug in receiver TCP. | ||
1472 | */ | 1473 | */ |
1473 | static void tcp_check_reno_reordering(struct sock *sk, const int addend) | 1474 | static void tcp_check_reno_reordering(struct sock *sk, const int addend) |
1474 | { | 1475 | { |
@@ -1516,6 +1517,9 @@ static inline void tcp_reset_reno_sack(struct tcp_sock *tp) | |||
1516 | tp->sacked_out = 0; | 1517 | tp->sacked_out = 0; |
1517 | } | 1518 | } |
1518 | 1519 | ||
1520 | /* F-RTO can only be used if TCP has never retransmitted anything other than | ||
1521 | * head (SACK enhanced variant from Appendix B of RFC4138 is more robust here) | ||
1522 | */ | ||
1519 | int tcp_use_frto(struct sock *sk) | 1523 | int tcp_use_frto(struct sock *sk) |
1520 | { | 1524 | { |
1521 | const struct tcp_sock *tp = tcp_sk(sk); | 1525 | const struct tcp_sock *tp = tcp_sk(sk); |