In diesem Beitrag wird der Aufbau des WLAN Linux Treiber behandelt. Einen groben Überblick verschafft das folgende Diagramm.

Übersicht

User-Space

Hostapd

  • Host access point daemon
  • IEEE 802.11 AP Management
  • IEEE 802.1X / WPA / WPA2 / EAP Authenticator
  • Konfigurationsdateien
  • Kommuniziert über nl80211
  • mit dem Kernel Space
  • Open Source

wpa-supplicant

  • IEEE 802.11i (Security) supplicant
  • Kommuniziert über nl80211 mit dem
  • Kernel Space
  • Features:
  • WPA-PSK / WPA2-PSK (WPA/2-Personal)
  • WPA with EAP (WPA/2-Enterprise)
  • Pre-Authenfication
  • Fast BSS Transition (802.11r)
  • WPS
  • Open Source

iw

  • Kommuniziert über nl80211 mit dem Kernel Space
  • Zeigt WLAN Device Konfigurationen
  • Manipuliert WLAN Device Konfigurationen
  • CLI basiert

Kernel-Space

nl80211

  • Kommunikation zwischen Kernel und User Space
  • neue 802.11 netlink interface public header
  • wird noch weiter entwickelt
  • Hat zusammen mit cfg80211 das alte Wireless-Extension (wext ioctl) abgelöst.
  • nl80211 interface (include/linux/nl802.11h)
  • enum nl80211_commands
  • enum nl80211_attrs

cfg80211

  • 802.11 konfigurations API
  • AP
  • Hidden ssid
  • Auth type (OPEN, FT, EAP, SAE, …)
  • Kanäle
  • MESH
  • greift auf Regulatory DB zur Unterstützung behördlicher Regulierungen (wireless-regdb)
  • Kommuniziert mit mac80211 bei Soft-MAC Treiber
  • Kommuniziert direkt mit Full-MAC Treibern
  • cfg80211 interface: include/net/cfg80211.h

mac80211

  • Framework um Soft-MAC Treiber zu schreiben
  • cfg80211 callbacks
  • MLME (Media Access Control Sublayer Management Entity) für station mode
  • Physical Layer state machine
  • Features:
  • Mesh
  • Roaming (wpa_supplicant)
  • QoS

Treiber

  • gibt meist die unterstützten Features vor
  • Vendor Spezifische Treiber
  • ath (QCA)
    • ath10k
    • ath9k
  • TI
    • wl18xx
    • wl12xx
  • broadcom
    • brcmsmac (Soft-MAC)
    • brcmfmac (Full-MAC)

Links

https://git.kernel.org/pub/scm/linux/kernel/git/wireless/wireless-testing.git

https://wireless.wiki.kernel.org