Linux中的无线架构

译至:http://wire-less-comm.blogspot.jp/2013/01/wireless-lan-and-linux-together.html

随着开放源代码的出现,开发的时间已经快速下降,同时质量也迅速提高。 对于所有参与WLAN /WiFi开发的人来说,让我们来研究一下基于开源mac80211框架的Linux的WLAN架构吧。

下面的框图说明了Linux的WLAN架构。 请看下面的详细资料。



用户空间:

配置:wpa_supplicant和hostapd:

所有直接与用户交互的应用程序都在这里。 例如可以基于GUI / CLI。 在Ubuntu / Fedora发行版本的网络管理器是基于GUI的,但最核心的部分是基于命令行的。例如,使用wpa_supplicant用于控制STA的部分和使用hostapd用于控制AP的部分。
两者都是可通过其CLI版本(wpa_cli,hostapd_cli)配置的。

它们支持不同的功能,如SME,MLME,安全,无线直连(P2P),AP和STA的配置。

工具:

我们也有工具来直接发送命令到驱动来设置一些参数,如通道,带宽,一些自定义的命令等。


用户空间和内核空间之间的桥

如何在用户空间中的各种应用程序和内核中的核心实体之间进行沟通呢? 我们有不同的方法,但都是基于不同的套接字接口。

    WExt ==> 通用无线扩展:IOCTL接口
    NL80211==> Netlink套接字
    HostAP ==> 原始数据包套接字
    特定于芯片组:
                  Atheros==> IOCTL 接口 

                  Prism,IPW etc.


内核空间

配置和UMAC

对于开源世界来说,内核的WLAN架构是mac80211,它分成2个内核模块。
    cfg80211.ko:它处理所有的配置,和用户空间的交互。
    mac80211.ko:协议:上层的MAC,和驱动程序的交互。 

大部分功能和管理是由具有mac80211模块在底层的MAC协助下处理的。

低层的Mac驱动程序

低层的MAC驱动担任UMAC和芯片组(固件和硬件)之间的桥梁。 他们通过Linux内核提供的服​务来执行所有的设备初始化,注册到操作系统上,错误注册,中断注册等。

一个精心编写的驱动程序遵循这些约定:

  •     保持一个操作系统无关层:方便移植到不同的操作系统。
  •     保持一个UMAC无关层:方便移植到不同的UMAC上:专有,开源,第三方等。
  •     总线抽象层:保持不同的物理总线之间,如PCI,PCIe,AHB,SDIO等的相容性 

芯片组:固件和硬件

完整的802.11协议的功能在这里实现。
固件可能是运行在一个单独的处理器/微控制器上,它配置和控制硬件,同时还通过一个芯片组(控制路径)特定的通讯接口与主机(驱动程序)进行交互。
数据路径通常包括一个硬件上的DMA控制器,它负责产生中断给主处理器和从/至主机传输数据包到硬件队列。

参考文献:
    wpa_supplicant_hostapd_devel_doc
    http://www.omappedia.org/wiki/MAC802.11_based_Wilink
    wpa_supplicant
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值