1/* Copyright (c) 2017 - 2022 LiteSpeed Technologies Inc.  See LICENSE. */
2/*
3 * lsquic_adaptive_cc.h -- Adaptive congestion controller
4 *
5 * The controller begins using BBRv1, but keeps Cubic state as well.
6 * When RTT is known, we pick either Cubic (small RTT) or BBRv1 (large
7 * RTT).
8 */
9
10#ifndef LSQUIC_ADAPTIVE_CC_H
11#define LSQUIC_ADAPTIVE_CC_H 1
12
13struct adaptive_cc
14{
15    struct lsquic_cubic     acc_cubic;
16    struct lsquic_bbr       acc_bbr;
17    enum {
18        ACC_CUBIC = 1,  /* If set, use Cubic; otherwise, use BBR */
19    }                       acc_flags;
20};
21
22extern const struct cong_ctl_if lsquic_cong_adaptive_if;
23
24#endif
25