The cubic slow_start callback was only resetting the internal cubic state
without reducing the congestion window, unlike newreno which calls
quic_cc_path_reset(). Per RFC 9002, persistent congestion should trigger
both entry into slow start and a reduction of the congestion window.
Must be backported to all versions.
static void quic_cc_cubic_slow_start(struct quic_cc *cc)
{
+ struct quic_cc_path *path = container_of(cc, struct quic_cc_path, cc);
+
TRACE_ENTER(QUIC_EV_CONN_CC, cc->qc);
+ quic_cc_path_reset(path);
quic_cc_cubic_reset(cc);
TRACE_LEAVE(QUIC_EV_CONN_CC, cc->qc);
}