freebsd-dev/sys/dev/ath
Adrian Chadd f52efb6d38 Fix a corner case in STA beacon processing when a CSA is received but
the AP doesn't transmit beacons.

If the AP requests a CSA (ie, a channel switch) and then enters CAC
(channel availability check) for 60 seconds, it doesn't send beacons
and it just listens for radar events (and other things which we don't
do yet.)

Now, ath_newstate() was not resetting the beacon timer config on
a transition to the RUN state when in STA mode - it was setting
sc_syncbeacon, which simply updates the beacon config from the
contents of the next received beacon.

This means the STA never generates beacon miss events.

If the AP goes into CAC for 60 seconds and recovers, the STA will
happily receive the first beacon and reconfigure timers.
But if it gets a radar event after that, it'll change channel
again, not notify the station that it's changed channel..
and since the station is happily waiting for the first beacon
to configure the beacon timer details from, it won't ever
generate a beacon miss interrupt and it'll sit there forever
(or until the AP appears on that channel once again.)

This change forces the last known beacon timer config to be
written to hardware on a transition from CSA->RUN in STA mode.
This forces bmiss events to occur and the STA will eventually
(after a handful of beacon miss events) begin scanning for
another access point.
2011-06-29 13:21:52 +00:00
..
ath_dfs/null Commit radar detection changes missed by my previous commit. 2011-06-04 08:24:58 +00:00
ath_hal Make sure the extended regdomain word is initialised. 2011-06-28 00:01:55 +00:00
ath_rate Modify the sample rate control algorithm to only select/sample HT 2011-05-18 07:20:30 +00:00
ah_osdep.c Commit missing piece from a couple days ago - re-add ath_hal_debug. 2011-06-25 00:34:40 +00:00
ah_osdep.h Fix AR5416 and later parts when building with AH_DEBUG or similar defined: 2009-07-06 20:51:54 +00:00
if_ath_ahb.c Fix ath_ahb(4) bus attach and eeprom error handling. 2011-06-13 04:31:57 +00:00
if_ath_debug.c Break out the debug macros from if_ath.c into if_ath_debug.[ch] . 2011-01-29 05:08:21 +00:00
if_ath_debug.h Break out the debug macros from if_ath.c into if_ath_debug.[ch] . 2011-01-29 05:08:21 +00:00
if_ath_keycache.c Break the keycache management functions out into if_ath_keycache.c . 2011-03-02 17:19:54 +00:00
if_ath_keycache.h Break the keycache management functions out into if_ath_keycache.c . 2011-03-02 17:19:54 +00:00
if_ath_misc.h Migrate the sysctl related routines (statistics, debugging, etc) out of 2011-03-02 16:03:19 +00:00
if_ath_pci.c Break out the ath PCI logic into a separate device/module. 2011-03-31 08:07:13 +00:00
if_ath_sysctl.c Break out most of the HAL related tweaks into a per-HAL instance, 2011-06-23 02:38:36 +00:00
if_ath_sysctl.h Break out most of the HAL related tweaks into a per-HAL instance, 2011-06-23 02:38:36 +00:00
if_ath_tx_ht.c Enable setting the short-GI bit when TX'ing HT rates but only if the 2011-05-30 15:06:57 +00:00
if_ath_tx_ht.h The current code used the fields in ath_set11nratescenario() . Use them 2011-02-12 02:14:19 +00:00
if_ath_tx.c Add in HT protection but disable it by default. 2011-03-28 11:48:49 +00:00
if_ath_tx.h Migrate the TX path code out of if_ath and into a separate source file. 2011-01-29 11:35:23 +00:00
if_ath.c Fix a corner case in STA beacon processing when a CSA is received but 2011-06-29 13:21:52 +00:00
if_athdfs.h A few changes to make radar detection implementable in a hal_dfs/ 2011-06-04 04:14:59 +00:00
if_athioctl.h * Add some more TX descriptor error counters; this'll be helpful when 2011-05-15 15:54:34 +00:00
if_athrate.h Add a new method to the rate control modules which extract out the 2011-02-01 08:10:18 +00:00
if_athvar.h Flesh out a new HAL method to fetch the radar PHY error frame information. 2011-06-07 09:03:28 +00:00