diff options
author | Sujith Manoharan <c_manoha@qca.qualcomm.com> | 2012-07-17 17:15:56 +0530 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-07-17 15:11:38 -0400 |
commit | ef4ad63368e6162fb0b18861748fac49edfcbd03 (patch) | |
tree | 3ac3958361fe7ae2b12b4ef9c580f1a5faa65d8a /drivers/net/wireless/ath/ath9k/main.c | |
parent | 6c43c090a92938c3e89ce3b7459f91c5159535e2 (diff) | |
download | lwn-ef4ad63368e6162fb0b18861748fac49edfcbd03.tar.gz lwn-ef4ad63368e6162fb0b18861748fac49edfcbd03.zip |
ath9k: Cleanup beacon logic
* The beaconing status routine is not required, since in
multi-VIF cases the HW beacon parameters should not be
re-configured.
* Remove SC_OP_TSF_RESET - when a beaconing interface comes
up the first time, the TSF has to be reset.
* Simplify ath9k_allow_beacon_config().
* Handle setting/clearing the SWBA interrupt properly.
* Remove the TSF mangling in IBSS mode, it is not required.
* General code cleanup.
Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/ath9k/main.c')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/main.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c index 2a155ce2d461..e411189abd7d 100644 --- a/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c @@ -236,7 +236,7 @@ static bool ath_complete_reset(struct ath_softc *sc, bool start) if (!test_bit(SC_OP_BEACONS, &sc->sc_flags)) goto work; - ath_set_beacon(sc); + ath9k_set_beacon(sc); if (ah->opmode == NL80211_IFTYPE_STATION && test_bit(SC_OP_PRIM_STA_VIF, &sc->sc_flags)) { @@ -1533,24 +1533,10 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw, } } - /* - * In case of AP mode, the HW TSF has to be reset - * when the beacon interval changes. - */ - if ((changed & BSS_CHANGED_BEACON_INT) && - (vif->type == NL80211_IFTYPE_AP)) - set_bit(SC_OP_TSF_RESET, &sc->sc_flags); - - /* Configure beaconing (AP, IBSS, MESH) */ - if (ath9k_uses_beacons(vif->type) && - ((changed & BSS_CHANGED_BEACON) || - (changed & BSS_CHANGED_BEACON_ENABLED) || - (changed & BSS_CHANGED_BEACON_INT))) { - ath9k_set_beaconing_status(sc, false); - if (!bss_conf->enable_beacon) - avp->is_bslot_active = false; - ath_beacon_config(sc, vif); - ath9k_set_beaconing_status(sc, true); + if ((changed & BSS_CHANGED_BEACON_ENABLED) || + (changed & BSS_CHANGED_BEACON_INT)) { + if (ath9k_allow_beacon_config(sc, vif)) + ath9k_beacon_config(sc, vif, changed); } if (changed & BSS_CHANGED_ERP_SLOT) { |