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
algorithm.
RETURN VALUES
tcp_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 ALSO
tcp(4)