summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ath/ath9k/main.c
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@openwrt.org>2014-06-11 16:17:54 +0530
committerJohn W. Linville <linville@tuxdriver.com>2014-06-19 15:49:17 -0400
commitc083ce9980109065297aa2171d18980a0ac92bb9 (patch)
treea3975c566a168d48be0345470f7886b583840acc /drivers/net/wireless/ath/ath9k/main.c
parentbefcf7e70e899db62307408259c51e0435bd9b3f (diff)
downloadlwn-c083ce9980109065297aa2171d18980a0ac92bb9.tar.gz
lwn-c083ce9980109065297aa2171d18980a0ac92bb9.zip
ath9k: send powersave frame on channel switch
While leaving from or entering to active channel context, send out nullfunc frame to inform to the AP about the presence of station. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: Rajkumar Manoharan <rmanohar@qti.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.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index bb73a23f19f8..d8a4510f963a 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1043,6 +1043,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
/* XXX - will be removed once chanctx ops are added */
avp->chanctx = sc->cur_chan;
list_add_tail(&avp->list, &sc->cur_chan->vifs);
+ ath_chanctx_check_active(sc, avp->chanctx);
an->sc = sc;
an->sta = NULL;
@@ -1061,6 +1062,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
{
struct ath_softc *sc = hw->priv;
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
+ struct ath_vif *avp = (void *)vif->drv_priv;
mutex_lock(&sc->mutex);
@@ -1083,6 +1085,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
if (ath9k_uses_beacons(vif->type))
ath9k_beacon_assign_slot(sc, vif);
+ ath_chanctx_check_active(sc, avp->chanctx);
mutex_unlock(&sc->mutex);
return 0;
@@ -1141,6 +1144,7 @@ static void ath9k_remove_interface(struct ieee80211_hw *hw,
ath9k_ps_restore(sc);
ath_tx_node_cleanup(sc, &avp->mcast_node);
+ ath_chanctx_check_active(sc, avp->chanctx);
mutex_unlock(&sc->mutex);
}
@@ -1733,6 +1737,8 @@ static void ath9k_bss_info_changed(struct ieee80211_hw *hw,
if (ath9k_hw_mci_is_enabled(sc->sc_ah))
ath9k_mci_update_wlan_channels(sc, true);
}
+
+ ath_chanctx_check_active(sc, avp->chanctx);
}
if (changed & BSS_CHANGED_IBSS) {