aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/mlme.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-09-08 05:05:09 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-09-11 15:53:34 -0400
commitfe3fa827314b877486c515a001c3e6f604f6f16f (patch)
tree64b04c2ee021bf8428bc2f5e9370459bf0ae9459 /net/mac80211/mlme.c
parent69e6c010fd5f5015d3cc64718fbe266face93770 (diff)
mac80211: make conf_tx non-atomic
The conf_tx callback currently needs to be atomic, this requirement is just because it can be called from scanning. This rearranges it slightly to only update while not scanning (which is fine, we'll be getting beacons when associated) and thus removes the atomic requirement. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/mlme.c')
-rw-r--r--net/mac80211/mlme.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c
index 0abd5a4fe38d..a03245255ed0 100644
--- a/net/mac80211/mlme.c
+++ b/net/mac80211/mlme.c
@@ -2872,15 +2872,18 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
2872 memcmp(ifsta->bssid, mgmt->bssid, ETH_ALEN) != 0) 2872 memcmp(ifsta->bssid, mgmt->bssid, ETH_ALEN) != 0)
2873 return; 2873 return;
2874 2874
2875 ieee80211_sta_wmm_params(local, ifsta, elems.wmm_param,
2876 elems.wmm_param_len);
2877
2878 /* Do not send changes to driver if we are scanning. This removes 2875 /* Do not send changes to driver if we are scanning. This removes
2879 * requirement that driver's bss_info_changed function needs to be 2876 * requirement that a driver's bss_info_changed/conf_tx functions
2880 * atomic. */ 2877 * need to be atomic.
2878 * This is really ugly code, we should rewrite scanning and make
2879 * all this more understandable for humans.
2880 */
2881 if (local->sta_sw_scanning || local->sta_hw_scanning) 2881 if (local->sta_sw_scanning || local->sta_hw_scanning)
2882 return; 2882 return;
2883 2883
2884 ieee80211_sta_wmm_params(local, ifsta, elems.wmm_param,
2885 elems.wmm_param_len);
2886
2884 if (elems.erp_info && elems.erp_info_len >= 1) 2887 if (elems.erp_info && elems.erp_info_len >= 1)
2885 changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); 2888 changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]);
2886 else { 2889 else {