Lines Matching refs:ccv

136 static void	htcp_ack_received(struct cc_var *ccv, uint16_t type);
137 static void htcp_cb_destroy(struct cc_var *ccv);
138 static int htcp_cb_init(struct cc_var *ccv);
139 static void htcp_cong_signal(struct cc_var *ccv, uint32_t type);
141 static void htcp_post_recovery(struct cc_var *ccv);
142 static void htcp_recalc_alpha(struct cc_var *ccv);
143 static void htcp_recalc_beta(struct cc_var *ccv);
144 static void htcp_record_rtt(struct cc_var *ccv);
145 static void htcp_ssthresh_update(struct cc_var *ccv);
190 htcp_ack_received(struct cc_var *ccv, uint16_t type)
194 htcp_data = ccv->cc_data;
195 htcp_record_rtt(ccv);
202 if (type == CC_ACK && !IN_RECOVERY(CCV(ccv, t_flags)) &&
203 (ccv->flags & CCF_CWND_LIMITED) && (!V_tcp_do_rfc3465 ||
204 CCV(ccv, snd_cwnd) <= CCV(ccv, snd_ssthresh) ||
205 (V_tcp_do_rfc3465 && ccv->flags & CCF_ABC_SENTAWND))) {
206 htcp_recalc_beta(ccv);
207 htcp_recalc_alpha(ccv);
214 CCV(ccv, snd_cwnd) <= CCV(ccv, snd_ssthresh))
215 newreno_cc_algo.ack_received(ccv, type);
219 CCV(ccv, snd_cwnd) += htcp_data->alpha *
220 CCV(ccv, t_maxseg);
221 ccv->flags &= ~CCF_ABC_SENTAWND;
228 CCV(ccv, snd_cwnd) += (((htcp_data->alpha <<
229 HTCP_SHIFT) / (CCV(ccv, snd_cwnd) /
230 CCV(ccv, t_maxseg))) * CCV(ccv, t_maxseg))
237 htcp_cb_destroy(struct cc_var *ccv)
240 if (ccv->cc_data != NULL)
241 free(ccv->cc_data, M_HTCP);
245 htcp_cb_init(struct cc_var *ccv)
262 ccv->cc_data = htcp_data;
271 htcp_cong_signal(struct cc_var *ccv, uint32_t type)
275 htcp_data = ccv->cc_data;
279 if (!IN_FASTRECOVERY(CCV(ccv, t_flags))) {
280 if (!IN_CONGRECOVERY(CCV(ccv, t_flags))) {
289 htcp_ssthresh_update(ccv);
291 htcp_data->prev_cwnd = CCV(ccv, snd_cwnd);
293 ENTER_RECOVERY(CCV(ccv, t_flags));
298 if (!IN_CONGRECOVERY(CCV(ccv, t_flags))) {
305 htcp_ssthresh_update(ccv);
306 CCV(ccv, snd_cwnd) = CCV(ccv, snd_ssthresh);
308 htcp_data->prev_cwnd = CCV(ccv, snd_cwnd);
309 ENTER_CONGRECOVERY(CCV(ccv, t_flags));
321 if (CCV(ccv, t_rxtshift) >= 2)
347 htcp_post_recovery(struct cc_var *ccv)
351 htcp_data = ccv->cc_data;
353 if (IN_FASTRECOVERY(CCV(ccv, t_flags))) {
361 if (SEQ_GT(ccv->curack + CCV(ccv, snd_ssthresh),
362 CCV(ccv, snd_max)))
363 CCV(ccv, snd_cwnd) = CCV(ccv, snd_max) - ccv->curack +
364 CCV(ccv, t_maxseg);
366 CCV(ccv, snd_cwnd) = max(1, ((htcp_data->beta *
367 htcp_data->prev_cwnd / CCV(ccv, t_maxseg))
368 >> HTCP_SHIFT)) * CCV(ccv, t_maxseg);
373 htcp_recalc_alpha(struct cc_var *ccv)
378 htcp_data = ccv->cc_data;
422 (CCV(ccv, t_srtt) << HTCP_SHIFT) /
434 htcp_recalc_beta(struct cc_var *ccv)
438 htcp_data = ccv->cc_data;
460 htcp_record_rtt(struct cc_var *ccv)
464 htcp_data = ccv->cc_data;
473 if ((CCV(ccv, t_srtt) < htcp_data->minrtt ||
475 (CCV(ccv, t_rttupdated) >= HTCP_MIN_RTT_SAMPLES))
476 htcp_data->minrtt = CCV(ccv, t_srtt);
482 if (CCV(ccv, t_srtt) > htcp_data->maxrtt
483 && CCV(ccv, t_rttupdated) >= HTCP_MIN_RTT_SAMPLES)
484 htcp_data->maxrtt = CCV(ccv, t_srtt);
491 htcp_ssthresh_update(struct cc_var *ccv)
495 htcp_data = ccv->cc_data;
501 if (CCV(ccv, snd_ssthresh) == TCP_MAXWIN << TCP_MAX_WINSHIFT)
502 CCV(ccv, snd_ssthresh) = (CCV(ccv, snd_cwnd) * HTCP_MINBETA)
505 htcp_recalc_beta(ccv);
506 CCV(ccv, snd_ssthresh) = (CCV(ccv, snd_cwnd) * htcp_data->beta)