mac80211: make enable_qos parameter to ieee80211_set_wmm_default()
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>
This commit is contained in:
parent
e86abc689c
commit
cec6628350
5 changed files with 11 additions and 16 deletions
|
@ -356,7 +356,7 @@ static void __ieee80211_sta_join_ibss(struct ieee80211_sub_if_data *sdata,
|
||||||
else
|
else
|
||||||
sdata->flags &= ~IEEE80211_SDATA_OPERATING_GMODE;
|
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_joined = true;
|
||||||
sdata->vif.bss_conf.ibss_creator = creator;
|
sdata->vif.bss_conf.ibss_creator = creator;
|
||||||
|
|
|
@ -1769,7 +1769,7 @@ int ieee80211_frame_duration(enum ieee80211_band band, size_t len,
|
||||||
int rate, int erp, int short_preamble,
|
int rate, int erp, int short_preamble,
|
||||||
int shift);
|
int shift);
|
||||||
void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
|
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,
|
void ieee80211_xmit(struct ieee80211_sub_if_data *sdata,
|
||||||
struct sta_info *sta, struct sk_buff *skb);
|
struct sta_info *sta, struct sk_buff *skb);
|
||||||
|
|
||||||
|
|
|
@ -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
|
* 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);
|
set_bit(SDATA_STATE_RUNNING, &sdata->state);
|
||||||
|
|
|
@ -2077,7 +2077,7 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
|
||||||
ieee80211_bss_info_change_notify(sdata, changed);
|
ieee80211_bss_info_change_notify(sdata, changed);
|
||||||
|
|
||||||
/* disassociated - set to defaults now */
|
/* 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.conn_mon_timer);
|
||||||
del_timer_sync(&sdata->u.mgd.bcn_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,
|
ieee80211_sta_wmm_params(local, sdata, elems.wmm_param,
|
||||||
elems.wmm_param_len);
|
elems.wmm_param_len);
|
||||||
else
|
else
|
||||||
ieee80211_set_wmm_default(sdata, false);
|
ieee80211_set_wmm_default(sdata, false, false);
|
||||||
changed |= BSS_CHANGED_QOS;
|
changed |= BSS_CHANGED_QOS;
|
||||||
|
|
||||||
/* set AID and assoc capability,
|
/* set AID and assoc capability,
|
||||||
|
|
|
@ -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,
|
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_local *local = sdata->local;
|
||||||
struct ieee80211_tx_queue_params qparam;
|
struct ieee80211_tx_queue_params qparam;
|
||||||
struct ieee80211_chanctx_conf *chanctx_conf;
|
struct ieee80211_chanctx_conf *chanctx_conf;
|
||||||
int ac;
|
int ac;
|
||||||
bool use_11b, enable_qos;
|
bool use_11b;
|
||||||
bool is_ocb; /* Use another EDCA parameters if dot11OCBActivated=true */
|
bool is_ocb; /* Use another EDCA parameters if dot11OCBActivated=true */
|
||||||
int aCWmin, aCWmax;
|
int aCWmin, aCWmax;
|
||||||
|
|
||||||
|
@ -1130,13 +1130,6 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata,
|
||||||
!(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE);
|
!(sdata->flags & IEEE80211_SDATA_OPERATING_GMODE);
|
||||||
rcu_read_unlock();
|
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);
|
is_ocb = (sdata->vif.type == NL80211_IFTYPE_OCB);
|
||||||
|
|
||||||
/* Set defaults according to 802.11-2007 Table 7-37 */
|
/* Set defaults according to 802.11-2007 Table 7-37 */
|
||||||
|
|
Loading…
Add table
Reference in a new issue