litespeed-quic/src/liblsquic/lsquic_cubic.h

43 lines
1.1 KiB
C

/* Copyright (c) 2017 - 2021 LiteSpeed Technologies Inc. See LICENSE. */
/*
* lsquic_cubic.h -- CUBIC congestion control protocol.
*/
#ifndef LSQUIC_CUBIC_H
#define LSQUIC_CUBIC_H 1
#include "lsquic_shared_support.h"
struct lsquic_conn;
struct lsquic_cubic {
lsquic_time_t cu_min_delay;
lsquic_time_t cu_epoch_start;
double cu_K;
unsigned long cu_origin_point;
unsigned long cu_last_max_cwnd;
unsigned long cu_cwnd;
unsigned long cu_tcp_cwnd;
unsigned long cu_ssthresh;
const struct lsquic_conn
*cu_conn; /* Used for logging */
const struct lsquic_rtt_stats
*cu_rtt_stats;
enum cubic_flags {
CU_TCP_FRIENDLY = (1 << 0),
} cu_flags;
unsigned cu_sampling_rate;
lsquic_time_t cu_last_logged;
};
#define DEFAULT_CUBIC_FLAGS (CU_TCP_FRIENDLY)
#define TCP_MSS 1460
LSQUIC_EXTERN const struct cong_ctl_if lsquic_cong_cubic_if;
void
lsquic_cubic_set_flags (struct lsquic_cubic *cubic, enum cubic_flags flags);
#endif