`
20386053
  • 浏览: 461951 次
文章分类
社区版块
存档分类
最新评论

wifi ioctl

 
阅读更多
WIFI ioctl中SIOCSIWSCAN命令从应用程序到内核再到驱动
应用程序中:
ioctl(skfd, SIOCSIWSCAN , &wrq);
其中,#define SIOCSIWSCAN0x8B18
socket的ioctl先看net/socket.c的sock_ioctl
对于无线:
0x8B00 ~ 0x8BFF 调用net/core/dev.c --> dev_ioctl
dev_ioctl中执行到default中,最后调用了wireless_process_ioctl
对wireless_process_ioctl,又跑到了default中,如果有handler,最后到ioctl_standard_call中;
没有handler时,使用老的接口(dev->do_ioctl)。
handler = get_handler(dev, cmd);
if(handler != NULL) {
/* Standard and private are not the same */
if(cmd < SIOCIWFIRSTPRIV)
return ioctl_standard_call(dev,
ifr,
cmd,
handler);
else
return ioctl_private_call(dev,
ifr,
cmd,
handler);
}
/* Old driver API : call driver ioctl handler */
if (dev->do_ioctl) {
return dev->do_ioctl(dev, ifr, cmd);
}

有handler时,在具体WIFI驱动中,有类似如下实现:
netdev->wireless_handlers = (struct iw_handler_def *)&iwctl_handler_def;
const struct iw_handler_defiwctl_handler_def =
{
......
.get_wireless_stats = &iwctl_get_wireless_stats,
.standard= (iw_handler *) iwctl_handler,
......
}
static const iw_handleriwctl_handler[] =
{
(iw_handler) iwctl_commit, // SIOCSIWCOMMIT
......
......
(iw_handler) iwctl_giwrange,// SIOCGIWRANGE
......
......
#if WIRELESS_EXT > 13
(iw_handler) iwctl_siwscan, // SIOCSIWSCAN
(iw_handler) iwctl_giwscan, // SIOCGIWSCAN
#else
(iw_handler) NULL,
(iw_handler) NULL,
#endif
......
};
rt_ioctl_siwessid

分享到:
评论

相关推荐

    使用ioctl扫描wifi信号获取AP的essid、mac地址等属性

    在本文中,我们将探讨如何利用`ioctl`系统调用在Linux环境下编程扫描并获取Wi-Fi接入点(AP)的相关信息,如ESSID(服务集标识符)、MAC地址、占用的信道和工作频率。该方法适用于熟悉C语言的开发者,且无需深入理解...

    MTK-WIFI驱动-源码分析.doc

    在 `rt28xx_ioctl` 函数中,驱动处理了 WIFI 设备的各种控制命令,例如设置 WIFI 频率、通道等。 驱动的优化 MTK-WIFI 驱动源码分析可以帮助开发者更好地理解 WIFI 驱动的工作机理,并帮助解决问题和优化驱动。...

    WIFI驱动分析

    `ioctl`系统调用在WIFI驱动中扮演着至关重要的角色。它允许用户空间的应用程序对内核空间的设备进行定制化的控制。例如,它可以用于设置网络接口的参数,读取设备的状态,或者启动某种特定的功能。在WIFI驱动的上下...

    全志系列芯片android与Linux内核WIFI驱动源码

    驱动通过`ioctl`命令和`netlink`接口与用户空间应用交互,实现连接、断开、扫描等功能。 4. **Linux内核中的WIFI驱动** 在Linux内核中,WIFI驱动遵循`mac80211`子系统,这是一个通用的802.11 MAC层实现。驱动主要...

    Wifi模块全总结.pdf

    最后,IOCTL的调用逻辑以及数据的传送与接收都是WIFI模块工作中的核心环节。数据传送过程涉及传输超时和接收模式的选择,这些环节的设计和实现将直接影响到无线网络的稳定性和效率。 通过以上的知识点梳理,我们...

    android_wifi_porting_eng.doc

    ### Android WiFi移植指南 本文档将引导您逐步了解如何在定制版Android系统中添加新的WiFi驱动并确保WiFi功能正常运行。此文档最初是为Android 2.1版本编写的,但其中的概念和技术同样适用于之前的Android版本,...

    WIFI学习总结.pdf

    wpa_supplicant 可以通过 ioctl 函数与 WIFI 驱动交互,ioctl 函数可以控制 WIFI 驱动的行为。 Wpa_cli 调试工具 Wpa_cli 是一个用于调试 WIFI 网络的工具。Wpa_cli 可以扫描 WIFI 网络,连接 WIFI 网络,并查看 ...

    君正T31 平台移植wifi 模块rtl8188 的问题及解决方法.docx

    - 驱动修改:首先,针对Realtek的官网驱动,需要修改Makefile,添加`EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT`编译选项,以适应T31平台的3.10.x内核。这是为了确保驱动能够正确编译...

    获取WIFI模块的MAC地址,供设备唯一性使用

    这些API通常是系统级别的函数,如在Linux中,可以使用`ifconfig`命令或`ioctl`系统调用来获取接口的MAC地址。 3. **解析返回值**:API调用通常会返回一个字符串,包含MAC地址的12个十六进制数字。你需要解析这个...

    底层JNI获取WIFI MAC 地址

    JNI在很多场合被用到,比如提高性能、访问操作系统特定功能或库,以及在本例中,用于底层操作,如获取WiFi MAC地址。在Android应用开发中,由于安全和权限限制,直接通过Java代码获取MAC地址可能较为复杂,因此,...

    rtl8192EU_WiFi_linux_v5.6.3.1驱动的修改patc支持centos7使用.7z

    标题中的“rtl8192EU_WiFi_linux_v5.6.3.1驱动的修改patch支持centos7使用.7z”指的是一个专为CentOS 7系统优化的RTL8192EU无线网卡驱动程序的补丁包。这个驱动主要用于解决Linux系统下RTL8192EU芯片组的无线网络...

    无线开发文档

    4. **内核定义的IOCTL**:这部分介绍了Android系统中内核层面提供的用于控制WiFi驱动的IOCTL接口。 ### 五、Linux MMC栈 1. **工作模型**:这部分介绍了Linux MMC栈的基本工作原理,包括其与其他组件(如主机控制...

    Ralink_wifi_driver初始化关闭流程分析

    RtmpPhyNetDevInit函数中定义了WIFI设备上下文切换时所用的回调函数,这些回调函数中包含了设备开启或关闭时需要执行的具体操作,以及数据发送和处理ioctl命令的回调函数。 当WIFI设备开启时,会调用MainVirtualIF_...

    ap6212a0_a33_sc3817r_服务器验证通过_bt已经通了_wifi需要修改配置_需要再次验证_20170626_1549.7z

    Wifi interfaces. If the device doesn't want to support tethering over Wifi this should be empty. An example would be "softap.*" --&gt; &lt;string-array translatable="false" name="config_tether_wifi_...

    wifi module--ipprism

    IPPRISM与Interpeak的Wireless API紧密集成,后者提供了一个统一的IOCTL基础命令接口,用于配置和管理无线芯片组。这种集成允许新驱动程序和芯片组轻松集成,确保客户应用程序使用Wireless API时可以轻松迁移。 ###...

    基于ARM的WIFI无线网络在智能家居监控中的应用.pdf

    同时,对视频数据采集的技术细节进行了描述,包括使用V4L2进行视频采集的过程和对设备操作的Linux ioctl系统调用。 6. 系统安全性和稳定性: 在系统的安全性设计上,考虑到智能家居监控系统的特殊性,确保系统能...

    7.Linux驱动开发-数码相册项目、360WIFI驱动移植介绍.pdf

    - `ioctl`函数用于设备控制,例如获取或设置设备的状态。 - `framebuffer`可能是一个自定义的库,用于处理图形输出,确保图像正确地显示在屏幕上。 - `touch_input.h`和`key_input.h`包含触摸屏和按键输入的处理函数...

    Linux 应用开发流程详细笔记

    理解Framebuffer工作方式,以及如何通过ioctl系统调用来控制屏幕的显示内容是必要的。同时,若采用图形库,还需要学习其编程接口,实现图形界面的布局和交互。 6. **Web界面**:实现通过Web查看信息,意味着应用...

    bcmdhd.zip_-baijiahao_bcm hnd_broadcom_rawz3j_博通

    博通 WIFI 驱动核心代码 支持多种WIFI芯片

Global site tag (gtag.js) - Google Analytics