From: Amaury Denoyelle Date: Thu, 24 Oct 2024 13:53:17 +0000 (+0200) Subject: MINOR: quic: define quic_pacing module X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2613193033936beeb63f03b21fbfcbfaf2e5d2a9;p=thirdparty%2Fhaproxy.git MINOR: quic: define quic_pacing module --- diff --git a/Makefile b/Makefile index 1ccd45d39e..2c07969a75 100644 --- a/Makefile +++ b/Makefile @@ -652,7 +652,7 @@ OPTIONS_OBJS += src/quic_rx.o src/mux_quic.o src/h3.o src/quic_tx.o \ src/cfgparse-quic.o src/qmux_trace.o src/qpack-enc.o \ src/qpack-tbl.o src/h3_stats.o src/quic_stats.o \ src/quic_fctl.o src/cbuf.o src/quic_rules.o \ - src/quic_token.o + src/quic_token.o src/quic_pacing.o endif ifneq ($(USE_QUIC_OPENSSL_COMPAT:0=),) diff --git a/include/haproxy/mux_quic-t.h b/include/haproxy/mux_quic-t.h index fcdd38b9bd..0e4f6b2836 100644 --- a/include/haproxy/mux_quic-t.h +++ b/include/haproxy/mux_quic-t.h @@ -15,6 +15,7 @@ #include #include #include +#include #include #include #include @@ -68,6 +69,7 @@ struct qcc { struct { struct quic_fctl fc; /* stream flow control applied on sending */ uint64_t buf_in_flight; /* sum of currently allocated Tx buffer sizes */ + struct quic_pacer pacer; } tx; uint64_t largest_bidi_r; /* largest remote bidi stream ID opened. */ diff --git a/include/haproxy/quic_conn.h b/include/haproxy/quic_conn.h index ebff291864..31f0c086f8 100644 --- a/include/haproxy/quic_conn.h +++ b/include/haproxy/quic_conn.h @@ -45,6 +45,7 @@ #include #include #include +#include #include #include diff --git a/include/haproxy/quic_pacing-t.h b/include/haproxy/quic_pacing-t.h new file mode 100644 index 0000000000..fd30745715 --- /dev/null +++ b/include/haproxy/quic_pacing-t.h @@ -0,0 +1,10 @@ +#ifndef _HAPROXY_QUIC_PACING_T_H +#define _HAPROXY_QUIC_PACING_T_H + +#include + +struct quic_pacer { + const struct quic_cc_path *path; +}; + +#endif /* _HAPROXY_QUIC_PACING_T_H */ diff --git a/include/haproxy/quic_pacing.h b/include/haproxy/quic_pacing.h new file mode 100644 index 0000000000..eff7315988 --- /dev/null +++ b/include/haproxy/quic_pacing.h @@ -0,0 +1,12 @@ +#ifndef _HAPROXY_QUIC_PACING_H +#define _HAPROXY_QUIC_PACING_H + +#include + +static inline void quic_pacing_init(struct quic_pacer *pacer, + const struct quic_cc_path *path) +{ + pacer->path = path; +} + +#endif /* _HAPROXY_QUIC_PACING_H */ diff --git a/src/mux_quic.c b/src/mux_quic.c index 84f92c55b8..7b3f705e76 100644 --- a/src/mux_quic.c +++ b/src/mux_quic.c @@ -2875,6 +2875,7 @@ static int qmux_init(struct connection *conn, struct proxy *prx, qcc->rfctl.msd_uni_l = rparams->initial_max_stream_data_uni; qcc->tx.buf_in_flight = 0; + quic_pacing_init(&qcc->tx.pacer, conn->handle.qc->path); if (conn_is_back(conn)) { qcc->next_bidi_l = 0x00; diff --git a/src/quic_pacing.c b/src/quic_pacing.c new file mode 100644 index 0000000000..faee5e81c2 --- /dev/null +++ b/src/quic_pacing.c @@ -0,0 +1 @@ +#include