#include <linux/mm.h>
#include <linux/btf.h>
#include <linux/btf_ids.h>
#include <linux/module.h>
#include <linux/math64.h>
#include <net/tcp.h>
#define BICTCP_BETA_SCALE …
#define BICTCP_HZ …
#define HYSTART_ACK_TRAIN …
#define HYSTART_DELAY …
#define HYSTART_MIN_SAMPLES …
#define HYSTART_DELAY_MIN …
#define HYSTART_DELAY_MAX …
#define HYSTART_DELAY_THRESH(x) …
static int fast_convergence __read_mostly = …;
static int beta __read_mostly = …;
static int initial_ssthresh __read_mostly;
static int bic_scale __read_mostly = …;
static int tcp_friendliness __read_mostly = …;
static int hystart __read_mostly = …;
static int hystart_detect __read_mostly = …;
static int hystart_low_window __read_mostly = …;
static int hystart_ack_delta_us __read_mostly = …;
static u32 cube_rtt_scale __read_mostly;
static u32 beta_scale __read_mostly;
static u64 cube_factor __read_mostly;
module_param(fast_convergence, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(beta, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(initial_ssthresh, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(bic_scale, int, 0444);
MODULE_PARM_DESC(…) …;
module_param(tcp_friendliness, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(hystart, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(hystart_detect, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(hystart_low_window, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(hystart_ack_delta_us, int, 0644);
MODULE_PARM_DESC(…) …;
struct bictcp { … };
static inline void bictcp_reset(struct bictcp *ca)
{ … }
static inline u32 bictcp_clock_us(const struct sock *sk)
{ … }
static inline void bictcp_hystart_reset(struct sock *sk)
{ … }
__bpf_kfunc static void cubictcp_init(struct sock *sk)
{ … }
__bpf_kfunc static void cubictcp_cwnd_event(struct sock *sk, enum tcp_ca_event event)
{ … }
static u32 cubic_root(u64 a)
{ … }
static inline void bictcp_update(struct bictcp *ca, u32 cwnd, u32 acked)
{ … }
__bpf_kfunc static void cubictcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
{ … }
__bpf_kfunc static u32 cubictcp_recalc_ssthresh(struct sock *sk)
{ … }
__bpf_kfunc static void cubictcp_state(struct sock *sk, u8 new_state)
{ … }
static u32 hystart_ack_delay(const struct sock *sk)
{ … }
static void hystart_update(struct sock *sk, u32 delay)
{ … }
__bpf_kfunc static void cubictcp_acked(struct sock *sk, const struct ack_sample *sample)
{ … }
static struct tcp_congestion_ops cubictcp __read_mostly = …;
BTF_KFUNCS_START(tcp_cubic_check_kfunc_ids)
BTF_ID_FLAGS(…)
BTF_ID_FLAGS(…)
BTF_ID_FLAGS(…)
BTF_ID_FLAGS(…)
BTF_ID_FLAGS(…)
BTF_ID_FLAGS(…)
BTF_KFUNCS_END(…)
static const struct btf_kfunc_id_set tcp_cubic_kfunc_set = …;
static int __init cubictcp_register(void)
{ … }
static void __exit cubictcp_unregister(void)
{ … }
module_init(…) …;
module_exit(cubictcp_unregister);
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_VERSION(…) …;