Lines Matching refs:ccv

82 static void	dctcp_ack_received(struct cc_var *ccv, ccsignal_t type);
83 static void dctcp_after_idle(struct cc_var *ccv);
84 static void dctcp_cb_destroy(struct cc_var *ccv);
85 static int dctcp_cb_init(struct cc_var *ccv, void *ptr);
86 static void dctcp_cong_signal(struct cc_var *ccv, ccsignal_t type);
87 static void dctcp_conn_init(struct cc_var *ccv);
88 static void dctcp_post_recovery(struct cc_var *ccv);
89 static void dctcp_ecnpkt_handler(struct cc_var *ccv);
90 static void dctcp_update_alpha(struct cc_var *ccv);
107 dctcp_ack_received(struct cc_var *ccv, ccsignal_t type) in dctcp_ack_received() argument
111 uint32_t mss = tcp_fixed_maxseg(ccv->tp); in dctcp_ack_received()
113 dctcp_data = ccv->cc_data; in dctcp_ack_received()
115 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) { in dctcp_ack_received()
121 if (IN_CONGRECOVERY(CCV(ccv, t_flags))) { in dctcp_ack_received()
122 EXIT_CONGRECOVERY(CCV(ccv, t_flags)); in dctcp_ack_received()
123 newreno_cc_ack_received(ccv, type); in dctcp_ack_received()
124 ENTER_CONGRECOVERY(CCV(ccv, t_flags)); in dctcp_ack_received()
126 newreno_cc_ack_received(ccv, type); in dctcp_ack_received()
129 bytes_acked = min(ccv->bytes_this_ack, mss); in dctcp_ack_received()
132 bytes_acked = ccv->bytes_this_ack; in dctcp_ack_received()
160 if (!IN_FASTRECOVERY(CCV(ccv, t_flags)) && in dctcp_ack_received()
161 SEQ_GT(ccv->curack, dctcp_data->save_sndnxt)) in dctcp_ack_received()
162 dctcp_update_alpha(ccv); in dctcp_ack_received()
164 newreno_cc_ack_received(ccv, type); in dctcp_ack_received()
174 dctcp_after_idle(struct cc_var *ccv) in dctcp_after_idle() argument
178 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) { in dctcp_after_idle()
179 dctcp_data = ccv->cc_data; in dctcp_after_idle()
184 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt); in dctcp_after_idle()
191 newreno_cc_after_idle(ccv); in dctcp_after_idle()
195 dctcp_cb_destroy(struct cc_var *ccv) in dctcp_cb_destroy() argument
197 free(ccv->cc_data, M_CC_MEM); in dctcp_cb_destroy()
201 dctcp_cb_init(struct cc_var *ccv, void *ptr) in dctcp_cb_init() argument
205 INP_WLOCK_ASSERT(tptoinpcb(ccv->tp)); in dctcp_cb_init()
233 ccv->cc_data = dctcp_data; in dctcp_cb_init()
241 dctcp_cong_signal(struct cc_var *ccv, ccsignal_t type) in dctcp_cong_signal() argument
246 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) { in dctcp_cong_signal()
247 dctcp_data = ccv->cc_data; in dctcp_cong_signal()
248 cwin = CCV(ccv, snd_cwnd); in dctcp_cong_signal()
249 mss = tcp_fixed_maxseg(ccv->tp); in dctcp_cong_signal()
253 if (!IN_FASTRECOVERY(CCV(ccv, t_flags))) { in dctcp_cong_signal()
254 if (!IN_CONGRECOVERY(CCV(ccv, t_flags))) { in dctcp_cong_signal()
255 CCV(ccv, snd_ssthresh) = in dctcp_cong_signal()
263 cwin = CCV(ccv, snd_cwnd_prev); in dctcp_cong_signal()
264 CCV(ccv, snd_ssthresh) = in dctcp_cong_signal()
267 ENTER_RECOVERY(CCV(ccv, t_flags)); in dctcp_cong_signal()
275 CCV(ccv, snd_cwnd_prev) = cwin; in dctcp_cong_signal()
276 if (!IN_CONGRECOVERY(CCV(ccv, t_flags))) { in dctcp_cong_signal()
279 CCV(ccv, snd_ssthresh) = in dctcp_cong_signal()
284 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt); in dctcp_cong_signal()
286 CCV(ccv, snd_ssthresh) = in dctcp_cong_signal()
290 CCV(ccv, snd_cwnd) = CCV(ccv, snd_ssthresh); in dctcp_cong_signal()
291 ENTER_CONGRECOVERY(CCV(ccv, t_flags)); in dctcp_cong_signal()
296 if (CCV(ccv, t_rxtshift) == 1) { in dctcp_cong_signal()
297 pipe = tcp_compute_pipe(ccv->tp); in dctcp_cong_signal()
298 CCV(ccv, snd_ssthresh) = max(2, in dctcp_cong_signal()
299 min(CCV(ccv, snd_wnd), pipe) / 2 / mss) * mss; in dctcp_cong_signal()
301 CCV(ccv, snd_cwnd) = mss; in dctcp_cong_signal()
302 dctcp_update_alpha(ccv); in dctcp_cong_signal()
310 newreno_cc_cong_signal(ccv, type); in dctcp_cong_signal()
314 dctcp_conn_init(struct cc_var *ccv) in dctcp_conn_init() argument
318 dctcp_data = ccv->cc_data; in dctcp_conn_init()
320 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) { in dctcp_conn_init()
321 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt); in dctcp_conn_init()
323 CCV(ccv, t_flags2) |= TF2_ECN_USE_ECT1; in dctcp_conn_init()
331 dctcp_post_recovery(struct cc_var *ccv) in dctcp_post_recovery() argument
333 newreno_cc_post_recovery(ccv); in dctcp_post_recovery()
335 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) in dctcp_post_recovery()
336 dctcp_update_alpha(ccv); in dctcp_post_recovery()
344 dctcp_ecnpkt_handler(struct cc_var *ccv) in dctcp_ecnpkt_handler() argument
350 dctcp_data = ccv->cc_data; in dctcp_ecnpkt_handler()
351 ccflag = ccv->flags; in dctcp_ecnpkt_handler()
362 CCV(ccv, t_flags2) |= TF2_ECN_SND_ECE; in dctcp_ecnpkt_handler()
368 CCV(ccv, t_flags2) &= ~TF2_ECN_SND_ECE; in dctcp_ecnpkt_handler()
373 ccv->flags |= CCF_ACKNOW; in dctcp_ecnpkt_handler()
375 ccv->flags &= ~CCF_ACKNOW; in dctcp_ecnpkt_handler()
384 dctcp_update_alpha(struct cc_var *ccv) in dctcp_update_alpha() argument
389 dctcp_data = ccv->cc_data; in dctcp_update_alpha()
411 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt); in dctcp_update_alpha()