BUG/MINOR: quic: Wrong rtt variance computing

In ->srtt quic_loss struct this is 8*srtt which is stored so that not to have to multiply/devide
it to compute the RTT variance (at least). This is where there was a bug in quic_loss_srtt_update():
each time ->srtt must be used, it must be devided by 8 or right shifted by 3.
This bug had a very bad impact for network with non negligeable packet loss.

Must be backported to 2.6 and 2.7.
This commit is contained in:
Frédéric Lécaille 2023-03-30 15:31:06 +02:00
parent d721571d26
commit 5d5afe7900
1 changed files with 1 additions and 1 deletions

View File

@ -37,7 +37,7 @@ void quic_loss_srtt_update(struct quic_loss *ql,
/* Specific to QUIC (RTT adjustment). */
if (ack_delay && rtt > ql->rtt_min + ack_delay)
rtt -= ack_delay;
diff = ql->srtt - rtt;
diff = (ql->srtt >> 3) - rtt;
if (diff < 0)
diff = -diff;
/* 4*rttvar = 3*rttvar + |diff| */