aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorBob Copeland <me@bobcopeland.com>2009-07-29 10:29:03 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-04 16:43:25 -0400
commitae6f53f25f9803212d1985b5eb5a03111f439c24 (patch)
tree6906896b6ca8cd95134fcf4ee893160d556c351d /drivers/net
parent57c9fff3d0c5d77bc7910717faeca4e8a018b1ee (diff)
ath5k: update PCU opmode whenever a new interface is added
Previously, we would store the operating mode at interface up time, but only update the PCU registers when the next reset happened. The result is that if beacon configuration (ops->bss_info_changed) happens before ops->config, we will program the wrong things into the timer registers. Consequently, beacons won't work in AP mode until after a reset (channel change, scan etc.). This is fragile anyway so just program the opmode as soon as mac80211 gives it to us. Signed-off-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/wireless/ath/ath5k/base.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c
index 7db32ce3dbd8..55ee976ab6d7 100644
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1117,6 +1117,8 @@ ath5k_mode_setup(struct ath5k_softc *sc)
1117 struct ath5k_hw *ah = sc->ah; 1117 struct ath5k_hw *ah = sc->ah;
1118 u32 rfilt; 1118 u32 rfilt;
1119 1119
1120 ah->ah_op_mode = sc->opmode;
1121
1120 /* configure rx filter */ 1122 /* configure rx filter */
1121 rfilt = sc->filter_flags; 1123 rfilt = sc->filter_flags;
1122 ath5k_hw_set_rx_filter(ah, rfilt); 1124 ath5k_hw_set_rx_filter(ah, rfilt);
@@ -2768,6 +2770,7 @@ static int ath5k_add_interface(struct ieee80211_hw *hw,
2768 } 2770 }
2769 2771
2770 ath5k_hw_set_lladdr(sc->ah, conf->mac_addr); 2772 ath5k_hw_set_lladdr(sc->ah, conf->mac_addr);
2773 ath5k_mode_setup(sc);
2771 2774
2772 ret = 0; 2775 ret = 0;
2773end: 2776end: