4 Commits

Author SHA1 Message Date
Lukas Prause 9b2be29338 Update the repository with the changes made since the last LKML review.
Changes since last commit:
	* Don't discard all rtt samples after fast recovery in min RTT probing
	* Enter LAUNCH after sufficient idle period
	* Fix outdated comments
	* Apply snd_cwnd_clamp everywhere
	* Remove possibility for double ROCCET CE in ORBITER
	* Fix incorrect implicit s32->u64 cast for `sent_more_than_acked`
	* Fix some incorrect parameter resets on roccet_reset
2026-10-08 16:11:32 +02:00
Lukas Prause ab78c2353f Update the repository with the changes made since the last LKML review.
Changes since last commit:
	* Don't discard all rtt samples after fast recovery in min RTT probing
	* Enter LAUNCH after sufficient idle period
	* Fix outdated comments
	* Apply snd_cwnd_clamp everywhere
	* Remove possibility for double ROCCET CE in ORBITER
	* Fix incorrect implicit s32->u64 cast for `sent_more_than_acked`
	* Fix some incorrect parameter resets on roccet_reset
2026-10-08 16:11:13 +02:00
Lukas Prause 956f195ddc Update the repository with the changes made since the last LKML review. 2026-09-30 12:52:30 +02:00
Lukas Prause 64d0e54f87 Update repository to the state of the latest kernel patch. 2026-09-16 15:22:54 +02:00
2 changed files with 951 additions and 497 deletions
+818 -385
View File
File diff suppressed because it is too large Load Diff
+29 -8
View File
@@ -11,6 +11,7 @@
enum roccet_state {
LAUNCH,
ORBITER,
RTT_PROBE_ENTER,
RTT_PROBE,
RTT_PROBE_REFILL,
DRAIN
@@ -37,11 +38,15 @@ struct roccettcp {
u32 roccet_last_event_time_us; /* The last time ROCCET was triggered */
u32 curr_min_rtt; /* The current observed minRTT */
u32 next_min_rtt_probe; /* Next time to probe the minRTT */
u32 probe_min_rtt_until; /* End of minRTT probing period */
u32 refill_until; /* End of pipe refill after minRTT probe */
u32 cwnd_before_min_rtt_probe; /* cwnd before min RTT probeing */
u32 probe_min_rtt_until; /* End of minRTT probing period.
* Set while in RTT_PROBE states
*/
u32 refill_until; /* End of pipe refill after minRTT probe.
* Set while in RTT_PROBE states
*/
u32 cwnd_before_min_rtt_probe; /* cwnd before min RTT probing. */
u32 curr_srrtt; /* srRTT calculated based on the latest ACK */
u32 next_srrtt_check; /* Next check for srRTT */
u32 next_srrtt_check_ts; /* Next check for srRTT */
u32 last_rtt; /* sample rtt of previous round.
* Used for jitter calculation
*/
@@ -49,13 +54,29 @@ struct roccettcp {
u32 interval_snd_seq_start;
u32 interval_una_seq_start;
u32 ack_rate_last_rate_time; /* Timestamp of the last ACK-rate */
u32 ack_carry_over; /* Used to carry over leftover acks from
* LAUNCH to ORBITER
*/
u32 last_ack_rate_time; /* Timestamp of the last ACK-rate */
u16 ack_rate_last_rate; /* Last ACK-rate */
u16 ack_rate_curr_rate; /* Current ACK-rate */
u16 curr_ack_rate; /* Current ACK-rate */
u16 ack_rate_cnt; /* Used for counting acks */
bool ece_received; /* Set to true if an ECE bit was received */
enum roccet_state state; /* State in which roccet currently operates */
enum roccet_state state : 3; /* Current operating state of roccet */
bool initial_limit_reached: 1; /* Set to true after the connection
* initially gets cwnd-limited
*/
bool is_in_initial_launch: 1; /* true if the connection is in
* the initial launch phase.
*/
bool last_event_time_set: 1; /* true if the last event time
* has been set/initialized.
*/
bool rtt_probe_timers_set: 1; /* true if refill_until and
* probe_min_rtt_until are currently
* set.
*/
};
#endif /* __TCP_ROCCET_H */