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协议相关的配置。
相关文章推荐
- 【图论】【二分图匹配】[ZOJ 1002]Fire Net
- HDU5285.wyh2000 and pupil
- android的“播放引擎stagefright”中“OMX文件解码”
- 原地随机排列数组
- AngularJS学习笔记
- maya制作玻璃材质
- 聚类之详解FCM算法原理及应用
- hdu 2546 饭卡(01背包)
- Duanxx的STM32学习:NVIC操作
- grunt压缩多个js文件和css文件
- 开发部署前端代码
- AndroidManifest.xml - 【 manifest -> permission】
- scrollLeft的必要条件
- HDU 4920 Matrix multiplication
- mysql提示 Lock wait timeout exceeded解决办法
- MFC 中_MAX_PATH的理解
- 2015暑假集训第一周题目总结
- IOS开发单元格自定义方法之一
- java基础入门-建立可以多客户端链接的ServerSocket
- A + B Problem II(大数加法)