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@xxxxxxxxxx Cc: Jouni Malinen <Jouni.Malinen@xxxxxxxxxxx> Signed-off-by: Rajkumar Manoharan <rmanoharan@xxxxxxxxxxx> --- 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 -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html