Lines Matching defs: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)
112 dctcp_data = ccv->cc_data;
114 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) {
120 if (IN_CONGRECOVERY(CCV(ccv, t_flags))) {
121 EXIT_CONGRECOVERY(CCV(ccv, t_flags));
122 newreno_cc_ack_received(ccv, type);
123 ENTER_CONGRECOVERY(CCV(ccv, t_flags));
125 newreno_cc_ack_received(ccv, type);
128 bytes_acked = min(ccv->bytes_this_ack, CCV(ccv, t_maxseg));
131 bytes_acked = ccv->bytes_this_ack;
141 && bytes_acked > CCV(ccv, t_maxseg)) {
143 (bytes_acked - CCV(ccv, t_maxseg));
149 && bytes_acked > CCV(ccv, t_maxseg))
150 dctcp_data->bytes_ecn += CCV(ccv, t_maxseg);
159 if (!IN_FASTRECOVERY(CCV(ccv, t_flags)) &&
160 SEQ_GT(ccv->curack, dctcp_data->save_sndnxt))
161 dctcp_update_alpha(ccv);
163 newreno_cc_ack_received(ccv, type);
173 dctcp_after_idle(struct cc_var *ccv)
177 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) {
178 dctcp_data = ccv->cc_data;
183 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt);
190 newreno_cc_after_idle(ccv);
194 dctcp_cb_destroy(struct cc_var *ccv)
196 free(ccv->cc_data, M_CC_MEM);
200 dctcp_cb_init(struct cc_var *ccv, void *ptr)
204 INP_WLOCK_ASSERT(tptoinpcb(ccv->ccvc.tcp));
232 ccv->cc_data = dctcp_data;
240 dctcp_cong_signal(struct cc_var *ccv, ccsignal_t type)
245 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) {
246 dctcp_data = ccv->cc_data;
247 cwin = CCV(ccv, snd_cwnd);
248 mss = tcp_fixed_maxseg(ccv->ccvc.tcp);
252 if (!IN_FASTRECOVERY(CCV(ccv, t_flags))) {
253 if (!IN_CONGRECOVERY(CCV(ccv, t_flags))) {
254 CCV(ccv, snd_ssthresh) =
262 cwin = CCV(ccv, snd_cwnd_prev);
263 CCV(ccv, snd_ssthresh) =
266 ENTER_RECOVERY(CCV(ccv, t_flags));
274 CCV(ccv, snd_cwnd_prev) = cwin;
275 if (!IN_CONGRECOVERY(CCV(ccv, t_flags))) {
278 CCV(ccv, snd_ssthresh) =
283 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt);
285 CCV(ccv, snd_ssthresh) =
289 CCV(ccv, snd_cwnd) = CCV(ccv, snd_ssthresh);
290 ENTER_CONGRECOVERY(CCV(ccv, t_flags));
295 if (CCV(ccv, t_rxtshift) == 1) {
297 pipe = tcp_compute_pipe(ccv->ccvc.tcp);
299 pipe = CCV(ccv, snd_max) -
300 CCV(ccv, snd_fack) +
301 CCV(ccv, sackhint.sack_bytes_rexmit);
303 CCV(ccv, snd_ssthresh) = max(2,
304 min(CCV(ccv, snd_wnd), pipe) / 2 / mss) * mss;
306 CCV(ccv, snd_cwnd) = mss;
307 dctcp_update_alpha(ccv);
308 dctcp_data->save_sndnxt += CCV(ccv, t_maxseg);
315 newreno_cc_cong_signal(ccv, type);
319 dctcp_conn_init(struct cc_var *ccv)
323 dctcp_data = ccv->cc_data;
325 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT) {
326 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt);
328 CCV(ccv, t_flags2) |= TF2_ECN_USE_ECT1;
336 dctcp_post_recovery(struct cc_var *ccv)
338 newreno_cc_post_recovery(ccv);
340 if (CCV(ccv, t_flags2) & TF2_ECN_PERMIT)
341 dctcp_update_alpha(ccv);
349 dctcp_ecnpkt_handler(struct cc_var *ccv)
355 dctcp_data = ccv->cc_data;
356 ccflag = ccv->flags;
367 CCV(ccv, t_flags2) |= TF2_ECN_SND_ECE;
373 CCV(ccv, t_flags2) &= ~TF2_ECN_SND_ECE;
378 ccv->flags |= CCF_ACKNOW;
380 ccv->flags &= ~CCF_ACKNOW;
389 dctcp_update_alpha(struct cc_var *ccv)
394 dctcp_data = ccv->cc_data;
416 dctcp_data->save_sndnxt = CCV(ccv, snd_nxt);