用AR9285做的hostap,在繁忙时总是出现错误提示,一旦出现错误,则暂时不能上网,找了很长时间也没找到调整的选项,这个错误在ap频道有重叠的时候会经常出现:
ath0: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 4)
ath1: stuck beacon; resetting (bmiss count 0)
ath1: stuck beacon; resetting (bmiss count 4)
对于它的解决方法,包括国外的网站上都没有有效的解决方法,只是给出一个大致的原理,出现这个错误的原因是丢失过多的beacons帧,经过艰苦的追踪,发现在if_ath.c里有定义,默认是4:
/usr/src/sys/dev/ath/if_ath.c
int ath_bstuck_threshold = 4; /* max missed beacons */
SYSCTL_INT(_hw_ath, OID_AUTO, bstuck, CTLFLAG_RW, &ath_bstuck_threshold,
0, "max missed beacon xmits before chip reset");
第二句也给了另外一个提示:这是一个内核变量,变量名是bstuck,知道变量名就好办了,sysctl -a | grep bstuck就会发现:
hw.ath.bstuck: 4
在信号不好的时候,会轻易超过4,把它改为50,基本上不再提示了。