2023-12-19 分类:未分类
阅读() 评论(0)
本软件下载地址未录入,如想要软件请评论,我们会补上!
1. 问题 在调试7615时,当采用“iwpriv ra0 set SiteSurvey=1”指令手动扫描时,发现扫描会一直循环进行形成死循环停不下来。 2. 问题排查 刚开始排查问题时,以为是扫描流程有问题,所以从头跟踪扫描的各个环节,跟踪过程中发现扫描流程均ok,但是有一处异常,即扫描的停止条件始终不会满足。跟踪扫描停止条件,最后追踪到信道列表设置环节,问题就出在信道列表的初始值设置上,初始值的错误是由于在建立信道列表时重复计算了2.4G和5G的信道数量,去掉重复计算项即可。 3. 扫描状态机流程 3.1. 注册扫描事件接口索引表及流程图 mt_wifi_open() mt_wifi_init()//wifi初始化 MlmeInit() ApMlmeInit() APSyncStateMachineInit()//注册状态机,其中注册了扫描事件 AP_SYNC_IDLE// 当前状态为SYNC_IDLE空闲状态 APMT2_PEER_PROBE_REQ //扫描客户端probeReq帧请求事件 APMT2_PEER_BEACON //扫描客户端beacon帧请求事件 APMT2_MLME_SCAN_REQ //主动发送扫描事件 AP_SCAN_LISTEN // 当前状态为扫描侦听状态 APMT2_MLME_SCAN_REQ //向管理队列主动发送扫描事件 APMT2_PEER_BEACON //扫描客户端beacon帧请求事件 APMT2_PEER_PROBE_RSP //扫描客户端probeRsp帧应答事件 APMT2_SCAN_TIMEOUT //扫描超时事件 APMT2_MLME_SCAN_CNCL //停止扫描事件 RTMPInitTimer()//初始化定时器 3.2. 扫描接口索引表及流程图 Set_SiteSurvey_Pr>
oc()//
扫描接口 ApSiteSurvey_by_wdev() APMT2_MLME_SCAN_REQ //发送扫描请求消息 APMlmeScanReqAction()//扫描请求事件接口 FindScanChannel(pAd, 0);//查找待扫描信道的初始值 ScanNextChannel()//扫描下一个信道 判断当前扫描信道是否为0或者扫描暂停 scan_ch_restore()//为0则存储扫描结果 AsicSwitchChannel()//不为0切换到当前选择的信道启动扫描 RTMPSetTimer()//启动(扫描)定时器 将扫描状态机当前状态设置为AP_SCAN_LISTEN//这样才能触发超时接口 APScanTimeoutAction()//扫描定时器时间到调用超时接口 3.3. 扫描超时处理接口索引表及
流程图 APScanTimeoutAction()//信道停留超时接口 FindScanChannel()//查找下一个待扫描的信道 NextChannel() pAd>ChannelListNum //上述问题就出在这个变量的值上面 ScanNextChannel()//扫描下一个信道 上述问题就出在NextChannel中的pAd>ChannelListNum变量值上面,循环不停扫描时该值在2.4G是22,在5G时是44,都超出了正常的对应频段的信道列表值,导致始终无法达到扫描的终止条件,即超过信道列表值时返回信道值为0。 4. 信道列表建立流程 4.1. 接口索引表 MBSS_Open()//建立MBSS端口 APStartUpForMbss()// RTMPSetPhyMode()//根据是否打开了EXT_BUILD_CHANNEL_LIST宏调用不同策略 BuildChannelListEx//根据不同国家码建立不同的信道list GetChRegion()//获取国家码分类结构体 CreateChList()//创建list FillChList()根据国家码分类结构体填充每个波段的信道 BuildChannelList()//建立通用信道list BuildChannelListFor2G()//建立通用2.4G全信道list BuildChannelListFor5G()//建立通用5G全信道list 4.2. 流程图 APStartUpForMbss()会在MBSS_Open()即建立MBSS端口时调用,也会在其他接口中调用,比如update信道list时调用。在RTMPSetPhyMode()接口中,会根据是否打开了EXT_BUILD_CHANNEL_LIST宏来调用不同的信道生成策略,BuildChannelListEx()会根据不同国家码建立不同的信道list,BuildChannelList()会建立通用信道list。 在GetChRegion()接口中,会根据国家码字段去查找ChRegion[]数组并生成一个国家码分类结构体变量进行返回,CreateChList()会根据返回的国家码分类结构体变量生成对应的信道list。 4.3. 相关结构体 例如: DZ国家不支持5G,只支持2.4G /*Algeria*/ CH_DESP Country_DZ_ChDesp[] = { { 1, 13, 20, BOTH, FALSE}, /*2402~;2482MHz, Ch 1~;13, Max BW: 40 */ { 0}, /* end*/ }; AR国家支持2.4G和5G,其中2.4G有一个波段,5G有4个波段 /*Argentina*/ CH_DESP Country_AR_ChDesp[] = { { 1, 13, 20, BOTH, FALSE}, /*2402~;2482MHz, Ch 1~;13, Max BW: 40 */ { 36, 4, 17, BOTH, FALSE}, /*5170~;5250MHz, Ch 36~;48, Max BW: 40 */ { 52, 4, 20, BOTH, TRUE}, /*5250~;5330MHz, Ch 52~;64, Max BW: 40 */ { 100, 11, 20, BOTH, TRUE}, /*5490~;5710MHz, Ch 100~;140, Max BW: 40 */ { 149, 5, 30, BOTH, FALSE}, /*5735~;5835MHz, Ch 149~;165, Max BW: 40 */ { 0}, /* end*/ };
>
标题:《7612/7615 MTK信道扫描分析》
链接:
https://www.lvruan.com/app/178054
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
LvRuan.com=绿软=绿盟=绿色软件联盟情怀第一 18年 老牌 下载站 绿色 安全 无广告 无捆绑