FreeBSD src
Go to file
John Baldwin 521eac97f3 Support hardware rate limiting (pacing) with TLS offload.
- Add a new send tag type for a send tag that supports both rate
  limiting (packet pacing) and TLS offload (mostly similar to D22669
  but adds a separate structure when allocating the new tag type).

- When allocating a send tag for TLS offload, check to see if the
  connection already has a pacing rate.  If so, allocate a tag that
  supports both rate limiting and TLS offload rather than a plain TLS
  offload tag.

- When setting an initial rate on an existing ifnet KTLS connection,
  set the rate in the TCP control block inp and then reset the TLS
  send tag (via ktls_output_eagain) to reallocate a TLS + ratelimit
  send tag.  This allocates the TLS send tag asynchronously from a
  task queue, so the TLS rate limit tag alloc is always sleepable.

- When modifying a rate on a connection using KTLS, look for a TLS
  send tag.  If the send tag is only a plain TLS send tag, assume we
  failed to allocate a TLS ratelimit tag (either during the
  TCP_TXTLS_ENABLE socket option, or during the send tag reset
  triggered by ktls_output_eagain) and ignore the new rate.  If the
  send tag is a ratelimit TLS send tag, change the rate on the TLS tag
  and leave the inp tag alone.

- Lock the inp lock when setting sb_tls_info for a socket send buffer
  so that the routines in tcp_ratelimit can safely dereference the
  pointer without needing to grab the socket buffer lock.

- Add an IFCAP_TXTLS_RTLMT capability flag and associated
  administrative controls in ifconfig(8).  TLS rate limit tags are
  only allocated if this capability is enabled.  Note that TLS offload
  (whether unlimited or rate limited) always requires IFCAP_TXTLS[46].

Reviewed by:	gallatin, hselasky
Relnotes:	yes
Sponsored by:	Netflix
Differential Revision:	https://reviews.freebsd.org/D26691
2020-10-29 00:23:16 +00:00
.github/workflows Add github CI for testing cross-building from Linux and macOS 2020-09-23 12:54:37 +00:00
bin pwd(1): Add EXAMPLES section 2020-10-24 16:42:35 +00:00
cddl Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
contrib MFV r367082: 2020-10-27 23:03:15 +00:00
crypto Replace literal uses of /usr/local in C sources with _PATH_LOCALBASE 2020-10-27 11:29:11 +00:00
etc flua: Add a libjail module 2020-10-24 17:08:59 +00:00
gnu Do a sweep and remove most WARNS=6 settings 2020-10-01 01:10:51 +00:00
include Remove obsolete check for GCC < 3 and support for Intel Compiler 2020-10-24 23:21:06 +00:00
kerberos5 Fix more -Wundef warnings during bootstrap 2020-10-14 12:28:54 +00:00
lib Disable ssp raw test without ASAN 2020-10-28 23:10:54 +00:00
libexec rc.d/syscons: remove spaces before tab 2020-10-25 18:27:21 +00:00
release Bump the ISO EFI partition size from 1024 to 2048, following r366732. 2020-10-15 23:05:13 +00:00
rescue loader: zfs should support bootonce an nextboot 2020-09-21 09:01:10 +00:00
sbin Support hardware rate limiting (pacing) with TLS offload. 2020-10-29 00:23:16 +00:00
secure Replace literal uses of /usr/local in C sources with _PATH_LOCALBASE 2020-10-27 11:29:11 +00:00
share Note that sys/systm.h is special too 2020-10-28 21:09:56 +00:00
stand loader: add aarch64 support for zstd 2020-10-28 21:18:04 +00:00
sys Support hardware rate limiting (pacing) with TLS offload. 2020-10-29 00:23:16 +00:00
targets Add WITH_CLANG_FORMAT option 2020-06-24 17:03:42 +00:00
tests Drop "All rights reserved" from all my stuff. This includes 2020-10-28 13:46:11 +00:00
tools Drop "All rights reserved" from all my stuff. This includes 2020-10-28 13:46:11 +00:00
usr.bin Update the list of searched manual sections after r367013 2020-10-28 16:54:37 +00:00
usr.sbin Drop "All rights reserved" from all my stuff. This includes 2020-10-28 13:46:11 +00:00
.arcconfig callsign isn't required anymore 2016-09-29 06:19:45 +00:00
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml Speed up Cirrus CI by using CROSS_TOOLCHAIN 2020-10-28 11:54:09 +00:00
.clang-format clang-format: Avoid breaking after the opening paren of function definitions 2020-10-28 11:54:00 +00:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore Vendor import of Unbound 1.12.0. 2020-10-27 15:09:16 +00:00
COPYRIGHT Happy New Year 2020! 2019-12-31 16:01:36 +00:00
LOCKS LOCKS: update current locks 2018-06-09 03:08:04 +00:00
MAINTAINERS Add a pointer to csprng@ for the CSPRNG driver. This is enforced anyway by 2020-09-01 08:02:12 +00:00
Makefile Import tzdata 2020d 2020-10-22 01:03:43 +00:00
Makefile.inc1 flua: Add a libjail module 2020-10-24 17:08:59 +00:00
Makefile.libcompat Race in 32-bit fixed 2020-10-08 17:30:05 +00:00
Makefile.sys.inc AUTO_OBJ: For all top-level targets enforce using an OBJDIR. 2017-12-05 21:29:47 +00:00
ObsoleteFiles.inc calendar: remove all datafiles except freebsd one 2020-10-26 03:26:18 +00:00
README Vendor import of less v563. 2020-10-24 05:25:54 +00:00
README.md Vendor import of Unbound 1.12.0. 2020-10-27 15:09:16 +00:00
RELNOTES Add an entry to RELNOTES for the NFS over TLS kernel support. 2020-08-30 21:46:29 +00:00
UPDATING calendar: remove all datafiles except freebsd one 2020-10-26 03:26:18 +00:00

FreeBSD Source:

This is the top level of the FreeBSD source directory. This file was last revised on: FreeBSD

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/makeworld.html, and https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/kernelconfig.html for more information, including setting make(1) variables.

Source Roadmap:

bin		System/user commands.

cddl		Various commands and libraries under the Common Development
		and Distribution License.

contrib		Packages contributed by 3rd parties.

crypto		Cryptography stuff (see crypto/README).

etc		Template files for /etc.

gnu		Various commands and libraries under the GNU Public License.
		Please see gnu/COPYING* for more information.

include		System include files.

kerberos5	Kerberos5 (Heimdal) package.

lib		System libraries.

libexec		System daemons.

release		Release building Makefile & associated tools.

rescue		Build system for statically linked /rescue utilities.

sbin		System commands.

secure		Cryptographic libraries and commands.

share		Shared resources.

stand		Boot loader sources.

sys		Kernel sources.

sys/<arch>/conf Kernel configuration files. GENERIC is the configuration
		used in release builds. NOTES contains documentation of
		all possible entries.

tests		Regression tests which can be run by Kyua.  See tests/README
		for additional information.

tools		Utilities for regression testing and miscellaneous tasks.

usr.bin		User commands.

usr.sbin	System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see:

https://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/current-stable.html