Lines Matching defs:cdg_data

296 	struct cdg *cdg_data;
300 cdg_data = malloc(sizeof(struct cdg), M_CC_MEM, M_NOWAIT);
301 if (cdg_data == NULL)
304 cdg_data = ptr;
306 cdg_data->shadow_w = 0;
307 cdg_data->max_qtrend = 0;
308 cdg_data->min_qtrend = 0;
309 cdg_data->queue_state = CDG_Q_UNKNOWN;
310 cdg_data->maxrtt_in_rtt = 0;
311 cdg_data->maxrtt_in_prevrtt = 0;
312 cdg_data->minrtt_in_rtt = INT_MAX;
313 cdg_data->minrtt_in_prevrtt = 0;
314 cdg_data->window_incr = 0;
315 cdg_data->rtt_count = 0;
316 cdg_data->consec_cong_cnt = 0;
317 cdg_data->sample_q_size = V_cdg_smoothing_factor;
318 cdg_data->num_samples = 0;
319 STAILQ_INIT(&cdg_data->qdiffmin_q);
320 STAILQ_INIT(&cdg_data->qdiffmax_q);
322 ccv->cc_data = cdg_data;
330 struct cdg *cdg_data = ccv->cc_data;
336 cdg_data->shadow_w = CCV(ccv, snd_cwnd);
342 struct cdg *cdg_data;
345 cdg_data = ccv->cc_data;
347 qds = STAILQ_FIRST(&cdg_data->qdiffmin_q);
354 qds = STAILQ_FIRST(&cdg_data->qdiffmax_q);
417 struct cdg *cdg_data;
421 cdg_data = ccv->cc_data;
428 cdg_data->window_incr = cdg_data->rtt_count = 0;
436 if (++cdg_data->rtt_count >= V_cdg_alpha_inc) {
437 cdg_data->window_incr++;
438 cdg_data->rtt_count = 0;
441 cdg_data->window_incr;
446 if (cdg_data->shadow_w > 0)
447 cdg_data->shadow_w = ulmin(cdg_data->shadow_w + s_w_incr,
457 struct cdg *cdg_data = ccv->cc_data;
465 cdg_data->window_incr = cdg_data->rtt_count = 0;
474 cdg_data->queue_state < CDG_Q_FULL) {
483 if (cdg_data->shadow_w > 0)
484 cdg_data->shadow_w = cdg_window_decrease(ccv,
485 cdg_data->shadow_w, RENO_BETA);
487 CCV(ccv, snd_ssthresh) = max(cdg_data->shadow_w,
491 cdg_data->window_incr = cdg_data->rtt_count = 0;
533 calc_moving_average(struct cdg *cdg_data, long qdiff_max, long qdiff_min)
537 ++cdg_data->num_samples;
538 if (cdg_data->num_samples > cdg_data->sample_q_size) {
540 qds = STAILQ_FIRST(&cdg_data->qdiffmin_q);
541 cdg_data->min_qtrend = cdg_data->min_qtrend +
542 (qdiff_min - qds->qdiff) / cdg_data->sample_q_size;
543 STAILQ_REMOVE_HEAD(&cdg_data->qdiffmin_q, qdiff_lnk);
545 STAILQ_INSERT_TAIL(&cdg_data->qdiffmin_q, qds, qdiff_lnk);
548 qds = STAILQ_FIRST(&cdg_data->qdiffmax_q);
549 cdg_data->max_qtrend = cdg_data->max_qtrend +
550 (qdiff_max - qds->qdiff) / cdg_data->sample_q_size;
551 STAILQ_REMOVE_HEAD(&cdg_data->qdiffmax_q, qdiff_lnk);
553 STAILQ_INSERT_TAIL(&cdg_data->qdiffmax_q, qds, qdiff_lnk);
554 --cdg_data->num_samples;
558 cdg_data->min_qtrend = cdg_data->min_qtrend +
559 qdiff_min / cdg_data->sample_q_size;
561 STAILQ_INSERT_TAIL(&cdg_data->qdiffmin_q, qds,
567 cdg_data->max_qtrend = cdg_data->max_qtrend +
568 qdiff_max / cdg_data->sample_q_size;
570 STAILQ_INSERT_TAIL(&cdg_data->qdiffmax_q, qds,
579 struct cdg *cdg_data;
584 cdg_data = ccv->cc_data;
588 cdg_data->maxrtt_in_rtt = imax(e_t->rtt, cdg_data->maxrtt_in_rtt);
589 cdg_data->minrtt_in_rtt = imin(e_t->rtt, cdg_data->minrtt_in_rtt);
599 if (cdg_data->maxrtt_in_prevrtt) {
600 qdiff_max = ((long)(cdg_data->maxrtt_in_rtt -
601 cdg_data->maxrtt_in_prevrtt) << D_P_E );
602 qdiff_min = ((long)(cdg_data->minrtt_in_rtt -
603 cdg_data->minrtt_in_prevrtt) << D_P_E );
605 if (cdg_data->sample_q_size == 0) {
606 cdg_data->max_qtrend = qdiff_max;
607 cdg_data->min_qtrend = qdiff_min;
609 calc_moving_average(cdg_data, qdiff_max, qdiff_min);
614 else if (cdg_data->min_qtrend > 0)
615 congestion = prob_backoff(cdg_data->min_qtrend);
618 else if (cdg_data->max_qtrend > 0)
619 congestion = prob_backoff(cdg_data->max_qtrend);
622 if (cdg_data->min_qtrend > 0 &&
623 cdg_data->max_qtrend <= 0) {
624 cdg_data->queue_state = CDG_Q_FULL;
625 } else if (cdg_data->min_qtrend >= 0 &&
626 cdg_data->max_qtrend < 0) {
627 cdg_data->queue_state = CDG_Q_EMPTY;
628 cdg_data->shadow_w = 0;
629 } else if (cdg_data->min_qtrend > 0 &&
630 cdg_data->max_qtrend > 0) {
631 cdg_data->queue_state = CDG_Q_RISING;
632 } else if (cdg_data->min_qtrend < 0 &&
633 cdg_data->max_qtrend < 0) {
634 cdg_data->queue_state = CDG_Q_FALLING;
637 if (cdg_data->min_qtrend < 0 ||
638 cdg_data->max_qtrend < 0)
639 cdg_data->consec_cong_cnt = 0;
642 cdg_data->minrtt_in_prevrtt = cdg_data->minrtt_in_rtt;
643 cdg_data->minrtt_in_rtt = INT_MAX;
644 cdg_data->maxrtt_in_prevrtt = cdg_data->maxrtt_in_rtt;
645 cdg_data->maxrtt_in_rtt = 0;
650 cdg_data->consec_cong_cnt++;
652 if (cdg_data->consec_cong_cnt <= V_cdg_consec_cong)
661 if (cdg_data->consec_cong_cnt >=
663 cdg_data->consec_cong_cnt = 0;
666 cdg_data->maxrtt_in_prevrtt = 0;
671 cdg_data->shadow_w = ulmax(CCV(ccv, snd_cwnd),
672 cdg_data->shadow_w);