stuck beacon with if_ath: old but unresolved issue

Adrian Chadd adrian at freebsd.org
Wed Dec 21 21:12:46 UTC 2011


So the background with this kind of issue is that "stuck beacon" can
mean a lot of things. It first means "I can't transmit the beacon",
which could be (and this isn't an exhaustive list):

* due to DMA activity (eg, it can't DMA because the bus is busy);
* due to incorrect programming (eg something I found w/ staggered
beacons and the content-after-beacon window programming, this upset
some of the later generation MACs);
* due to busy air (ie the baseband thinks the air is constantly too
busy to transmit);
* due to incorrect radio programming (eg the ANI code changes the
radio parameters in a way that makes things more sensitive to busy
air);
* due to incorrect antenna selection/programming/design - eg, the
noise floor calibration occurs based on a non-attached antenna, but
the busy air is received on the attached antenna, causing some very
incorrect values to be programmed in.
* completely busted hardware - eg, you may find your hardware has
noise spurs in the 2.4ghz region. It's sometimes possible to program
around these but quite often it isn't. (And who knows what the
manufacturer put in their driver to work around this.)

The trick is figuring out what is actually going on.

The 0th step is to try -HEAD. :-) I fixed a bunch of subtle incorrect
programming which hasn't necessarily been backported to -9. So please,
try -HEAD out.

The first step is to identify whether the bus is busy. Your bus isn't,
so I bet it's not that.

The next step is to see how busy the hardware thinks the air is. I
unfortunately need to backport this work to -HEAD in order to make
this easily doable.

If it's a "busy air" problem, hopefully we can figure out whether it's
just a case of twiddling the ANI parameters to deal with things a bit
better. But it could be due to antenna stuff, or noise spurs, or
incorrect radio programming. I don't know the pre-11n NICs at all and
I haven't yet gone looking for the legacy chipset documentation.

So please bear with me whilst I go through this transition into my new
job (which is wireless, but not hacking on FreeBSD code during paid
hours.) I do have plans to write some more debugging and diagnostic
tools but I'm just swamped at the moment.

Thanks,


Adrian


More information about the freebsd-wireless mailing list