+static uword
+cubic_unformat_config (unformat_input_t * input)
+{
+ u32 ssthresh = 0x7FFFFFFFU;
+
+ if (!input)
+ return 0;
+
+ unformat_skip_white_space (input);
+
+ while (unformat_check_input (input) != UNFORMAT_END_OF_INPUT)
+ {
+ if (unformat (input, "no-fast-convergence"))
+ cubic_cfg.fast_convergence = 0;
+ else if (unformat (input, "ssthresh %u", &ssthresh))
+ cubic_cfg.ssthresh = ssthresh;
+ else
+ return 0;
+ }
+ return 1;
+}
+
+void
+cubic_event (tcp_connection_t *tc, tcp_cc_event_t evt)
+{
+ cubic_data_t *cd;
+ f64 now;
+
+ if (evt != TCP_CC_EVT_START_TX)
+ return;
+
+ /* App was idle so update t_start to avoid artificially
+ * inflating cwnd if nothing recently sent and acked */
+ cd = (cubic_data_t *) tcp_cc_data (tc);
+ now = cubic_time (tc->c_thread_index);
+ if (now > tc->mrtt_us + 1)
+ cd->t_start = now;
+}
+