Go to file
Adrian Chadd d20ff6e680 [net80211] Migrate short slot time configuration into per-vap and deferred taskqueue updates.
The 11b/11g ERP and slot time update handling are two things which weren't
migrated into the per-VAP state when Sam did the initial VAP work.
That makes sense for a lot of setups where net80211 is driving radio state
and the radio only cares about the shared state.

However, as noted by a now deleted comment, the ERP and slot time updates
aren't EXACTLY correct/accurate - they only take into account the most
RECENTLY created VAP, and the state updates when one creates/destroys
VAPs isn't exactly great.

So:

* track the short slot logic per VAP;
* whenever the slot time configuration changes, just push it into a deferred
  task queue update so drivers don't have to serialise it themselves;
* if a driver registers a per-VAP slot time handler then it'll just get the
  per VAP one;
* .. if a driver registers a global one then the legacy behaviour is maintained -
  a single slot time is calculated and pushed out.

Note that the calculated slot time is better than the existing logic - if ANY
of the VAPs require long slot then it's disabled for all VAPs rather than
whatever the last configured VAP did.

Now, this isn't entirely complete - the rest of ERP tracking around short/long
slot capable station tracking needs to be converted into per-VAP, as well
as the preamble/barker flags.  Luckily those also can be done in a similar
fashion - keep per-VAP counters/flags and unify them before doing the driver
update.  I'll defer that work until later.

All the existing drivers can keep doing what they're doing with the global
slot time flags as that is maintained. One driver (iwi) used the per-VAP
flags instead of the ic flags, so now that driver will work properly.

This unblocks some ath10k porting work as the firmware takes the slot time
configuration per-VAP rather than globally, and some firmware handles
STA+AP and STA+STA (on same/different channels) configurations where
the firmware will switch slot time as appropriate.

Tested:

* AR9380, STA/AP mode
* AR9880 (ath10k), STA mode
2020-06-05 06:21:23 +00:00
bin Add O_DIRECT flag to DD for cache bypass 2020-06-04 20:47:11 +00:00
cddl Restore the binary compatibility for link_map l_addr. 2020-05-21 22:24:23 +00:00
contrib lld: Set DF_1_PIE for -pie 2020-06-02 22:57:13 +00:00
crypto Merge OpenSSL 1.1.1g. 2020-04-21 19:38:32 +00:00
etc Restrict default /root permissions 2020-06-04 16:04:19 +00:00
gnu binutils: build as with BINUTILS || BINUTILS_BOOTSTRAP 2020-05-30 19:16:33 +00:00
include Revert r361770 "Add pthread_getname_np() and pthread_setname_np() aliases" for now. 2020-06-04 09:06:03 +00:00
kerberos5 Update Makefile.depend files 2019-12-11 17:37:53 +00:00
lib Refer to AES-CBC as "aes-cbc" rather than "rijndael-cbc" for IPsec. 2020-06-04 22:58:37 +00:00
libexec Uppercase 'dso' to indicate that it is abbreviation. 2020-06-02 17:33:10 +00:00
release Include the shells/bash port on Vagrant images, which prevents 2020-05-28 18:48:30 +00:00
rescue rescue: Remove useless linking with libl 2020-03-24 07:08:02 +00:00
sbin Refer to AES-CBC as "aes-cbc" rather than "rijndael-cbc" for IPsec. 2020-06-04 22:58:37 +00:00
secure Install 32-bit libcrypto engines in /usr/lib32/engines instead of 2020-06-01 18:58:09 +00:00
share Update crypto(7) to list current ciphers. 2020-06-04 22:16:19 +00:00
stand lualoader: drop the filename and word "LUA" from errors 2020-06-03 18:29:32 +00:00
sys [net80211] Migrate short slot time configuration into per-vap and deferred taskqueue updates. 2020-06-05 06:21:23 +00:00
targets libalias: retire cuseeme support 2020-05-16 02:29:10 +00:00
tests bridge tests: Avoid building a switching loop 2020-06-01 19:26:16 +00:00
tools Add deprecation notice to WITH_BINUTILS option description 2020-05-30 16:13:21 +00:00
usr.bin Refer to AES-CBC as "aes-cbc" rather than "rijndael-cbc" for IPsec. 2020-06-04 22:58:37 +00:00
usr.sbin Fix mountd to handle getgrouplist() not returning groups[0] == groups[1]. 2020-06-04 00:28:20 +00:00
.arcconfig
.arclint arc lint: ignore /tests/ in chmod 2017-12-19 03:38:06 +00:00
.cirrus.yml Cirrus-CI: increase timeout to 120m 2020-02-19 15:56:40 +00:00
.clang-format Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitattributes Add a basic clang-format configuration file 2019-06-07 15:23:52 +00:00
.gitignore .gitignore: Add LINT kernel configurations generated into SRCDIR 2019-08-10 18:22:22 +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 ice(4): Introduce new driver for Intel E800 Ethernet controllers 2020-05-26 23:35:10 +00:00
Makefile Use universe-toolchain config(8) 2020-04-29 02:18:39 +00:00
Makefile.inc1 Makefile.inc1: remove BINUTILS_BOOTSTRAP linker support 2020-05-30 16:20:18 +00:00
Makefile.libcompat Stop building libl and liby 2020-03-26 08:23:09 +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 Catch up with r361700. 2020-06-01 19:34:21 +00:00
README Import OpenSSL 1.1.1g. 2020-04-21 19:07:46 +00:00
README.md README: add generic notes about GENERIC and NOTES 2018-06-17 19:44:24 +00:00
RELNOTES RELNOTES and UPDATING: Document the new policy on read(2) of dirfd 2020-06-04 18:19:16 +00:00
UPDATING RELNOTES and UPDATING: Document the new policy on read(2) of dirfd 2020-06-04 18:19:16 +00:00

README.md

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