Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 203720
b: refs/heads/master
c: 4ced3f7
h: refs/heads/master
v: v3
  • Loading branch information
Johannes Berg authored and John W. Linville committed Jul 20, 2010
1 parent b1549e3 commit 7feef26
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 28 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 875ae5f68883c75aad826e715df8ec0619551a07
refs/heads/master: 4ced3f74dae18715920cb680098ec7ff4345d0a3
18 changes: 9 additions & 9 deletions trunk/drivers/net/wireless/iwlwifi/iwl-core.c
Original file line number Diff line number Diff line change
Expand Up @@ -1763,6 +1763,15 @@ void iwl_bss_info_changed(struct ieee80211_hw *hw,

mutex_lock(&priv->mutex);

if (changes & BSS_CHANGED_QOS) {
unsigned long flags;

spin_lock_irqsave(&priv->lock, flags);
priv->qos_data.qos_active = bss_conf->qos;
iwl_update_qos(priv);
spin_unlock_irqrestore(&priv->lock, flags);
}

if (changes & BSS_CHANGED_BEACON && vif->type == NL80211_IFTYPE_AP) {
dev_kfree_skb(priv->ibss_beacon);
priv->ibss_beacon = ieee80211_beacon_get(hw, vif);
Expand Down Expand Up @@ -2134,15 +2143,6 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
iwl_set_tx_power(priv, conf->power_level, false);
}

if (changed & IEEE80211_CONF_CHANGE_QOS) {
bool qos_active = !!(conf->flags & IEEE80211_CONF_QOS);

spin_lock_irqsave(&priv->lock, flags);
priv->qos_data.qos_active = qos_active;
iwl_update_qos(priv);
spin_unlock_irqrestore(&priv->lock, flags);
}

if (!iwl_is_ready(priv)) {
IWL_DEBUG_MAC80211(priv, "leave - not ready\n");
goto out;
Expand Down
11 changes: 5 additions & 6 deletions trunk/include/net/mac80211.h
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,8 @@ struct ieee80211_low_level_stats {
* @BSS_CHANGED_CQM: Connection quality monitor config changed
* @BSS_CHANGED_IBSS: IBSS join status changed
* @BSS_CHANGED_ARP_FILTER: Hardware ARP filter address list or state changed.
* @BSS_CHANGED_QOS: QoS for this association was enabled/disabled. Note
* that it is only ever disabled for station mode.
*/
enum ieee80211_bss_change {
BSS_CHANGED_ASSOC = 1<<0,
Expand All @@ -162,6 +164,7 @@ enum ieee80211_bss_change {
BSS_CHANGED_CQM = 1<<10,
BSS_CHANGED_IBSS = 1<<11,
BSS_CHANGED_ARP_FILTER = 1<<12,
BSS_CHANGED_QOS = 1<<13,

/* when adding here, make sure to change ieee80211_reconfig */
};
Expand Down Expand Up @@ -217,6 +220,7 @@ enum ieee80211_bss_change {
* filter ARP queries based on the @arp_addr_list, if disabled, the
* hardware must not perform any ARP filtering. Note, that the filter will
* be enabled also in promiscuous mode.
* @qos: This is a QoS-enabled BSS.
*/
struct ieee80211_bss_conf {
const u8 *bssid;
Expand All @@ -240,6 +244,7 @@ struct ieee80211_bss_conf {
__be32 arp_addr_list[IEEE80211_BSS_ARP_ADDR_LIST_LEN];
u8 arp_addr_cnt;
bool arp_filter_enabled;
bool qos;
};

/**
Expand Down Expand Up @@ -620,15 +625,11 @@ struct ieee80211_rx_status {
* may turn the device off as much as possible. Typically, this flag will
* be set when an interface is set UP but not associated or scanning, but
* it can also be unset in that case when monitor interfaces are active.
* @IEEE80211_CONF_QOS: Enable 802.11e QoS also know as WMM (Wireless
* Multimedia). On some drivers (iwlwifi is one of know) we have
* to enable/disable QoS explicitly.
*/
enum ieee80211_conf_flags {
IEEE80211_CONF_MONITOR = (1<<0),
IEEE80211_CONF_PS = (1<<1),
IEEE80211_CONF_IDLE = (1<<2),
IEEE80211_CONF_QOS = (1<<3),
};


Expand All @@ -643,7 +644,6 @@ enum ieee80211_conf_flags {
* @IEEE80211_CONF_CHANGE_RETRY_LIMITS: retry limits changed
* @IEEE80211_CONF_CHANGE_IDLE: Idle flag changed
* @IEEE80211_CONF_CHANGE_SMPS: Spatial multiplexing powersave mode changed
* @IEEE80211_CONF_CHANGE_QOS: Quality of service was enabled or disabled
*/
enum ieee80211_conf_changed {
IEEE80211_CONF_CHANGE_SMPS = BIT(1),
Expand All @@ -654,7 +654,6 @@ enum ieee80211_conf_changed {
IEEE80211_CONF_CHANGE_CHANNEL = BIT(6),
IEEE80211_CONF_CHANGE_RETRY_LIMITS = BIT(7),
IEEE80211_CONF_CHANGE_IDLE = BIT(8),
IEEE80211_CONF_CHANGE_QOS = BIT(9),
};

/**
Expand Down
4 changes: 0 additions & 4 deletions trunk/net/mac80211/cfg.c
Original file line number Diff line number Diff line change
Expand Up @@ -1154,10 +1154,6 @@ static int ieee80211_set_txq_params(struct wiphy *wiphy,
return -EINVAL;
}

/* enable WMM or activate new settings */
local->hw.conf.flags |= IEEE80211_CONF_QOS;
drv_config(local, IEEE80211_CONF_CHANGE_QOS);

return 0;
}

Expand Down
11 changes: 6 additions & 5 deletions trunk/net/mac80211/mlme.c
Original file line number Diff line number Diff line change
Expand Up @@ -698,10 +698,11 @@ void ieee80211_dynamic_ps_timer(unsigned long data)

/* MLME */
static void ieee80211_sta_wmm_params(struct ieee80211_local *local,
struct ieee80211_if_managed *ifmgd,
struct ieee80211_sub_if_data *sdata,
u8 *wmm_param, size_t wmm_param_len)
{
struct ieee80211_tx_queue_params params;
struct ieee80211_if_managed *ifmgd = &sdata->u.mgd;
size_t left;
int count;
u8 *pos, uapsd_queues = 0;
Expand Down Expand Up @@ -790,8 +791,8 @@ static void ieee80211_sta_wmm_params(struct ieee80211_local *local,
}

/* enable WMM or activate new settings */
local->hw.conf.flags |= IEEE80211_CONF_QOS;
drv_config(local, IEEE80211_CONF_CHANGE_QOS);
sdata->vif.bss_conf.qos = true;
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_QOS);
}

static u32 ieee80211_handle_bss_capability(struct ieee80211_sub_if_data *sdata,
Expand Down Expand Up @@ -1325,7 +1326,7 @@ static bool ieee80211_assoc_success(struct ieee80211_work *wk,
}

if (elems.wmm_param)
ieee80211_sta_wmm_params(local, ifmgd, elems.wmm_param,
ieee80211_sta_wmm_params(local, sdata, elems.wmm_param,
elems.wmm_param_len);
else
ieee80211_set_wmm_default(sdata);
Expand Down Expand Up @@ -1597,7 +1598,7 @@ static void ieee80211_rx_mgmt_beacon(struct ieee80211_sub_if_data *sdata,
ieee80211_rx_bss_info(sdata, mgmt, len, rx_status, &elems,
true);

ieee80211_sta_wmm_params(local, ifmgd, elems.wmm_param,
ieee80211_sta_wmm_params(local, sdata, elems.wmm_param,
elems.wmm_param_len);
}

Expand Down
7 changes: 4 additions & 3 deletions trunk/net/mac80211/util.c
Original file line number Diff line number Diff line change
Expand Up @@ -803,8 +803,8 @@ void ieee80211_set_wmm_default(struct ieee80211_sub_if_data *sdata)

/* after reinitialize QoS TX queues setting to default,
* disable QoS at all */
local->hw.conf.flags &= ~IEEE80211_CONF_QOS;
drv_config(local, IEEE80211_CONF_CHANGE_QOS);
sdata->vif.bss_conf.qos = sdata->vif.type != NL80211_IFTYPE_STATION;
ieee80211_bss_info_change_notify(sdata, BSS_CHANGED_QOS);
}

void ieee80211_sta_def_wmm_params(struct ieee80211_sub_if_data *sdata,
Expand Down Expand Up @@ -1161,7 +1161,8 @@ int ieee80211_reconfig(struct ieee80211_local *local)
BSS_CHANGED_BASIC_RATES |
BSS_CHANGED_BEACON_INT |
BSS_CHANGED_BSSID |
BSS_CHANGED_CQM;
BSS_CHANGED_CQM |
BSS_CHANGED_QOS;

switch (sdata->vif.type) {
case NL80211_IFTYPE_STATION:
Expand Down

0 comments on commit 7feef26

Please sign in to comment.