mac80211: make enable_qos parameter to ieee80211_set_wmm_default()
authorJohannes Berg <johannes.berg@intel.com>
Thu, 22 Oct 2015 15:46:04 +0000 (17:46 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 3 Nov 2015 09:55:55 +0000 (10:55 +0100)
The function currently determines this value, for use in bss_info.qos,
based on the interface type itself. Make it a parameter instead and
set it with the same logic for now.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/ibss.c
net/mac80211/ieee80211_i.h
net/mac80211/iface.c
net/mac80211/mlme.c
net/mac80211/util.c

index 3b5874e0174fbca5db561bfff92c5732a6550673..337bb5d7800384b8acd52664951be429668e3f3c 100644 (file)
@@ -356,7 +356,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
        else
                sdata->flags &= ~IEEE80211_SDATA_OPERATING_GMODE;
 
-       ieee80211_set_wmm_default(sdata, true);
+       ieee80211_set_wmm_default(sdata, true, false);
 
        sdata->vif.bss_conf.ibss_joined = true;
        sdata->vif.bss_conf.ibss_creator = creator;
index 5c76ba7aaf575587506c59f58fcf2ef8ac9ece7c..d832bd59236be15c5a6bb86dbb1efc4547025f51 100644 (file)
@@ -1769,7 +1769,7 @@ int ieee80211_frame_duration(enum ieee80211_band band, size_t len,
                             int rate, int erp, int short_preamble,
                             int shift);
 void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
-                              bool bss_notify);
+                              bool bss_notify, bool enable_qos);
 void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
                    struct sta_info *sta, struct sk_buff *skb);
 
index f848c75518a21259cb0484247289dfb8def99d39..d0dc1bfaeec2d5440573d114b98e16099616f43d 100644 (file)
@@ -661,11 +661,13 @@ int ieee80211_do_open(struct wireless_dev *wdev, bool coming_up)
                }
 
                /*
-                * set default queue parameters so drivers don't
+                * Set default queue parameters so drivers don't
                 * need to initialise the hardware if the hardware
-                * doesn't start up with sane defaults
+                * doesn't start up with sane defaults.
+                * Enable QoS for anything but station interfaces.
                 */
-               ieee80211_set_wmm_default(sdata, true);
+               ieee80211_set_wmm_default(sdata, true,
+                       sdata->vif.type != NL80211_IFTYPE_STATION);
        }
 
        set_bit(SDATA_STATE_RUNNING, &sdata->state);
index 73f1a2a0df5aa60fd432f37dd407aff79f2e9829..67f0387bea27964507d82a5c14a59f5d2b403f69 100644 (file)
@@ -2077,7 +2077,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
        ieee80211_bss_info_change_notify(sdata, changed);
 
        /* disassociated - set to defaults now */
-       ieee80211_set_wmm_default(sdata, false);
+       ieee80211_set_wmm_default(sdata, false, false);
 
        del_timer_sync(&sdata->u.mgd.conn_mon_timer);
        del_timer_sync(&sdata->u.mgd.bcn_mon_timer);
@@ -3048,7 +3048,7 @@ static bool ieee80211_assoc_success(struct ieee80211_sub_if_data *sdata,
                ieee80211_sta_wmm_params(local, sdata, elems.wmm_param,
                                         elems.wmm_param_len);
        else
-               ieee80211_set_wmm_default(sdata, false);
+               ieee80211_set_wmm_default(sdata, false, false);
        changed |= BSS_CHANGED_QOS;
 
        /* set AID and assoc capability,
index 8802aa4da2a4905f1689db73da5fdb76f72fc4a4..74058020b7d6154c1ea1613e9a8a9775789736fa 100644 (file)
@@ -1105,13 +1105,13 @@ u32 ieee802_11_parse_elems_crc(const u8 *start, size_t len, bool action,
 }
 
 void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
-                              bool bss_notify)
+                              bool bss_notify, bool enable_qos)
 {
        struct ieee80211_local *local = sdata->local;
        struct ieee80211_tx_queue_params qparam;
        struct ieee80211_chanctx_conf *chanctx_conf;
        int ac;
-       bool use_11b, enable_qos;
+       bool use_11b;
        bool is_ocb; /* Use another EDCA parameters if dot11OCBActivated=true */
        int aCWmin, aCWmax;
 
@@ -1130,13 +1130,6 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
                 !(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE);
        rcu_read_unlock();
 
-       /*
-        * By default disable QoS in STA mode for old access points, which do
-        * not support 802.11e. New APs will provide proper queue parameters,
-        * that we will configure later.
-        */
-       enable_qos = (sdata->vif.type != NL80211_IFTYPE_STATION);
-
        is_ocb = (sdata->vif.type == NL80211_IFTYPE_OCB);
 
        /* Set defaults according to 802.11-2007 Table 7-37 */