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