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=),)
#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>
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. */
#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>
--- /dev/null
+#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 */
--- /dev/null
+#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 */
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;
--- /dev/null
+#include <haproxy/quic_pacing.h>