1. Basic Concepts
• 80211: used to manage the configuration of wireless devices. Works with fullmac, mac80211, and nl80211. (Kernel state)
• Mac80211: A driver developer can use to write a driver to a softmac wireless device ).
• Nl80211: used for configuration management of wireless devices. It is a basic Netlink user-state protocol (User-state)
• Wnic: wireless network interface controller, which always expects hardware to execute the features described in protocols (such.
• Mlme: Media Access Control Layer Management Entity, which manages the MAC state machine of the physical layer.
• Softmac: Its mlme is implemented by software, and mac80211 provides a driver API for softmac implementation. That is, the softmac device allows better control of the hardware and allows 802.11 frame management by software, including parsing and generating 802.11 wireless frames. Currently, most 802.11 devices use softmac, but fewer fullmac devices.
• Fullmac: Its mlme is managed by hardware. When writing a fullmac wireless driver, mac80211 is not required.
• Wpa_supplicant: it is an application in the user space. It mainly initiates mlme commands and then processes related results.
•
2. 201780211
802.11 is the configuration API of Linux. 201780211 is used in the wext (Wireless-extensions) code. nl80211 is used to configure a 201780211 device and to communicate between kernel and userspace. Wext is currently in maintenance status. No new features are added, but only bugs are modified. To use wext, you must define config_201780211_wext.
Listen 80211 and nl80211: uses the Netlink Interface Based on the message mechanism
Wext: IOCTL-based mechanism
• Struct ieee80211_hw: hardware information and status
• Ieee80211_alloc_hw: Each driver calls ieee80211_alloc_hw to allocate ieee80211_hw, and uses ieee80211_ops as the parameter.
• Ieee80211_register_hw: Each driver calls ieee80211_register_hw to create wlan0 and wmaster0 and perform various initialization.
• Struct ieee80211_ops: Each driver implements its member functions, and its member functions use struct ieee80211_hw as the first parameter. 24 methods are defined in struct ieee80211_ops. The following seven methods must be implemented:
TX, start, stop, add_interface, remove_interface, config, and configure_filter.
3. mac80211
It is a driver framework that developers can use to write drivers for softmac wireless devices. mac80211 implements the listen 80211 callback function for softmac devices, and mac80211 registers and configures the network subsystem through the listen 80211. The configuration is implemented by ipv80211 through nl80211 and wext.
The location of mac80211 in the architecture is shown in:
4. Socket
Http://wireless.kernel.org/en/developers/Documentation/