backports的层次

backports的层次

 

引言

Linux 无线驱动的开源项目backports的分析。

 

介绍

整个驱动代码分成两个结构。80211通用的功能提取出来做成通用层,这一部分叫做soft mac。而一些与芯片处理相关的部分代码放在各个芯片目录下,这部分是芯片的特定mac层。

 



 

一般而言 mac驱动有两个方面,一是数据转发,二是管理。我们把这两个方面,分别叫作数据层面和管理层面,或是数据面与管理面。

 

soft mac层的三个层次

 

soft mac 层就是/net/mac80211部分代码,它向上完成了与linux kernel的对接,并使用linux genl方式,为用户层程序访问配置无线驱动提供了接口。单就管理面而言有四个模块。如下图:


nl80211

 这一层的代码在/net/wireless/nl80211.c。这是用户程序调用相关的系统调用在内核的入口。

处理各种不同的命令。它向下会调用cfg80211层。

linux为配置有线接口定义了一些ioctl的命令字,由于无线接口的可配置项远远比有线接口的可配置多很多。ioctl命令字空间也有限,所以为无线接口的管理面定义了

使用netlink genl全新的接口,叫做nl80211

 

cfg80211

 

这一层负责管理层面的工作。不关心数据转发的业务。

驱动扫描到一个物理芯片时,此芯片(代码中叫wiphy)会注册到cfg80211层。cfg80211层就组织好所有无线接口,以及他们的属性。它可以处理的业务有:

无线虚接口相关,如channel,创建无线虚接口;加密密钥管理等。

过程管理相关,station的过程管理部分(扫描,上下线)

还有一部分与linux相关的,如输出sysfs;注册ethtool等。

 

cfg80211_rdev_list 全局变量,用于组织和管理wiphy。注意这可不是一个无线的虚拟接口。

 

mac80211

 

这一层既负责管理层面,也要负责数据层面。

这一层主要关心的是无线虚拟接口,station等。而无线的虚拟接口

会把所有的无线虚拟接口组织管理起来。

在管理层面上,wiphy会向cfg80211注册时会把mac80211_config_ops作为自己的config_ops。这样管理层会通过mac80211层。通过这一层再下发到芯片层。


数据层面的处理主要是rxtx两方面。

因为linux 的bridge只处理以太报文;所以此层会完成这种帧的转换;在接收时此层完成把无线数据帧(802.11)转成以太数据(802.3),并交给linux的网络协议栈处理。发送的过程与之相反。


 


  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值