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