12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- From: Sujith Manoharan <[email protected]>
- 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 <[email protected]>
- ---
- --- 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,
|