// Include Guard #ifndef TCP_ROCCET_STRUCT #define TCP_ROCCET_STRUCT #include struct AckRate { u16 last_rate; u32 last_rate_time; u16 curr_rate; u16 cnt; }; struct BandwidthLimitDetect { u32 sum_cwnd; /* sum of cwnd during time interval */ u32 sum_acked; /* sum of received acks during time interval */ u32 next_check; /* end/upper bound of time interval */ }; struct TimedRTT { u32 time; u32 rtt; }; /* BIC TCP Parameters */ struct bictcp { u32 cnt; /* increase cwnd by 1 after ACKs */ u32 last_max_cwnd; /* last maximum snd_cwnd */ u32 last_cwnd; /* the last snd_cwnd */ u32 last_time; /* time when updated last_cwnd */ u32 bic_origin_point; /* origin point of bic function */ u32 bic_K; /* time to origin point from the beginning of the current epoch */ u32 delay_min; /* min delay (usec) */ u32 epoch_start; /* beginning of an epoch */ u32 ack_cnt; /* number of acks */ u32 tcp_cwnd; /* estimated tcp cwnd */ u32 curr_rtt; /* the minimum rtt of current round */ // ROCCETv2 specific u32 roccet_last_event_time_us; /* The last time ROCCETv2 was triggered */ u32 curr_min_rtt; /* The current observed minRTT */ struct TimedRTT curr_min_rtt_timed; /* The current observed minRTT with the timestamp when it was observed */ u32 curr_srRTT; /* The srRTT calculated based on the latest ACK */ struct AckRate ack_rate; /* The last and the current ACK rate */ struct BandwidthLimitDetect bw_limit; u32 last_rtt; /* Used for jitter calculation */ }; #endif /* TCP_ROCCET_STRUCT */