TCP_CONGCTL(9) BSD Kernel Developer's Manual TCP_CONGCTL(9)NAME
tcp_congctl — TCP congestion control API
SYNOPSIS
#include <netinet/tcp_congctl.h>
int
tcp_congctl_register(const char *, struct tcp_congctl *);
int
tcp_congctl_unregister(const char *);
DESCRIPTION
The tcp_congctrl API is used to add or remove TCP congestion control
algorithms on-the-fly and to modularize them. It includes basically two
functions:
tcp_congctl_register(const char *, struct tcp_congctl *)
Registers a new congestion control algorithm. The struct
tcp_congctl argument must contain a list of callbacks like the
following:
struct tcp_congctl {
int (*fast_retransmit)(struct tcpcb *,
struct tcphdr *);
void (*slow_retransmit)(struct tcpcb *);
void (*fast_retransmit_newack)(struct tcpcb *,
struct tcphdr *);
void (*newack)(struct tcpcb *,
struct tcphdr *);
void (*cong_exp)(struct tcpcb *);
};
tcp_congctl_unregister(const char *)
If found, unregister the selected TCP congestion control algo‐
rithm.
RETURN VALUEStcp_congctl_register() and tcp_congctl_unregister() both return 0 when
there is no error. If the name is already registered,
tcp_congctl_register() will return EEXIST. tcp_congctl_unregister() can
return ENOENT if there is no congestion control algorithm by that name
and can return EBUSY if the matched algorithm is being used by userspace
applications.
FILES
Implementation is in sys/netinet/tcp_congctl.c and the interface is in
sys/netinet/tcp_congctl.h.
SEE ALSOtcp(4)BSD October 15, 2006 BSD