]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: quic: define quic_pacing module
authorAmaury Denoyelle <adenoyelle@haproxy.com>
Thu, 24 Oct 2024 13:53:17 +0000 (15:53 +0200)
committerAmaury Denoyelle <adenoyelle@haproxy.com>
Mon, 28 Oct 2024 16:31:29 +0000 (17:31 +0100)
Makefile
include/haproxy/mux_quic-t.h
include/haproxy/quic_conn.h
include/haproxy/quic_pacing-t.h [new file with mode: 0644]
include/haproxy/quic_pacing.h [new file with mode: 0644]
src/mux_quic.c
src/quic_pacing.c [new file with mode: 0644]

index 1ccd45d39edefa38bdd74317ed7ed157df66bf12..2c07969a759b9daaa71b2b31958e09935cec7434 100644 (file)
--- 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=),)
index fcdd38b9bd14ee700461fc9cf270647ce967a8a2..0e4f6b283677b8ee6f5c7c2ed73a491a9e5d0ff2 100644 (file)
@@ -15,6 +15,7 @@
 #include <haproxy/ncbuf-t.h>
 #include <haproxy/quic_fctl-t.h>
 #include <haproxy/quic_frame-t.h>
+#include <haproxy/quic_pacing-t.h>
 #include <haproxy/quic_stream-t.h>
 #include <haproxy/stconn-t.h>
 #include <haproxy/time-t.h>
@@ -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. */
index ebff2918641bb61851a3552f6b966ee6ad01d2bb..31f0c086f88428908303a97ad172c1f2c163eaee 100644 (file)
@@ -45,6 +45,7 @@
 #include <haproxy/quic_enc.h>
 #include <haproxy/quic_frame.h>
 #include <haproxy/quic_loss.h>
+#include <haproxy/quic_pacing.h>
 #include <haproxy/quic_rx.h>
 #include <haproxy/mux_quic.h>
 
diff --git a/include/haproxy/quic_pacing-t.h b/include/haproxy/quic_pacing-t.h
new file mode 100644 (file)
index 0000000..fd30745
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef _HAPROXY_QUIC_PACING_T_H
+#define _HAPROXY_QUIC_PACING_T_H
+
+#include <haproxy/quic_cc-t.h>
+
+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 (file)
index 0000000..eff7315
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _HAPROXY_QUIC_PACING_H
+#define _HAPROXY_QUIC_PACING_H
+
+#include <haproxy/quic_pacing-t.h>
+
+static inline void quic_pacing_init(struct quic_pacer *pacer,
+                                    const struct quic_cc_path *path)
+{
+       pacer->path = path;
+}
+
+#endif /* _HAPROXY_QUIC_PACING_H */
index 84f92c55b86c27d1d2baef8203bba8a4810da161..7b3f705e76e54cc2fb3eedfb24a24bbf33ddec44 100644 (file)
@@ -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 (file)
index 0000000..faee5e8
--- /dev/null
@@ -0,0 +1 @@
+#include <haproxy/quic_pacing.h>