三、wpa_driver_ops内部定义很多函数指针,通过这些定义的函数指针,WPAS能隔离上层使用者和具体的driver。
const struct wpa_driver_ops wpa_driver_nl80211_ops = {
.name = "nl80211", //driver wrapper的名称
.desc = "Linux nl80211/cfg80211", //描述信息
.get_bssid = wpa_driver_nl80211_get_bssid, //用于获取 bssid
.get_ssid = wpa_driver_nl80211_get_ssid,
.set_key = driver_nl80211_set_key,
.scan2 = driver_nl80211_scan2, //扫描函数
.sched_scan = wpa_driver_nl80211_sched_scan,
.stop_sched_scan = wpa_driver_nl80211_stop_sched_scan,
.get_scan_results2 = wpa_driver_nl80211_get_scan_results, //获取扫描结果
.deauthenticate = driver_nl80211_deauthenticate,
.authenticate = driver_nl80211_authenticate, //触发 authentication 操作
.associate = wpa_driver_nl80211_associate, //触发 association 操作
.global_init = nl80211_global_init, //driver wrapper 全局初始化函数,该函数的返回值保存在 wpa_global 成员变量 drv_pri 数组中
.global_deinit = nl80211_global_deinit,
.init2 = wpa_driver_nl80211_init, //driver wrapper 初始化函数
.deinit = driver_nl80211_deinit,
.get_capa = wpa_driver_nl80211_get_capa,
.set_operstate = wpa_driver_nl80211_set_operstate,
.set_supp_port = wpa_driver_nl80211_set_supp_port,
.set_country = wpa_driver_nl80211_set_country,
.get_country = wpa_driver_nl80211_get_country,
.set_ap = wpa_driver_nl80211_set_ap,
.set_acl = wpa_driver_nl80211_set_acl,
.if_add = wpa_driver_nl80211_if_add,
.if_remove = driver_nl80211_if_remove,
.send_mlme = driver_nl80211_send_mlme,
.get_hw_feature_data = wpa_driver_nl80211_get_hw_feature_data,
.sta_add = wpa_driver_nl80211_sta_add,
.sta_remove = driver_nl80211_sta_remove,
.hapd_send_eapol = wpa_driver_nl80211_hapd_send_eapol,
.sta_set_flags = wpa_driver_nl80211_sta_set_flags,
.hapd_init = i802_init,
.hapd_deinit = i802_deinit,
.set_wds_sta = i802_set_wds_sta,
.get_seqnum = i802_get_seqnum,
.flush = i802_flush,
.get_inact_sec = i802_get_inact_sec,
.sta_clear_stats = i802_sta_clear_stats,
.set_rts = i802_set_rts,
.set_frag = i802_set_frag,
.set_tx_queue_params = i802_set_tx_queue_params,
.set_sta_vlan = driver_nl80211_set_sta_vlan,
.sta_deauth = i802_sta_deauth,
.sta_disassoc = i802_sta_disassoc,
.read_sta_data = driver_nl80211_read_sta_data,
.set_freq = i802_set_freq,
.send_action = driver_nl80211_send_action,
.send_action_cancel_wait = wpa_driver_nl80211_send_action_cancel_wait,
.remain_on_channel = wpa_driver_nl80211_remain_on_channel,
.cancel_remain_on_channel = wpa_driver_nl80211_cancel_remain_on_channel,
.probe_req_report = driver_nl80211_probe_req_report,
.deinit_ap = wpa_driver_nl80211_deinit_ap,
.deinit_p2p_cli = wpa_driver_nl80211_deinit_p2p_cli,
.resume = wpa_driver_nl80211_resume,
.send_ft_action = nl80211_send_ft_action,
.signal_monitor = nl80211_signal_monitor,
.signal_poll = nl80211_signal_poll,
.send_frame = nl80211_send_frame,
.shared_freq = wpa_driver_nl80211_shared_freq,
.set_param = nl80211_set_param,
.get_radio_name = nl80211_get_radio_name,
.add_pmkid = nl80211_add_pmkid,
.remove_pmkid = nl80211_remove_pmkid,
.flush_pmkid = nl80211_flush_pmkid,
.set_rekey_info = nl80211_set_rekey_info,
.poll_client = nl80211_poll_client,
.set_p2p_powersave = nl80211_set_p2p_powersave,
.start_dfs_cac = nl80211_start_radar_detection,
.stop_ap = wpa_driver_nl80211_stop_ap,
#ifdef CONFIG_TDLS
.send_tdls_mgmt = nl80211_send_tdls_mgmt,
.tdls_oper = nl80211_tdls_oper,
#endif /* CONFIG_TDLS */
.update_ft_ies = wpa_driver_nl80211_update_ft_ies,
.get_mac_addr = wpa_driver_nl80211_get_macaddr,
.get_survey = wpa_driver_nl80211_get_survey,
.status = wpa_driver_nl80211_status,
.switch_channel = nl80211_switch_channel,
#ifdef ANDROID_P2P
.set_noa = wpa_driver_set_p2p_noa,
.get_noa = wpa_driver_get_p2p_noa,
.set_ap_wps_ie = wpa_driver_set_ap_wps_p2p_ie,
#endif /* ANDROID_P2P */
#ifdef ANDROID
.driver_cmd = wpa_driver_nl80211_driver_cmd, //用于处理和具体驱动相关的命令
#endif /* ANDROID */
.vendor_cmd = nl80211_vendor_cmd,
.set_qos_map = nl80211_set_qos_map,
.set_wowlan = nl80211_set_wowlan,
.roaming = nl80211_roaming,
.set_mac_addr = nl80211_set_mac_addr,
};
相关推荐
安卓15 wifi 打开源码分析-从上层到wifi驱动及wpa_supplicant启动
以高通 wifi 驱动为例,insmod 的时候会调用 hdd_driver 的 init 函数,其会调用对外的字符设备驱动提供的 write 函数wlan_hdd_state_ctrl_param_write。一般在 boot 阶段 wifi 驱动已经安装了,这里主要是调用字符设备驱动写接口告诉 hdd_driver wifi 打开了。wifi 设置获取到 WifiManager 这个代理调用setWifiEnabled 打开 wifi。向状态机发送CMD_WIFI_TOGGLED 消息。
【转载】wifi详解(一)
作为全球公认的局域网权威,IEEE802工作组建立的标准在过去二十年内在局域网领域独领风骚。这些协议包括了802.3Ethernet协议、802.5TokenRing协议、802.3z100BASE-T快速以太网协议。在1997年,经过了7年的工作以后,IEEE发布了802.11协议,这也是在无线局域网领域内的第一个国际上被认可的协议。
Android wifi探究二:Wifi framework层源码分析
上一篇博客初步认识了wpa_supplicant的作用和使用方法,并且尝试着梳理了wifi的大框架,不过,java层的框架我们忽略了,没有分析,也就是说上一篇博客非常肤浅的支出了wifi代码的结构,仅此而已,那么这篇博客,将尝试梳理wifi的java层框架。
用户层调用nl80211的例子
nl80211 是基于 802.11 netlink 的用户空间接口,用于无线硬件的新 cfg80211 配置系统。它们一起旨在取代旧的无线扩展。
Android wifi源码分析(二) Wifi关闭流程
接着上一篇,这篇说一下Wifi的关闭流程。 由上一篇可以知道,framework层提供的wifi开关接口都是**setWifiEnabled**,只是参数不同而已。*true*表示开启wifi、*false*表示关闭wifi。
Android 5.1系统源码Wifi模块中wifiSettings源码分析
在谷歌提供的安卓源码中,网址如下:http://androidxref.com ,初学者学习,分析,留疑问,并且长期更新,修改错误,补充。 安卓的系统wifi模块,一般在设置----->Wifi中 WifiSettings显示的就是打开wifi的那个界面
Android Wi-Fi源码分析之wpa_supplicant初始化(一)
一. wpa_supplicant配置编译将对应的平台的wpa_supplicant包解压改名为wpa_supplicant_8替换掉external下的wpa_supplicant_8目录 执行: source build/envsetup.sh lunch qiyang_6dq-user根据平台定制所需要的wpa_supplican版本, 修改: BoardConfig.mk
【Android-WIFI】(五) Roaming机制HAL层源码分析
我们首先来看看 wpa_supplicant 进程的初始化。在 wpa_supplicant 进程的 main 函数中,初始化了 wpa_global 对象供整个进程使用。wpa_supplicant 进程主要是向上接受上层关于 WiFi 的请求,然后向下层内核驱动发送通信。所以这里通过 IO 多路复用来轮询监听相应的事件。wpa_global 中的 每一个 wpa_supplicant 对象都是一个 wpa_supplicant 接口,其中都配置了对应的驱动接口。可选驱动如上图所示。
Wifi模块—源码分析Wifi启动(Android P)
一、前言 Android P在wifi这块改动挺大的,Wifi到AndoidO之后不再使用jni,所以AndroidP也一样不再使用jni来实现Java代码与本地的C/C++代码交互,而是使用HIDL,Hardware Interface Define Language。摒弃了以前的hardware/libhardware_legacy/wifi/wifi.c作为底层接口,所以得重新梳理下整个w...
Wifi wpa_supplicant 到驱动的联系
Int wpa_driver_wext_scan(void *priv, const u8 *ssid,size_t ssid_len)中的LINE1174:if(ioctl(drv->ioctl_sock,SIOCSIWWSCAN,&iwr) < 0)从这里可以看出wpa_supplicant是通过IOCTL来调用SOCKET与driver进行通信的,并给DRIVER下达SIOCSIWSCAN这个命令。//创建了接受wpa_supplicant 的socket接口。//这个函数超级重要,后面详细的看。
STM32CubeMX最新版下载安装全攻略(附官网访问问题解决方案)
本文提供了STM32CubeMX最新版的详细下载与安装指南,并针对国内开发者常见的官网访问缓慢、注册验证邮件延迟等问题,给出了实用的解决方案和备选策略。通过清晰的步骤解析,帮助用户快速部署这一强大的STM32图形化配置工具,从而高效启动嵌入式开发项目。
Wifi模块—源码分析Wifi启动1(Android P)
一 前言 android框架层的函数调用是出了名的绕,开发者可能因为各种原因比如避免冲突、条件判断、函数封装等等各种各样需要考虑的因素而使得框架层的方法调用显得比较长,所以看源码的时候先看大体流程,有需要再深入某些重要的细节。不然一入源码深似海,会淹没在茫茫源码中。繁杂的东西,自己只要不凌乱,找好线索,进行总结,便会简单。 二 图示调用流程 ...
Docker新手必看:解决‘Unable to find image’错误的完整指南
本文针对Docker新手常见的‘Unable to find image’错误,提供了完整的排查与解决指南。文章深入剖析了权限不足、网络连接失败、Docker服务未运行等核心原因,并给出了将用户加入docker组、配置镜像加速器等实用解决方案,帮助读者彻底理解并解决镜像拉取问题。
Wifi模块—源码分析Wifi启动2(Android P)
一 前言 在上一篇分析了wifi启动的流程,从Android应用层一直分析到了Java框架层,这次我们接着往下走流程。如果没有看上一篇的建议先回头看看 Wifi模块—源码分析Wifi启动1(Android P)这样能更好地认知和把握wifi的启动过程。 二 图示调用流程 这个调用流程图也是基于上一篇的流程图进一步完善的得到的。 三 代码具体流程 1 应...
Tessent ATPG进阶:解锁多种Fault Model的工程实践与选型指南
本文深入探讨Tessent ATPG中多种Fault Model的工程实践与选型策略,涵盖Stuck-at、Transition、Bridge等核心模型的应用场景与配置技巧。通过实际案例解析,展示如何组合不同Fault Model提升芯片测试覆盖率,特别针对汽车电子、超低功耗芯片等复杂场景提供专业解决方案。
【测试】echo发送和接收TCP/UDP数据包|shell 发送TCP/UDP数据包
目录 通过/dev/tcp、/dev/udp shell给tcp或udp服务发送16进制报文指令 通过/dev/tcp、/dev/udp (https://blog.youkuaiyun.com/u010039418/article/details/86251470) 通过/dev/tcp、/dev/udp可以直接在shell脚本中发起tcp、udp连接,方便又高效,平时用于测试啥的还是挺方便的。 直接发送 格式 /dev/udp/ip/port 比如要向本地10001端口发送数据,可以使用 ec.
android wifi-wpa_supplicant_源码分析(一)
wpa_supplicant 是一个开源软件项目,它实现了 Station 对无线网络进行管理和控制的功能。一、main函数分析 (/external/wpa_supplicant_8/wpa_supplicant/main.c) int main(int argc, char *argv[]) { int c, i; struct wpa_interface *ifaces, *iface; int iface_count, exit...
给新考上北大软件与微电子学院的同学——利用北大资源
利用北大资源 首先,恭喜大家考入北京大学!希望软院成为各位人生旅途中快乐的一站! 说明:限于本人搜集能力有限,本文只列出本人常利用的资源(上课老师会告知的资源也不在此列),本文所述的资源只是北大可利用资源的一个子集。 一、 图书馆资源:北京大学图书馆的资源数量,我就不多废话了,这里主要说一样怎样利用这些资源。 a) 传统资源分布及查找:这种资源主要包括纸质书箱、杂志、光盘等内...
Android wpa_supplicant源码分析–扫描scan过程
1 扫描过程 一个完整的扫描过程 下发命令–>wpa_s构建扫描参数–>驱动扫描–>wpa_s接收到驱动的扫描结果 接收到framework/wpa_cli下发的SCAN命令 if (os_strncmp(buf, "SCAN ", 5) == 0) { wpas_ctrl_scan(wpa_s, buf + 5, reply, reply_size, &am...
【AN7581】AN7581 SDK编译环境搭建操作说明
安装编译需要的工具包。
深度学习驱动的股票波动率预测:LSTM和Transformer模型的实战解析
股票市场的波动率一直是金融领域关注的焦点之一。波动率预测对于风险管理、期权定价和资产配置至关重要。深度学习模型,如长短时记忆网络(LSTM)和Transformer,已经在时间序列数据分析领域取得了显著的成就。本博客将向您展示如何使用这两种深度学习模型来进行股票波动率预测,提供清晰的思路和相应的Python代码,以帮助您理解和应用这一重要任务。
Android wpa_supplicant 源码分析一 -- 简介
官方介绍地址:http://w1.fi/wpa_supplicant/devel/index.html 简介: wpa_supplicant 是适用于 Linux、BSD、Mac OS X 和 Windows 的 WPA 请求方,支持 WPA 和 WPA2 (IEEE 802.11i / RSN)。它适用于台式机/笔记本电脑和嵌入式系统。Supplicant 是客户端工作站中使用的 IEEE 802.1X/WPA 组件。它与 WPA Authenticator 实现密钥协商,并控制 wlan 驱动程序.
PyCharm配置SSH远程解释器第3步时弹框报错:com.google.gson.stream.MalformedJsonException: Expected value at l...如何解决?
🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。
Android wifi源码分析(一) Wifi启动流程
最近在解决wifi的一些问题,故研究下wifi源码。 该源码是基于Android4.3,其他版本略有改动,大致流程一样。 这篇主要说一下wifi的启动流程。
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
Devexpress16.2.6破解工具
Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具
android wifi-wpa_supplicant_源码分析(二)
二、几种重要的结构体: 1、wpa_interface 用于描述一个无线网络设备(/external/wpa_supplicant_8/wpa_supplicant/wpa_supplicant_i.h) struct wpa_interface { /** * confname - Configuration name (file or profile) name * * This ...
锂电池充电器电路设计 里面有电路
锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。
Android wpa_supplicant 源码分析四 -- wpa_supplicant_add_iface()
wpa_supplicant_add_iface() wpa_supplicant_init_iface(wpa_s, &t_iface) // 读取wpa_supplicant.conf配置文件, /data/vendor/wifi/wpa/wpa_supplicant.conf , /vendor/etc/wifi/wpa_supplicant_overlay.conf wpa_config_read(w...
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
1507



被折叠的 条评论
为什么被折叠?



