Author: rrs
Date: Wed Jul 10 20:40:39 2019
New Revision: 349893
URL: https://svnweb.freebsd.org/changeset/base/349893
Log:
This commit updates rack to what is basically being used at NF as
well as sets in some of the groundwork for committing BBR. The
hpts system is updated as well as some other needed utilities
for the entrance of BBR. This is actually part 1 of 3 more
needed commits which will finally complete with BBRv1 being
added as a new tcp stack.
Sponsored by: Netflix Inc.
Differential Revision:https://reviews.freebsd.org/D20834
Added:
head/sys/netinet/tcp_stacks/rack_bbr_common.c (contents, props changed)
Modified:
head/sys/modules/tcp/rack/Makefile
head/sys/netinet/in_pcb.h
head/sys/netinet/tcp.h
head/sys/netinet/tcp_hpts.c
head/sys/netinet/tcp_hpts.h
head/sys/netinet/tcp_log_buf.h
head/sys/netinet/tcp_stacks/rack.c
head/sys/netinet/tcp_stacks/rack_bbr_common.h
head/sys/netinet/tcp_var.h
head/sys/sys/mbuf.h
Modified: head/sys/modules/tcp/rack/Makefile
==
--- head/sys/modules/tcp/rack/Makefile Wed Jul 10 19:57:48 2019
(r349892)
+++ head/sys/modules/tcp/rack/Makefile Wed Jul 10 20:40:39 2019
(r349893)
@@ -6,7 +6,7 @@
STACKNAME= rack
KMOD= tcp_${STACKNAME}
-SRCS= rack.c sack_filter.c
+SRCS= rack.c sack_filter.c rack_bbr_common.c
SRCS+= opt_inet.h opt_inet6.h opt_ipsec.h
SRCS+= opt_tcpdebug.h
Modified: head/sys/netinet/in_pcb.h
==
--- head/sys/netinet/in_pcb.h Wed Jul 10 19:57:48 2019(r349892)
+++ head/sys/netinet/in_pcb.h Wed Jul 10 20:40:39 2019(r349893)
@@ -759,7 +759,9 @@ int inp_so_options(const struct inpcb *inp);
#defineINP_ORIGDSTADDR 0x0800 /* receive IP dst
address/port */
#define INP_CANNOT_DO_ECN 0x1000 /* The stack does not do ECN */
#defineINP_REUSEPORT_LB0x2000 /* SO_REUSEPORT_LB option is
set */
-
+#define INP_SUPPORTS_MBUFQ 0x4000 /* Supports the mbuf queue method of
LRO */
+#define INP_MBUF_QUEUE_READY 0x8000 /* The transport is pacing, inputs
can be queued */
+#define INP_DONT_SACK_QUEUE0x0001 /* If a sack arrives do not wake me
*/
/*
* Flags passed to in_pcblookup*() functions.
*/
Modified: head/sys/netinet/tcp.h
==
--- head/sys/netinet/tcp.h Wed Jul 10 19:57:48 2019(r349892)
+++ head/sys/netinet/tcp.h Wed Jul 10 20:40:39 2019(r349893)
@@ -201,9 +201,8 @@ struct tcphdr {
#define TCP_RACK_TLP_THRESH 1063 /* RACK TLP theshold i.e. srtt+(srtt/N) */
#define TCP_RACK_PKT_DELAY1064 /* RACK added ms i.e. rack-rtt + reord + N
*/
#define TCP_RACK_TLP_INC_VAR 1065 /* Does TLP include rtt variance in t-o */
-#define TCP_RACK_SESS_CWV 1066 /* Enable RFC7611 cwnd validation on sess */
#define TCP_BBR_IWINTSO 1067 /* Initial TSO window for BBRs first
sends */
-#define TCP_BBR_RECFORCE 1068 /* Enter recovery force out a segment
disregard pacer */
+#define TCP_BBR_RECFORCE 1068 /* Enter recovery force out a segment
disregard pacer no longer valid */
#define TCP_BBR_STARTUP_PG1069 /* Startup pacing gain */
#define TCP_BBR_DRAIN_PG 1070 /* Drain pacing gain */
#define TCP_BBR_RWND_IS_APP 1071 /* Rwnd limited is considered app limited */
@@ -211,14 +210,18 @@ struct tcphdr {
#define TCP_BBR_ONE_RETRAN1073 /* Is only one segment allowed out during
retran */
#define TCP_BBR_STARTUP_LOSS_EXIT 1074 /* Do we exit a loss during startup if
not 20% incr */
#define TCP_BBR_USE_LOWGAIN 1075 /* lower the gain in PROBE_BW enable */
-#define TCP_BBR_LOWGAIN_THRESH 1076 /* How many cycles do we stay in lowgain */
-#define TCP_BBR_LOWGAIN_HALF 1077 /* Do we halfstep lowgain down */
-#define TCP_BBR_LOWGAIN_FD1078 /* Do we force a drain when lowgain in
place */
+#define TCP_BBR_LOWGAIN_THRESH 1076 /* Unused after 2.3 morphs to TSLIMITS >=
2.3 */
+#define TCP_BBR_TSLIMITS 1076 /* Do we use experimental Timestamp limiting
for our algo */
+#define TCP_BBR_LOWGAIN_HALF 1077 /* Unused after 2.3 */
+#define TCP_BBR_PACE_OH1077 /* Reused in 4.2 for pacing overhead
setting */
+#define TCP_BBR_LOWGAIN_FD1078 /* Unused after 2.3 */
+#define TCP_BBR_HOLD_TARGET 1078 /* For 4.3 on */
#define TCP_BBR_USEDEL_RATE 1079 /* Enable use of delivery rate for loss
recovery */
#define TCP_BBR_MIN_RTO 1080 /* Min RTO in milliseconds */
#define TCP_BBR_MAX_RTO 1081 /* Max RTO in milliseconds */
#define TCP_BBR_REC_OVER_HPTS 1082 /* Recovery override htps settings 0/1/3 */
-#define TCP_BBR_UNLIMITED 1083 /* Does BBR, in non-recovery not use cwnd */
+#define TCP_BBR_UNLIMITED 1083 /* Not used before 2.3 and morphs to
algorithm >= 2.3 */
+#define TCP_BBR_ALGORITHM