misc/169336: [ath] ANI isn't triggering in a busy/noisy environment

Adrian Chadd adrian at FreeBSD.org
Sat Jun 23 00:50:08 UTC 2012

>Number:         169336
>Category:       misc
>Synopsis:       [ath] ANI isn't triggering in a busy/noisy environment
>Confidential:   no
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-bugs
>State:          open
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 23 00:50:07 UTC 2012
>Originator:     Adrian Chadd
>Release:        9.0-STABLE i386, with -HEAD net80211/ath
I've noticed that ANI isn't triggering when in a noisy environment.

* The ANI poll is called every 1/10th of a second, which updates listenTime;
* However, since we're still doing things via the MIB interrupt (grr), it's triggering frequently upon a hardware counter (in this case, CCK)
* .. so I see upwards of 1600 CCK errors a second;
* .. but ar5416ProcessMibIntr() calculates cckPhyErrCount based on how many just overflowed, so it's seeing the 200 CCK errors that just occured, and that's not greater than cckTrigHigh;
* .. so it's never calling ar5416AniCckTrigger().
* Then, ar5416AniRestart() is called, which sets ofdm/cck error count and listentime to 0.

Now, because of all of this, the ANI code never seems to trigger on _enough_ of any kind of CCK errors.

It's also unclear how the math in ar5416AniPoll() should work. From what I can gather, listenTime is likely supposed to be a value out of 1000. listenTime just never gets that high at the moment, as it keeps being cleared by ar5416AniRestart() whenever the MIB event fires.


Not sure.


More information about the freebsd-bugs mailing list