51#ifndef _NETINET_CC_CC_H_
52#define _NETINET_CC_CC_H_
64#define V_default_cc_ptr VNET(default_cc_ptr)
67#define V_cc_do_abe VNET(cc_do_abe)
70#define V_cc_abe_frlossreduce VNET(cc_abe_frlossreduce)
108#define CCF_ABC_SENTAWND 0x0001
109#define CCF_CWND_LIMITED 0x0002
110#define CCF_USE_LOCAL_ABC 0x0004
111#define CCF_ACKNOW 0x0008
112#define CCF_IPHDR_CE 0x0010
113#define CCF_TCPHDR_CWR 0x0020
114#define CCF_MAX_CWND 0x0040
115#define CCF_CHG_MAX_CWND 0x0080
116#define CCF_USR_IWND 0x0100
117#define CCF_USR_IWND_INIT_NSEG 0x0200
118#define CCF_HYSTART_ALLOWED 0x0400
119#define CCF_HYSTART_CAN_SH_CWND 0x0800
120#define CCF_HYSTART_CONS_SSTH 0x1000
124#define CC_DUPACK 0x0002
125#define CC_PARTIALACK 0x0004
126#define CC_SACK 0x0008
134#define CC_ECN 0x00000001
135#define CC_RTO 0x00000002
136#define CC_RTO_ERR 0x00000004
137#define CC_NDUPACK 0x00000008
139#define CC_SIGPRIVMASK 0xFF000000
207#define CC_MODULE_BEING_REMOVED 0x01
210#define CC_ALGO(tp) ((tp)->cc_algo)
213#define CC_DATA(tp) ((tp)->ccv->cc_data)
216#define CC_DEFAULT_ALGO() V_default_cc_ptr
219#define CC_LIST_LOCK_INIT() rw_init(&cc_list_lock, "cc_list")
220#define CC_LIST_LOCK_DESTROY() rw_destroy(&cc_list_lock)
221#define CC_LIST_RLOCK() rw_rlock(&cc_list_lock)
222#define CC_LIST_RUNLOCK() rw_runlock(&cc_list_lock)
223#define CC_LIST_WLOCK() rw_wlock(&cc_list_lock)
224#define CC_LIST_WUNLOCK() rw_wunlock(&cc_list_lock)
225#define CC_LIST_LOCK_ASSERT() rw_assert(&cc_list_lock, RA_LOCKED)
227#define CC_ALGOOPT_LIMIT 2048
VNET_DECLARE(struct cc_algo *, default_cc_ptr)
void newreno_cc_ack_received(struct cc_var *, uint16_t)
uint32_t hystart_css_growth_div
uint32_t hystart_maxrtt_thresh
int cc_deregister_algo(struct cc_algo *remove_cc)
void cc_refer(struct cc_algo *algo)
uint32_t hystart_css_rounds
void newreno_cc_post_recovery(struct cc_var *)
int cc_register_algo(struct cc_algo *add_cc)
void newreno_cc_after_idle(struct cc_var *)
STAILQ_HEAD(cc_head, cc_algo) cc_list
uint32_t hystart_minrtt_thresh
void cc_detach(struct tcpcb *)
void newreno_cc_cong_signal(struct cc_var *, uint32_t)
struct rwlock cc_list_lock
void cc_release(struct cc_algo *algo)
uint32_t hystart_n_rttsamples
void cc_attach(struct tcpcb *, struct cc_algo *)
SYSCTL_DECL(_net_inet_tcp_cc)
void(* after_idle)(struct cc_var *ccv)
void(* post_recovery)(struct cc_var *ccv)
void(* cb_destroy)(struct cc_var *ccv)
int(* ctl_output)(struct cc_var *, struct sockopt *, void *)
STAILQ_ENTRY(cc_algo) entries
void(* ack_received)(struct cc_var *ccv, uint16_t type)
size_t(* cc_data_sz)(void)
void(* conn_init)(struct cc_var *ccv)
void(* newround)(struct cc_var *ccv, uint32_t round_cnt)
char name[TCP_CA_NAME_MAX]
void(* cong_signal)(struct cc_var *ccv, uint32_t type)
void(* rttsample)(struct cc_var *ccv, uint32_t usec_rtt, uint32_t rxtcnt, uint32_t fas)
int(* cb_init)(struct cc_var *ccv, void *ptr)
void(* ecnpkt_handler)(struct cc_var *ccv)
union cc_var::ccv_container ccvc