mac80211: simplify wmm check during association
authorJohannes Berg <johannes.berg@intel.com>
Thu, 8 Mar 2012 14:02:05 +0000 (15:02 +0100)
committerJohn W. Linville <linville@tuxdriver.com>
Mon, 12 Mar 2012 18:22:13 +0000 (14:22 -0400)
Instead of setting assoc_data->wmm_used solely
based on the BSS also take into account our own
capabilities and later check those.

Also rename "wmm_used" and "uapsd_used" to just
"wmm" and "uapsd".

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/ieee80211_i.h
net/mac80211/mlme.c

index 3c62ded..173c139 100644 (file)
@@ -407,7 +407,7 @@ struct ieee80211_mgd_assoc_data {
        u8 ssid[IEEE80211_MAX_SSID_LEN];
        u8 ssid_len;
        u8 supp_rates_len;
-       bool wmm_used, uapsd_used;
+       bool wmm, uapsd;
        bool have_beacon;
        bool sent_assoc;
        bool synced;
index 5dfc1e8..b607683 100644 (file)
@@ -570,8 +570,8 @@ static void ieee80211_send_assoc(struct ieee80211_sub_if_data *sdata)
                offset = noffset;
        }
 
-       if (assoc_data->wmm_used && local->hw.queues >= 4) {
-               if (assoc_data->uapsd_used) {
+       if (assoc_data->wmm) {
+               if (assoc_data->uapsd) {
                        qos_info = local->uapsd_queues;
                        qos_info |= (local->uapsd_max_sp_len <<
                                     IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT);
@@ -3305,7 +3305,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
                ifmgd->ap_smps = ifmgd->req_smps;
 
        assoc_data->capability = req->bss->capability;
-       assoc_data->wmm_used = bss->wmm_used;
+       assoc_data->wmm = bss->wmm_used && (local->hw.queues >= 4);
        assoc_data->supp_rates = bss->supp_rates;
        assoc_data->supp_rates_len = bss->supp_rates_len;
        assoc_data->ht_information_ie =
@@ -3313,10 +3313,10 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
 
        if (bss->wmm_used && bss->uapsd_supported &&
            (sdata->local->hw.flags & IEEE80211_HW_SUPPORTS_UAPSD)) {
-               assoc_data->uapsd_used = true;
+               assoc_data->uapsd = true;
                ifmgd->flags |= IEEE80211_STA_UAPSD_ENABLED;
        } else {
-               assoc_data->uapsd_used = false;
+               assoc_data->uapsd = false;
                ifmgd->flags &= ~IEEE80211_STA_UAPSD_ENABLED;
        }