MCPcopy Create free account
hub / github.com/F-Stack/f-stack / rack_exit_persist

Function rack_exit_persist

freebsd/netinet/tcp_stacks/rack.c:4642–4695  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4640}
4641
4642static void
4643rack_exit_persist(struct tcpcb *tp, struct tcp_rack *rack, uint32_t cts)
4644{
4645 if (rack->rc_inp->inp_in_hpts) {
4646 tcp_hpts_remove(rack->rc_inp, HPTS_REMOVE_OUTPUT);
4647 rack->r_ctl.rc_hpts_flags = 0;
4648 }
4649#ifdef NETFLIX_SHARED_CWND
4650 if (rack->r_ctl.rc_scw) {
4651 tcp_shared_cwnd_active(rack->r_ctl.rc_scw, rack->r_ctl.rc_scw_index);
4652 rack->rack_scwnd_is_idle = 0;
4653 }
4654#endif
4655 if (rack->rc_gp_dyn_mul &&
4656 (rack->use_fixed_rate == 0) &&
4657 (rack->rc_always_pace)) {
4658 /*
4659 * Do we count this as if a probe-rtt just
4660 * finished?
4661 */
4662 uint32_t time_idle, idle_min;
4663
4664 time_idle = tcp_get_usecs(NULL) - rack->r_ctl.rc_went_idle_time;
4665 idle_min = rack_min_probertt_hold;
4666 if (rack_probertt_gpsrtt_cnt_div) {
4667 uint64_t extra;
4668 extra = (uint64_t)rack->r_ctl.rc_gp_srtt *
4669 (uint64_t)rack_probertt_gpsrtt_cnt_mul;
4670 extra /= (uint64_t)rack_probertt_gpsrtt_cnt_div;
4671 idle_min += (uint32_t)extra;
4672 }
4673 if (time_idle >= idle_min) {
4674 /* Yes, we count it as a probe-rtt. */
4675 uint32_t us_cts;
4676
4677 us_cts = tcp_get_usecs(NULL);
4678 if (rack->in_probe_rtt == 0) {
4679 rack->r_ctl.rc_lower_rtt_us_cts = us_cts;
4680 rack->r_ctl.rc_time_probertt_entered = rack->r_ctl.rc_lower_rtt_us_cts;
4681 rack->r_ctl.rc_time_probertt_starts = rack->r_ctl.rc_lower_rtt_us_cts;
4682 rack->r_ctl.rc_time_of_last_probertt = rack->r_ctl.rc_lower_rtt_us_cts;
4683 } else {
4684 rack_exit_probertt(rack, us_cts);
4685 }
4686 }
4687 }
4688 rack->rc_in_persist = 0;
4689 rack->r_ctl.rc_went_idle_time = 0;
4690 tp->t_rxtshift = 0;
4691 rack->r_ctl.rc_agg_delayed = 0;
4692 rack->r_early = 0;
4693 rack->r_late = 0;
4694 rack->r_ctl.rc_agg_early = 0;
4695}
4696
4697static void
4698rack_log_hpts_diag(struct tcp_rack *rack, uint32_t cts,

Callers 3

rack_timeout_persistFunction · 0.85
rack_process_dataFunction · 0.85
rack_fastackFunction · 0.85

Calls 2

tcp_get_usecsFunction · 0.85
rack_exit_proberttFunction · 0.85

Tested by

no test coverage detected