From 7bbe8828baf663171f17e2c787f98f88b5cf7005 Mon Sep 17 00:00:00 2001 From: Frederic Lecaille Date: Tue, 13 Aug 2024 15:23:24 +0200 Subject: [PATCH] MINOR: quic: Add the congestion window initial value to QUIC path Add ->initial_wnd new member to quic_cc_path struct to keep the initial value of the congestion window. This member is initialized as soon as a QUIC connection is allocated. This modification is required for BBR congestion control algorithm. --- include/haproxy/quic_cc-t.h | 2 ++ include/haproxy/quic_cc.h | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/include/haproxy/quic_cc-t.h b/include/haproxy/quic_cc-t.h index 5293495fd4..e5ed9b3c3f 100644 --- a/include/haproxy/quic_cc-t.h +++ b/include/haproxy/quic_cc-t.h @@ -99,6 +99,8 @@ struct quic_cc_path { /* MTU. Must be constant for GSO support. */ const size_t mtu; + /* Initial congestion window. */ + uint64_t initial_wnd; /* Congestion window. */ uint64_t cwnd; /* The current maximum congestion window value reached. */ diff --git a/include/haproxy/quic_cc.h b/include/haproxy/quic_cc.h index 8003878fdb..bb15b3f915 100644 --- a/include/haproxy/quic_cc.h +++ b/include/haproxy/quic_cc.h @@ -90,7 +90,8 @@ static inline void quic_cc_path_init(struct quic_cc_path *path, int ipv4, unsign max_dgram_sz = ipv4 ? QUIC_INITIAL_IPV4_MTU : QUIC_INITIAL_IPV6_MTU; quic_loss_init(&path->loss); *(size_t *)&path->mtu = max_dgram_sz; - path->cwnd = QUIC_MIN(10 * max_dgram_sz, QUIC_MAX(max_dgram_sz << 1, 14720U)); + path->initial_wnd = QUIC_MIN(10 * max_dgram_sz, QUIC_MAX(max_dgram_sz << 1, 14720U)); + path->cwnd = path->initial_wnd; path->mcwnd = path->cwnd; path->max_cwnd = max_cwnd; path->min_cwnd = max_dgram_sz << 1;