Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/tcp_stacks/bbr.c
- This file is larger than 256 KB, so syntax highlighting is disabled by default.
Show First 20 Lines • Show All 5,850 Lines • ▼ Show 20 Lines | if (bbr->rc_inp->inp_socket->so_snd.sb_flags & SB_TLS_IFNET) { | ||||
bbr->r_ctl.rc_pace_min_segs = (tls_seg + bbr->rc_last_options); | bbr->r_ctl.rc_pace_min_segs = (tls_seg + bbr->rc_last_options); | ||||
} | } | ||||
#endif | #endif | ||||
old_tso = bbr->r_ctl.rc_pace_max_segs; | old_tso = bbr->r_ctl.rc_pace_max_segs; | ||||
if (bbr->rc_past_init_win == 0) { | if (bbr->rc_past_init_win == 0) { | ||||
/* | /* | ||||
* Not enough data has been acknowledged to make a | * Not enough data has been acknowledged to make a | ||||
* judgement unless we are hardware TLS. Set up | * judgement unless we are hardware TLS. Set up | ||||
* the inital TSO based on if we are sending a | * the initial TSO based on if we are sending a | ||||
* full IW at once or not. | * full IW at once or not. | ||||
*/ | */ | ||||
if (bbr->rc_use_google) | if (bbr->rc_use_google) | ||||
bbr->r_ctl.rc_pace_max_segs = ((bbr->rc_tp->t_maxseg - bbr->rc_last_options) * 2); | bbr->r_ctl.rc_pace_max_segs = ((bbr->rc_tp->t_maxseg - bbr->rc_last_options) * 2); | ||||
else if (bbr->bbr_init_win_cheat) | else if (bbr->bbr_init_win_cheat) | ||||
bbr->r_ctl.rc_pace_max_segs = bbr_initial_cwnd(bbr, bbr->rc_tp); | bbr->r_ctl.rc_pace_max_segs = bbr_initial_cwnd(bbr, bbr->rc_tp); | ||||
else | else | ||||
bbr->r_ctl.rc_pace_max_segs = bbr->rc_tp->t_maxseg - bbr->rc_last_options; | bbr->r_ctl.rc_pace_max_segs = bbr->rc_tp->t_maxseg - bbr->rc_last_options; | ||||
▲ Show 20 Lines • Show All 6,488 Lines • ▼ Show 20 Lines | #endif | ||||
bbr->r_wanted_output = 0; | bbr->r_wanted_output = 0; | ||||
/* | /* | ||||
* For TFO connections in SYN_RECEIVED, only allow the initial | * For TFO connections in SYN_RECEIVED, only allow the initial | ||||
* SYN|ACK and those sent by the retransmit timer. | * SYN|ACK and those sent by the retransmit timer. | ||||
*/ | */ | ||||
if (IS_FASTOPEN(tp->t_flags) && | if (IS_FASTOPEN(tp->t_flags) && | ||||
((tp->t_state == TCPS_SYN_RECEIVED) || | ((tp->t_state == TCPS_SYN_RECEIVED) || | ||||
(tp->t_state == TCPS_SYN_SENT)) && | (tp->t_state == TCPS_SYN_SENT)) && | ||||
SEQ_GT(tp->snd_max, tp->snd_una) && /* inital SYN or SYN|ACK sent */ | SEQ_GT(tp->snd_max, tp->snd_una) && /* initial SYN or SYN|ACK sent */ | ||||
(tp->t_rxtshift == 0)) { /* not a retransmit */ | (tp->t_rxtshift == 0)) { /* not a retransmit */ | ||||
return (0); | return (0); | ||||
} | } | ||||
/* | /* | ||||
* Before sending anything check for a state update. For hpts | * Before sending anything check for a state update. For hpts | ||||
* calling without input this is important. If its input calling | * calling without input this is important. If its input calling | ||||
* then this was already done. | * then this was already done. | ||||
*/ | */ | ||||
▲ Show 20 Lines • Show All 2,827 Lines • Show Last 20 Lines |