|
Jesse Keating |
2f82dda |
From: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
Jesse Keating |
2f82dda |
To: kernel@lists.fedoraproject.org, "John W. Linville" <linville@redhat.com>
|
|
Jesse Keating |
2f82dda |
Subject: [PATCH 2/4 2.6.32.y] iwlwifi: manage QoS by mac stack
|
|
Jesse Keating |
2f82dda |
Date: Fri, 11 Jun 2010 17:03:14 +0200
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
We activate/deactivate QoS and setup default queue parameters in iwlwifi
|
|
Jesse Keating |
2f82dda |
driver. Mac stack do the same, so we do not need repeat that work here.
|
|
Jesse Keating |
2f82dda |
Stack also will tell when disable QoS, this will fix driver when working
|
|
Jesse Keating |
2f82dda |
with older APs, that do not have QoS implemented.
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
Patch make "force = true" in iwl_active_qos() assuming we always want
|
|
Jesse Keating |
2f82dda |
to do with QoS what mac stack wish.
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
Patch also remove unused qos_cap bits, do not initialize qos_active = 0,
|
|
Jesse Keating |
2f82dda |
as we have it initialized to zero by kzalloc.
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
Jesse Keating |
2f82dda |
---
|
|
Jesse Keating |
2f82dda |
drivers/net/wireless/iwlwifi/iwl-agn.c | 9 --
|
|
Jesse Keating |
2f82dda |
drivers/net/wireless/iwlwifi/iwl-core.c | 147 +++------------------------
|
|
Jesse Keating |
2f82dda |
drivers/net/wireless/iwlwifi/iwl-core.h | 3 +-
|
|
Jesse Keating |
2f82dda |
drivers/net/wireless/iwlwifi/iwl-dev.h | 21 ----
|
|
Jesse Keating |
2f82dda |
drivers/net/wireless/iwlwifi/iwl3945-base.c | 7 --
|
|
Jesse Keating |
2f82dda |
5 files changed, 17 insertions(+), 170 deletions(-)
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
diff --git a/drivers/net/wireless/iwlwifi/iwl-agn.c b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
|
Jesse Keating |
2f82dda |
index 921dc4a..b05f198 100644
|
|
Jesse Keating |
2f82dda |
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
|
|
Jesse Keating |
2f82dda |
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
|
Jesse Keating |
2f82dda |
@@ -2172,7 +2172,6 @@ void iwl_post_associate(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
{
|
|
Jesse Keating |
2f82dda |
struct ieee80211_conf *conf = NULL;
|
|
Jesse Keating |
2f82dda |
int ret = 0;
|
|
Jesse Keating |
2f82dda |
- unsigned long flags;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
if (priv->iw_mode == NL80211_IFTYPE_AP) {
|
|
Jesse Keating |
2f82dda |
IWL_ERR(priv, "%s Should not be called in AP mode\n", __func__);
|
|
Jesse Keating |
2f82dda |
@@ -2257,10 +2256,6 @@ void iwl_post_associate(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
if (priv->iw_mode == NL80211_IFTYPE_ADHOC)
|
|
Jesse Keating |
2f82dda |
priv->assoc_station_added = 1;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- spin_lock_irqsave(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
- iwl_activate_qos(priv, 0);
|
|
Jesse Keating |
2f82dda |
- spin_unlock_irqrestore(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
/* the chain noise calibration will enabled PM upon completion
|
|
Jesse Keating |
2f82dda |
* If chain noise has already been run, then we need to enable
|
|
Jesse Keating |
2f82dda |
* power management here */
|
|
Jesse Keating |
2f82dda |
@@ -2384,7 +2379,6 @@ static int iwl_mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb)
|
|
Jesse Keating |
2f82dda |
void iwl_config_ap(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
{
|
|
Jesse Keating |
2f82dda |
int ret = 0;
|
|
Jesse Keating |
2f82dda |
- unsigned long flags;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
|
Jesse Keating |
2f82dda |
return;
|
|
Jesse Keating |
2f82dda |
@@ -2432,9 +2426,6 @@ void iwl_config_ap(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
/* restore RXON assoc */
|
|
Jesse Keating |
2f82dda |
priv->staging_rxon.filter_flags |= RXON_FILTER_ASSOC_MSK;
|
|
Jesse Keating |
2f82dda |
iwlcore_commit_rxon(priv);
|
|
Jesse Keating |
2f82dda |
- spin_lock_irqsave(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
- iwl_activate_qos(priv, 1);
|
|
Jesse Keating |
2f82dda |
- spin_unlock_irqrestore(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
iwl_rxon_add_station(priv, iwl_bcast_addr, 0);
|
|
Jesse Keating |
2f82dda |
}
|
|
Jesse Keating |
2f82dda |
iwl_send_beacon_cmd(priv);
|
|
Jesse Keating |
2f82dda |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.c b/drivers/net/wireless/iwlwifi/iwl-core.c
|
|
Jesse Keating |
2f82dda |
index 4a4f7e4..6ce19ea 100644
|
|
Jesse Keating |
2f82dda |
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
|
|
Jesse Keating |
2f82dda |
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
|
|
Jesse Keating |
2f82dda |
@@ -266,17 +266,13 @@ EXPORT_SYMBOL(iwl_hw_nic_init);
|
|
Jesse Keating |
2f82dda |
/*
|
|
Jesse Keating |
2f82dda |
* QoS support
|
|
Jesse Keating |
2f82dda |
*/
|
|
Jesse Keating |
2f82dda |
-void iwl_activate_qos(struct iwl_priv *priv, u8 force)
|
|
Jesse Keating |
2f82dda |
+static void iwl_update_qos(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
{
|
|
Jesse Keating |
2f82dda |
if (test_bit(STATUS_EXIT_PENDING, &priv->status))
|
|
Jesse Keating |
2f82dda |
return;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
priv->qos_data.def_qos_parm.qos_flags = 0;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- if (priv->qos_data.qos_cap.q_AP.queue_request &&
|
|
Jesse Keating |
2f82dda |
- !priv->qos_data.qos_cap.q_AP.txop_request)
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.qos_flags |=
|
|
Jesse Keating |
2f82dda |
- QOS_PARAM_FLG_TXOP_TYPE_MSK;
|
|
Jesse Keating |
2f82dda |
if (priv->qos_data.qos_active)
|
|
Jesse Keating |
2f82dda |
priv->qos_data.def_qos_parm.qos_flags |=
|
|
Jesse Keating |
2f82dda |
QOS_PARAM_FLG_UPDATE_EDCA_MSK;
|
|
Jesse Keating |
2f82dda |
@@ -284,118 +280,14 @@ void iwl_activate_qos(struct iwl_priv *priv, u8 force)
|
|
Jesse Keating |
2f82dda |
if (priv->current_ht_config.is_ht)
|
|
Jesse Keating |
2f82dda |
priv->qos_data.def_qos_parm.qos_flags |= QOS_PARAM_FLG_TGN_MSK;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- if (force || iwl_is_associated(priv)) {
|
|
Jesse Keating |
2f82dda |
- IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n",
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_active,
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.qos_flags);
|
|
Jesse Keating |
2f82dda |
+ IWL_DEBUG_QOS(priv, "send QoS cmd with Qos active=%d FLAGS=0x%X\n",
|
|
Jesse Keating |
2f82dda |
+ priv->qos_data.qos_active,
|
|
Jesse Keating |
2f82dda |
+ priv->qos_data.def_qos_parm.qos_flags);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM,
|
|
Jesse Keating |
2f82dda |
- sizeof(struct iwl_qosparam_cmd),
|
|
Jesse Keating |
2f82dda |
- &priv->qos_data.def_qos_parm, NULL);
|
|
Jesse Keating |
2f82dda |
- }
|
|
Jesse Keating |
2f82dda |
+ iwl_send_cmd_pdu_async(priv, REPLY_QOS_PARAM,
|
|
Jesse Keating |
2f82dda |
+ sizeof(struct iwl_qosparam_cmd),
|
|
Jesse Keating |
2f82dda |
+ &priv->qos_data.def_qos_parm, NULL);
|
|
Jesse Keating |
2f82dda |
}
|
|
Jesse Keating |
2f82dda |
-EXPORT_SYMBOL(iwl_activate_qos);
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
-/*
|
|
Jesse Keating |
2f82dda |
- * AC CWmin CW max AIFSN TXOP Limit TXOP Limit
|
|
Jesse Keating |
2f82dda |
- * (802.11b) (802.11a/g)
|
|
Jesse Keating |
2f82dda |
- * AC_BK 15 1023 7 0 0
|
|
Jesse Keating |
2f82dda |
- * AC_BE 15 1023 3 0 0
|
|
Jesse Keating |
2f82dda |
- * AC_VI 7 15 2 6.016ms 3.008ms
|
|
Jesse Keating |
2f82dda |
- * AC_VO 3 7 2 3.264ms 1.504ms
|
|
Jesse Keating |
2f82dda |
- */
|
|
Jesse Keating |
2f82dda |
-void iwl_reset_qos(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
-{
|
|
Jesse Keating |
2f82dda |
- u16 cw_min = 15;
|
|
Jesse Keating |
2f82dda |
- u16 cw_max = 1023;
|
|
Jesse Keating |
2f82dda |
- u8 aifs = 2;
|
|
Jesse Keating |
2f82dda |
- bool is_legacy = false;
|
|
Jesse Keating |
2f82dda |
- unsigned long flags;
|
|
Jesse Keating |
2f82dda |
- int i;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- spin_lock_irqsave(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
- /* QoS always active in AP and ADHOC mode
|
|
Jesse Keating |
2f82dda |
- * In STA mode wait for association
|
|
Jesse Keating |
2f82dda |
- */
|
|
Jesse Keating |
2f82dda |
- if (priv->iw_mode == NL80211_IFTYPE_ADHOC ||
|
|
Jesse Keating |
2f82dda |
- priv->iw_mode == NL80211_IFTYPE_AP)
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_active = 1;
|
|
Jesse Keating |
2f82dda |
- else
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_active = 0;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- /* check for legacy mode */
|
|
Jesse Keating |
2f82dda |
- if ((priv->iw_mode == NL80211_IFTYPE_ADHOC &&
|
|
Jesse Keating |
2f82dda |
- (priv->active_rate & IWL_OFDM_RATES_MASK) == 0) ||
|
|
Jesse Keating |
2f82dda |
- (priv->iw_mode == NL80211_IFTYPE_STATION &&
|
|
Jesse Keating |
2f82dda |
- (priv->staging_rxon.flags & RXON_FLG_SHORT_SLOT_MSK) == 0)) {
|
|
Jesse Keating |
2f82dda |
- cw_min = 31;
|
|
Jesse Keating |
2f82dda |
- is_legacy = 1;
|
|
Jesse Keating |
2f82dda |
- }
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- if (priv->qos_data.qos_active)
|
|
Jesse Keating |
2f82dda |
- aifs = 3;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- /* AC_BE */
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[0].cw_min = cpu_to_le16(cw_min);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[0].cw_max = cpu_to_le16(cw_max);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[0].aifsn = aifs;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[0].edca_txop = 0;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[0].reserved1 = 0;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- if (priv->qos_data.qos_active) {
|
|
Jesse Keating |
2f82dda |
- /* AC_BK */
|
|
Jesse Keating |
2f82dda |
- i = 1;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_min = cpu_to_le16(cw_min);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_max = cpu_to_le16(cw_max);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].aifsn = 7;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].edca_txop = 0;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- /* AC_VI */
|
|
Jesse Keating |
2f82dda |
- i = 2;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_min =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16((cw_min + 1) / 2 - 1);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_max =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16(cw_min);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].aifsn = 2;
|
|
Jesse Keating |
2f82dda |
- if (is_legacy)
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16(6016);
|
|
Jesse Keating |
2f82dda |
- else
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16(3008);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- /* AC_VO */
|
|
Jesse Keating |
2f82dda |
- i = 3;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_min =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16((cw_min + 1) / 4 - 1);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_max =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16((cw_min + 1) / 2 - 1);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].aifsn = 2;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
|
Jesse Keating |
2f82dda |
- if (is_legacy)
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16(3264);
|
|
Jesse Keating |
2f82dda |
- else
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].edca_txop =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16(1504);
|
|
Jesse Keating |
2f82dda |
- } else {
|
|
Jesse Keating |
2f82dda |
- for (i = 1; i < 4; i++) {
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_min =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16(cw_min);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].cw_max =
|
|
Jesse Keating |
2f82dda |
- cpu_to_le16(cw_max);
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].aifsn = aifs;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].edca_txop = 0;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.def_qos_parm.ac[i].reserved1 = 0;
|
|
Jesse Keating |
2f82dda |
- }
|
|
Jesse Keating |
2f82dda |
- }
|
|
Jesse Keating |
2f82dda |
- IWL_DEBUG_QOS(priv, "set QoS to default \n");
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- spin_unlock_irqrestore(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
-}
|
|
Jesse Keating |
2f82dda |
-EXPORT_SYMBOL(iwl_reset_qos);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
#define MAX_BIT_RATE_40_MHZ 150 /* Mbps */
|
|
Jesse Keating |
2f82dda |
#define MAX_BIT_RATE_20_MHZ 72 /* Mbps */
|
|
Jesse Keating |
2f82dda |
@@ -1503,11 +1395,6 @@ int iwl_init_drv(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
iwl_init_scan_params(priv);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- iwl_reset_qos(priv);
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_active = 0;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_cap.val = 0;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
priv->rates_mask = IWL_RATES_MASK;
|
|
Jesse Keating |
2f82dda |
/* Set the tx_power_user_lmt to the lowest power level
|
|
Jesse Keating |
2f82dda |
* this value will get overwritten by channel max power avg
|
|
Jesse Keating |
2f82dda |
@@ -2213,12 +2100,6 @@ int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue,
|
|
Jesse Keating |
2f82dda |
cpu_to_le16((params->txop * 32));
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
priv->qos_data.def_qos_parm.ac[q].reserved1 = 0;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_active = 1;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- if (priv->iw_mode == NL80211_IFTYPE_AP)
|
|
Jesse Keating |
2f82dda |
- iwl_activate_qos(priv, 1);
|
|
Jesse Keating |
2f82dda |
- else if (priv->assoc_id && iwl_is_associated(priv))
|
|
Jesse Keating |
2f82dda |
- iwl_activate_qos(priv, 0);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
spin_unlock_irqrestore(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
@@ -2452,11 +2333,8 @@ int iwl_mac_beacon_update(struct ieee80211_hw *hw, struct sk_buff *skb)
|
|
Jesse Keating |
2f82dda |
IWL_DEBUG_MAC80211(priv, "leave\n");
|
|
Jesse Keating |
2f82dda |
spin_unlock_irqrestore(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- iwl_reset_qos(priv);
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
priv->cfg->ops->lib->post_associate(priv);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
return 0;
|
|
Jesse Keating |
2f82dda |
}
|
|
Jesse Keating |
2f82dda |
EXPORT_SYMBOL(iwl_mac_beacon_update);
|
|
Jesse Keating |
2f82dda |
@@ -2674,6 +2552,15 @@ int iwl_mac_config(struct ieee80211_hw *hw, u32 changed)
|
|
Jesse Keating |
2f82dda |
if (priv->cfg->ops->hcmd->set_rxon_chain)
|
|
Jesse Keating |
2f82dda |
priv->cfg->ops->hcmd->set_rxon_chain(priv);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
+ if (changed & IEEE80211_CONF_CHANGE_QOS) {
|
|
Jesse Keating |
2f82dda |
+ bool qos_active = !!(conf->flags & IEEE80211_CONF_QOS);
|
|
Jesse Keating |
2f82dda |
+
|
|
Jesse Keating |
2f82dda |
+ spin_lock_irqsave(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
+ priv->qos_data.qos_active = qos_active;
|
|
Jesse Keating |
2f82dda |
+ iwl_update_qos(priv);
|
|
Jesse Keating |
2f82dda |
+ spin_unlock_irqrestore(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
+ }
|
|
Jesse Keating |
2f82dda |
+
|
|
Jesse Keating |
2f82dda |
if (!iwl_is_ready(priv)) {
|
|
Jesse Keating |
2f82dda |
IWL_DEBUG_MAC80211(priv, "leave - not ready\n");
|
|
Jesse Keating |
2f82dda |
goto out;
|
|
Jesse Keating |
2f82dda |
@@ -2744,8 +2631,6 @@ void iwl_mac_reset_tsf(struct ieee80211_hw *hw)
|
|
Jesse Keating |
2f82dda |
memset(&priv->current_ht_config, 0, sizeof(struct iwl_ht_info));
|
|
Jesse Keating |
2f82dda |
spin_unlock_irqrestore(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- iwl_reset_qos(priv);
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
spin_lock_irqsave(&priv->lock, flags);
|
|
Jesse Keating |
2f82dda |
priv->assoc_id = 0;
|
|
Jesse Keating |
2f82dda |
priv->assoc_capability = 0;
|
|
Jesse Keating |
2f82dda |
diff --git a/drivers/net/wireless/iwlwifi/iwl-core.h b/drivers/net/wireless/iwlwifi/iwl-core.h
|
|
Jesse Keating |
2f82dda |
index 40ec0c1..d5000c7 100644
|
|
Jesse Keating |
2f82dda |
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
|
|
Jesse Keating |
2f82dda |
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
|
|
Jesse Keating |
2f82dda |
@@ -266,8 +266,7 @@ struct iwl_cfg {
|
|
Jesse Keating |
2f82dda |
struct ieee80211_hw *iwl_alloc_all(struct iwl_cfg *cfg,
|
|
Jesse Keating |
2f82dda |
struct ieee80211_ops *hw_ops);
|
|
Jesse Keating |
2f82dda |
void iwl_hw_detect(struct iwl_priv *priv);
|
|
Jesse Keating |
2f82dda |
-void iwl_reset_qos(struct iwl_priv *priv);
|
|
Jesse Keating |
2f82dda |
-void iwl_activate_qos(struct iwl_priv *priv, u8 force);
|
|
Jesse Keating |
2f82dda |
+void iwl_activate_qos(struct iwl_priv *priv);
|
|
Jesse Keating |
2f82dda |
int iwl_mac_conf_tx(struct ieee80211_hw *hw, u16 queue,
|
|
Jesse Keating |
2f82dda |
const struct ieee80211_tx_queue_params *params);
|
|
Jesse Keating |
2f82dda |
void iwl_set_rxon_hwcrypto(struct iwl_priv *priv, int hw_decrypt);
|
|
Jesse Keating |
2f82dda |
diff --git a/drivers/net/wireless/iwlwifi/iwl-dev.h b/drivers/net/wireless/iwlwifi/iwl-dev.h
|
|
Jesse Keating |
2f82dda |
index cea2ee2..24faad7 100644
|
|
Jesse Keating |
2f82dda |
--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
|
|
Jesse Keating |
2f82dda |
+++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
|
|
Jesse Keating |
2f82dda |
@@ -514,30 +514,9 @@ struct iwl_ht_info {
|
|
Jesse Keating |
2f82dda |
u8 non_GF_STA_present;
|
|
Jesse Keating |
2f82dda |
};
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
-union iwl_qos_capabity {
|
|
Jesse Keating |
2f82dda |
- struct {
|
|
Jesse Keating |
2f82dda |
- u8 edca_count:4; /* bit 0-3 */
|
|
Jesse Keating |
2f82dda |
- u8 q_ack:1; /* bit 4 */
|
|
Jesse Keating |
2f82dda |
- u8 queue_request:1; /* bit 5 */
|
|
Jesse Keating |
2f82dda |
- u8 txop_request:1; /* bit 6 */
|
|
Jesse Keating |
2f82dda |
- u8 reserved:1; /* bit 7 */
|
|
Jesse Keating |
2f82dda |
- } q_AP;
|
|
Jesse Keating |
2f82dda |
- struct {
|
|
Jesse Keating |
2f82dda |
- u8 acvo_APSD:1; /* bit 0 */
|
|
Jesse Keating |
2f82dda |
- u8 acvi_APSD:1; /* bit 1 */
|
|
Jesse Keating |
2f82dda |
- u8 ac_bk_APSD:1; /* bit 2 */
|
|
Jesse Keating |
2f82dda |
- u8 ac_be_APSD:1; /* bit 3 */
|
|
Jesse Keating |
2f82dda |
- u8 q_ack:1; /* bit 4 */
|
|
Jesse Keating |
2f82dda |
- u8 max_len:2; /* bit 5-6 */
|
|
Jesse Keating |
2f82dda |
- u8 more_data_ack:1; /* bit 7 */
|
|
Jesse Keating |
2f82dda |
- } q_STA;
|
|
Jesse Keating |
2f82dda |
- u8 val;
|
|
Jesse Keating |
2f82dda |
-};
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
/* QoS structures */
|
|
Jesse Keating |
2f82dda |
struct iwl_qos_info {
|
|
Jesse Keating |
2f82dda |
int qos_active;
|
|
Jesse Keating |
2f82dda |
- union iwl_qos_capabity qos_cap;
|
|
Jesse Keating |
2f82dda |
struct iwl_qosparam_cmd def_qos_parm;
|
|
Jesse Keating |
2f82dda |
};
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
|
Jesse Keating |
2f82dda |
index 619590d..95447ca 100644
|
|
Jesse Keating |
2f82dda |
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
|
Jesse Keating |
2f82dda |
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
|
|
Jesse Keating |
2f82dda |
@@ -3091,8 +3091,6 @@ void iwl3945_post_associate(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
break;
|
|
Jesse Keating |
2f82dda |
}
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- iwl_activate_qos(priv, 0);
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
/* we have just associated, don't start scan too early */
|
|
Jesse Keating |
2f82dda |
priv->next_scan_jiffies = jiffies + IWL_DELAY_NEXT_SCAN;
|
|
Jesse Keating |
2f82dda |
}
|
|
Jesse Keating |
2f82dda |
@@ -3805,11 +3803,6 @@ static int iwl3945_init_drv(struct iwl_priv *priv)
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
priv->iw_mode = NL80211_IFTYPE_STATION;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
- iwl_reset_qos(priv);
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_active = 0;
|
|
Jesse Keating |
2f82dda |
- priv->qos_data.qos_cap.val = 0;
|
|
Jesse Keating |
2f82dda |
-
|
|
Jesse Keating |
2f82dda |
priv->rates_mask = IWL_RATES_MASK;
|
|
Jesse Keating |
2f82dda |
priv->tx_power_user_lmt = IWL_DEFAULT_TX_POWER;
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
--
|
|
Jesse Keating |
2f82dda |
1.6.2.5
|
|
Jesse Keating |
2f82dda |
|
|
Jesse Keating |
2f82dda |
_______________________________________________
|
|
Jesse Keating |
2f82dda |
kernel mailing list
|
|
Jesse Keating |
2f82dda |
kernel@lists.fedoraproject.org
|
|
Jesse Keating |
2f82dda |
https://admin.fedoraproject.org/mailman/listinfo/kernel
|
|
Jesse Keating |
2f82dda |
|