ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

ecos无线驱动掉线问题解决方案分析

2021-04-18 10:51:39  阅读:370  来源: 互联网

标签:掉线 队列 wl phy ecos wlc 数据包 无线


1、无线数据包的主要数据流(从pci总线到phy error)

PCIDRVTAB_ENTRY
wl_pci_probeàwl_attach
netdev_attach
wl_dpc
wl_ecos_comm_wlc_dpc
wlc_dpc(出现tx phy error)

2、出现问题

当使用大流量无线数据包冲击路由器的时候,会出现无线掉线丢包严重,甚至掉线问题,(特别是使用迅雷下载)但是正常使用不会出现该现象。

3、问题分析

分析问题主要是原厂和我方沟通、讨论,最主要的是修改然后验证结果,定位到问题点是大流量无线数据包冲击路由器的时候,出现phy发不出数据包,然后无线出现掉线。原厂原来的给的补丁如下:

static int phy_err_cnt = 0;
phy_err_cnt++;

if( phy_err_cnt >= 3 )
{
WL_ERROR((“wl%d: HAMMERING info, CNT = %d\n”, wlc_hw->unit , wlc_hw->phyerr_cnt ));
wl_init(wlc->wl);
phy_err_cnt = 0;
}

patch原理:
在wlc_dpc要向上层发送数据包是,phy累计3次没有发出数据包,则调用wl_init。这种办法不能完全规避问题,只是暂时缓解,有的时候甚至根本没有效果,并且如果出现一次无线掉线问题,会连续出现,所以原厂给的这种规避措施根本没有效果。

4、 解决办法

原厂从我方提供的日志文件和与我方的沟通和验证中,导致phy分析出现异常的可能原因,经过多次的验证,得出结论:
1) 无线收发数据包的缓冲队列溢出;

2) 无线数据包进入ampdu模块出现异常

鉴于以上两点,暂时无法从根本上解决问题,所以给出了以下的规避方法:
1)当rx缓冲队列溢出时,添加清空缓冲队列的处理,并设置wl_init标志位为1

在接收到无线数据包后,无线收包缓冲队列一系列的数据会被更新;可能出现的情况是,phy发不出数据包的时候,是因为无线缓冲队列已经溢出,重启无线wl_init,但是重启后无线缓冲队列并没有被释放,当再次接收到无线数据包的时候,还是会出现rx缓冲队列overflow,所以还是会连续出现无线掉线情况;

这种情况的规避措施:

在收到无线数据包的时候,更新缓冲队列接收数据长度之前,使用一个临时变量,记录原来的缓冲队列的溢出长度,然后接收数据包,更新缓冲队列的数据,得到新的缓冲队列的溢出长度。如果缓冲队列有溢出,则重启无线;

  1. 当接收无线数据包,在无线聚合模块中,当等待超时时,在原有的处理上,设置wl_init的标志位为1
    在ampdu(无线聚合)模块中,在wlc_ampdu_resp_timeout函数中,当ampud的应答器超时时,原来做了一些处理,比如一些统计信息的递增,主要做的工作是wlc_ampdu_release_all_ordered,丢掉了对应的ampdu的队里中的一部分包,然后等待下一个数据包序列到达,我们添加的动作是设置wl_init的标志位为1。

3)添加Big_hammer机制
为了解决视屏卡顿,在wlc_watchdog_timer中,添加big_hammer机制。如果phyerr_cnt累计3次发不出包,或是数据包在插入tx的有优先级权重队列过程失败或是tx队列累计3次,内存块释放失败时,设置视频卡顿的标志位为1,启用Big_hammer。
4)wl_init/Big_hammer/Wl_down对无线处理比较

wl_init 在保留原来连接不断开的情况下,调用wl_reste重置无线的一些模块,比如bmac和ampdu以及phy等,然后调用wlc_reinit对reset的模块进行重新初始化,在此过程中,只会极少的丢包,客户端几乎感知不到;

wl_bighammer在保留原来连接不断开的情况下,清空rx缓冲队列,down掉无线但是调用wlc_radio_upd迅速恢复,并调用wl_join恢复无线连接

wl_down 会关闭无线,断开无线连接。

三者的对无线的影响由小到大,恢复时间由短到长,处理也会从表面更深入。其实,选择wl_bighammer是对wl_init和wl_down的一种折中,既不会导致无线掉线,也会从一定程度上恢复无线的基本功能,使之正常运行。

5、无线性能测试项

无线主要测试一下项目:

1、无线近距离和远距离lan到wan、无线加密、无线桥接(wisp、wds、apclient)

2、无线无干扰环境下衰减、穿墙(分别穿1、2、3堵墙)、无线覆盖

3、无线抗干扰、挂机老化、高低温、待机量、小包转发

标签:掉线,队列,wl,phy,ecos,wlc,数据包,无线
来源: https://blog.51cto.com/u_7777817/2715063

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有