您的位置:首页 > 其它

lsdk无线驱动与管理层的接口

2015-07-27 17:02 274 查看

lsdk无线驱动与管理层的接口

在linux的应用层,有wlanconfig 和iwconfig,iwpriv三个命令来配置和管理无线接口,在内核里有三种不同的处理方式与三者对应。

Wlanconfig 主要是创建虚拟接口; iwconfig 和iwpriv则可以配置无线接口。

当然还有hostpad也会对无线虚拟接口进行配置。

命令

Ioctl号

驱动对应的函数

应用的dev

wlanconfig

SIOCDEVPRIVATE 0x89FF,这是设备的私有接口。

Ath_ioctl()

Wifi0和wifi1这种物理接口。

Iwconfig/iwpriv/iwlist

SIOCIWFIRST---SIOCIWLAST (0x8B00—0x8BFF)

Linux/net/dev.c下的wext_handle_ioctl;然后是dev->wireless_handlers

Wifi0和athX两种类型的接口。

与wlanconfig命令相关的接口

Wlanconfig命令应用于wifi0这一类的物理接口,它的ioctl关键字是由linux系统提供的SIOCDEVPRIVATE(0x89FF), 专门为设备设计的私有接口,由dev->ndo_do_ioctl进行处理。

在设备一级的驱动里wifi0对应的处理函数ath_ioctl对应wlanconfig命令的处理。

athdev_net_ops是wifi0硬件接口的操作接口。

Iwlist和iwconfig

Iw系列命令有iwconfig iwlist和iwpriv三种。

dev->wireless_handlers 这是net_device专门用于处理无线配置的接口。

dev->wireless_handlers=ieee80211_iw_handler_def

ieee80211_iw_handler_def这个结构有相应的驱动给出。

iwlist和iwconfig是比较简单,它们的第二级命令都对应一个SIOCIWFIRST --- SIOCIWLAST之间的命令字。

如iwlist ath1channel的命令,对应的IOCTL是:SIOCGIWFREQ(0x8B05)。

其中它有standard和private两种,iwlist和iwconfig使用standard的处理部分。





与iwpiv相关的接口

Iwpriv命令配置过程:

1. 读取出ifname接口上所有的priv信息。

2. Priv[i] 与cmdname进行对比,找出正确的priv[i].

3. 由于Priv[i].cmd有一些不是内核定义的,找到getparam或是setpram的priv,把priv[i].cmd赋值给subcmd。再使用getparam或是setpram的cmd进行ioctl操作。

Getparam在内核的处理过程如下:



iwpriv wifi0 全是与芯片有关的配置。

wifi0 Available private ioctls :

setHALparam (8BE0) : set 2 int & get 0

getHALparam (8BE1) : set 1 int & get 1 int

DMABcnRespT (0000) : set 1 int & get 0

GetDMABcnRespT (0000) : set 0 & get 1 int

SWBcnRespT (0001) : set 1 int & get 0

GetSWBcnRespT (0001) : set 0 & get 1 int

….

get_decline_addb (1091) : set 0 & get 1 int

iwpriv ath0 主要与mac层和80211协议相关的配置。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: