[TCP]: Add bytes_acked (ABC) clearing to FRTO too
I was reading tcp_enter_loss while looking for Cedric's bug and noticed bytes_acked adjustment is missing from FRTO side. Since bytes_acked will only be used in tcp_cong_avoid, I think it's safe to assume RTO would be spurious. During FRTO cwnd will be not controlled by tcp_cong_avoid and if FRTO calls for conventional recovery, cwnd is adjusted and the result of wrong assumption is cleared from bytes_acked. If RTO was in fact spurious, we did normal ABC already and can continue without any additional adjustments. Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@helsinki.fi> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
4953f0fcc0
commit
16e906812f
1 changed files with 2 additions and 0 deletions
|
@ -1687,6 +1687,7 @@ static void tcp_enter_frto_loss(struct sock *sk, int allowed_segments, int flag)
|
||||||
tp->snd_cwnd_cnt = 0;
|
tp->snd_cwnd_cnt = 0;
|
||||||
tp->snd_cwnd_stamp = tcp_time_stamp;
|
tp->snd_cwnd_stamp = tcp_time_stamp;
|
||||||
tp->frto_counter = 0;
|
tp->frto_counter = 0;
|
||||||
|
tp->bytes_acked = 0;
|
||||||
|
|
||||||
tp->reordering = min_t(unsigned int, tp->reordering,
|
tp->reordering = min_t(unsigned int, tp->reordering,
|
||||||
sysctl_tcp_reordering);
|
sysctl_tcp_reordering);
|
||||||
|
@ -2824,6 +2825,7 @@ static void tcp_conservative_spur_to_response(struct tcp_sock *tp)
|
||||||
{
|
{
|
||||||
tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh);
|
tp->snd_cwnd = min(tp->snd_cwnd, tp->snd_ssthresh);
|
||||||
tp->snd_cwnd_cnt = 0;
|
tp->snd_cwnd_cnt = 0;
|
||||||
|
tp->bytes_acked = 0;
|
||||||
TCP_ECN_queue_cwr(tp);
|
TCP_ECN_queue_cwr(tp);
|
||||||
tcp_moderate_cwnd(tp);
|
tcp_moderate_cwnd(tp);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue