diff options
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/mlme.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/net/mac80211/mlme.c b/net/mac80211/mlme.c index 83e8b497e6db..e3f2cb086588 100644 --- a/net/mac80211/mlme.c +++ b/net/mac80211/mlme.c | |||
@@ -2797,6 +2797,17 @@ static void ieee80211_rx_mgmt_beacon(struct net_device *dev, | |||
2797 | 2797 | ||
2798 | ieee802_11_parse_elems(mgmt->u.beacon.variable, len - baselen, &elems); | 2798 | ieee802_11_parse_elems(mgmt->u.beacon.variable, len - baselen, &elems); |
2799 | 2799 | ||
2800 | if (elems.wmm_param && (ifsta->flags & IEEE80211_STA_WMM_ENABLED)) { | ||
2801 | ieee80211_sta_wmm_params(dev, ifsta, elems.wmm_param, | ||
2802 | elems.wmm_param_len); | ||
2803 | } | ||
2804 | |||
2805 | /* Do not send changes to driver if we are scanning. This removes | ||
2806 | * requirement that driver's bss_info_changed function needs to be | ||
2807 | * atomic. */ | ||
2808 | if (local->sta_sw_scanning || local->sta_hw_scanning) | ||
2809 | return; | ||
2810 | |||
2800 | if (elems.erp_info && elems.erp_info_len >= 1) | 2811 | if (elems.erp_info && elems.erp_info_len >= 1) |
2801 | changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); | 2812 | changed |= ieee80211_handle_erp_ie(sdata, elems.erp_info[0]); |
2802 | else { | 2813 | else { |
@@ -2816,11 +2827,6 @@ static void ieee80211_rx_mgmt_beacon(struct net_device *dev, | |||
2816 | &bss_info); | 2827 | &bss_info); |
2817 | } | 2828 | } |
2818 | 2829 | ||
2819 | if (elems.wmm_param && (ifsta->flags & IEEE80211_STA_WMM_ENABLED)) { | ||
2820 | ieee80211_sta_wmm_params(dev, ifsta, elems.wmm_param, | ||
2821 | elems.wmm_param_len); | ||
2822 | } | ||
2823 | |||
2824 | ieee80211_bss_info_change_notify(sdata, changed); | 2830 | ieee80211_bss_info_change_notify(sdata, changed); |
2825 | } | 2831 | } |
2826 | 2832 | ||