uint32_t recovery_start_ts;
};
+/* pacing can be optionnaly activated on top of the algorithm */
+#define QUIC_CC_ALGO_FL_OPT_PACING 0x01
+
struct quic_cc_algo {
enum quic_cc_algo_type type;
+ int flags; /* QUIC_CC_ALGO_FL_* */
+
int (*init)(struct quic_cc *cc);
void (*event)(struct quic_cc *cc, struct quic_cc_event *ev);
void (*slow_start)(struct quic_cc *cc);
if (burst < 0)
goto fail;
- if (cc_algo->type != QUIC_CC_ALGO_TP_CUBIC) {
+ if (!(cc_algo->flags & QUIC_CC_ALGO_FL_OPT_PACING)) {
ha_warning("'%s' : burst parameter ignored for '%s' congestion algorithm\n",
args[cur_arg], algo);
}
struct quic_cc_algo quic_cc_algo_cubic = {
.type = QUIC_CC_ALGO_TP_CUBIC,
+ .flags = QUIC_CC_ALGO_FL_OPT_PACING,
.init = quic_cc_cubic_init,
.event = quic_cc_cubic_event,
.slow_start = quic_cc_cubic_slow_start,
struct quic_cc_algo quic_cc_algo_nr = {
.type = QUIC_CC_ALGO_TP_NEWRENO,
+ .flags = QUIC_CC_ALGO_FL_OPT_PACING,
.init = quic_cc_nr_init,
.event = quic_cc_nr_event,
.slow_start = quic_cc_nr_slow_start,
struct quic_cc_algo quic_cc_algo_nocc = {
.type = QUIC_CC_ALGO_TP_NOCC,
+ .flags = QUIC_CC_ALGO_FL_OPT_PACING,
.init = quic_cc_nocc_init,
.event = quic_cc_nocc_event,
.slow_start = quic_cc_nocc_slow_start,