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
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sat Jun 23 00:50:07 UTC 2012
>Closed-Date:
>Last-Modified:
>Originator:     Adrian Chadd
>Release:        9.0-STABLE i386, with -HEAD net80211/ath
>Organization:
>Environment:
>Description:
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.

>How-To-Repeat:

>Fix:
Not sure.

>Release-Note:
>Audit-Trail:
>Unformatted:


More information about the freebsd-bugs mailing list