BUG/MINOR: quic: remove max_bw filter from delivery rate sampling

This filter is no more needed after this commit:

 BUG/MINOR: quic: fix BBB max bandwidth oscillation issue.

Indeed, one added this filter at delivery rate sampling level to filter
the BBR max bandwidth estimations and was inspired from ngtcp2 code source when
trying to fix the oscillation issue. But this BBR max bandwidth oscillation issue
was fixed by the aforementioned commit.

Furthermore this code tends to always increment the BBR max bandwidth. From my point
of view, this is not a good idea at all.

Must be backported to 3.1.
This commit is contained in:
Frederic Lecaille 2024-12-12 11:50:26 +01:00
parent 2bcd5b4cba
commit 22ab45a3a8
2 changed files with 2 additions and 7 deletions

View File

@ -20,7 +20,6 @@ struct quic_cc_rs {
/* Delivery rate sampling */ /* Delivery rate sampling */
struct quic_cc_drs { struct quic_cc_drs {
struct quic_cc_rs rs; struct quic_cc_rs rs;
struct wf wf;
uint64_t round_count; uint64_t round_count;
uint64_t next_round_delivered; uint64_t next_round_delivered;
uint64_t delivered; uint64_t delivered;

View File

@ -26,7 +26,6 @@ static void quic_cc_rs_init(struct quic_cc_rs *rs)
void quic_cc_drs_init(struct quic_cc_drs *drs) void quic_cc_drs_init(struct quic_cc_drs *drs)
{ {
quic_cc_rs_init(&drs->rs); quic_cc_rs_init(&drs->rs);
wf_init(&drs->wf, 12, 0, ~0U);
drs->round_count = 0; drs->round_count = 0;
drs->next_round_delivered = 0; drs->next_round_delivered = 0;
drs->delivered = 0; drs->delivered = 0;
@ -122,7 +121,6 @@ void quic_cc_drs_on_ack_recv(struct quic_cc_drs *drs, struct quic_cc_path *path,
uint64_t pkt_delivered) uint64_t pkt_delivered)
{ {
struct quic_cc_rs *rs = &drs->rs; struct quic_cc_rs *rs = &drs->rs;
uint64_t rate;
if (drs->app_limited && drs->delivered > drs->app_limited) if (drs->app_limited && drs->delivered > drs->app_limited)
drs->app_limited = 0; drs->app_limited = 0;
@ -150,8 +148,6 @@ void quic_cc_drs_on_ack_recv(struct quic_cc_drs *drs, struct quic_cc_path *path,
if (!rs->interval_us) if (!rs->interval_us)
return; return;
/* <rate> is in bytes/s. */ /* <delivery_rate> is in bytes/s. */
rate = rs->delivered * 1000000 / rs->interval_us; path->delivery_rate = rs->delivered * 1000000 / rs->interval_us;
if (rate >= wf_get_max(&drs->wf) || !drs->app_limited)
path->delivery_rate = wf_max_update(&drs->wf, rate, drs->round_count);
} }