nl80211 is the new 802.11 netlink interface public header. Together with cfg80211 it is intended to replace Wireless-Extensions. nl80211 and cfg80211 are still under development.
Current users of nl80211:
OpenWrt folks created a tiny version of libnl based on a git snapshot, which only contains genl, not rtnetlink or any of the netfilter stuff, and compiles down to less than 30k in binary size. You can find it here:
The nl80211 testmode command helps implementing things like factory calibration or validation tools for wireless chips.
This functionality could possibly be used for SAR testing (Specific Absorption Rate), MPE testing (Maximum Permissible Exposure), RF testing (Radio Frequency), as possibly requested by institutions such as FCC.
According to kernelnewbies.org Linux_2_6_32, testmode has been introduced by nicely described commit aff89a9b90849.
This setting is currently provided by net/wireless/Kconfig.
For a way to determine whether a wireless driver actually supports nl80211 testmode interface, see [PATCH] nl80211: add testmode to the list of supported commands.
Current users of the testmode interface are:
TODO: could list (references to) ready-made scripts which implement nicely automated / elegant workflows for SAR testing etc.
For ATH9K chipsets, there's SAR testing functionality provided via the non-testmode setting CONFIG_ATH9K_TX99. Hmm, this possibly needs conversion to (additionally?) providing the generic nl80211 testmode functionality?
Under the NL80211_CMD_VENDOR command, there's the ability to register vendor-specific behavior. For a long time, we've explicitly rejected these upstream, but after many discussions some may be allowed, subject to (at least) the following constraints:
The goal with these rules is to enable use of vendor commands in a fashion that is transparent enough to allow later reuse by other components with similar needs, and then potentially defining “real” nl80211 API for the use case in question.