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
This commit is contained in:
Dag-Erling Smørgrav 2023-10-18 16:13:12 +02:00
parent dc41de36ab
commit 3a338c5341
7 changed files with 14 additions and 13 deletions

View file

@ -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.

View file

@ -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

View file

@ -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

View file

@ -56,7 +56,6 @@ __DEFAULT_YES_OPTIONS = \
__DEFAULT_NO_OPTIONS = \
BHYVE_SNAPSHOT \
EXTRA_TCP_STACKS \
KERNEL_RETPOLINE \
RATELIMIT \
REPRODUCIBLE_BUILD \

View file

@ -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

View file

@ -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

View file

@ -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