linux/net/ipv4/tcp_bic.c

// SPDX-License-Identifier: GPL-2.0-only
/*
 * Binary Increase Congestion control for TCP
 * Home page:
 *      http://netsrv.csc.ncsu.edu/twiki/bin/view/Main/BIC
 * This is from the implementation of BICTCP in
 * Lison-Xu, Kahaled Harfoush, and Injong Rhee.
 *  "Binary Increase Congestion Control for Fast, Long Distance
 *  Networks" in InfoComm 2004
 * Available from:
 *  http://netsrv.csc.ncsu.edu/export/bitcp.pdf
 *
 * Unless BIC is enabled and congestion window is large
 * this behaves the same as the original Reno.
 */

#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 =;		/* = 819/1024 (BICTCP_BETA_SCALE) */
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();

/* BIC TCP Parameters */
struct bictcp {};

static inline void bictcp_reset(struct bictcp *ca)
{}

static void bictcp_init(struct sock *sk)
{}

/*
 * Compute congestion window to use.
 */
static inline void bictcp_update(struct bictcp *ca, u32 cwnd)
{}

static void bictcp_cong_avoid(struct sock *sk, u32 ack, u32 acked)
{}

/*
 *	behave like Reno until low_window is reached,
 *	then increase congestion window slowly
 */
static u32 bictcp_recalc_ssthresh(struct sock *sk)
{}

static void bictcp_state(struct sock *sk, u8 new_state)
{}

/* Track delayed acknowledgment ratio using sliding window
 * ratio = (15*ratio + sample) / 16
 */
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();