linux Wireless基礎知識(cfg80211 mac80211 nl80211)

1. 基本概念網絡

    • cfg80211:  用於對無線設備進行配置管理。與FullMAC, mac80211和nl80211一塊兒工做。(Kernel態)
框架

    • mac80211: 是一個driver開發者可用於爲SoftMAC無線設備寫驅動的框架 (Kernel態)。
less

    • nl80211: 用於對無線設備進行配置管理,它是一個基本Netlink的用戶態協議(User態)socket

    • WNIC : Wireless Network Interface Controller, 它老是期望硬件執行協議(如IEEE802.11)描述的功能。函數

    • MLME: 即MAC(Media Access Control ) Layer Management Entity,它管理物理層MAC狀態機。spa

    • SoftMAC: 其MLME由軟件實現,mac80211爲SoftMAC實現提供了一個driver API。 即:SoftMAC設備容許對硬件執行更好地控制,容許用軟件實現對802.11的幀管理,包括解析和產生802.11無線幀。目前大多數802.11設 備爲SoftMAC,而FullMAC設備較少。
接口

    • FullMAC:  其MLME由硬件管理,當寫FullMAC無線驅動時,不須要使用mac80211。
開發

    • wpa_supplicant: 是用戶空間一個應用程序,主要發起MLME命令,而後處理相關結果。
rem

    • 
get

2. cfg80211

    cfg80211是Linux 802.11配置API。cfg80211用於代碼wext(Wireless-Extensions),nl80211用於配置一個cfg80211設 備,且用於kernel與userspace間的通訊。wext現處理維護狀態,沒有新的功能被增長,只是修改bug。若是須要經過wext操做,則須要 定義CONFIG_CFG80211_WEXT。

     cfg80211 and nl80211: 基於消息機制,使用netlink接口

    wext: 基於ioctl機制

    • struct ieee80211_hw: 表示硬件信息和狀態

    • ieee80211_alloc_hw:每一個driver調用ieee80211_alloc_hw分配ieee80211_hw,且以ieee80211_ops爲參數

    • ieee80211_register_hw:每一個driver調用ieee80211_register_hw建立wlan0和 wmaster0,並進行各類初始化。

    • struct ieee80211_ops:每一個driver實現它的成員函數,且它的成員函數都以struct ieee80211_hw作爲第一個參數。在struct ieee80211_ops中定義了24個方法,如下7個方法必須實現:
       tx,
start,stop,add_interface,remove_interface,config和configure_filter。


3. mac80211

    它是一個driver開發者可用於爲SoftMAC無線設備寫驅動的框架,mac80211爲SoftMAC設備實現了cfg80211回調函數,且mac80211經過cfg80211實現了向網絡子系統註冊和配置。配置由cfg80211經過nl80211和wext實現。

    mac80211在體系結構中的位置以下圖所示:





4. socket

     















http://wireless.kernel.org/en/developers/Documentation/

相關文章
相關標籤/搜索