diff options
Diffstat (limited to 'package/kernel/mac80211/patches/303-ath9k-Use-sta_state-callback.patch')
-rw-r--r-- | package/kernel/mac80211/patches/303-ath9k-Use-sta_state-callback.patch | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/303-ath9k-Use-sta_state-callback.patch b/package/kernel/mac80211/patches/303-ath9k-Use-sta_state-callback.patch new file mode 100644 index 0000000000..03f1304e87 --- /dev/null +++ b/package/kernel/mac80211/patches/303-ath9k-Use-sta_state-callback.patch @@ -0,0 +1,55 @@ +From: Sujith Manoharan <c_manoha@qca.qualcomm.com> +Date: Fri, 17 Oct 2014 07:40:08 +0530 +Subject: [PATCH] ath9k: Use sta_state() callback + +Instead of using the sta_add()/sta_remove() callbacks, +use the sta_state() callback since this gives +more fine-grained control. + +Signed-off-by: Sujith Manoharan <c_manoha@qca.qualcomm.com> +--- + +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -1547,6 +1547,31 @@ static int ath9k_sta_remove(struct ieee8 + return 0; + } + ++static int ath9k_sta_state(struct ieee80211_hw *hw, ++ struct ieee80211_vif *vif, ++ struct ieee80211_sta *sta, ++ enum ieee80211_sta_state old_state, ++ enum ieee80211_sta_state new_state) ++{ ++ struct ath_softc *sc = hw->priv; ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); ++ int ret = 0; ++ ++ if (old_state == IEEE80211_STA_AUTH && ++ new_state == IEEE80211_STA_ASSOC) { ++ 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) { ++ ret = ath9k_sta_remove(hw, vif, sta); ++ ath_dbg(common, CONFIG, ++ "Remove station: %pM\n", sta->addr); ++ } ++ ++ return ret; ++} ++ + static void ath9k_sta_set_tx_filter(struct ath_hw *ah, + struct ath_node *an, + bool set) +@@ -2471,8 +2496,7 @@ struct ieee80211_ops ath9k_ops = { + .remove_interface = ath9k_remove_interface, + .config = ath9k_config, + .configure_filter = ath9k_configure_filter, +- .sta_add = ath9k_sta_add, +- .sta_remove = ath9k_sta_remove, ++ .sta_state = ath9k_sta_state, + .sta_notify = ath9k_sta_notify, + .conf_tx = ath9k_conf_tx, + .bss_info_changed = ath9k_bss_info_changed, |