#include <linux/mm.h>
#include <linux/module.h>
#include <net/tcp.h>
#define BICTCP_BETA_SCALE …
#define BICTCP_B …
static int fast_convergence = …;
static int max_increment = …;
static int low_window = …;
static int beta = …;
static int initial_ssthresh;
static int smooth_part = …;
module_param(fast_convergence, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(max_increment, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(low_window, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(beta, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(initial_ssthresh, int, 0644);
MODULE_PARM_DESC(…) …;
module_param(smooth_part, int, 0644);
MODULE_PARM_DESC(…) …;
struct bictcp { … };
static inline void bictcp_reset(struct bictcp *ca)
{ … }
static void bictcp_init(struct sock *sk)
{ … }
static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
{ … }
static void bictcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
{ … }
static u32 bictcp_recalc_ssthresh(struct sock *sk)
{ … }
static void bictcp_state(struct sock *sk, u8 new_state)
{ … }
static void bictcp_acked(struct sock *sk, const struct ack_sample *sample)
{ … }
static struct tcp_congestion_ops bictcp __read_mostly = …;
static int __init bictcp_register(void)
{ … }
static void __exit bictcp_unregister(void)
{ … }
module_init(…) …;
module_exit(bictcp_unregister);
MODULE_AUTHOR(…) …;
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;