From 22ab45a3a84d0a9a61cc90c6efedd893dd1cbe4a Mon Sep 17 00:00:00 2001 From: Frederic Lecaille Date: Thu, 12 Dec 2024 11:50:26 +0100 Subject: [PATCH] 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. --- include/haproxy/quic_cc_drs.h | 1 - src/quic_cc_drs.c | 8 ++------ 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/include/haproxy/quic_cc_drs.h b/include/haproxy/quic_cc_drs.h index a910306d5..89acb6f16 100644 --- a/include/haproxy/quic_cc_drs.h +++ b/include/haproxy/quic_cc_drs.h @@ -20,7 +20,6 @@ struct quic_cc_rs { /* Delivery rate sampling */ struct quic_cc_drs { struct quic_cc_rs rs; - struct wf wf; uint64_t round_count; uint64_t next_round_delivered; uint64_t delivered; diff --git a/src/quic_cc_drs.c b/src/quic_cc_drs.c index 8e9d3112f..8a0b52c77 100644 --- a/src/quic_cc_drs.c +++ b/src/quic_cc_drs.c @@ -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) { quic_cc_rs_init(&drs->rs); - wf_init(&drs->wf, 12, 0, ~0U); drs->round_count = 0; drs->next_round_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) { struct quic_cc_rs *rs = &drs->rs; - uint64_t rate; if (drs->app_limited && drs->delivered > drs->app_limited) 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) return; - /* is in bytes/s. */ - 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); + /* is in bytes/s. */ + path->delivery_rate = rs->delivered * 1000000 / rs->interval_us; }