Lines Matching defs:cubic_data
238 struct cubic *cubic_data;
243 cubic_data = ccv->cc_data;
254 cubic_data->min_rtt_usecs == TCPTV_SRTTBASE) {
255 cubic_does_slow_start(ccv, cubic_data);
257 if (cubic_data->flags & CUBICFLAG_HYSTART_IN_CSS) {
263 cubic_data->flags &= ~CUBICFLAG_HYSTART_IN_CSS;
265 cubic_data->flags &= ~CUBICFLAG_HYSTART_ENABLED;
266 cubic_log_hystart_event(ccv, cubic_data, 11, CCV(ccv, snd_ssthresh));
268 if ((cubic_data->flags & CUBICFLAG_RTO_EVENT) &&
269 (cubic_data->flags & CUBICFLAG_IN_SLOWSTART)) {
271 cubic_data->flags &= ~(CUBICFLAG_RTO_EVENT |
273 cubic_data->W_max = CCV(ccv, snd_cwnd);
274 cubic_data->t_epoch = ticks;
275 cubic_data->K = 0;
276 } else if (cubic_data->flags & (CUBICFLAG_IN_SLOWSTART |
278 cubic_data->flags &= ~(CUBICFLAG_IN_SLOWSTART |
280 cubic_data->t_epoch = ticks;
281 cubic_data->K = cubic_k(cubic_data->W_max / mss);
283 usecs_since_epoch = (ticks - cubic_data->t_epoch) * tick;
289 cubic_data->t_epoch = ticks - INT_MAX;
299 cubic_data->mean_rtt_usecs,
300 cubic_data->W_max,
302 cubic_data->K);
310 cubic_data->flags |= CUBICFLAG_IN_TF;
318 cubic_data->flags &= ~CUBICFLAG_IN_TF;
328 if (((cubic_data->flags & CUBICFLAG_CONG_EVENT) == 0) &&
329 cubic_data->W_max < CCV(ccv, snd_cwnd)) {
330 cubic_data->W_max = CCV(ccv, snd_cwnd);
331 cubic_data->K = cubic_k(cubic_data->W_max /
337 cubic_data->flags |= CUBICFLAG_IN_APPLIMIT;
349 struct cubic *cubic_data;
351 cubic_data = ccv->cc_data;
353 cubic_data->W_max = ulmax(cubic_data->W_max, CCV(ccv, snd_cwnd));
354 cubic_data->K = cubic_k(cubic_data->W_max / tcp_fixed_maxseg(ccv->tp));
355 if ((cubic_data->flags & CUBICFLAG_HYSTART_ENABLED) == 0) {
359 cubic_data->flags &= ~CUBICFLAG_HYSTART_IN_CSS;
360 cubic_data->flags |= CUBICFLAG_HYSTART_ENABLED;
361 cubic_log_hystart_event(ccv, cubic_data, 12, CCV(ccv, snd_ssthresh));
364 cubic_data->t_epoch = ticks;
382 struct cubic *cubic_data;
386 cubic_data = malloc(sizeof(struct cubic), M_CC_MEM, M_NOWAIT|M_ZERO);
387 if (cubic_data == NULL)
390 cubic_data = ptr;
393 cubic_data->t_epoch = ticks;
394 cubic_data->min_rtt_usecs = TCPTV_SRTTBASE;
395 cubic_data->mean_rtt_usecs = 1;
397 ccv->cc_data = cubic_data;
398 cubic_data->flags = CUBICFLAG_HYSTART_ENABLED;
400 cubic_data->css_lastround_minrtt = 0xffffffff;
401 cubic_data->css_current_round_minrtt = 0xffffffff;
402 cubic_data->css_current_round = 0;
403 cubic_data->css_baseline_minrtt = 0xffffffff;
404 cubic_data->css_rttsample_count = 0;
405 cubic_data->css_entered_at_round = 0;
406 cubic_data->css_fas_at_css_entry = 0;
407 cubic_data->css_lowrtt_fas = 0;
408 cubic_data->css_last_fas = 0;
419 struct cubic *cubic_data;
422 cubic_data = ccv->cc_data;
427 if (cubic_data->flags & CUBICFLAG_HYSTART_ENABLED) {
429 cubic_data->flags &= ~CUBICFLAG_HYSTART_ENABLED;
430 cubic_data->flags &= ~CUBICFLAG_HYSTART_IN_CSS;
431 cubic_log_hystart_event(ccv, cubic_data, 10, CCV(ccv, snd_ssthresh));
436 cubic_data->flags |= CUBICFLAG_CONG_EVENT;
437 cubic_data->t_epoch = ticks;
438 cubic_data->K = cubic_k(cubic_data->W_max / mss);
445 if (cubic_data->flags & CUBICFLAG_HYSTART_ENABLED) {
447 cubic_data->flags &= ~CUBICFLAG_HYSTART_ENABLED;
448 cubic_data->flags &= ~CUBICFLAG_HYSTART_IN_CSS;
449 cubic_log_hystart_event(ccv, cubic_data, 9, CCV(ccv, snd_ssthresh));
453 cubic_data->flags |= CUBICFLAG_CONG_EVENT;
454 cubic_data->t_epoch = ticks;
455 cubic_data->K = cubic_k(cubic_data->W_max / mss);
470 cubic_data->undo_t_epoch = cubic_data->t_epoch;
471 cubic_data->undo_cwnd_epoch = cubic_data->cwnd_epoch;
472 cubic_data->undo_W_est = cubic_data->W_est;
473 cubic_data->undo_cwnd_prior = cubic_data->cwnd_prior;
474 cubic_data->undo_W_max = cubic_data->W_max;
475 cubic_data->undo_K = cubic_data->K;
487 cubic_data->flags |= CUBICFLAG_CONG_EVENT | CUBICFLAG_RTO_EVENT;
488 cubic_data->undo_W_max = cubic_data->W_max;
493 cubic_data->flags &= ~(CUBICFLAG_CONG_EVENT | CUBICFLAG_RTO_EVENT);
494 cubic_data->K = cubic_data->undo_K;
495 cubic_data->cwnd_prior = cubic_data->undo_cwnd_prior;
496 cubic_data->W_max = cubic_data->undo_W_max;
497 cubic_data->W_est = cubic_data->undo_W_est;
498 cubic_data->cwnd_epoch = cubic_data->undo_cwnd_epoch;
499 cubic_data->t_epoch = cubic_data->undo_t_epoch;
509 struct cubic *cubic_data;
511 cubic_data = ccv->cc_data;
518 cubic_data->W_max = CCV(ccv, snd_cwnd);
533 struct cubic *cubic_data;
537 cubic_data = ccv->cc_data;
561 CCV(ccv, snd_cwnd) = max(((uint64_t)cubic_data->W_max *
567 if (cubic_data->epoch_ack_count > 0 &&
568 cubic_data->sum_rtt_usecs >= cubic_data->epoch_ack_count) {
569 cubic_data->mean_rtt_usecs = (int)(cubic_data->sum_rtt_usecs /
570 cubic_data->epoch_ack_count);
573 cubic_data->epoch_ack_count = 0;
574 cubic_data->sum_rtt_usecs = 0;
583 struct cubic *cubic_data;
588 cubic_data = ccv->cc_data;
598 if ((t_srtt_usecs < cubic_data->min_rtt_usecs ||
599 cubic_data->min_rtt_usecs == TCPTV_SRTTBASE)) {
602 cubic_data->min_rtt_usecs = max(tick >> TCP_RTT_SHIFT,
611 if (cubic_data->min_rtt_usecs >
612 cubic_data->mean_rtt_usecs)
613 cubic_data->mean_rtt_usecs =
614 cubic_data->min_rtt_usecs;
618 cubic_data->sum_rtt_usecs += t_srtt_usecs;
619 cubic_data->epoch_ack_count++;
629 struct cubic *cubic_data;
633 cubic_data = ccv->cc_data;
637 if (cwnd < cubic_data->W_max) {
640 cubic_data->undo_W_max = cubic_data->W_max;
641 cubic_data->W_max = cwnd;
643 if (cubic_data->flags & CUBICFLAG_IN_TF) {
647 } else if ((cubic_data->flags & CUBICFLAG_CONG_EVENT) == 0) {
654 cubic_data->W_max = ((uint64_t)cwnd * CUBIC_BETA) >> CUBIC_SHIFT;