IWD === - IWD will start a scheduled scan to the interface if the hardware supports that feature. If the iwd closes or dies so that the kernel netlink socket is closed, then the scheduled scan is cancelled automatically if the kernel supports this. This is done by giving NL80211_ATTR_SOCKET_OWNER netlink attribute when initiating the scheduled scan. - IWD contains a network object that will contain a list of BSS that have the same SSID and security setting. From user point of view, we will connect to a certain SSID instead of connecting directly to a BSS. IWD will then pick the best BSS automatically from the BSS list when connecting to a SSID. The "best" BSS in this context is the BSS that has the highest signal strength. - IWD uses the DBus agent interface to query information from the user. The information asked include things like passphrase etc. The user can register only one agent to iwd. If the user does not respond in timely manner to the query, then the pending user request is cancelled after a timeout. The pending user request is also cancelled if user disconnects a pending connection attempt. - IWD supports the full RSN 4-Way Handshake for PTK generation. Support for handling the optional (second) RSN element from the AP is included. - IWD supports Pre-authentication from 802.11-2007. If the currently connected AP supports pre-authentication and iwd determines that a roam is required, then the pre-authentication process is kicked off. This is done using the current connection, running 802.1X over 0x88c7 protocol. This results in the creation of a new PMK which is cached by both the target and iwd. iwd can then roam onto the target AP using the cached PMK. - IWD supports Fast Transitions for fast roaming between access points. Only FT-over-Air (fastest option) is currently supported by iwd. Whenever iwd determines that a roam is required and a suitable target that supports fast transitions is available, iwd roams to the target AP using FT automatically. - IWD supports Radio Resource Management from 802.11k. In particular iwd can request and utilize Neighbor Reports. When iwd determines that a roam is required, iwd will try to obtain a Neighbor Report from the currently connected AP (using a special Action frame). This enables iwd to optimize the list of channels to scan in order to find a suitable target for roaming much quicker. - IWD supports receiving and generating SA Query action frames. If there is a spoofed disassociate frame, IWD will generate a SA Query frame to ask the AP if the disassociate frame was valid. The alternate case is if the AP receives an (re)associate frame while the STA is still connected. In this case the AP will send an SA Query frame, which IWD will respond to if it is still connected. - IWD supports Opportunistic Wireless Encryption (OWE). This allows encryption on open networks, by using ECDH to negotiate a PMK. - IWD supports the following EAP methods: - EAP-SIM - EAP-AKA - EAP-AKA' - EAP-GTC - EAP-MD5 - EAP-MSCHAPV2 - EAP-TLS - EAP-WSC - EAP-PEAP - EAP-TTLS - In addition to the default station mode, IWD supports: - AdHoc (IBSS) - Both unicast and multicast traffic is supported. - Access Point - Both unicast and multicast traffic is supported. AP mode does not yet support EAP methods. - IWD supports SAE (Simultaneous Authentication of Equals). SAE is required for the WPA3 certification. SAE uses a Diffie-Hellman key exchange to produce the PMK that's used in the 4-way handshake. Support for hybrid WPA3/WPA2 AP's is also implemented, where WPA3 is preferred. Wireless monitor ================ Netlink monitor interface is created if it does not exist The iwmon utility automates netlink monitor creation by by using RTNL to find an existing netlink monitor interface, and in case it does not exist, create a new one. By default the netlink monitor interface is named 'nlmon'. Another name can be given with the '--interface' command line option. Once iwmon terminates, the netlink monitor interface is removed (in case iwmon created it). HWSIM ===== The radio id from kernel mac80211_hwsim module is parsed properly in hwsim. The radio id is not returned as HWSIM_ATTR_RADIO_ID but instead it is returned in error message. If the error code > 0, then that means the radio id. If the error code < 0, then that indicates a real error. The hwsim uses new HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE flag attribute to tell the kernel that when the hwsim process dies, the radios it created should be removed. For testing tools it is beneficial if the newly created radio could be bound to the lifetime of the netlink socket. Alternatively, using the hwsim '-k (--keep)' command line option instructs hwsim to not destroy the created radio automatically. The hwsim is using HWSIM_CMD_NEW_RADIO to create a new radio. When the radio has been created, the kernel will return the used radio id and parameters in a HWSIM_CMD_NEW_RADIO multicast event that is sent in "config" netlink multicast group. The command HWSIM_CMD_DEL_RADIO is sent by kernel when a hwsim radio is deleted. In this case the deleted radio id is sent to "config" netlink multicast group. hwsim can list radios by sending a HWSIM_CMD_GET_RADIO with the attribute HWSIM_ATTR_RADIO_ID containing the desired radio id. If no radio id is given on the command line, a dump of all radios is requested from the kernel. The attributes returned are identical to those sent to the 'config' multicast group when creating a radio.