#include <haproxy/buf-t.h>
#include <haproxy/quic_loss-t.h>
+#include <haproxy/quic_tx-t.h>
#define QUIC_CC_INFINITE_SSTHESH ((uint32_t)-1)
/* Defined only if pacing is used. */
uint (*pacing_rate)(const struct quic_cc *cc);
uint (*pacing_burst)(const struct quic_cc *cc);
+
+ struct quic_cc_drs *(*get_drs)(struct quic_cc *cc);
+ void (*on_transmit)(struct quic_cc *cc);
+ void (*drs_on_transmit)(struct quic_cc *cc, struct quic_tx_packet *pkt);
+ void (*on_ack_rcvd)(struct quic_cc *cc, uint32_t acked, uint32_t delivered,
+ uint32_t ack_rtt, uint32_t bytes_lost,
+ unsigned int largest_pkt_sent_ts);
+ void (*on_pkt_lost)(struct quic_cc *cc,
+ struct quic_tx_packet *pkt, uint32_t lost_bytes);
+ void (*congestion_event)(struct quic_cc *cc, uint32_t ts);
};
#endif /* USE_QUIC */
*/
#include <haproxy/quic_cc.h>
+#include <haproxy/quic_pacing.h>
struct quic_cc_algo *default_quic_cc_algo = &quic_cc_algo_cubic;
/* Send <ev> event to <cc> congestion controller. */
void quic_cc_event(struct quic_cc *cc, struct quic_cc_event *ev)
{
- cc->algo->event(cc, ev);
+ if (cc->algo->event)
+ cc->algo->event(cc, ev);
}
void quic_cc_state_trace(struct buffer *buf, const struct quic_cc *cc)