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/

相关文章
相关标签/搜索