{
congestion_control_vegas_log(circ, cc);
cc->in_slow_start = 0;
- cc->next_cc_event = CWND_UPDATE_RATE(cc);
congestion_control_vegas_log(circ, cc);
/* Update metricsport metrics */
if (cc->cwnd_full) {
/* Get the "Limited Slow Start" increment */
uint64_t inc = rfc3742_ss_inc(cc);
+ cc->cwnd += inc;
// Check if inc is less than what we would do in steady-state
// avoidance
if (inc*SENDME_PER_CWND(cc) <= CWND_INC(cc)) {
- cc->cwnd += inc;
congestion_control_vegas_exit_slow_start(circ, cc);
cc_stats_vegas_below_ss_inc_floor++;
cc_stats_vegas_ss_csig_blocked_ma =
stats_update_running_avg(cc_stats_vegas_ss_csig_blocked_ma,
0);
- } else {
- cc->cwnd += inc;
- cc->next_cc_event = 1; // Technically irellevant, but for consistency
}
}
} else {
/* cwnd can never fall below 1 increment */
cc->cwnd = MAX(cc->cwnd, cc->cwnd_min);
- /* Schedule next update */
- cc->next_cc_event = CWND_UPDATE_RATE(cc);
-
congestion_control_vegas_log(circ, cc);
/* Update metrics */
}
}
- /* Once per cwnd, reset the cwnd full state */
+ /* Reset event counters */
if (cc->next_cwnd_event == 0) {
cc->next_cwnd_event = SENDME_PER_CWND(cc);
}
+ if (cc->next_cc_event == 0) {
+ cc->next_cc_event = CWND_UPDATE_RATE(cc);
+ }
/* Decide if enough time has passed to reset the cwnd utilization */
if (cwnd_full_reset(cc))