FreeBSD kernel IPv4 code
|
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/module.h>
#include <sys/socket.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/socketvar.h>
#include <sys/sysctl.h>
#include <sys/systm.h>
#include <net/vnet.h>
#include <net/route.h>
#include <net/route/nhop.h>
#include <netinet/in_pcb.h>
#include <netinet/in.h>
#include <netinet/tcp.h>
#include <netinet/tcp_seq.h>
#include <netinet/tcp_var.h>
#include <netinet/tcp_log_buf.h>
#include <netinet/tcp_hpts.h>
#include <netinet/cc/cc.h>
#include <netinet/cc/cc_module.h>
#include <netinet/cc/cc_newreno.h>
Go to the source code of this file.
Macros | |
#define | V_newreno_beta VNET(newreno_beta) |
#define | V_newreno_beta_ecn VNET(newreno_beta_ecn) |
Functions | |
__FBSDID ("$FreeBSD$") | |
static void | newreno_cb_destroy (struct cc_var *ccv) |
static void | newreno_ack_received (struct cc_var *ccv, uint16_t type) |
static void | newreno_after_idle (struct cc_var *ccv) |
static void | newreno_cong_signal (struct cc_var *ccv, uint32_t type) |
static int | newreno_ctl_output (struct cc_var *ccv, struct sockopt *sopt, void *buf) |
static void | newreno_newround (struct cc_var *ccv, uint32_t round_cnt) |
static void | newreno_rttsample (struct cc_var *ccv, uint32_t usec_rtt, uint32_t rxtcnt, uint32_t fas) |
static int | newreno_cb_init (struct cc_var *ccv, void *) |
static size_t | newreno_data_sz (void) |
VNET_DECLARE (uint32_t, newreno_beta) | |
VNET_DEFINE (uint32_t, newreno_beta_ecn) | |
static void | newreno_log_hystart_event (struct cc_var *ccv, struct newreno *nreno, uint8_t mod, uint32_t flex1) |
static int | newreno_beta_handler (SYSCTL_HANDLER_ARGS) |
SYSCTL_DECL (_net_inet_tcp_cc_newreno) | |
SYSCTL_NODE (_net_inet_tcp_cc, OID_AUTO, newreno, CTLFLAG_RW|CTLFLAG_MPSAFE, NULL, "New Reno related settings") | |
SYSCTL_PROC (_net_inet_tcp_cc_newreno, OID_AUTO, beta, CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW|CTLFLAG_NEEDGIANT, &VNET_NAME(newreno_beta), 3, &newreno_beta_handler, "IU", "New Reno beta, specified as number between 1 and 100") | |
SYSCTL_PROC (_net_inet_tcp_cc_newreno, OID_AUTO, beta_ecn, CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW|CTLFLAG_NEEDGIANT, &VNET_NAME(newreno_beta_ecn), 3, &newreno_beta_handler, "IU", "New Reno beta ecn, specified as number between 1 and 100") | |
DECLARE_CC_MODULE (newreno, &newreno_cc_algo) | |
MODULE_VERSION (newreno, 2) | |
Variables | |
struct cc_algo | newreno_cc_algo |
#define V_newreno_beta VNET(newreno_beta) |
Definition at line 101 of file cc_newreno.c.
#define V_newreno_beta_ecn VNET(newreno_beta_ecn) |
Definition at line 103 of file cc_newreno.c.
__FBSDID | ( | "$FreeBSD$" | ) |
DECLARE_CC_MODULE | ( | newreno | , |
& | newreno_cc_algo | ||
) |
MODULE_VERSION | ( | newreno | , |
2 | |||
) |
Definition at line 218 of file cc_newreno.c.
References cc_var::bytes_this_ack, CC_ACK, cc_var::cc_data, CC_NEWRENO_HYSTART_ENABLED, CC_NEWRENO_HYSTART_IN_CSS, CCF_ABC_SENTAWND, CCF_CWND_LIMITED, CCF_HYSTART_ALLOWED, CCF_USE_LOCAL_ABC, CCV, newreno::css_baseline_minrtt, newreno::css_current_round, newreno::css_current_round_minrtt, newreno::css_entered_at_round, newreno::css_fas_at_css_entry, newreno::css_lastround_minrtt, newreno::css_lowrtt_fas, newreno::css_rttsample_count, cc_var::flags, hystart_css_growth_div, hystart_maxrtt_thresh, hystart_minrtt_thresh, hystart_n_rttsamples, IN_RECOVERY, cc_var::labc, newreno::newreno_flags, newreno_log_hystart_event(), cc_var::nsegs, V_tcp_abc_l_var, and V_tcp_do_rfc3465.
|
static |
Definition at line 349 of file cc_newreno.c.
References cc_var::cc_data, CC_NEWRENO_HYSTART_ENABLED, CCV, newreno_cc_after_idle(), newreno::newreno_flags, and newreno_log_hystart_event().
|
static |
Definition at line 494 of file cc_newreno.c.
References V_cc_do_abe.
|
static |
Definition at line 212 of file cc_newreno.c.
References cc_var::cc_data.
|
static |
Definition at line 177 of file cc_newreno.c.
References newreno::beta, newreno::beta_ecn, cc_var::cc_data, CC_NEWRENO_HYSTART_ENABLED, cc_var::ccvc, newreno::css_baseline_minrtt, newreno::css_current_round, newreno::css_current_round_minrtt, newreno::css_entered_at_round, newreno::css_fas_at_css_entry, newreno::css_last_fas, newreno::css_lastround_minrtt, newreno::css_lowrtt_fas, newreno::css_rttsample_count, INP_WLOCK_ASSERT, newreno::newreno_flags, tcpcb::t_inpcb, cc_var::ccv_container::tcp, V_newreno_beta, and V_newreno_beta_ecn.
Definition at line 369 of file cc_newreno.c.
References newreno::beta, newreno::beta_ecn, cc_var::cc_data, CC_ECN, CC_NDUPACK, CC_NEWRENO_BETA_ECN_ENABLED, CC_NEWRENO_HYSTART_ENABLED, CC_RTO, CC_SIGPRIVMASK, CCV, cc_var::ccvc, ENTER_CONGRECOVERY, ENTER_RECOVERY, IN_CONGRECOVERY, IN_FASTRECOVERY, newreno::newreno_flags, newreno_log_hystart_event(), cc_var::ccv_container::tcp, tcp_fixed_maxseg(), V_cc_abe_frlossreduce, V_cc_do_abe, V_newreno_beta, and V_newreno_beta_ecn.
|
static |
Definition at line 443 of file cc_newreno.c.
References newreno::beta, newreno::beta_ecn, CC_ALGO, cc_var::cc_data, CC_NEWRENO_BETA, CC_NEWRENO_BETA_ECN, CC_NEWRENO_BETA_ECN_ENABLED, cc_var::ccvc, cc_newreno_opts::name, newreno_cc_algo, newreno::newreno_flags, cc_var::ccv_container::tcp, V_cc_do_abe, V_newreno_beta, V_newreno_beta_ecn, and cc_newreno_opts::val.
|
static |
Definition at line 171 of file cc_newreno.c.
|
static |
Definition at line 120 of file cc_newreno.c.
References tcpcb::ccv, cc_var::ccvc, newreno::css_baseline_minrtt, newreno::css_current_round, newreno::css_current_round_minrtt, newreno::css_entered_at_round, newreno::css_fas_at_css_entry, newreno::css_last_fas, newreno::css_lastround_minrtt, newreno::css_lowrtt_fas, newreno::css_rttsample_count, tcp_log_bbr::delivered, tcp_log_bbr::epoch, cc_var::flags, tcp_log_bbr::flex1, tcp_log_bbr::flex2, tcp_log_bbr::flex3, tcp_log_bbr::flex4, tcp_log_bbr::flex5, tcp_log_bbr::flex6, tcp_log_bbr::flex7, tcp_log_bbr::flex8, hystart_bblogs, inpcb::inp_socket, tcp_log_bbr::lt_epoch, newreno::newreno_flags, tcp_log_bbr::pkt_epoch, tcp_log_bbr::pkts_out, tcpcb::t_inpcb, tcpcb::t_logstate, cc_var::ccv_container::tcp, tcp_get_usecs(), TCP_HYSTART, TCP_LOG_EVENTP, TCP_LOG_STATE_OFF, tcp_log_bbr::timeStamp, and tcp_log_stackspecific::u_bbr.
Referenced by newreno_ack_received(), newreno_after_idle(), newreno_cong_signal(), newreno_newround(), and newreno_rttsample().
Definition at line 514 of file cc_newreno.c.
References cc_var::cc_data, CC_NEWRENO_HYSTART_ENABLED, CC_NEWRENO_HYSTART_IN_CSS, CCF_HYSTART_CAN_SH_CWND, CCF_HYSTART_CONS_SSTH, CCV, newreno::css_current_round, newreno::css_current_round_minrtt, newreno::css_entered_at_round, newreno::css_fas_at_css_entry, newreno::css_lastround_minrtt, newreno::css_lowrtt_fas, newreno::css_rttsample_count, cc_var::flags, hystart_css_rounds, newreno::newreno_flags, and newreno_log_hystart_event().
|
static |
Definition at line 555 of file cc_newreno.c.
References cc_var::cc_data, CC_NEWRENO_HYSTART_ENABLED, newreno::css_baseline_minrtt, newreno::css_current_round_minrtt, newreno::css_last_fas, newreno::css_lastround_minrtt, newreno::css_lowrtt_fas, newreno::css_rttsample_count, hystart_n_rttsamples, newreno::newreno_flags, and newreno_log_hystart_event().
SYSCTL_DECL | ( | _net_inet_tcp_cc_newreno | ) |
SYSCTL_NODE | ( | _net_inet_tcp_cc | , |
OID_AUTO | , | ||
newreno | , | ||
CTLFLAG_RW| | CTLFLAG_MPSAFE, | ||
NULL | , | ||
"New Reno related settings" | |||
) |
SYSCTL_PROC | ( | _net_inet_tcp_cc_newreno | , |
OID_AUTO | , | ||
beta | , | ||
CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW| | CTLFLAG_NEEDGIANT, | ||
& | VNET_NAMEnewreno_beta, | ||
3 | , | ||
& | newreno_beta_handler, | ||
"IU" | , | ||
"New Reno | beta, | ||
specified as number between 1 and 100" | |||
) |
SYSCTL_PROC | ( | _net_inet_tcp_cc_newreno | , |
OID_AUTO | , | ||
beta_ecn | , | ||
CTLFLAG_VNET|CTLTYPE_UINT|CTLFLAG_RW| | CTLFLAG_NEEDGIANT, | ||
& | VNET_NAMEnewreno_beta_ecn, | ||
3 | , | ||
& | newreno_beta_handler, | ||
"IU" | , | ||
"New Reno beta | ecn, | ||
specified as number between 1 and 100" | |||
) |
VNET_DECLARE | ( | uint32_t | , |
newreno_beta | |||
) |
VNET_DEFINE | ( | uint32_t | , |
newreno_beta_ecn | |||
) |
struct cc_algo newreno_cc_algo |
Definition at line 105 of file cc_newreno.c.
Referenced by newreno_ctl_output().