Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 25 Feb 2012 22:11:11 -0800
From:      Adrian Chadd <adrian@freebsd.org>
To:        freebsd-wireless@freebsd.org
Subject:   [ath] please test -HEAD: trying to find/fix the rate control and bgscan races
Message-ID:  <CAJ-VmokkN3hTb%2BZxgc9iF-udfYvKsFpW8bYzgaqwB%2BfT5z2aJQ@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
Hi all,

In my "make ALL the old NICs work" work, I found that this AR5211 NIC
would panic almost instantly after the first set of background scans.

What was happening was an invalid rix was being passed. What really
was happening was:

* the nic would come up in 11a mode and establish a high throughput
rate - eg, 36/54megabit rate;
* the best rix in the sample rate module would be high, say 5;
* then the operating mode would change (eg for scanning) and a frame
would be tx'ed with the operating mode being 11b;
* .. and it would pick best_rix, which would then happily return 5
* .. and that's outside of what the current rate map is, which for 11b
is a few entries smaller than 11a.

Similar weird things have happened before for 11bg/11a NICs as well as
the 11n NICs. But this crashed frequently rather than having "weird
stuff"  happen.

So I've committed some stuff to -HEAD which prints out warnings in
case a rate control lookup is done with the current rate table not
matching what ath_rate_sample was setup for.

here's an example of what I saw:


wlan0: Ethernet address: 00:03:7f:11:a3:f3
wlan0: link state changed to UP
ar5416PerCalibrationN: NF calibration didn't finish; delaying CCA
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
wlan0: link state changed to DOWN
wlan0: link state changed to UP
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
[100548] ath0: ath_rate_findrate: currates != sc_currates!
[100548] ath0: ath_rate_findrate: currates != sc_currates!
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
[100279] ath0: ath_rate_findrate: currates != sc_currates!
ath0: bad series0 hwrate 0x1b, tries 1 ts_status 0x0
[100279] ath0: ath_rate_findrate: currates != sc_currates!


I'd really appreciate it if other atheros NIC users would try out
-HEAD and let me know if they see the same kind of issue. If you do
then please email the list with some information and we'll see if we
can track it down.

Also as you can see above (this is happening on the AR9280 in 11ng
mode), I get "bad series0 hwrate" messages. I need to investigate this
a little closer.  That's the 1mbit CCK rate - I should print out what
the current operating mode is, as I bet that is occuring when we're in
an 11a mode. 11ng includes the CCK rates.

Thanks,


Adrian



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAJ-VmokkN3hTb%2BZxgc9iF-udfYvKsFpW8bYzgaqwB%2BfT5z2aJQ>