admin管理员组文章数量:1531727
2024年7月11日发(作者:)
WLAN
驱动分析文档
1
目
录
1
引言
..............................................................................................................................3
1.1
目的
................................................................................................................3
1.2
项目背景
........................................................................................................3
1.3
参考资料
........................................................................................................3
预备知识
.......................................................................................................................3
2.1WLAN
技术
....................................................................................................3
2.2802.11
协议简述
.............................................................................................3
2.2.1
概述
........................................................................................................3
2.2.2802.11
工作方式
......................................................................................4
2.2.3802.11
物理层
.........................................................................................4
2.2.4802.11b
的增强物理层
............................................................................4
2.2.5802.11
数字链路层
..................................................................................5
2.2.6
联合结构、蜂窝结构和漫游
....................................................................5
2.3802.11
四种主要物理组件
..............................................................................6
2.4802.11 MAX
基础
...........................................................................................6
2.4.1802.11
原子帧传送
..................................................................................6
2.4.7
2.4.3
载波监听功能
..........................................................................................7
2.4.4
帧间间隔
.................................................................................................8
2.4.5DCF
竞争服务
.........................................................................................8
2.4.6
封包帧
.....................................................................................................9
2.4.7PCF
无竞争服务
.....................................................................................9
802.11e WMM
应用介绍
............................................................................................10
3.1802.11e
与
802.11
的不同
............................................................................10
3.2802.11e WMM
模块的原理
...........................................................................10
WLAN
驱动结构介绍
..................................................................................................12
4.1SDIO
驱动
....................................................................................................12
4.2
详细接口及代码分析
....................................................................................12
4.2.1SDIO
注册流程分析
..............................................................................12
4.2.2WILAN
驱动流程分析
............................................................................14
2
3
4
2
1
引言
1.1
目的
通过编写阅读本文档,可以达到如下目的:
1.
对
WLAN
技术有一定了解
2.
对
802.11a
、
802.11b
及相应的扩展协议有一定的了解
3.
详细阐述了
WLAN
驱动的原理及
802.11e
的
WMM
扩展。
4.
对
Android LIB
层与
WLAN
驱动的接口暂时并无描述。
1.2
项目背景
该项目主要是利用
android
的开源结构,以三星的
S3C6410
为
CPU
,
AW-GH381
为
WLAN
网络接口卡的一款
android
手机系统。
1.3
参考资料
1.
2.
WLAN DesignGuide by Agilent
Providing QoS in WLANs by intel
2
预备知识
2.1WLAN
技术
WLAN
是英文
WirelessLAN
的缩写,就是无线局域网的意思。无线以太网技术是一种
基于无线传输的局域网技术,与有线网络技术相比,具有灵活、建网迅速、个人化等特点。将
这一技术应用于电信网的接入网领域,能够方便、灵活地为用户提供网络接入,适合于用户
流动性较大、有数据业务需求的公共场所、高端的企业及家庭用户、需要临时建网的场合以及
难以采用有线接入方式的环境等。
2.2802.11
协议简述
2.2.1
概述
作为全球公认的局域网权威,
IEEE802
工作组建立的标准在过去二十年内在局域网领
802.5TokenRing
协议、
802.3z100BASE
-
T
域独领风骚。这些协议包括了
802.3Ethernet
协议、
快速以太网协议。在
1997
年,经过了
7
年的工作以后,
IEEE
发布了
802.11
协议,这也是在
无线局域网领域内的第一个国际上被认可的协议。在
1999
年
9
月,他们又提出了
802.11b"HighRate"
协议,用来对
802.11
协议进行补充,
802.11b
在
802.11
的
1Mbps
和
2Mbps
速率下又增加了
5.5Mbps
和
11Mbps
两个新的网络吞吐速率。利用
802.11b
,移动用户
能够获得同
Ethernet
一样的性能、网络吞吐率、可用性。这个基于标准的技术使得管理员可以
根据环境选择合适的局域网技术来构造自己的网络,满足他们的商业用户和其他用户的需
802.11
协议主要工作在
ISO
协议的最低两层上,并在物理层上进行了一些改动,加入了求。
3
高速数字传输的特性和连接的稳定性。
主要内容:
1.802.11
工作方式
2.802.11
物理层
3.802.11b
的增强物理层
4.802.11
数字链路层
5.
联合结构、蜂窝结构和漫游
2.2.2802.11
工作方式
802.11
定义了两种类型的设备,一种是无线站,通常是通过一台
PC
机器加上一块无线网
络接口卡构成的,另一个称为无线接入点
(AccessPoint,AP)
,它的作用是提供无线和有线网
络之间的桥接。一个无线接入点通常由一个无线输出口和一个有线的网络接口
(802.3
接口
)
构成,桥接软件符合
802.1d
桥接协议。接入点就像是无线网络的一个无线基站,将多个无
PCI
接口、
ISA
接口线的接入站聚合到有线的网络上。无线的终端可以是
802.11PCMCIA
卡、
的,或者是在非计算机终端上的嵌入式设备
(
例如
802.11
手机
)
。
2.2.3802.11
物理层
在
802.11
最初定义的三个物理层包括了两个扩散频谱技术和一个红外传播规范,无线
传输的频道定义在
2.4GHz
的
ISM
波段内,这个频段,在各个国际无线管理机构中,例如
美国的
USA
,欧洲的
ETSI
和日本的
MKK
都是非注册使用频段。这样,使用
802.11
的客户
端设备就不需要任何无线许可。扩散频谱技术保证了
802.11
的设备在这个频段上的可用性
802.11
无线和可靠的吞吐量,这项技术还可以保证同其他使用同一频段的设备不互相影响。
标准定义的传输速率是
1Mbps
音频相关概念和
2Mbps
,可以使用
FHSS(frequencyhoppingspreadspectrum)
和
DSSS(directsequencespreadspectrum)
技术,需要指
出的是,
FHSS
和
DHSS
技术在运行机制上是完全不同的,所以采用这两种技术的设备没有
互操作性。
2.2.4802.11b
的增强物理层
802.11b
在无线局域网协议中最大的贡献就在于它在
802.11
协议的物理层增加了两个新
的速度:
5.5Mbps
和
11Mbps
。为了实现这个目标,
DSSS
被选作该标准的唯一的物理层传输
技术,这个决定使得
802.11b
可以和
1Mbps
和
2M
的
802.11bpsDSSS
系统互操作。最初
802.11
的
DSSS
标准使用
11
位的
chipping
-
Barker
序列-来将数据编码并发送,每一个
11
位的
chipping
代表一个一位的数字信号
1
或者
0
,这个序列被转化成波形
(
称为一个
Symbol)
,然后在空气中传播。这些
Symbol
以
1MSps(
每秒
1M
的
symbols)
的速度进行传送,
传送的机制称为
BPSK(BinaryPhaseShiftingKeying)
,在
2Mbps
的传送速率中,使用了一种
更加复杂的传送方式称为
QPSK(QuandraturePhaseShiftingKeying)
,
QPSK
中的数据传输率
是
BPSK
的两倍,以此提高了无线传输的带宽。
在
802.11b
标准中,一种更先进的编码技术被采用了,在这个编码技术中,抛弃了原有
的
11
位
Barker
序列技术,而采用了
CCK(ComplementaryCodeKeying)
技术,它的核心编码
中有一个
64
个
8
位编码组成的集合,在这个集合中的数据有特殊的数学特性使得他们能够
在经过干扰或者由于反射造成的多方接受问题后还能够被正确地互相区分。
5.5Mbps
使用
CCK
串来携带
4
位的数字信息,而
11Mbps
的速率使用
CCK
串来携带
8
位的数字信息。两
个速率的传送都利用
QPSK
作为调制的手段,不过信号的调制速率为
1.375MSps
。这也是
802.11b
获得高速的机理。表
1
中列举了这些数据。
为了支持在有噪音的环境下能够获得较好的传输速率,
802.11b
采用了动态速率调节技术,
4
来允许用户在不同的环境下自动使用不同的连接速度来补充环境的不利影响。在理想状态下,
用户以
11M
的全速运行,然而,当用户移出理想的
11M
速率传送的位置或者距离时,或者
2Mbps
、
1Mbps
。潜在地受到了干扰的话,这把速度自动按序降低为
5.5Mbps
、同样,当用户
回到理想环境的话,连接速度也会以反向增加直至
11Mbps
。速率调节机制是在物理层自动
实现而不会对用户和其它上层协议产生任何影响。
2.2.5802.11
数字链路层
802.11
的
MAC
和
802.3
协议的
MAC
非常相似,都是在一个共享媒体之上支持多个用
户共享资源,由发送者在发送数据前先进行网络的可用性。在
802.3
协议中,是由一种称为
CSMA/CD(CarrierSenseMultipleAccesswithCollisionDetection)
的协议来完成调节,而在
802.11
无线局域网协议中,冲突的检测存在一定的问题,这个问题称为
"Near/Far"
现象,这
是由于要检测冲突,设备必须能够一边接受数据信号一边传送数据信号,而这在无线系统
中是无法办到的。鉴于这个差异,在
802.11
中对
CSMA/CD
进行了一些调整,采用了新的协
议
CSMA/CA(CarrierSenseMultipleAccesswithCollisionAvoidance)
或者。
DCF(DistributedCoordinationFunction)
。
CSMA/CA
利用
ACK
信号来避免冲突的发生,
也就是说,只有当客户端收到网络上返回的
ACK
信号后才确认送出的数据已经正确到达目
的。
CSMA/CA
通过这种方式来提供无线的共享访问,这种显式的
ACK
机制在处理无线问
题时非常有效。然而不管是对于
802.11
还是
802.3
来说,这种方式都增加了额外的负担,所
以
802.11
网络和类似的
Ethernet
网比较总是在性能上稍逊一筹。
另一个的无线
MAC
层问题是
"hiddennode"
问题。两个相反的工作站利用一个中心接入
点进行连接,这两个工作站都能够
"
听
"
到中心接入点的存在,而互相之间则可能由于障碍
或者距离原因无法感知到对方的存在。为了解决这个问题,
802.11
在
MAC
层上引入了一个
新的
Send/CleartoSend(RTS/CTS)
选项,当这个选项打开后,一个发送工作站传送一个
RTS
信号,随后等待访问接入点回送
RTS
信号,由于所有的网络中的工作站能够
"
听
"
到访问接
入点发出的信号,所以
CTS
能够让他们停止传送数据,这样发送端就可以发送数据和接受
ACK
信号而不会造成数据的冲突,这就间接解决了
"hiddennode"
问题。由于
RTS/CTS
需要
占用网络资源而增加了额外的网络负担,一般只是在那些大数据报上采用
(
重传大数据报会
耗费较大
)
。
最后,
802.11MAC
子层提供了另两个强壮的功能,
CRC
校验和包分片。在
802.11
协议
中,每一个在无线网络中传输的数据报都被附加上了校验位以保证它在传送的时候没有出
现错误,这和
Ethernet
中通过上层
TCP/IP
协议来对数据进行校验有所不同。包分片的功能
允许大的数据报在传送的时候被分成较小的部分分批传送。这在网络十分拥挤或者存在干扰
的情况下
(
大数据报在这种环境下传送非常容易遭到破坏
)
是一个非常有用的特性。这项技术
大大减少了许多情况下数据报被重传的概率,从而提高了无线网络的整体性能。
MAC
子层
负责将收到的被分片的大数据报进行重新组装,对于上层协议这个分片的过程是完全透明
的。
2.2.6
联合结构、蜂窝结构和漫游
802.11
的
MAC
子层负责解决客户端工作站和访问接入点之间的连接。当一个
802.11
客
户端进入一个或者多个接入点的覆盖范围时,它会根据信号的强弱以及包错误率来自动选
择一个接入点来进行连接,一旦被一个接入点接受,客户端就会将发送接受信号的频道切
换为接入点的频段。这种重新协商通常发生在无线工作站移出了它原连接的接入点的服务范
围,信号衰减后。其他的情况还发生在建筑物造成的信号的变化或者仅仅由于原有接入点中
的拥塞。在拥塞的情况下,这种重新协商实现
quot;
负载平衡
"
的功能,它将能够使得整个无
5
线网络的利用率达到最高。
802.11
的
DSSS
中一共存在着相互覆盖的
14
个频道,在这
14
个
频道中,仅有三个频道是完全不覆盖的,利用这些频道来作为多蜂窝覆盖是最合适的。如果
两个接入点的覆盖范围互相影响,同时他们使用了互相覆盖的频段,这会造成他们在信号
传输时的互相干扰,从而降低了他们各自网络的性能和效率。
2.3802.11
四种主要物理组件
1.
工作站(
Station
),构建网络的主要目的是为了在工作站间传送数据。所谓工作站,
是指配备无线网络接口的计算设备。
2.
接入点(
Access Point
),
802.11
网络所使用的帧必须经过转换,方能被传递至其他
不同类型的网络。具备无线至有线的桥接功能的设备称为接入点,接入点的功能不仅于
此,但桥接最为重要。
3.
无线媒介(
Wireless Medium
),
802.11
标准以无线媒介在工作站之间传递帧。其所定
义的物理层不只是一种,
802.11
最初标准化了两种射频物理层以及一种红外线物理层。
4.
分布式系统(
Distribution System
),当几个接入点串联以覆盖较大区域时,彼此之
间必须相互通信以掌握移动式工作站的行踪。分布式系统属于
802.11
的逻辑组件,负
责将帧转送至目的地。
下图为
802.11
网络的基本服务集(
basic service set
),其中包含了这四种物理组件。
2.4802.11 MAX
基础
2.4.1802.11
原子帧传送
原子操作意味着这一数据帧的传送非成即败,再此帧传送过程中,无论哪一步丢帧都意
味着重新传送。
6
2.4.2RTS/CTS
802.11
允许工作站使用
Request to Send(RTS)
及
Clear to Send(CTS)
信号来清空传送区域以
防止隐藏节点导致的冲突问题。
RTS
帧本身有两个目的,预约无线链路的使用权与要求接收到这一帧的其它工作站保持
沉默。和
RTS
帧一样,
CTS
帧也会令附近的工作站保持沉默。
注意附加了
RTS/CTS
帧的传输过程也为原子传输。
2.4.3
载波监听功能
802.11
具有两种载波监听功能:物理载波监听与虚拟载波监听。物理载波监听功能由物理
层提供,由于造价昂贵且对隐藏节点并无法提供必要的信息,因此大多数采用虚拟载波监
听的方法。
802.11
的帧通常会包含一个
Duration
字虚拟载波监听是由网络分配量(
NAV
)所提供。
段,用来预定一段媒体使用时间。
NAV
本身其实就是一个定时器,用来指定预计要占用媒
介多少时间。工作站会将
NAV
设定为预计使用媒介的时间,这包括完成整个操作必须用到
的所有帧。其他工作站会将
NAV
的值倒数至零。只要
NAV
的值不为零,就代表媒介处于忙
碌状态。当
NAV
为零,虚拟载波监听功能会显示媒介处于空闲状态。
NAV
是由
RTS
与
CTS
帧上的表头来载送的。
7
2.4.4
帧间间隔
不同的帧间间隔会为不同类型的传输产生不同的优先次序,当媒体闲置下来时,高优先
级的数据所等待的时间较短。因此,如有任何高优先级的数据待传,在优先级较低的帧试图
访问媒介之前,优先级较高的数据早就将媒介占为己用了。
短帧间间隔(
SIFS
),
SIFS
用于高优先级的传输场合,例如
RTS/CTS
以及肯定确认帧。
经过一段
SIFS
,即可进行高优先级的传输,媒体即处于忙碌状态。
PCF
帧间间隔(
PIFS
),
PIFS
主要被
PCF
使用在无竞争操作中,在无竞争时期,有数
据待传的工作站可以等待
PIFS
后再加以传送,其优先级高于任何竞争式传输。
DCF
帧间间隔(
DIFS
),
DIFS
是竞争式服务中最短的媒介闲置时间。如果媒介闲置时
间长于
DIFS
,则工作站可以立即对媒体进行访问。
扩展帧间间隔(
EIFS
),
EIFS
并非固定的时间间隔,只有在帧传输出现错误时才会用
到
EIFS
。
2.4.5DCF
竞争服务
大部分的传输操作会采用
DCF
(分布式协调功能),它提供了类似
Ethernet
的基于竞争
的服务。
DCF
允许多个独立的工作站彼此交互,无需通过中心控制节点,因此可以运用于
IBSS
网络或基础结构型网络。
试图传送任何数据前,工作站必须查看媒介是否处于闲置状态。若它处于忙碌状态,工作
站必须延迟访问并利用指数退避算法来避免发生冲突。
步骤如下:
1
、检查
medium
(传输媒体)是否空闲(
IDLE
)
,
检查的方式为:
medium
的空闲时间是否
大于
DIFS
,如果大于则开始传输,往后的状态将为
Busy Medium
状态,如图所示。在
Busy Medium
状态将会“拖延传送”(因为
medium
被占用)。
Defer Access
即为“拖延传
送”的时间。
8
2
、
SIFS
时间用于等待接收端返回的
Ack
信息以确认数据包的到达。另外关于
Contention
Window
的作用,实际上在检测到
medium
的空闲时间大于
DIFS
时。仍然没有立即传送
数据,而是等待一个随机的时间
random backoff time
。每一个工作站都与其他工作站不
同的随机时间,
Slot time
为最小单位,即每个随机时间都是
Slot time
的倍数!
Backoff-
time
的计算方法可以查看
802.11
标准。
2.4.6
封包帧
其原理是将多个
MSDU
单元一起传输,
MSDU
即为上面讨论的每次
medium
空闲时传
输的数据单元。这里将一次传输多个数据单元,连接包的大小不得大于
4k
。
2.4.7PCF
无竞争服务
无竞争周期一开始,接入点就会送出一个
Beacon
帧。该
Beacon
帧中的
CFPMaxDuration
(无竞争最大持续期间)字段,用来标明无竞争周期最长持续多久。所有收到此
Beacon
的
工作站会将
NAV
设定为此时间值,并将
DCF
媒介访问排除在这段期间之外。
为了避免干扰,所有无竞争传输会另外以
SIFS
(短帧间间隔)与
PIFS
(
PCF
帧间间隔)
加以隔离防护。这两者都比
DCF
帧间间隔短,因此在
DCF
周期内没有其他
DCF
工作站可以
访问媒介。
接入点接管无线媒介后,会根据轮询列表(
polling list
)分别询问与之关联的工作站是否
有数据待传。在无竞争周期内,除非关联以轮询帧提出请求,否则工作站不得传送数据。无
竞争轮询帧通常简写为
CF-Poll
。一个
CF-Poll
帧代表授权传送一个帧。除非接入点送出多次
9
轮询请求,否者每次只能传送一个帧。
轮询列表所列出的都是无竞争周期内受邀传送帧的特权工作站。工作站一旦与接入点关联,
就会被列在轮询列表中。
3802.11e WMM
应用介绍
3.1802.11e
与
802.11
的不同
802
.
11e
中采用了另外两种机制来提供
Qos
服务:
EDCA
(增强型分布式协调访问机
制)与
HCCA
(混合式协调控制信道访问机制)。
1. EDCA
机制相比于
DCF
机制主要有以下改进之处
a
、
EDCA
机制引入了业务优先级的概念,对于不同业务类型设定不同的优先级,高优
先级的多媒体实时业务
(
如视频,语音
)
具有更多的机会接入信道,减小了这些业务的时间
延迟,使得其在网络中播出更加流畅。
b
、具有更加灵活的帧间间隔
—
仲裁帧间间隔
AIFS
。不同的访问类型
AC
有着不同的
AIFS
值,
AIFS
值越小,优先级越高。小的
AIFS
值意味着视频、语音等多媒体实时业务能够
比不太敏感的一般数据通信更快地接入无线网络,从而实现实时通信。
c
、不同的访问类型
AC
在等待信道空闲以后,进入退避时的竞争窗口
CW
的大小也不
同,对于每个
AC
,有不同的
CWmin[AC]
及
CWmax[AC]
。优先级越高的
AC
,
CWmin[AC]
和
CWmax[AC]
值越小。
d
、
TXOP
是
QSTA
有权在无线媒体上发送帧交互序列引入了发送机会
(TXOP)
的概念。
的时隙时间,
QSTA
应确保它的
TXOP
的持续时间不会超出规则指定的
TXOP
最大持续时
间,如果要发送的数据太大而不能在一个
TXOP
限制内发送完,则这个站点就把该数据包
分多次发送。
e
、可以使无线接入点
(AP)
能够根据无线站点
(STA)
的数据类型与丢包、时延及抖动的敏
感度分配无线资源,提高了无线带宽的利用率和数据包的管理能力。
机制相比于
PCF
机制主要有以下改进之处
a
、由于
HCCA
机制的工作也分为竞争期
CP
和无竞争期
CFP
,在竞争期
CP
阶段,使用
EDCA
机制竞争信道,因此它具有上述的
EDCA
优于
DCF
的全部优点。
b
、
HCCA
能够在竞争期
CP
阶段轮询站点,并能基于
QSTA
具体通信业务流的需要,对
数据包进行排序,而不像
PCF
那样,只能在无竞争期
CFP
阶段轮询站点。
c
、混合协调器
HC
具有比其他站点
(STA)
都高的优先权。由于帧间隔
PIFS
比
DIFS
和
AIFS
都要短,因此
HC
无需与其他站点竞争,就可以获得信道的控制权。
d
、
HCCA
中的轮询
TXOP
具有
QoS(+)CF-Poll
帧描述的周期,在一个
TXOP
的时间间隔
内,一个
QSTA
可通过发送多个序列交互帧实现
HC
的虚拟载波检测,从而提供改进的
CFP
保护。
四、EDCA的发包方式,我们需要与PCF相比较。EDCA叫增强的分布式信道接入,与
原始的DCF相比较有以下区别。
3.2802.11e WMM
模块的原理
1、EDCA发送包示意图:
10
2
、
EDCA
与
DCF
对比示意图:
3
、
HCCA
发包示意图
关于WMM模块的实现,在驱动代码的Wlan_wmm.c中。
11
4WLAN
驱动结构介绍
4.1SDIO
驱动
由于网络接口卡挂接在
SDIO
总线上,所以在此之前我们先看一下
SDIO
的驱动结构。
其驱动在
drivers/mmc
目录下的结构为:
|-- mmc
| |-- card
| |-- core
| |-- host
主要关注的目录是
core
目录。
这个目录完成sdio总线的注册操作,相应的ops操作,以及支持mmc的代码。详
细的情况将在函数接口部分详细讨论。
4.2
详细接口及代码分析
4.2.1SDIO
注册流程分析
相应的函数流程图如下:
12
Module_init
wlan_init_module
sbi_register
Wlan_probe
wlan_add_card
sbi_register_dev
Register_netdev
从sbi_register函数开始,调用了内核注册接口sdio_register_driver,这个注册函数为
驱动程序指明了name、id、探测函数wlan_probe、移除函数wlan_remove。wlan_probe用来
初始化设备以及做一些准备工作,wlan_remove是其逆过程。
sdio_register_driver的代码在内核中,查看可知它大致完成三件事情:
1、将wlan_sdio在内核中注册。内核中有关于各种设备的一个大链表,这里将
wlan_sdio驱动挂入其中。
2、查看总线上所有wlan设备的配置空间,查找id_table与这里的wlan_sdio相同的设
备并将此设备与驱动程序相关联上(此过程在内核中完成,并不由wlan_probe完成),
再驱动与设备关联上后会调用wlan_probe函数完成对设备的一些准备工作。
3、进行设备与驱动程序的挂接工作。
添加设备是在函数sbi_register_dev中,这段过程在wlan_probe中完成,具体为
wlan_probe->wlan_add_card->sbi_register_dev,主要是为中断函数sbi_interrupt注册,
读io端口寄存器及设置块大小(用于传输缓存)。这段代码将在WLAN驱动流程分析中涉
及。
在sbi_register_dev函数里还会完成以下工作:开启SDIO设备——对应函数为
sdio_claim_host与sdio_enable_func;申明中断处理函数——对应函数为
sdio_claim_irq;获得读写数据的地址映射口——对应函数为sbi_read_ioreg-
13
>sdio_readb;设置传输数据缓冲区大小——对应函数为sdio_set_block_size。
中断状态的查询代码在sbi_get_int_status函数中,sdio不支持双路的读写数据或者命
令,因此在未检测到数据或命令的传输完成状态位置位之前不允许再次传送,通过
wmm_process_fw_iface_tx_xfer_end->os_stop_queue->netif_stop_queue函数完成停止
设备发送数据。netif_stop_queue函数为内核接口函数。
sdio_ireg & DN_LD_HOST_INT_STATUS
——
发送中断状态位、sdio_ireg &
UP_LD_HOST_INT_STATUS接受中断状态位,接受数据时需要从寄存器中获得接受数据
的长度并分配缓存空间。通过mv_get_rx_len函数及dev_alloc_skb函数完成。
mv_sdio_card_to_host函数完成从sdio卡中读取数据的过程。区分读到的数据是命令、数据
或者事件。
4.2.2WILAN
驱动流程分析
wlan_probe函数中要完成的工作(主要是wlan_add_card函数)
此函数在sdio的驱动中已经讲诉过是wlan设备的一些准备工作及注册过程,它主要完
成以下几件事情:
1)、建立net_device结构,相应的调用是alloc_etherdev函数,此函数为alloc_netdev
的上层调用。
2)、接下来是对net_device结构中一些成员的初始化,完成这此注册的函数是内核函
数register_netdev。
关于其中详细的初始化过程,其大致的流程如下:
a、对net_device结构的进一步初始化,包括指定打开、传送、关闭等函数。
b、wlan_init_sw用来初始化软件适配器部分,也就是会初始化一个wlan_adapter结构
体,同时初始化wlan中的命令响应定时器。
c、wlan_create_thread创建主线程,线程函数是wlan_service_main_thread,此函数
为wlan驱动中的主要处理函数,负责对接收数据和发送数据完成中断的相应——对应的函
数为sbi_get_int_status,此函数将会完成中断处理;对深度睡眠的设备的唤醒——对应的
函数为sbi_exit_deep_sleep;对响应设备命令的回复——对应的函数为
wlan_process_cmdresp;对设备事件的处理——对应的函数为wlan_process_event。
随后的os_sched_timeout用于超时唤醒(睡眠指定的时间后,由时间超时来唤醒),
主要是确认线程安全的建立。
d、sbi_register_dev初始化SDIO设备。
e、SET_NETDEV_DEV实现sysfs中物理设备创建一个与网络类逻辑设备的链接,也
就是说将物理设备与网络设备联系起来。
f、wlan_init_fw下载固件至网卡,主要用于命令、时间等的响应。
注意:这里我们区分一下两个函数
wlan_tx_packet
与
wlan_process_tx
。在
wlan_service_main_thread
中我们调用的是
wmm_process_tx
函数用来推送数据,而
wmm_process_tx
主要使用
wlan_process_tx
来推送数据,也就是说我们实际使用的是
wmm_process_tx
函数来推送数据。
那么另一个函数
wlan_tx_packet
呢?我们注意到这个初始化语句
dev->hard_start_xmit =
wlan_hard_start_xmit
,这是对设备用来实际操作数据推送的函数的初始化,将缓冲区中的
数据推送至网卡的这个过程将由此函数完成。这个函数实际调用的函数即是
wlan_tx_packet
函数,我们在看一下
wlan_tx_packet
,它会调用
wmm_map_and_add_skb
将数据放入
wmm
的缓冲区,然后唤醒主线程
wlan_service_main_thread
去处理,主线程会调用
wmm_process_tx
函数。
14
对于接收数据的函数来说,则是
wlan_process_rx_packet
,它是在检测到设备发出数据
到达的中断时被调用的,也就是说在
sbi_get_int_status
函数中。
15
版权声明:本文标题:wifi驱动分析文档 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1720709847a838984.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论