tcp: don't extend RTO on failed loss probe attempts

If TLP was unable to send a probe, it extended the RTO to
now + icsk_rto. But extending the RTO makes little sense
if no TLP probe went out. With this commit, instead of
extending the RTO we re-arm it relative to the transmit time
of the write queue head.

Signed-off-by: Yuchung Cheng <ycheng@google.com>
Signed-off-by: Neal Cardwell <ncardwell@google.com>
Signed-off-by: Nandita Dukkipati <nanditad@google.com>
Acked-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Yuchung Cheng 2015-08-12 11:18:18 -07:00 committed by David S. Miller
parent 646244b223
commit fcd16c0a95

View file

@ -2275,13 +2275,12 @@ void tcp_send_loss_probe(struct sock *sk)
tp->tlp_high_seq = tp->snd_nxt; tp->tlp_high_seq = tp->snd_nxt;
rearm_timer: rearm_timer:
inet_csk_reset_xmit_timer(sk, ICSK_TIME_RETRANS, if (likely(!err)) {
inet_csk(sk)->icsk_rto, NET_INC_STATS_BH(sock_net(sk), LINUX_MIB_TCPLOSSPROBES);
TCP_RTO_MAX); /* Reset s.t. tcp_rearm_rto will restart timer from now */
inet_csk(sk)->icsk_pending = 0;
if (likely(!err)) }
NET_INC_STATS_BH(sock_net(sk), tcp_rearm_rto(sk);
LINUX_MIB_TCPLOSSPROBES);
} }
/* Push out any pending frames which were held back due to /* Push out any pending frames which were held back due to