path: root/sys/netinet/cc/cc.h
diff options
authorRandall Stewart <rrs@FreeBSD.org>2021-10-22 11:10:28 +0000
committerRandall Stewart <rrs@FreeBSD.org>2021-10-22 11:10:28 +0000
commit4e4c84f8d101216ebf303f04ce9d4327c3328059 (patch)
tree7e17615939128b392ff51eb8f30dde2877d55ffd /sys/netinet/cc/cc.h
parent5a3eb6207a353c3a18da8abcf00a2d75276dd29e (diff)
tcp: Add hystart-plus to cc_newreno and rack.
TCP Hystart draft version -03: https://datatracker.ietf.org/doc/html/draft-ietf-tcpm-hystartplusplus Is a new version of hystart that allows one to carefully exit slow start if the RTT spikes too much. The newer version has a slower-slow-start so to speak that then kicks in for five round trips. To see if you exited too early, if not into congestion avoidance. This commit will add that feature to our newreno CC and add the needed bits in rack to be able to enable it. Reviewed by: tuexen Sponsored by: Netflix Inc. Differential Revision: https://reviews.freebsd.org/D32373
Diffstat (limited to 'sys/netinet/cc/cc.h')
1 files changed, 9 insertions, 0 deletions
diff --git a/sys/netinet/cc/cc.h b/sys/netinet/cc/cc.h
index be84a6841d15..e5fc328cc0c2 100644
--- a/sys/netinet/cc/cc.h
+++ b/sys/netinet/cc/cc.h
@@ -163,6 +163,15 @@ struct cc_algo {
/* Called for an additional ECN processing apart from RFC3168. */
void (*ecnpkt_handler)(struct cc_var *ccv);
+ /* Called when a new "round" begins, if the transport is tracking rounds. */
+ void (*newround)(struct cc_var *ccv, uint32_t round_cnt);
+ /*
+ * Called when a RTT sample is made (fas = flight at send, if you dont have it
+ * send the cwnd in).
+ */
+ void (*rttsample)(struct cc_var *ccv, uint32_t usec_rtt, uint32_t rxtcnt, uint32_t fas);
/* Called for {get|set}sockopt() on a TCP socket with TCP_CCALGOOPT. */
int (*ctl_output)(struct cc_var *, struct sockopt *, void *);