| // Include Guard | |||||
| #ifndef TCP_ROCCET_STRUCT | |||||
| #define TCP_ROCCET_STRUCT | |||||
| #include <linux/math64.h> | |||||
| 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 */ |