opnsense-src/sys/conf
Gleb Smirnoff e68b379244 tcp: embed inpcb into tcpcb
For the TCP protocol inpcb storage specify allocation size that would
provide space to most of the data a TCP connection needs, embedding
into struct tcpcb several structures, that previously were allocated
separately.

The most import one is the inpcb itself.  With embedding we can provide
strong guarantee that with a valid TCP inpcb the tcpcb is always valid
and vice versa.  Also we reduce number of allocs/frees per connection.
The embedded inpcb is placed in the beginning of the struct tcpcb,
since in_pcballoc() requires that.  However, later we may want to move
it around for cache line efficiency, and this can be done with a little
effort.  The new intotcpcb() macro is ready for such move.

The congestion algorithm data, the TCP timers and osd(9) data are
also embedded into tcpcb, and temprorary struct tcpcb_mem goes away.
There was no extra allocation here, but we went through extra pointer
every time we accessed this data.

One interesting side effect is that now TCP data is allocated from
SMR-protected zone.  Potentially this allows the TCP stacks or other
TCP related modules to utilize that for their own synchronization.

Large part of the change was done with sed script:

s/tp->ccv->/tp->t_ccv./g
s/tp->ccv/\&tp->t_ccv/g
s/tp->cc_algo/tp->t_cc/g
s/tp->t_timers->tt_/tp->tt_/g
s/CCV\(ccv, osd\)/\&CCV(ccv, t_osd)/g

Dependency side effect is that code that needs to know struct tcpcb
should also know struct inpcb, that added several <netinet/in_pcb.h>.

Differential revision:	https://reviews.freebsd.org/D37127
2022-12-07 09:00:48 -08:00
..
config.mk config.mk: All options in DEFAULTS are now defined in opt_global.h 2022-10-24 12:13:04 -06:00
dtb.build.mk dtb: Be much less verbose in the building of dtb 2022-10-29 10:13:54 -06:00
dtb.mk
files Fix a typo in the binmisc option name 2022-12-07 13:51:34 +00:00
files.amd64 zfs: fix static module build broken in 1f1e2261e 2022-06-23 19:44:38 +02:00
files.arm sys: use .S for assembly language files that use the preprocessor 2022-11-02 10:29:00 -04:00
files.arm64 Split out the arm64 EL2 exception vectors 2022-11-15 17:26:52 +00:00
files.i386 sys: use .S for assembly language files that use the preprocessor 2022-11-02 10:29:00 -04:00
files.powerpc Import an optimized str{n}cmp on arm64 2022-09-08 14:23:20 +01:00
files.riscv Import an optimized str{n}cmp on arm64 2022-09-08 14:23:20 +01:00
files.x86 arm64: Hyper-V: enablement for ARM64 in Hyper-V (Part 3, final) 2022-10-27 13:53:22 +00:00
kern.mk Use __freebsd_kprintf__ with GCC 12+ similar to clang. 2022-11-22 08:36:12 -08:00
kern.opts.mk cddl/*: add a WITH(OUT)_DTRACE option 2022-07-06 14:03:48 +01:00
kern.post.mk amd64: symlink i386 includes into build dir 2022-06-13 18:35:38 +01:00
kern.pre.mk zfs: merge openzfs/zfs@2163cde45 2022-11-16 21:27:42 +01:00
kmod.mk LinuxKPI: add the "dummy" includes directory to builds 2022-09-26 19:36:44 +00:00
kmod.opts.mk
kmod_syms.awk kmod_syms.awk: fix removal of the export list from the symbol table 2021-11-18 15:56:24 +02:00
kmod_syms_prefix.awk
ldscript.amd64 amd64: do not assume that kernel is loaded at 2M physical 2021-07-31 16:53:42 +03:00
ldscript.arm
ldscript.arm64 arm64: add read_frequently, read_mostluy and exclusive_cache_line to linker script 2021-08-23 15:22:17 +02:00
ldscript.i386
ldscript.kmod.amd64 Move PLTs to the beginning of amd64 kernel modules. 2020-09-16 13:51:47 +00:00
ldscript.kmod.i386
ldscript.powerpc [PowerPC] kernel ifunc support for powerpc*, fix ppc64 relocation oddities. 2020-05-07 19:32:49 +00:00
ldscript.powerpc64 [PowerPC] Fix build-id note on powerpc64 kernel 2020-06-01 19:40:59 +00:00
ldscript.powerpc64le [PowerPC64LE] Set up powerpc.powerpc64le architecture 2020-09-22 23:49:30 +00:00
ldscript.powerpcspe [PowerPC] kernel ifunc support for powerpc*, fix ppc64 relocation oddities. 2020-05-07 19:32:49 +00:00
ldscript.riscv Set the LMA of the riscv kernel to the OpenSBI jump target by default 2020-02-04 00:06:16 +00:00
Makefile.amd64 Don't try ctfconvert on file without debug info. 2020-04-28 16:09:25 +00:00
Makefile.arm ipq4018: add TCSR definitions from Linux. 2021-10-18 19:18:01 +00:00
Makefile.arm64 arm64: Don't rely on host readelf for u-boot booti image generation 2021-12-24 19:25:20 +00:00
Makefile.i386
Makefile.powerpc Stop adding -Wredundant-decls to CWARNFLAGS. 2022-02-07 12:47:51 -08:00
Makefile.riscv riscv: Add the device-tree path to the include path 2021-01-16 11:31:17 +01:00
newvers.sh newvers.sh: Don't use return to exit. 2022-06-14 10:51:39 -07:00
NOTES Fix a typo in the binmisc option name 2022-12-07 13:51:34 +00:00
options tcp: embed inpcb into tcpcb 2022-12-07 09:00:48 -08:00
options.amd64 x86: Add MPTABLE_LINUX_BUG_COMPAT option 2022-10-17 23:02:22 -07:00
options.arm arm: Remove useless armv6/armv7 options 2022-10-20 10:48:31 -06:00
options.arm64 conf: Document why we have ARM64 and RISCV options 2022-10-20 10:48:31 -06:00
options.i386 x86: Add MPTABLE_LINUX_BUG_COMPAT option 2022-10-17 23:02:22 -07:00
options.powerpc powerpc/pseries: Allow radix pmap in pseries for ISA 3.0 2021-08-11 19:07:04 -05:00
options.riscv conf: Document why we have ARM64 and RISCV options 2022-10-20 10:48:31 -06:00
std.nodebug Exclude DEBUG_VFS_LOCKS from non-debug kernel configs 2022-02-02 19:27:32 +02:00
sysent.mk sysent: regenerate files every time 2021-12-16 20:56:28 -06:00
systags.sh Fix kernel-tags target. 2020-01-23 13:56:12 +00:00
vdso_amd64.ldscript vdso linker scripts: explicitly specify output arch and target 2022-02-12 00:32:23 +02:00
vdso_amd64_ia32.ldscript vdso linker scripts: explicitly specify output arch and target 2022-02-12 00:32:23 +02:00
WITHOUT_SOURCELESS
WITHOUT_SOURCELESS_HOST
WITHOUT_SOURCELESS_UCODE retire cx,ctau drivers 2020-03-20 16:50:19 +00:00