BUG/MEDIUM: quic: reset consecutive_losses on exit from recovery period (cubic)

When exiting the recovery period and re-entering congestion avoidance,
the consecutive_losses counter was not reset. This meant that if a loss
event arrived immediately after the ACK that ended recovery, the counter
would still hold the value that triggered recovery, causing an immediate
re-entry into recovery (recovery -> CA -> recovery loop).

Resetting consecutive_losses to 0 on recovery exit matches the behavior
of resetting it on ACK in CA, ensuring a clean slate for the new
congestion avoidance period.

Must be backported to all versions.
This commit is contained in:
Frederic Lecaille 2026-05-28 15:12:11 +02:00
parent ab8603c6d5
commit 45ad1037d0

View file

@ -607,6 +607,7 @@ static void quic_cc_cubic_rp_cb(struct quic_cc *cc, struct quic_cc_event *ev)
c->state = QUIC_CC_ST_CA;
c->recovery_start_time = TICK_ETERNITY;
c->consecutive_losses = 0;
break;
case QUIC_CC_EVT_LOSS:
break;