linux AP
SNOWPIAOP
专注于linux下路由器开发
展开
-
高通ATHEROS AR93XX AP无线驱动介绍3
无线队列管理1、硬件队列共10个队列,优先级最高是queue9,最低的是queue0HAL提供了API去修改每个队列的属性2、LMAC队列ath_txq 也称为txq,与硬件队列一一对应,也为10个。用途分别是:queues 0-3 用于数据,为WMM使用queues 9 用于BEACON,为最高优先级。8 用于BCNQ,content-after-beacon原创 2015-01-23 17:33:09 · 1132 阅读 · 0 评论 -
认识屏蔽箱的特点
屏蔽箱常用来隔离外界干扰,但屏蔽箱屏蔽后还有没有信号进来呢? 实验一下就知道了. 在屏蔽箱内放置2个AP,一个作AP,另一个作STATION模式使用. 关上屏蔽箱, 用STATION去扫描一下周边的信号强度. 扫到屏蔽箱内的1个AP,信号强度为-11. 扫到屏蔽箱外的9个AP,信号强度-84至-95,低于-95的已经无法再识别出来.打开屏蔽箱,扫到屏蔽箱外的AP有50个.信号强度从-34到原创 2015-07-21 14:47:03 · 1418 阅读 · 0 评论 -
无线VLAN作用
将一个AP放置在办公网,可以收到相当多的广播帧,也会转发出相当多的广播帧。转发出去的广播帧主要来自于有线端,这些大部分是没有用的。但对AP的性能消耗是很大的。解决办法有: 1.驱动层过滤掉广播帧,防止接收广播帧消耗性能。包括PROBE REQUEST广播帧都可以不处理。只通过STA收听AP的BEACON帧完全就可以实现发现AP的作用了。 2.构建单独的无线VLAN。原创 2015-06-22 10:45:19 · 998 阅读 · 0 评论 -
一个AP无线性能优化案例
此方法将无线的低速率去掉,使得AP的发送速率维持在一个较高水平。原创 2015-06-22 07:39:44 · 4652 阅读 · 0 评论 -
wmm与802.11N的关系
为什么WMM特性关闭时,协商结果是HT DISABLE?而且测试出来的性能会降一半?原来:802.11N中要求WMM必须开。如果不开,表示不符合11N的标准,只能退到11g,最高54M.原创 2015-05-06 09:28:32 · 1882 阅读 · 0 评论 -
无线关联帧解读
关联帧有几个重要信息:因为关联帧代表着会话的建立,因此,与会话相关的参数会放在关联帧.不适合在一个会话中间动态调整的参数有:1.Listen Interval IPHONE6苹果手机为0x14即20,意思是告诉AP:"HELLO AP,当我进入省电休眠时,经过20个BEACON帧的时间周期,我会醒来,向你主动获取一下这一段时间你所缓存的数据信息并取走有关数据.在这个周期内,原创 2015-05-02 17:38:53 · 660 阅读 · 0 评论 -
无线的省电模式
AP是如何知道应该为终端缓存多少报文呢?在关联时,STA利用 Listen Interval 参数来告诉AP,STA将睡多少个信标周期便会来醒一次去获得AP上是否有缓存的信息.AP不应该丢弃任何缓存的报文除非超过了该周期.在调试AR9344时,经常发现因休眠缓存队列满而丢包的情况.需要注意了,这可能意味着需要调优一下相关的缓冲区大小以防丢包,苹果手机的省电模式会使用得非常频繁,在看原创 2015-05-02 07:02:36 · 896 阅读 · 0 评论 -
ubuntu 上airodump-ng显示无线信号强度
用airodump-ng查看无线信号强度原理是收集BEACON广播帧,可以得到强度值pwd,显示为一个负值.一般在-20 到-70之内都还可以正常使用,低于-90则信号太差,不考虑使用. 开启airodump-ng的历史命令2013 sudo vi NetworkManager.conf这一步,停止NETWORK MANAGER对接口的资源占用.增加一行原创 2015-04-26 06:42:18 · 1555 阅读 · 0 评论 -
不知为啥有时atheros 9344的MAC会挂死
ar9300DetectMacHang这个函数,偶而会走到最后return AH_TRUE; 分支,表示MAC检查挂死结果为真.然后驱动就将MAC芯片复位,硬件队列中的数据报文丢弃.导致的现象是上层业务TCP传输速率突然下降很低值,严重的时候可能降到0.应该说,无线丢包是常态,但那只是随机丢包,不象这个,是集中丢一批数据.后果也不一样,前者最多导致速率小小波动,但后者会导致速率剧烈原创 2015-04-26 06:57:16 · 913 阅读 · 0 评论 -
无线发包受堵
最近又遇到一个难题,ATHEROS 无线发包受堵导致用户上网业务慢或卡. 代码走到: ath_tx_draintxq(struct ath_softc* sc , struct ath_txq *txq,HAL_BOOL retry_tx) { struct ath_buf* bf, * lastbf; ath_bufhead bf_head;/* * NB: this assumes原创 2015-07-21 15:49:57 · 689 阅读 · 0 评论