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低功耗模式的更多相关文章

  1. Android KitKat 4.4 Wifi移植AP模式和网络共享的调试日志

    Tethering技术在移动平台上已经运用的越来越广泛了.它能够把移动设备当做一个接入点,其它的设备能够通过Wi-Fi.USB或是Bluetooth等方式连接到此移动设备.在Android中能够将Wi ...

  2. android蓝牙的调试(博通蓝牙工作 and 低功耗模式)

    首先结合项目从整体上去把握这部分: 蓝牙模块中一个比较核心的文件是bluetooth.c, 在我们上电的时候, 会调用这个文件中bt_enable()这个函数, 在这个函数里面先调用set_bluet ...

  3. Android WIFI 分析(一)

    本文基于<深入理解Android WiFi NFC和GPS 卷>和 Android N 代码结合分析   WifiService 是 Frameworks中负责wifi功能的核心服务,它主 ...

  4. 关于WIFI的工作模式--AP MODE/STATION MODE

    wifi的concurrent mode 所谓wifi的共存模式,有以下几种: station mode + station mode station mode + ap mode station m ...

  5. android wifi框架

    ---恢复内容开始--- frameworks/base/services/java/com/android/server/wifi 中的ReadMe文件 WifiService: Implement ...

  6. STM32低功耗模式与烟雾报警器触发信号电路设计

    1.STM32的3种低功耗模式 STM32有3种低功耗模式,分别是睡眠模式.停机模式和待机模式. 2.STM32在不同模式下的电流消耗 a.工作模式  消耗电流在27mA至36mA之间. b.睡眠模式 ...

  7. android wifi P2P CONNECT, INVITE和JOIN流程选择

    android wifi P2P CONNECT, INVITE和JOIN流程选择

  8. android wifi ANR问题分析总结

    android wifi ANR问题分析总结 1 看看main进程阻塞在那里? 2 调用关系的函数阻塞在那里? 3 最终阻塞函数的阻塞前的log以及状态

  9. Android Immersive Mode (沉浸模式) 还是 Translucent Bars (透明状态栏)

    Immersive Mode (沉浸模式) 还是 Translucent Bars (透明状态栏) [科普]什么叫真正的“沉浸式”状态栏? 为什么在国内会有很多用户把「透明栏」(Translucent ...

随机推荐

  1. shell编程之运算符

    declare声明变量类型 declare    [+ / -] [选项]  变量名 - :给变量设定类型属性 + :取消变量的类型属性 -a :将变量声明为数组型 -i :将变量声明为整数型 -x ...

  2. 【循序渐进MVC】第一回——一物多用Project.json依赖关系之dependencies节点

    Project.json统一了ASP.NET vNext之前版本的packages.config.NuGet 配置(nuspec)以及项目文件(csprojs):并集成在Project.json中. ...

  3. Computer Vision 学习 -- 图像存储格式

    本文把自己理解的图像存储格式总结一下. 计算机中的数据,都是二进制的,所以图片也不例外. 这是opencv文档的描述,具体在代码里面,使用矩阵来进行存储. 类似下图是(BGR格式): 图片的最小单位是 ...

  4. JSP目录

    JSP目录   课时1    jsp概述和背后原理31:11 课时2    三种jsp的scriptlet语法27:29 课时3    jsp的注释14:00 课时4    JSP4个域对象的作用域3 ...

  5. Sql Server 2008卸载后再次安装一直报错

    sql server 2008卸载之后再次安装一直报错问题. 第一:由于上一次的卸载不干净,可参照百度完全卸载sql server2008 的方式 1. 用WindowsInstaller删除所有与S ...

  6. Android 测试Handler的基本使用

    package com.sherlock.app_handler; import java.io.ByteArrayOutputStream; import java.io.InputStream; ...

  7. [12]APUE:高级 I/O

    一.分散聚离(向量) I/O [a] readv / writev #include <sys/uio.h> ssize_t readv(int fd, const struct iove ...

  8. 【Mail】JavaMail介绍及发送邮件(一)

    JavaMail介绍 JavaMail是SUN提供给开发人员在应用程序中实现邮件发送和接收功能而提供的一套标准开发类库,支持常用的邮件协议,如SMTP.POP3.IMAP,开发人员使用JavaMail ...

  9. 在安卓下打包cocos2d-js 3.6项目with ProtoBuf.js

    项目用到了cocos2d-js 3.6和ProtoBuf.js,但是打包成apk时运行时总是报错(evaluatedOK == JS_FALSE),没有具体的文件和行号报错信息. 只能一个一个文件排查 ...

  10. Debian使用相关

    1)将普通用户添加到sudo组 首先安装sudo: root@~#: apt-get install sudo 然后添加将wzc用户添加到sudo组: root@~#: usermod -a -G s ...