FreeBSD kernel IPv4 code
|
Go to the source code of this file.
Data Structures | |
struct | cc_var |
union | cc_var::ccv_container |
struct | cc_algo |
Macros | |
#define | V_default_cc_ptr VNET(default_cc_ptr) |
#define | V_cc_do_abe VNET(cc_do_abe) |
#define | V_cc_abe_frlossreduce VNET(cc_abe_frlossreduce) |
#define | CCF_ABC_SENTAWND 0x0001 /* ABC counted cwnd worth of bytes? */ |
#define | CCF_CWND_LIMITED 0x0002 /* Are we currently cwnd limited? */ |
#define | CCF_USE_LOCAL_ABC 0x0004 /* Dont use the system l_abc val */ |
#define | CCF_ACKNOW 0x0008 /* Will this ack be sent now? */ |
#define | CCF_IPHDR_CE 0x0010 /* Does this packet set CE bit? */ |
#define | CCF_TCPHDR_CWR 0x0020 /* Does this packet set CWR bit? */ |
#define | CCF_MAX_CWND 0x0040 /* Have we reached maximum cwnd? */ |
#define | CCF_CHG_MAX_CWND 0x0080 /* Cubic max_cwnd changed, for K */ |
#define | CCF_USR_IWND 0x0100 /* User specified initial window */ |
#define | CCF_USR_IWND_INIT_NSEG 0x0200 /* Convert segs to bytes on conn init */ |
#define | CCF_HYSTART_ALLOWED 0x0400 /* If the CC supports it Hystart is allowed */ |
#define | CCF_HYSTART_CAN_SH_CWND 0x0800 /* Can hystart when going CSS -> CA slam the cwnd */ |
#define | CCF_HYSTART_CONS_SSTH 0x1000 /* Should hystart use the more conservative ssthresh */ |
#define | CC_ACK 0x0001 /* Regular in sequence ACK. */ |
#define | CC_DUPACK 0x0002 /* Duplicate ACK. */ |
#define | CC_PARTIALACK 0x0004 /* Not yet. */ |
#define | CC_SACK 0x0008 /* Not yet. */ |
#define | CC_ECN 0x00000001 /* ECN marked packet received. */ |
#define | CC_RTO 0x00000002 /* RTO fired. */ |
#define | CC_RTO_ERR 0x00000004 /* RTO fired in error. */ |
#define | CC_NDUPACK 0x00000008 /* Threshold of dupack's reached. */ |
#define | CC_SIGPRIVMASK 0xFF000000 /* Mask to check if sig is private. */ |
#define | CC_MODULE_BEING_REMOVED 0x01 /* The module is being removed */ |
#define | CC_ALGO(tp) ((tp)->cc_algo) |
#define | CC_DATA(tp) ((tp)->ccv->cc_data) |
#define | CC_DEFAULT_ALGO() V_default_cc_ptr |
#define | CC_LIST_LOCK_INIT() rw_init(&cc_list_lock, "cc_list") |
#define | CC_LIST_LOCK_DESTROY() rw_destroy(&cc_list_lock) |
#define | CC_LIST_RLOCK() rw_rlock(&cc_list_lock) |
#define | CC_LIST_RUNLOCK() rw_runlock(&cc_list_lock) |
#define | CC_LIST_WLOCK() rw_wlock(&cc_list_lock) |
#define | CC_LIST_WUNLOCK() rw_wunlock(&cc_list_lock) |
#define | CC_LIST_LOCK_ASSERT() rw_assert(&cc_list_lock, RA_LOCKED) |
#define | CC_ALGOOPT_LIMIT 2048 |
Functions | |
MALLOC_DECLARE (M_CC_MEM) | |
STAILQ_HEAD (cc_head, cc_algo) cc_list | |
VNET_DECLARE (struct cc_algo *, default_cc_ptr) | |
VNET_DECLARE (int, cc_do_abe) | |
VNET_DECLARE (int, cc_abe_frlossreduce) | |
SYSCTL_DECL (_net_inet_tcp_cc) | |
int | cc_register_algo (struct cc_algo *add_cc) |
int | cc_deregister_algo (struct cc_algo *remove_cc) |
void | newreno_cc_post_recovery (struct cc_var *) |
void | newreno_cc_after_idle (struct cc_var *) |
void | newreno_cc_cong_signal (struct cc_var *, uint32_t) |
void | newreno_cc_ack_received (struct cc_var *, uint16_t) |
void | cc_refer (struct cc_algo *algo) |
void | cc_release (struct cc_algo *algo) |
void | cc_attach (struct tcpcb *, struct cc_algo *) |
void | cc_detach (struct tcpcb *) |
#define CC_DEFAULT_ALGO | ( | ) | V_default_cc_ptr |
#define CC_LIST_LOCK_ASSERT | ( | ) | rw_assert(&cc_list_lock, RA_LOCKED) |
#define CC_LIST_LOCK_DESTROY | ( | ) | rw_destroy(&cc_list_lock) |
#define CC_LIST_LOCK_INIT | ( | ) | rw_init(&cc_list_lock, "cc_list") |
#define CC_LIST_RLOCK | ( | ) | rw_rlock(&cc_list_lock) |
#define CC_LIST_RUNLOCK | ( | ) | rw_runlock(&cc_list_lock) |
#define CC_LIST_WLOCK | ( | ) | rw_wlock(&cc_list_lock) |
#define CC_LIST_WUNLOCK | ( | ) | rw_wunlock(&cc_list_lock) |
#define CC_MODULE_BEING_REMOVED 0x01 /* The module is being removed */ |
#define CC_NDUPACK 0x00000008 /* Threshold of dupack's reached. */ |
#define CC_SIGPRIVMASK 0xFF000000 /* Mask to check if sig is private. */ |
#define CCF_ABC_SENTAWND 0x0001 /* ABC counted cwnd worth of bytes? */ |
#define CCF_CHG_MAX_CWND 0x0080 /* Cubic max_cwnd changed, for K */ |
#define CCF_CWND_LIMITED 0x0002 /* Are we currently cwnd limited? */ |
#define CCF_HYSTART_ALLOWED 0x0400 /* If the CC supports it Hystart is allowed */ |
#define CCF_HYSTART_CAN_SH_CWND 0x0800 /* Can hystart when going CSS -> CA slam the cwnd */ |
#define CCF_HYSTART_CONS_SSTH 0x1000 /* Should hystart use the more conservative ssthresh */ |
#define CCF_MAX_CWND 0x0040 /* Have we reached maximum cwnd? */ |
#define CCF_TCPHDR_CWR 0x0020 /* Does this packet set CWR bit? */ |
#define CCF_USE_LOCAL_ABC 0x0004 /* Dont use the system l_abc val */ |
#define CCF_USR_IWND 0x0100 /* User specified initial window */ |
#define CCF_USR_IWND_INIT_NSEG 0x0200 /* Convert segs to bytes on conn init */ |
Definition at line 126 of file cc.c.
References CC_ALGO, CC_LIST_RLOCK, CC_LIST_RUNLOCK, and cc_refer().
Referenced by tcp_newtcpcb(), and tcp_set_cc_mod().
int cc_deregister_algo | ( | struct cc_algo * | remove_cc | ) |
Definition at line 284 of file cc.c.
References cc_check_default(), cc_list, CC_LIST_WLOCK, CC_LIST_WUNLOCK, CC_MODULE_BEING_REMOVED, cc_algo::cc_refcount, and cc_algo::flags.
Referenced by cc_modevent().
void cc_detach | ( | struct tcpcb * | tp | ) |
Definition at line 138 of file cc.c.
References CC_ALGO, CC_LIST_RLOCK, CC_LIST_RUNLOCK, and cc_release().
Referenced by tcp_discardcb(), tcp_newtcpcb(), and tcp_set_cc_mod().
void cc_refer | ( | struct cc_algo * | algo | ) |
Definition at line 111 of file cc.c.
References CC_LIST_LOCK_ASSERT, and cc_algo::cc_refcount.
Referenced by cc_attach(), and tcp_set_cc_mod().
int cc_register_algo | ( | struct cc_algo * | add_cc | ) |
Definition at line 322 of file cc.c.
References CC_DEFAULT, cc_list, CC_LIST_WLOCK, CC_LIST_WUNLOCK, cc_algo::cc_refcount, cc_algo::name, and V_default_cc_ptr.
Referenced by cc_modevent().
void cc_release | ( | struct cc_algo * | algo | ) |
Definition at line 118 of file cc.c.
References CC_LIST_LOCK_ASSERT, and cc_algo::cc_refcount.
Referenced by cc_detach(), and tcp_set_cc_mod().
MALLOC_DECLARE | ( | M_CC_MEM | ) |
Definition at line 493 of file cc.c.
References cc_var::bytes_this_ack, CC_ACK, CCF_ABC_SENTAWND, CCF_CWND_LIMITED, CCF_USE_LOCAL_ABC, CCV, cc_var::flags, IN_RECOVERY, cc_var::labc, cc_var::nsegs, V_tcp_abc_l_var, and V_tcp_do_rfc3465.
Referenced by dctcp_ack_received(), hd_ack_received(), htcp_ack_received(), and vegas_ack_received().
void newreno_cc_after_idle | ( | struct cc_var * | ccv | ) |
Definition at line 415 of file cc.c.
References CCV, cc_var::ccvc, cc_var::ccv_container::tcp, tcp_compute_initwnd(), and tcp_maxseg().
Referenced by cubic_after_idle(), dctcp_after_idle(), and newreno_after_idle().
Definition at line 447 of file cc.c.
References CC_ECN, CC_NDUPACK, CC_RTO, CC_SIGPRIVMASK, CCV, cc_var::ccvc, ENTER_CONGRECOVERY, ENTER_RECOVERY, IN_CONGRECOVERY, IN_FASTRECOVERY, cc_var::ccv_container::tcp, tcp_fixed_maxseg(), and V_newreno_beta.
Referenced by cdg_cong_signal(), chd_cong_signal(), dctcp_cong_signal(), hd_ack_received(), and vegas_cong_signal().
void newreno_cc_post_recovery | ( | struct cc_var * | ccv | ) |
Definition at line 384 of file cc.c.
References CCV, cc_var::ccvc, cc_var::curack, IN_FASTRECOVERY, cc_var::ccv_container::tcp, tcp_compute_pipe(), and V_tcp_do_newsack.
Referenced by dctcp_post_recovery().
STAILQ_HEAD | ( | cc_head | , |
cc_algo | |||
) |
SYSCTL_DECL | ( | _net_inet_tcp_cc | ) |
VNET_DECLARE | ( | int | , |
cc_abe_frlossreduce | |||
) |
VNET_DECLARE | ( | int | , |
cc_do_abe | |||
) |
VNET_DECLARE | ( | struct cc_algo * | , |
default_cc_ptr | |||
) |
|
extern |
Definition at line 92 of file cc.c.
Referenced by cubic_log_hystart_event(), and newreno_log_hystart_event().
|
extern |
Definition at line 90 of file cc.c.
Referenced by cubic_does_slow_start(), and newreno_ack_received().
|
extern |
Definition at line 91 of file cc.c.
Referenced by cubic_newround(), and newreno_newround().
|
extern |
|
extern |
Definition at line 88 of file cc.c.
Referenced by cubic_does_slow_start(), and newreno_ack_received().
|
extern |
Definition at line 87 of file cc.c.
Referenced by cubic_does_slow_start(), and newreno_ack_received().
|
extern |
Definition at line 89 of file cc.c.
Referenced by cubic_does_slow_start(), cubic_rttsample(), newreno_ack_received(), and newreno_rttsample().
|
extern |
Definition at line 135 of file tcp_input.c.
Referenced by tcp_do_prr_ack(), and tcp_do_segment().