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

本文标签: 无线数据网络设备函数