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