[PATCH] ath9k: set hw opmode while changing interface type
From: Rajkumar Manoharan <hidden>
Date: 2011-01-09 16:52:28
The commit "ath9k: Add change_interface callback" is failed to set hw opmode while changing interface type on runtime. Not setting opmode fails to generate beacons on changing to AP mode. Cc: stable@kernel.org Cc: Jouni Malinen <redacted> Signed-off-by: Rajkumar Manoharan <redacted> --- drivers/net/wireless/ath/ath9k/beacon.c | 1 + drivers/net/wireless/ath/ath9k/main.c | 4 ++++ 2 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/ath/ath9k/beacon.c b/drivers/net/wireless/ath/ath9k/beacon.c
index 385ba03..efa573b 100644
--- a/drivers/net/wireless/ath/ath9k/beacon.c
+++ b/drivers/net/wireless/ath/ath9k/beacon.c@@ -338,6 +338,7 @@ void ath_beacon_return(struct ath_softc *sc, struct ath_vif *avp) sc->beacon.bslot[avp->av_bslot] = NULL; sc->beacon.bslot_aphy[avp->av_bslot] = NULL; sc->nbcnvifs--; + avp->av_bslot = -1; } bf = avp->av_bcbuf;
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index f90a6ca..648a761 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c@@ -1456,6 +1456,8 @@ static int ath9k_change_interface(struct ieee80211_hw *hw, { struct ath_wiphy *aphy = hw->priv; struct ath_softc *sc = aphy->sc; + struct ath_hw *ah = sc->sc_ah; + struct ath_vif *avp = (void *)vif->drv_priv; struct ath_common *common = ath9k_hw_common(sc->sc_ah); int ret = 0;
@@ -1470,6 +1472,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw, ret = -ENOBUFS; goto out; } + sc->sc_flags |= SC_OP_TSF_RESET; break; case NL80211_IFTYPE_STATION: /* Stop ANI */
@@ -1488,6 +1491,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw, vif->type = new_type; vif->p2p = p2p; + ah->opmode = avp->av_opmode = new_type; out: mutex_unlock(&sc->mutex); return ret;
--
1.7.3.5