aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--net/ipv4/tcp_input.c8
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 */
1473static void tcp_check_reno_reordering(struct sock *sk, const int addend) 1474static 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 */
1519int tcp_use_frto(struct sock *sk) 1523int 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);