linuxkpi_wlan —
LinuxKPI 802.11 support
The linuxkpi_wlan kernel module provides
an 802.11 compat layer to translate between Linux 802.11 drivers and the
native net8011 wireless stack. It currently supports
mac80211
based drivers. Parts of the
cfg80211
exist but there is no code for net80211 to drive it.
linuxkpi_wlan currently
supports the following
wlanmode
operating modes:
sta
- client station in an infrastructure bss (IBSS).
Compat code for 802.11n (HT) and 802.11ac (VHT) is implemented but
support may vary for different drivers due to different KPI usage.
Crypto support for hardware acceleration needs to be enabled using
the compat.linuxkpi.80211.hw_crypto tunable. The
following cipher suites are supported:
tkip
- Support for
wlan_tkip(4) has to be manually enabled using the
compat.linuxkpi.80211.tkip tunable.
ccmp
- Support for
wlan_ccmp(4) is available.
gcmp
- Support for
wlan_gcmp(4) is available.
Further cipher suites will be implemented as soon as
net80211(4) grows support. While it would be possible to
implement
wlan_wep(4) support, it was decided not to do so given
Wired Equivalent
Privacy (WEP) has been deprecated since 2004.
The list of supported drivers includes
iwlwifi(4),
rtw88(4), and
rtw89(4).
The linuxkpi_wlan module supports the
following
loader(8) tunable and read-only
sysctl(8) variables:
- compat.linuxkpi.80211.hw_crypto
- Turn on hardware crypto offload support. Default
‘
0’.
- compat.linuxkpi.80211.tkip
- Turn on support for
wlan_tkip(4) offloading. Default
‘
0’.
The linuxkpi_wlan module supports the
following
sysctl(8) variables:
- compat.linuxkpi.80211.debug
- If the kernel is compiled with
IEEE80211_DEBUG or
LINUXKPI_DEBUG_80211 is manually enabled, the
sysctl is a bitmask to turn on individual debug messages. See
sys/compat/linuxkpi/common/src/linux_80211.h for
details.
- compat.linuxkpi.80211.IF.dump_stas
- Print statistics for a given, associated
wlan(4) interface; typically IF would be
wlan0.
- compat.linuxkpi.80211.IF.dump_stas_queues
- Like compat.linuxkpi.80211.IF.dump_stas but also
print queue statistics. This sysctl is ‘hidden’ and normally
only needed for debugging purposes.
The linuxkpi_wlan module first appeared in
FreeBSD 13.1. Support for IEEE 802.11n and 802.11ac
in linuxkpi_wlan first appeared in
FreeBSD 14.3.
LinuxKPI 802.11 support was developed by Bjoern
A. Zeeb under sponsorship from the FreeBSD Foundation.