Merge remote-tracking branch 'jk/vfs' into work.misc
[cascardo/linux.git] / drivers / net / wireless / ath / ath9k / main.c
index 7594650..7cb65c3 100644 (file)
@@ -718,9 +718,12 @@ static int ath9k_start(struct ieee80211_hw *hw)
        if (!ath_complete_reset(sc, false))
                ah->reset_power_on = false;
 
-       if (ah->led_pin >= 0)
+       if (ah->led_pin >= 0) {
                ath9k_hw_set_gpio(ah, ah->led_pin,
                                  (ah->config.led_active_high) ? 1 : 0);
+               ath9k_hw_gpio_request_out(ah, ah->led_pin, NULL,
+                                         AR_GPIO_OUTPUT_MUX_AS_OUTPUT);
+       }
 
        /*
         * Reset key cache to sane defaults (all entries cleared) instead of
@@ -864,9 +867,11 @@ static void ath9k_stop(struct ieee80211_hw *hw)
 
        spin_lock_bh(&sc->sc_pcu_lock);
 
-       if (ah->led_pin >= 0)
+       if (ah->led_pin >= 0) {
                ath9k_hw_set_gpio(ah, ah->led_pin,
                                  (ah->config.led_active_high) ? 0 : 1);
+               ath9k_hw_gpio_request_in(ah, ah->led_pin, NULL);
+       }
 
        ath_prepare_reset(sc);
 
@@ -1154,6 +1159,7 @@ void ath9k_calculate_summary_state(struct ath_softc *sc,
                bool changed = (iter_data.primary_sta != ctx->primary_sta);
 
                if (iter_data.primary_sta) {
+                       iter_data.primary_beacon_vif = iter_data.primary_sta;
                        iter_data.beacons = true;
                        ath9k_set_assoc_state(sc, iter_data.primary_sta,
                                              changed);
@@ -1250,7 +1256,7 @@ static int ath9k_add_interface(struct ieee80211_hw *hw,
 
        mutex_lock(&sc->mutex);
 
-       if (config_enabled(CONFIG_ATH9K_TX99)) {
+       if (IS_ENABLED(CONFIG_ATH9K_TX99)) {
                if (sc->cur_chan->nvifs >= 1) {
                        mutex_unlock(&sc->mutex);
                        return -EOPNOTSUPP;
@@ -1300,7 +1306,7 @@ static int ath9k_change_interface(struct ieee80211_hw *hw,
 
        mutex_lock(&sc->mutex);
 
-       if (config_enabled(CONFIG_ATH9K_TX99)) {
+       if (IS_ENABLED(CONFIG_ATH9K_TX99)) {
                mutex_unlock(&sc->mutex);
                return -EOPNOTSUPP;
        }
@@ -1360,7 +1366,7 @@ static void ath9k_enable_ps(struct ath_softc *sc)
        struct ath_hw *ah = sc->sc_ah;
        struct ath_common *common = ath9k_hw_common(ah);
 
-       if (config_enabled(CONFIG_ATH9K_TX99))
+       if (IS_ENABLED(CONFIG_ATH9K_TX99))
                return;
 
        sc->ps_enabled = true;
@@ -1379,7 +1385,7 @@ static void ath9k_disable_ps(struct ath_softc *sc)
        struct ath_hw *ah = sc->sc_ah;
        struct ath_common *common = ath9k_hw_common(ah);
 
-       if (config_enabled(CONFIG_ATH9K_TX99))
+       if (IS_ENABLED(CONFIG_ATH9K_TX99))
                return;
 
        sc->ps_enabled = false;
@@ -1563,13 +1569,13 @@ static int ath9k_sta_state(struct ieee80211_hw *hw,
        struct ath_common *common = ath9k_hw_common(sc->sc_ah);
        int ret = 0;
 
-       if (old_state == IEEE80211_STA_AUTH &&
-           new_state == IEEE80211_STA_ASSOC) {
+       if (old_state == IEEE80211_STA_NOTEXIST &&
+           new_state == IEEE80211_STA_NONE) {
                ret = ath9k_sta_add(hw, vif, sta);
                ath_dbg(common, CONFIG,
                        "Add station: %pM\n", sta->addr);
-       } else if (old_state == IEEE80211_STA_ASSOC &&
-                  new_state == IEEE80211_STA_AUTH) {
+       } else if (old_state == IEEE80211_STA_NONE &&
+                  new_state == IEEE80211_STA_NOTEXIST) {
                ret = ath9k_sta_remove(hw, vif, sta);
                ath_dbg(common, CONFIG,
                        "Remove station: %pM\n", sta->addr);
@@ -1953,7 +1959,7 @@ static int ath9k_get_survey(struct ieee80211_hw *hw, int idx,
        struct ieee80211_channel *chan;
        int pos;
 
-       if (config_enabled(CONFIG_ATH9K_TX99))
+       if (IS_ENABLED(CONFIG_ATH9K_TX99))
                return -EOPNOTSUPP;
 
        spin_lock_bh(&common->cc_lock);
@@ -2003,7 +2009,7 @@ static void ath9k_set_coverage_class(struct ieee80211_hw *hw,
        struct ath_softc *sc = hw->priv;
        struct ath_hw *ah = sc->sc_ah;
 
-       if (config_enabled(CONFIG_ATH9K_TX99))
+       if (IS_ENABLED(CONFIG_ATH9K_TX99))
                return;
 
        mutex_lock(&sc->mutex);