Linux 802.11 SoftMAC architecture

Since, My work profile has involved WiFi for a large part of my career, i will start looking at WiFi support in Linux and how the WiFi sub-system operates before moving on to other topics.

Linux provides a SoftMAC architecture wherein most of the Upper MAC functionality is handled in the host processor. The Linux SoftMAC architecture is provided below for reference

FIG Courtesy: https://stackoverflow.com/questions/21456235/how-do-the-nl80211-library-cfg80211-work

The different components are described in brief below

  1. SoftMAC drivers – drivers that reside in the Host processor and communicate with the WiFi hardware over a BUS (e.g. PCI, SDIO etc)
  2. mac80211 – Driver API for SoftMAC based drivers. mac80211 implements the cfg80211 callbacks for SoftMAC devices.
    • mac80211 then depends on cfg80211 for both registration to the networking subsystem and for configuration. 
  3. cfg80211 – Kernel side of configuration management for wireless devices.
  4. nl80211 – user space interface for configuration. netlink based socket interface for configuration management.
  5. FullMAC – an architecture where the MAC Layer Management (MLME) is handled in the WiFi card and not on the host processor

As is depicted in the Figure above, the SoftMAC driver interacts with the mac80211 module via callbacks which are defined in the structure “struct ieee80211_ops”. Similarly, the mac80211 performs configuration management via cfg80211 using callbacks which are defined in the structure “struct cfg80211_ops”.

The below link provides information on Linux 802.11 driver development- https://www.kernel.org/doc/html/latest/driver-api/80211/

mac80211 and cfg80211 callback structures

Comments

  1. Pingback: Netlink Protocol Families | Hitch Hiker's Guide to Learning

  2. Pingback: mac80211 and cfg80211 callback structures | Hitch Hiker's Guide to Learning

  3. Pingback: Unnamed Semaphore in Linux User space | Hitch Hiker's Guide to Learning

Leave a Reply

Your email address will not be published. Required fields are marked *