git: 123fd2a93eea - stable/14 - Add the BBR and RACK stacks to the LINT kernel.

From: Gleb Smirnoff <glebius_at_FreeBSD.org>
Date: Tue, 16 Jan 2024 19:05:07 UTC
The branch stable/14 has been updated by glebius:

URL: https://cgit.FreeBSD.org/src/commit/?id=123fd2a93eeaeff0bb3ac433526296f44b75e368

commit 123fd2a93eeaeff0bb3ac433526296f44b75e368
Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
AuthorDate: 2023-10-18 14:13:12 +0000
Commit:     Gleb Smirnoff <glebius@FreeBSD.org>
CommitDate: 2024-01-16 18:32:07 +0000

    Add the BBR and RACK stacks to the LINT kernel.
    
    While here, drop the EXTRA_TCP_STACKS option, which serves no purpose and
    should never have been added.  Instead, build bbr and rack as long as
    either or both of INET and INET6 is enabled.  There is no risk to anyone
    who doesn't load one or both and then twiddle the relevant sysctls.
    
    Differential Revision:  https://reviews.freebsd.org/D42088
    
    (cherry picked from commit 3a338c534154164504005beb00a3c6feb03756cc)
---
 share/man/man5/src.conf.5 | 2 --
 sys/conf/NOTES            | 4 +++-
 sys/conf/files            | 7 +++++++
 sys/conf/kern.opts.mk     | 1 -
 sys/conf/kern.post.mk     | 4 ----
 sys/conf/options          | 2 ++
 sys/modules/tcp/Makefile  | 7 ++-----
 7 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index b31d44abde9f..89070b097f6f 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -643,8 +643,6 @@ Avoid installing examples to
 .Pa /usr/share/examples/ .
 .It Va WITH_EXPERIMENTAL
 Include experimental features in the build.
-.It Va WITH_EXTRA_TCP_STACKS
-Build extra TCP stack modules.
 .It Va WITHOUT_FDT
 Do not build Flattened Device Tree support as part of the base system.
 This includes the device tree compiler (dtc) and libfdt support library.
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index 088bd7426a77..45dd6c30c7ba 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -678,7 +678,6 @@ options 	TCP_OFFLOAD		# TCP offload support.
 options  	TCP_RFC7413		# TCP Fast Open
 
 options  	TCPHPTS
-makeoptions	WITH_EXTRA_TCP_STACKS=1	# RACK and BBR TCP kernel modules
 
 # In order to enable IPSEC you MUST also add device crypto to 
 # your kernel configuration
@@ -690,6 +689,9 @@ options 	IPSEC			#IP security (requires device crypto)
 options 	IPSEC_SUPPORT
 #options 	IPSEC_DEBUG		#debug for IP security
 
+# Alternative TCP stacks
+options 	TCP_BBR
+options 	TCP_RACK
 
 # TLS framing and encryption/decryption of data over TCP sockets.
 options 	KERN_TLS		# TLS transmit and receive offload
diff --git a/sys/conf/files b/sys/conf/files
index 39b68a79e20f..2b558bf339a8 100644
--- a/sys/conf/files
+++ b/sys/conf/files
@@ -4362,6 +4362,13 @@ netinet/tcp_pcap.c		optional inet tcppcap | inet6 tcppcap \
 	compile-with "${NORMAL_C} ${NO_WNONNULL}"
 netinet/tcp_reass.c		optional inet | inet6
 netinet/tcp_sack.c		optional inet | inet6
+netinet/tcp_stacks/bbr.c	optional inet tcp_bbr | inet6 tcp_bbr \
+	compile-with "${NORMAL_C} -DMODNAME=tcp_bbr -DSTACKNAME=bbr"
+netinet/tcp_stacks/rack.c	optional inet tcp_bbr | inet6 tcp_bbr \
+	compile-with "${NORMAL_C} -DMODNAME=tcp_rack -DSTACKNAME=rack"
+netinet/tcp_stacks/rack_bbr_common.c	optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack
+netinet/tcp_stacks/sack_filter.c	optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack
+netinet/tcp_stacks/tailq_hash.c	optional inet tcp_bbr | inet tcp_rack | inet6 tcp_bbr | inet6 tcp_rack
 netinet/tcp_stats.c		optional stats inet | stats inet6
 netinet/tcp_subr.c		optional inet | inet6
 netinet/tcp_syncache.c		optional inet | inet6
diff --git a/sys/conf/kern.opts.mk b/sys/conf/kern.opts.mk
index 178a4db61cb2..f8bedab700b4 100644
--- a/sys/conf/kern.opts.mk
+++ b/sys/conf/kern.opts.mk
@@ -56,7 +56,6 @@ __DEFAULT_YES_OPTIONS = \
 
 __DEFAULT_NO_OPTIONS = \
     BHYVE_SNAPSHOT \
-    EXTRA_TCP_STACKS \
     INIT_ALL_PATTERN \
     INIT_ALL_ZERO \
     KERNEL_RETPOLINE \
diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk
index f42ec4a9564b..d74087fc7c3d 100644
--- a/sys/conf/kern.post.mk
+++ b/sys/conf/kern.post.mk
@@ -33,10 +33,6 @@ MKMODULESENV+=	CONF_CFLAGS="${CONF_CFLAGS}"
 MKMODULESENV+=	WITH_CTF="${WITH_CTF}"
 .endif
 
-.if defined(WITH_EXTRA_TCP_STACKS)
-MKMODULESENV+=	WITH_EXTRA_TCP_STACKS="${WITH_EXTRA_TCP_STACKS}"
-.endif
-
 .if !empty(KCSAN_ENABLED)
 MKMODULESENV+=	KCSAN_ENABLED="yes"
 .endif
diff --git a/sys/conf/options b/sys/conf/options
index aede28eeaaa7..31ddbe2e6981 100644
--- a/sys/conf/options
+++ b/sys/conf/options
@@ -229,6 +229,8 @@ SW_WATCHDOG	opt_watchdog.h
 TCPHPTS         opt_inet.h
 TCP_REQUEST_TRK opt_global.h
 TCP_ACCOUNTING	opt_global.h
+TCP_BBR		opt_inet.h
+TCP_RACK	opt_inet.h
 #
 # TCP SaD Detection is an experimental Sack attack Detection (SaD)
 # algorithm that uses "normal" behaviour with SACK's to detect
diff --git a/sys/modules/tcp/Makefile b/sys/modules/tcp/Makefile
index 8f89977b5b69..364c0326c40d 100644
--- a/sys/modules/tcp/Makefile
+++ b/sys/modules/tcp/Makefile
@@ -8,13 +8,10 @@ SUBDIR=	\
         ${_tcp_rack} \
 	${_tcpmd5} \
 
-.if ${MK_EXTRA_TCP_STACKS} != "no" || defined(ALL_MODULES)
-_tcp_bbr= 	bbr
-_tcp_rack= 	rack
-.endif
-
 .if (${MK_INET_SUPPORT} != "no" || ${MK_INET6_SUPPORT} != "no") || \
 	defined(ALL_MODULES)
+_tcp_bbr= 	bbr
+_tcp_rack= 	rack
 .if ${KERN_OPTS:MIPSEC_SUPPORT} && !${KERN_OPTS:MTCP_SIGNATURE}
 _tcpmd5=	tcpmd5
 .endif