android wifi SWOL低功耗模式
1 睡眠模式RX代码流程
ar_wal_rx_patch.c::patch_rx_process_recv_status//调用rx_ctxt->data_ind_handler
-> data_rx.c::wal_rx_install_data_ind//实际调用install_data_ind,具体函数patch_rx_install_data_ind
//设置rx_ctxt->data_ind_handler = data_rx
-> partial_reorder/data_rx.c::data_rx//调用ctxt->tgt_reorder_buff_store_and_release = data_rx_sta_store_and_release
-> data_rx_sta.c::data_rx_sta_store_and_release
-> data_rx_sta.c::data_rx_sta_deliver//调用ctxt->tgt_rx_deliver
-> data_rx_sta.c::data_rx_sta_register_deliver_cb//设置ctxt->tgt_rx_deliver = _offldmgr_data_handler
-> offload_mgr.c::_offldmgr_data_handler//调用p_offldmgr_ctxt->offload[OFFLOAD_EXTWOW].data_handler = _wlan_extwow_rx_data_handler
-> wlan_extwow.c::_wlan_extwow_rx_data_handler
对应的log:
//以wow为例,不是swol
enter patch_rx_process_recv_status call rx_ctxt->data_ind_handler 001.
enter data_rx call ctxt->tgt_reorder_buff_store_and_release.
enter data_rx_sta_store_and_release call data_rx_sta_deliver.
enter data_rx_sta_deliver call ctxt->tgt_rx_deliver.
enter _offldmgr_data_handler with CONFIG_FULL_PARTIAL_SUPPORT, i = 11 .
enter _wow_can_deliver_rxdata_tohost.
match happened
2 低功耗模式代码流程
ar_wal_rx_patch.c::patch_rx_process_recv_status//调用rx_ctxt->data_ind_handler
-> data_rx.c::wal_rx_install_data_ind//实际调用install_data_ind,具体函数patch_rx_install_data_ind
//设置rx_ctxt->data_ind_handler = data_rx
-> partial_reorder/data_rx.c::data_rx//调用ctxt->host_reorder_buff_store_and_release = _htt_tgt_rx_store_and_release_hl
-> htt_tgt_rx_event.c::_htt_tgt_rx_store_and_release_hl
对应的log:
enter patch_rx_process_recv_status call rx_ctxt->data_ind_handler 002.
enter _wlan_extwow_indoor_rx_data_process wow_does_magic_pattern_match return FALSE.
enter patch_rx_process_recv_status call rx_ctxt->data_ind_handler 002.
match happened
waker_mac_index:99
EW: indoor GPIO cnt=1
enter _htt_tgt_rx_store_and_release_hl wlan_extwow_indoor_rx_data_process, vdev->vdev_id = 0.
3 添加的代码patch
htt_tgt_rx_event.c::_htt_tgt_rx_store_and_release_hl中2182行
wal_peer_t *peer;
wal_vdev_t *vdev;
WLAN_EXTWOW_CTX *pExtwow;
if ( g_pdev_p != NULL) {
pExtwow = (WLAN_EXTWOW_CTX *)g_pdev_p->extwow_ctx; peer = wal_peer_id_to_peer((wal_pdev_t *)(g_pdev_p->pdev_handle), (A_UINT32)peer_id);
if (peer != NULL) {
vdev = peer->vdev;
}
} if (g_pdev_p != NULL && vdev != NULL && pExtwow != NULL) {
A_PRINTF_ALWAYS("enter _htt_tgt_rx_store_and_release_hl pExtwow->swol_assist_enable = %d. \n", pExtwow->swol_assist_enable);
if (pExtwow->swol_assist_enable) {
if (wlan_extwow_indoor_rx_data_process(g_pdev_p, vdev->vdev_id, peer_id, tid, abf)) {
A_PRINTF_ALWAYS("enter _htt_tgt_rx_store_and_release_hl wlan_extwow_indoor_rx_data_process, vdev->vdev_id = %d. \n", vdev->vdev_id);
break;
}
}
}
android wifi SWOL低功耗模式的更多相关文章
- Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志
Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...
- android蓝牙的调试(博通蓝牙工作 and 低功耗模式)
首先结合项目从整体上去把握这部分: 蓝牙模块中一个比较核心的文件是bluetooth.c, 在我们上电的时候, 会调用这个文件中bt_enable()这个函数, 在这个函数里面先调用set_bluet ...
- Android WIFI 分析(一)
本文基于<深入理解Android WiFi NFC和GPS 卷>和 Android N 代码结合分析 WifiService 是 Frameworks中负责wifi功能的核心服务,它主 ...
- 关于WIFI的工作模式--AP MODE/STATION MODE
wifi的concurrent mode 所谓wifi的共存模式,有以下几种: station mode + station mode station mode + ap mode station m ...
- android wifi框架
---恢复内容开始--- frameworks/base/services/java/com/android/server/wifi 中的ReadMe文件 WifiService: Implement ...
- STM32低功耗模式与烟雾报警器触发信号电路设计
1.STM32的3种低功耗模式 STM32有3种低功耗模式,分别是睡眠模式.停机模式和待机模式. 2.STM32在不同模式下的电流消耗 a.工作模式 消耗电流在27mA至36mA之间. b.睡眠模式 ...
- android wifi P2P CONNECT, INVITE和JOIN流程选择
android wifi P2P CONNECT, INVITE和JOIN流程选择
- android wifi ANR问题分析总结
android wifi ANR问题分析总结 1 看看main进程阻塞在那里? 2 调用关系的函数阻塞在那里? 3 最终阻塞函数的阻塞前的log以及状态
- Android Immersive Mode (沉浸模式) 还是 Translucent Bars (透明状态栏)
Immersive Mode (沉浸模式) 还是 Translucent Bars (透明状态栏) [科普]什么叫真正的“沉浸式”状态栏? 为什么在国内会有很多用户把「透明栏」(Translucent ...
随机推荐
- 获取android控件的高度
问题 如何获取一个控件的长和高,相信很多朋友第一眼看见这个问题都会觉得很简单,直接在onCreate里面调用getWidth.getMeasuredWidth不就可以获得了吗,但是,事实上是并没有简单 ...
- 自定义ViewGroup
ViewGroup --->A ViewGroup is a special view that can contain other views (called children.) The v ...
- (引用)Python 元素、元组、列表、字典的区别
转载:http://www.th7.cn/Program/Python/201407/231060.shtml 元素: 元组:tuple=('nice','to','meet','you') 列表:l ...
- include,import,@class的区别
1.#include与#import功能一样,都是导入头文件 2.区别是#include是单纯导入头文件,如果重复导入头文件,头文件就被导入多分 3.#import在导入头文件之前会检查之前是否导入过 ...
- Android开发LogCat一直不停输出的解决方法
加一个过滤器 如图,选择Saved Filter + 然后如下图: 然后再选择OK就可以啦!!!
- Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试
CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...
- 开源安卓Http文件下载框架file-downloader的使用
file-downloader FileDownloader(https://github.com/wlfcolin/file-downloader)是本人开源的一个安卓Http文件下载框架,是根据自 ...
- iscsi: 多路径
作者:吴香伟 发表于 2014/10/8 版权声明:可以任意转载,转载时务必以超链接形式标明文章原始出处和作者信息以及版权声明 上图(a)给出了计算机的总线结构,SCSI磁盘挂在SCSI卡上,SCSI ...
- 2016/10/28 很久没更了 leetcode解题 3sum问题进阶版4sum
18. 4Sum Given an array S of n integers, are there elements a, b, c, and d in S such that a + b + c ...
- 关于RPC
简单的说,RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果. RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯 ...