NOTE: this page is for archival only, see the note at the end of the page.

About mac80211

mac80211 is the Linux API used to write SoftMAC wireless drivers. Right now the MLME is done in the kernel for station mode (STA) and userspace for AP mode (hostapd) but our goal is to eventually move it to userspace completely.

The mac80211 book

We are working on a mac80211 book which is generated from comments in the various mac80211 source files. You will find a more thorough review of mac80211 in it; the wiki pages can be used as a quick reference for mac80211 development. The book incorporates the kernel-doc docs below.

mac80211 files and kernel docs

New mac80211 driver interface semantics

The new mac80211 driver interface semantics gives an overview of the expected and suggested driver behavior.

mac80211 drivers

Here is a list of current mac80211 drivers:

mac80211 rate control algorithms

Here is a list of current mac80211 rate control algorithms:

  • simple - dumb simple rate control algorithm

  • PID - PID (proportional-integral-derivative) rate control algorithm

The master device wmaster0

mac80211 creates creates one master device and as many other secondary devices as requested to represent interfaces for the wireless card you have. mac80211 asks for the master device to appear as named as wmaster%d, and wlan%0 for the interfaces. udev may override the naming convention used though. wmaster%d is an internal master device used only by mac80211. It is currently visible only because it uses netdevice structure which we must allocate and use for for QoS. It also serves as a holder for all interfaces we have, and represent the underlying hardware. For example, when TXing your wlan0 STA interface will actually add IEEE-802.11 header data to a frame with just Ethernet headers, and then pass it down to the master device for actual transmission using the low level drivers.

The wlan%d devices (interfaces) are the devices you would use to configure your wireless settings.

Types of interfaces

mac80211 supports an interface for each type of general IEEE-802.11 wireless mode is possible. Please refer to the list of supported wireless modes.

This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at
versions of this page: last, v55, v54, v53, v52, v51, v50, v49, v48, v47, v46, v45, v44, v43, v42, v41, v40, v39, v38, v37, v36, v35, v34, v33, v32, v31, v30, v29, v28, v27, v26, v25, v24, v23, v22, v21, v20, v19, v18, v17, v16, v15, v14, v13, v12, v11, v10, v9, v8, v7, v6, v5, v4, v3, v2, v1