28#ifndef _NETINET_TCP_RACK_H_
29#define _NETINET_TCP_RACK_H_
31#define RACK_ACKED 0x000001
32#define RACK_TO_REXT 0x000002
33#define RACK_DEFERRED 0x000004
34#define RACK_OVERMAX 0x000008
35#define RACK_SACK_PASSED 0x000010
36#define RACK_WAS_SACKPASS 0x000020
37#define RACK_HAS_FIN 0x000040
38#define RACK_TLP 0x000080
39#define RACK_RWND_COLLAPSED 0x000100
40#define RACK_APP_LIMITED 0x000200
41#define RACK_WAS_ACKED 0x000400
42#define RACK_HAS_SYN 0x000800
43#define RACK_SENT_W_DSACK 0x001000
44#define RACK_SENT_SP 0x002000
45#define RACK_SENT_FP 0x004000
46#define RACK_HAD_PUSH 0x008000
47#define RACK_MUST_RXT 0x010000
48#define RACK_NUM_OF_RETRANS 3
50#define RACK_INITIAL_RTO 1000000
122#define MAP_MERGE 0x01
123#define MAP_SPLIT 0x02
125#define MAP_SACK_M1 0x04
126#define MAP_SACK_M2 0x05
127#define MAP_SACK_M3 0x06
128#define MAP_SACK_M4 0x07
129#define MAP_SACK_M5 0x08
131#define MAP_TRIM_HEAD 0x0a
133#define RACK_LIMIT_TYPE_SPLIT 1
142#define RACK_RTT_EMPTY 0x00000001
143#define RACK_RTT_VALID 0x00000002
155#define RACK_LOG_TYPE_ACK 0x01
156#define RACK_LOG_TYPE_OUT 0x02
157#define RACK_LOG_TYPE_TO 0x03
158#define RACK_LOG_TYPE_ALLOC 0x04
159#define RACK_LOG_TYPE_FREE 0x05
165#define RACK_TO_FRM_TMR 1
166#define RACK_TO_FRM_TLP 2
167#define RACK_TO_FRM_RACK 3
168#define RACK_TO_FRM_KEEP 4
169#define RACK_TO_FRM_PERSIST 5
170#define RACK_TO_FRM_DELACK 6
238#define RACK_RTTS_INIT 0
239#define RACK_RTTS_NEWRTT 1
240#define RACK_RTTS_EXITPROBE 2
241#define RACK_RTTS_ENTERPROBE 3
242#define RACK_RTTS_REACHTARGET 4
243#define RACK_RTTS_SEEHBP 5
244#define RACK_RTTS_NOBACKOFF 6
245#define RACK_RTTS_SAFETY 7
247#define RACK_USE_BEG 1
248#define RACK_USE_END 2
249#define RACK_USE_END_OR_THACK 3
252#define TLP_USE_TWO_ONE 2
253#define TLP_USE_TWO_TWO 3
254#define RACK_MIN_BW 8000
257#define RACK_QUALITY_NONE 0
258#define RACK_QUALITY_HIGH 1
259#define RACK_QUALITY_APPLIMITED 2
260#define RACK_QUALITY_PERSIST 3
261#define RACK_QUALITY_PROBERTT 4
262#define RACK_QUALITY_ALLACKED 5
267#define RACK_OPTS_SIZE (sizeof(struct rack_opts_stats)/sizeof(uint64_t))
269#define RACK_OPTS_ADD(name, amm) counter_u64_add(rack_opts_arry[(offsetof(struct rack_opts_stats, name)/sizeof(uint64_t))], (amm))
270#define RACK_OPTS_INC(name) RACK_OPTS_ADD(name, 1)
304#define TT_RACK_FR_TMR 0x2000
312#define RACK_GP_HIST 4
314#define RACK_NUM_FSB_DEBUG 16
427#ifdef NETFLIX_SHARED_CWND
428 struct shared_cwnd *rc_scw;
496#define RACK_TIMELY_CNT_BOOST 5
497#define RACK_MINRTT_FILTER_TIM 10
499#define RACK_HYSTART_OFF 0
500#define RACK_HYSTART_ON 1
501#define RACK_HYSTART_ON_W_SC 2
502#define RACK_HYSTART_ON_W_SC_C 3
TAILQ_ENTRY(deferred_opt_list) next
uint32_t rc_ssthresh_at_erec
uint32_t retran_during_recovery
uint32_t rc_fixed_pacing_rate_rec
struct time_filter_small rc_gp_min_rtt
uint32_t rc_went_idle_time
struct rack_sendmap * rc_resend
uint32_t rc_prr_delivered
uint32_t rc_highest_us_rtt
struct rack_sendmap * rc_end_appl
struct rack_sendmap * rc_first_appl
uint32_t rc_probertt_sndmax_atexit
uint32_t rc_pace_max_segs
struct rack_sendmap * rc_sacklast
uint16_t rack_per_of_gp_ss
uint16_t rc_early_recovery_segs
uint8_t rc_rate_sample_method
uint32_t rc_num_split_allocs
uint32_t challenge_ack_ts
uint32_t rc_lower_rtt_us_cts
struct rack_sendmap * rc_tlpsend
uint16_t rack_per_of_gp_ca
uint16_t rc_reorder_shift
uint32_t rc_last_timeout_snduna
uint16_t rack_per_of_gp_probertt
uint16_t rack_per_of_gp_rec
uint32_t rc_num_maps_alloced
uint32_t rc_rack_tmit_time
struct rack_rb_tree_head rc_mtree
uint32_t rc_lowest_us_rtt
uint32_t rc_last_output_to
uint32_t rc_snd_max_at_rto
uint32_t rc_target_probertt_flight
uint32_t last_sent_tlp_seq
struct timeval rc_last_time_decay
uint32_t rc_fixed_pacing_rate_ss
uint32_t last_tlp_acked_start
struct newreno rc_saved_beta
uint32_t rc_tlp_threshold
uint32_t sack_moved_extra
uint32_t rc_loss_at_start
uint32_t last_tlp_acked_end
struct timeval act_rcv_time
uint8_t rc_tlp_cwnd_reduce
uint8_t rc_no_push_at_mrtt
uint32_t rc_pace_min_segs
uint32_t sack_noextra_move
uint16_t last_sent_tlp_len
uint32_t rc_fixed_pacing_rate_ca
uint32_t rc_prr_recovery_fs
uint32_t challenge_ack_cnt
struct rack_fast_send_blk fsb
uint32_t rc_app_limited_cnt
uint32_t rc_time_probertt_entered
const struct tcp_hwrate_limit_table * crte
uint32_t rc_rack_largest_cwnd
struct def_opt_head opt_list
uint32_t rc_tlp_rxt_last_time
uint32_t rc_time_probertt_starts
uint32_t rc_time_of_last_probertt
uint32_t persist_lost_ends
struct sack_filter rack_sf
struct rack_rtt_sample rack_rs
uint64_t tcp_rack_rtt_use
uint64_t tcp_rack_force_max_seg
uint64_t tcp_rack_max_seg
uint64_t tcp_rack_do_detection
uint64_t tcp_pacing_rate_cap
uint64_t tcp_rack_timer_slop
uint64_t tcp_rack_abc_val
uint64_t tcp_rack_idle_reduce_high
uint64_t tcp_rack_reord_fade
uint64_t tcp_rack_pace_rate_ca
uint64_t tcp_rack_pace_always
uint64_t tcp_use_cmp_acks
uint64_t tcp_rack_tlp_thresh
uint64_t tcp_rack_early_seg
uint64_t tcp_rack_reord_thresh
uint64_t tcp_rack_dsack_opt
uint64_t tcp_rack_fastrsm_hack
uint64_t tcp_rack_tlp_reduce
uint64_t tcp_rack_min_pace_seg
uint64_t tcp_data_after_close
uint64_t tcp_rack_rrr_no_conf_rate
uint64_t tcp_pacing_up_only
uint64_t tcp_rack_idle_reduce
uint64_t tcp_initial_rate
uint64_t rack_no_timer_in_hpts
uint64_t tcp_rack_pace_reduce
uint64_t tcp_rack_pace_rate_ss
uint64_t tcp_rack_pace_rate_rec
uint64_t tcp_sack_path_2b
uint64_t tcp_rack_measure_cnt
uint64_t tcp_rack_pkt_delay
uint64_t tcp_rack_tlp_inc_var
uint64_t tcp_hdwr_rate_cap
uint64_t tcp_rack_delayed_ack
uint64_t tcp_rack_prr_sendalot
uint64_t tcp_rack_beta_ecn
uint64_t tcp_sack_path_2a
uint64_t tcp_rack_cfg_rate
RB_ENTRY(rack_sendmap) r_next
TAILQ_ENTRY(rack_sendmap) r_tnext
uint64_t r_tim_lastsent[RACK_NUM_OF_RETRANS]
uint8_t rc_tlp_in_progress
int32_t(* r_substate)(struct mbuf *, struct tcphdr *, struct socket *, struct tcpcb *, struct tcpopt *, int32_t, int32_t, uint32_t, int, int, uint8_t)
uint8_t rc_pace_fill_if_rttin_range
uint8_t rack_hdw_pace_ena
uint8_t rc_last_tlp_acked_set
struct rack_control r_ctl
uint8_t rack_attempted_scwnd
uint8_t rack_scwnd_is_idle
uint8_t rc_last_sent_tlp_seq_valid
TAILQ_ENTRY(tcp_rack) r_hpts
uint8_t rc_rack_tmr_std_based
uint8_t rc_allow_data_af_clo
uint16_t rc_highly_buffered
uint16_t r_use_labc_for_rec
uint8_t rack_enable_scwnd
uint8_t rc_srtt_measure_made
uint16_t rc_gp_no_rec_chg
uint8_t set_pacing_done_a_iw
uint8_t probe_not_answered
uint8_t app_limited_needs_set
uint16_t r_rack_hw_rate_caps
uint8_t rc_ack_can_sendout_data
uint8_t rack_rec_nonrxt_use_cr
uint8_t sack_attack_disable
uint8_t rc_rack_use_dsack
uint16_t measure_saw_probe_rtt
uint16_t rc_gp_timely_dec_cnt
uint8_t rc_last_tlp_past_cumack
uint8_t rc_last_sent_tlp_past_cumack
uint8_t rc_user_set_max_segs
uint16_t rc_gp_timely_inc_cnt
uint8_t rack_attempt_hdwr_pace
uint16_t rc_dragged_bottom
uint8_t rc_dsack_round_seen
uint8_t rack_tlp_threshold_use
uint8_t alloc_limit_reported
counter_u64_t rack_opts_arry[RACK_OPTS_SIZE]
struct tcp_rack __aligned(CACHE_LINE_SIZE)
uint64_t rack_to_usec_ts(struct timeval *tv)
uint32_t rack_ts_to_msec(uint64_t ts)
TAILQ_HEAD(rack_head, rack_sendmap)
RB_HEAD(rack_rb_tree_head, rack_sendmap)
#define RACK_NUM_OF_RETRANS