From 27d08df563929b28cc992a1515ccc58af3ff52ff Mon Sep 17 00:00:00 2001 From: Reinette Chatre Date: Wed, 9 Apr 2008 16:56:15 -0700 Subject: [PATCH] --- yaml --- r: 90806 b: refs/heads/master c: d18ef29f34eb33099d387a327abe139f3915a829 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/include/net/mac80211.h | 3 +-- trunk/net/mac80211/mlme.c | 16 +++++++++++----- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/[refs] b/[refs] index b619c36ddff6..cc357796f0f3 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 8d0c7fad35538e02dff6fdb2d67943ae582819b3 +refs/heads/master: d18ef29f34eb33099d387a327abe139f3915a829 diff --git a/trunk/include/net/mac80211.h b/trunk/include/net/mac80211.h index 079e7bd86c90..4a80d74975e8 100644 --- a/trunk/include/net/mac80211.h +++ b/trunk/include/net/mac80211.h @@ -1020,8 +1020,7 @@ enum ieee80211_ampdu_mlme_action { * level driver (e.g. assoc/disassoc status, erp parameters). * This function should not be used if no BSS has been set, unless * for association indication. The @changed parameter indicates which - * of the bss parameters has changed when a call is made. This callback - * has to be atomic. + * of the bss parameters has changed when a call is made. * * @configure_filter: Configure the device's RX filter. * See the section "Frame filtering" for more information. diff --git a/trunk/net/mac80211/mlme.c b/trunk/net/mac80211/mlme.c index 83e8b497e6db..e3f2cb086588 100644 --- a/trunk/net/mac80211/mlme.c +++ b/trunk/net/mac80211/mlme.c @@ -2797,6 +2797,17 @@ static void ieee80211_rx_mgmt_beacon(struct net_device *dev, ieee802_11_parse_elems(mgmt->u.beacon.variable, len - baselen, &elems); + if (elems.wmm_param && (ifsta->flags & IEEE80211_STA_WMM_ENABLED)) { + ieee80211_sta_wmm_params(dev, ifsta, elems.wmm_param, + elems.wmm_param_len); + } + + /* Do not send changes to driver if we are scanning. This removes + * requirement that driver's bss_info_changed function needs to be + * atomic. */ + if (local->sta_sw_scanning || local->sta_hw_scanning) + return; + if (elems.erp_info && elems.erp_info_len >= 1) changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); else { @@ -2816,11 +2827,6 @@ static void ieee80211_rx_mgmt_beacon(struct net_device *dev, &bss_info); } - if (elems.wmm_param && (ifsta->flags & IEEE80211_STA_WMM_ENABLED)) { - ieee80211_sta_wmm_params(dev, ifsta, elems.wmm_param, - elems.wmm_param_len); - } - ieee80211_bss_info_change_notify(sdata, changed); }