Lines Matching refs:rack
135 rack_update_pcm_ack(struct tcp_rack *rack, int was_cumack, uint32_t start, uint32_t end) in rack_update_pcm_ack() argument
142 if (rack->pcm_in_progress == 0) in rack_update_pcm_ack()
145 if (SEQ_LEQ(end, rack->r_ctl.pcm_i.sseq)) { in rack_update_pcm_ack()
153 segsiz = ctf_fixed_maxseg(rack->rc_tp); in rack_update_pcm_ack()
154 if (SEQ_GEQ(end, (rack->r_ctl.pcm_i.eseq - segsiz))) { in rack_update_pcm_ack()
162 rack->pcm_in_progress = 0; in rack_update_pcm_ack()
163 rack->r_ctl.last_pcm_round = rack->r_ctl.current_round; in rack_update_pcm_ack()
164 rack->r_ctl.pcm_idle_rounds = 0; in rack_update_pcm_ack()
166 if (SEQ_GEQ(start, rack->r_ctl.pcm_i.eseq)) { in rack_update_pcm_ack()
177 ack_arrival = tcp_tv_to_lusectick(&rack->r_ctl.act_rcv_time); in rack_update_pcm_ack()
178 if (SEQ_GT(end, rack->r_ctl.pcm_i.eseq)) { in rack_update_pcm_ack()
180 end = rack->r_ctl.pcm_i.eseq; in rack_update_pcm_ack()
182 if ((rack->r_ctl.pcm_i.cnt + 1) > rack->r_ctl.pcm_i.cnt_alloc) { in rack_update_pcm_ack()
186 if (rack->r_ctl.pcm_i.cnt_alloc == 0) { in rack_update_pcm_ack()
190 rack->r_ctl.pcm_i.cnt_alloc = RACK_DEFAULT_PCM_ARRAY; in rack_update_pcm_ack()
191 sz = (sizeof(struct rack_pcm_stats) * rack->r_ctl.pcm_i.cnt_alloc); in rack_update_pcm_ack()
192 rack->r_ctl.pcm_s = malloc(sz, M_TCPPCM, M_NOWAIT); in rack_update_pcm_ack()
193 if (rack->r_ctl.pcm_s == NULL) { in rack_update_pcm_ack()
194 rack->r_ctl.pcm_i.cnt_alloc = 0; in rack_update_pcm_ack()
195 rack->pcm_in_progress = 0; in rack_update_pcm_ack()
203 new_cnt = rack->r_ctl.pcm_i.cnt_alloc * 2; in rack_update_pcm_ack()
208 rack->pcm_in_progress = 0; in rack_update_pcm_ack()
209 rack->r_ctl.pcm_i.cnt = 0; in rack_update_pcm_ack()
212 sz = (sizeof(struct rack_pcm_stats) * rack->r_ctl.pcm_i.cnt_alloc); in rack_update_pcm_ack()
213 memcpy(n, rack->r_ctl.pcm_s, sz); in rack_update_pcm_ack()
214 free(rack->r_ctl.pcm_s, M_TCPPCM); in rack_update_pcm_ack()
215 rack->r_ctl.pcm_s = n; in rack_update_pcm_ack()
216 rack->r_ctl.pcm_i.cnt_alloc = new_cnt; in rack_update_pcm_ack()
219 e = &rack->r_ctl.pcm_s[rack->r_ctl.pcm_i.cnt]; in rack_update_pcm_ack()
220 rack->r_ctl.pcm_i.cnt++; in rack_update_pcm_ack()
232 if (tcp_bblogging_on(rack->rc_tp)) { in rack_update_pcm_ack()
241 for (i=0; i<rack->r_ctl.pcm_i.cnt; i++) { in rack_update_pcm_ack()
243 e = &rack->r_ctl.pcm_s[i]; in rack_update_pcm_ack()
246 log.u_bbr.inflight = ctf_flight_size(rack->rc_tp, rack->r_ctl.rc_sacked); in rack_update_pcm_ack()
257 if (e->ack_time > rack->r_ctl.pcm_i.send_time) { in rack_update_pcm_ack()
258 log.u_bbr.flex4 = (uint32_t)(e->ack_time - rack->r_ctl.pcm_i.send_time); in rack_update_pcm_ack()
270 log.u_bbr.cur_del_rate = rack->r_ctl.pcm_i.send_time; in rack_update_pcm_ack()
281 (void)tcp_log_event(rack->rc_tp, NULL, NULL, NULL, TCP_PCM_MEASURE, ERRNO_UNK, in rack_update_pcm_ack()
284 if (prev_time > rack->r_ctl.pcm_i.send_time) { in rack_update_pcm_ack()
290 log.u_bbr.inflight = ctf_flight_size(rack->rc_tp, rack->r_ctl.rc_sacked); in rack_update_pcm_ack()
292 log.u_bbr.flex1 = rack->r_ctl.pcm_i.sseq; in rack_update_pcm_ack()
293 log.u_bbr.flex2 = rack->r_ctl.pcm_i.eseq; in rack_update_pcm_ack()
297 log.u_bbr.flex7 = rack->r_ctl.pcm_i.cnt; in rack_update_pcm_ack()
298 log.u_bbr.cwnd_gain = rack->r_ctl.pcm_i.cnt_alloc; in rack_update_pcm_ack()
299 log.u_bbr.cur_del_rate = rack->r_ctl.pcm_i.send_time; in rack_update_pcm_ack()
303 log.u_bbr.delRate /= (prev_time - rack->r_ctl.pcm_i.send_time); in rack_update_pcm_ack()
304 (void)tcp_log_event(rack->rc_tp, NULL, NULL, NULL, TCP_PCM_MEASURE, ERRNO_UNK, in rack_update_pcm_ack()
328 rack->r_ctl.pcm_i.cnt = 0; in rack_update_pcm_ack()