Re: git: 3a338c534154 - main - Add the BBR and RACK stacks to the LINT kernel.

From: Mitchell Horne <mhorne_at_freebsd.org>
Date: Wed, 18 Oct 2023 14:44:07 UTC

On 10/18/23 11:13, Dag-Erling Smørgrav wrote:
> The branch main has been updated by des:
> 
> URL: https://cgit.FreeBSD.org/src/commit/?id=3a338c534154164504005beb00a3c6feb03756cc
> 
> commit 3a338c534154164504005beb00a3c6feb03756cc
> Author:     Dag-Erling Smørgrav <des@FreeBSD.org>
> AuthorDate: 2023-10-18 14:13:12 +0000
> Commit:     Dag-Erling Smørgrav <des@FreeBSD.org>
> CommitDate: 2023-10-18 14:13:12 +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
> ---
>   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(-)

Hi,

There is a leftover description file, 
tools/build/options/WITH_EXTRA_TCP_STACKS.

Mitchell

> 
> diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
> index 9d26531e515b..bc94d5c62234 100644
> --- a/share/man/man5/src.conf.5
> +++ b/share/man/man5/src.conf.5
> @@ -641,8 +641,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 a5ed60792a1f..b12d5def2d57 100644
> --- a/sys/conf/NOTES
> +++ b/sys/conf/NOTES
> @@ -681,7 +681,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
> @@ -693,6 +692,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 8c3bdca61905..c127ce7e7103 100644
> --- a/sys/conf/files
> +++ b/sys/conf/files
> @@ -4361,6 +4361,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 f908f761b21e..cc6f8a1d8755 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 \
>       KERNEL_RETPOLINE \
>       RATELIMIT \
>       REPRODUCIBLE_BUILD \
> diff --git a/sys/conf/kern.post.mk b/sys/conf/kern.post.mk
> index a4eb2e94a47b..bea29507a736 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 4e74c4ab3a70..d2f31272d189 100644
> --- a/sys/conf/options
> +++ b/sys/conf/options
> @@ -231,6 +231,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