[kernel/f16] iwlwifi: do not set the sequence control bit is not needed ath9k: fix max phy rate at rate control i
John W. Linville
linville at fedoraproject.org
Thu Dec 22 14:35:14 UTC 2011
commit 2e7bab382217ef947c8016501132091da337baeb
Author: John W. Linville <linville at tuxdriver.com>
Date: Thu Dec 22 09:34:47 2011 -0500
iwlwifi: do not set the sequence control bit is not needed
ath9k: fix max phy rate at rate control init
mwifiex: avoid double list_del in command cancel path
iwlwifi: update SCD BC table for all SCD queues
ath9k-fix-max-phy-rate-at-rate-control-init.patch | 37 ++++++++++++
...not-set-the-sequence-control-bit-is-not-n.patch | 37 ++++++++++++
...fi-update-SCD-BC-table-for-all-SCD-queues.patch | 36 ++++++++++++
kernel.spec | 14 +++++
...id-double-list_del-in-command-cancel-path.patch | 59 ++++++++++++++++++++
5 files changed, 183 insertions(+), 0 deletions(-)
---
diff --git a/ath9k-fix-max-phy-rate-at-rate-control-init.patch b/ath9k-fix-max-phy-rate-at-rate-control-init.patch
new file mode 100644
index 0000000..cb0719b
--- /dev/null
+++ b/ath9k-fix-max-phy-rate-at-rate-control-init.patch
@@ -0,0 +1,37 @@
+From 10636bc2d60942254bda149827b922c41f4cb4af Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
+Date: Sat, 10 Dec 2011 18:59:43 +0530
+Subject: [PATCH 03/10] ath9k: fix max phy rate at rate control init
+
+The stations always chooses 1Mbps for all trasmitting frames,
+whenever the AP is configured to lock the supported rates.
+As the max phy rate is always set with the 4th from highest phy rate,
+this assumption might be wrong if we have less than that. Fix that.
+
+Cc: stable at kernel.org
+Cc: Paul Stewart <pstew at google.com>
+Reported-by: Ajay Gummalla <agummalla at google.com>
+Signed-off-by: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/ath/ath9k/rc.c | 4 +++-
+ 1 files changed, 3 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c
+index 8448281..cc5703b 100644
+--- a/drivers/net/wireless/ath/ath9k/rc.c
++++ b/drivers/net/wireless/ath/ath9k/rc.c
+@@ -1270,7 +1270,9 @@ static void ath_rc_init(struct ath_softc *sc,
+
+ ath_rc_priv->max_valid_rate = k;
+ ath_rc_sort_validrates(rate_table, ath_rc_priv);
+- ath_rc_priv->rate_max_phy = ath_rc_priv->valid_rate_index[k-4];
++ ath_rc_priv->rate_max_phy = (k > 4) ?
++ ath_rc_priv->valid_rate_index[k-4] :
++ ath_rc_priv->valid_rate_index[k-1];
+ ath_rc_priv->rate_table = rate_table;
+
+ ath_dbg(common, ATH_DBG_CONFIG,
+--
+1.7.4.4
+
diff --git a/iwlwifi-do-not-set-the-sequence-control-bit-is-not-n.patch b/iwlwifi-do-not-set-the-sequence-control-bit-is-not-n.patch
new file mode 100644
index 0000000..d65d1a7
--- /dev/null
+++ b/iwlwifi-do-not-set-the-sequence-control-bit-is-not-n.patch
@@ -0,0 +1,37 @@
+From 123877b80ed62c3b897c53357b622574c023b642 Mon Sep 17 00:00:00 2001
+From: Wey-Yi Guy <wey-yi.w.guy at intel.com>
+Date: Thu, 8 Dec 2011 15:52:00 -0800
+Subject: [PATCH 01/10] iwlwifi: do not set the sequence control bit is not
+ needed
+
+Check the IEEE80211_TX_CTL_ASSIGN_SEQ flag from mac80211, then decide how to
+set the TX_CMD_FLG_SEQ_CTL_MSK bit. Setting the wrong bit in BAR frame whill
+make the firmware to increment the sequence number which is incorrect and
+cause unknown behavior.
+
+CC: stable at vger.kernel.org #3.0+
+Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-agn-tx.c | 5 ++++-
+ 1 files changed, 4 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+index 35a6b71..df1540c 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c
+@@ -91,7 +91,10 @@ static void iwlagn_tx_cmd_build_basic(struct iwl_priv *priv,
+ tx_cmd->tid_tspec = qc[0] & 0xf;
+ tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK;
+ } else {
+- tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK;
++ if (info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)
++ tx_flags |= TX_CMD_FLG_SEQ_CTL_MSK;
++ else
++ tx_flags &= ~TX_CMD_FLG_SEQ_CTL_MSK;
+ }
+
+ iwlagn_tx_cmd_protection(priv, info, fc, &tx_flags);
+--
+1.7.4.4
+
diff --git a/iwlwifi-update-SCD-BC-table-for-all-SCD-queues.patch b/iwlwifi-update-SCD-BC-table-for-all-SCD-queues.patch
new file mode 100644
index 0000000..f25d6e0
--- /dev/null
+++ b/iwlwifi-update-SCD-BC-table-for-all-SCD-queues.patch
@@ -0,0 +1,36 @@
+From 96f1f05af76b601ab21a7dc603ae0a1cea4efc3d Mon Sep 17 00:00:00 2001
+From: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date: Fri, 16 Dec 2011 07:53:18 -0800
+Subject: [PATCH 10/10] iwlwifi: update SCD BC table for all SCD queues
+
+Since we configure all the queues as CHAINABLE, we need to update the
+byte count for all the queues, not only the AGGREGATABLE ones.
+
+Not doing so can confuse the SCD and make the fw assert.
+
+Cc: stable at vger.kernel.org
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Signed-off-by: Wey-Yi Guy <wey-yi.w.guy at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-trans-pcie.c | 4 +---
+ 1 files changed, 1 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
+index ce91898..5f17ab8 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
++++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
+@@ -1197,9 +1197,7 @@ static int iwl_trans_pcie_tx(struct iwl_trans *trans, struct sk_buff *skb,
+ iwl_print_hex_dump(trans, IWL_DL_TX, (u8 *)tx_cmd->hdr, hdr_len);
+
+ /* Set up entry for this TFD in Tx byte-count array */
+- if (is_agg)
+- iwl_trans_txq_update_byte_cnt_tbl(trans, txq,
+- le16_to_cpu(tx_cmd->len));
++ iwl_trans_txq_update_byte_cnt_tbl(trans, txq, le16_to_cpu(tx_cmd->len));
+
+ dma_sync_single_for_device(bus(trans)->dev, txcmd_phys, firstlen,
+ DMA_BIDIRECTIONAL);
+--
+1.7.4.4
+
diff --git a/kernel.spec b/kernel.spec
index bb92a13..167c876 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -832,6 +832,10 @@ Patch21049: tpm_tis-delay-after-aborting-cmd.patch
Patch50000: compat-wireless-config-fixups.patch
Patch50001: compat-wireless-change-CONFIG_IWLAGN-CONFIG_IWLWIFI.patch
Patch50100: iwlwifi-tx_sync-only-on-PAN-context.patch
+Patch50101: ath9k-fix-max-phy-rate-at-rate-control-init.patch
+Patch50102: iwlwifi-do-not-set-the-sequence-control-bit-is-not-n.patch
+Patch50103: iwlwifi-update-SCD-BC-table-for-all-SCD-queues.patch
+Patch50104: mwifiex-avoid-double-list_del-in-command-cancel-path.patch
Patch22000: route-cache-garbage-collector.patch
@@ -1608,8 +1612,12 @@ ApplyPatch compat-wireless-change-CONFIG_IWLAGN-CONFIG_IWLWIFI.patch
ApplyPatch bcma-brcmsmac-compat.patch
# Apply some iwlwifi regression fixes not in the 3.2-rc6 wireless snapshot
+ApplyPatch iwlwifi-do-not-set-the-sequence-control-bit-is-not-n.patch
+ApplyPatch ath9k-fix-max-phy-rate-at-rate-control-init.patch
+ApplyPatch mwifiex-avoid-double-list_del-in-command-cancel-path.patch
ApplyPatch iwlwifi-tx_sync-only-on-PAN-context.patch
ApplyPatch iwlwifi-allow-to-switch-to-HT40-if-not-associated.patch
+ApplyPatch iwlwifi-update-SCD-BC-table-for-all-SCD-queues.patch
cd ..
@@ -2283,6 +2291,12 @@ fi
# and build.
%changelog
+* Thu Dec 22 2011 John W. Linville <linville at redhat.com>
+- iwlwifi: do not set the sequence control bit is not needed
+- ath9k: fix max phy rate at rate control init
+- mwifiex: avoid double list_del in command cancel path
+- iwlwifi: update SCD BC table for all SCD queues
+
* Wed Dec 21 2011 Dave Jones <davej at redhat.com> 3.1.6-1
- Linux 3.1.6
diff --git a/mwifiex-avoid-double-list_del-in-command-cancel-path.patch b/mwifiex-avoid-double-list_del-in-command-cancel-path.patch
new file mode 100644
index 0000000..90b6957
--- /dev/null
+++ b/mwifiex-avoid-double-list_del-in-command-cancel-path.patch
@@ -0,0 +1,59 @@
+From 51e708c1049e721b9c5c48d026bc97ca8497d39a Mon Sep 17 00:00:00 2001
+From: Yogesh Ashok Powar <yogeshp at marvell.com>
+Date: Tue, 13 Dec 2011 20:43:16 -0800
+Subject: [PATCH 04/10] mwifiex: avoid double list_del in command cancel path
+
+Command cancel path cancels the current command and moves
+it to free command queue. While doing that it deletes the
+command entry from the pending list. This is not correct
+as the entry has been already deleted from the pending
+list at 'mwifiex_exec_next_cmd'. Fixing it.
+
+Also making sure the stale command pointer is cleaned and
+unaccessible for later use.
+
+Signed-off-by: Yogesh Ashok Powar <yogeshp at marvell.com>
+Signed-off-by: Bing Zhao <bzhao at marvell.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/mwifiex/cmdevt.c | 9 ++-------
+ 1 files changed, 2 insertions(+), 7 deletions(-)
+
+diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c
+index ac27815..6e0a3ea 100644
+--- a/drivers/net/wireless/mwifiex/cmdevt.c
++++ b/drivers/net/wireless/mwifiex/cmdevt.c
+@@ -939,7 +939,6 @@ mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
+ {
+ struct cmd_ctrl_node *cmd_node = NULL, *tmp_node = NULL;
+ unsigned long cmd_flags;
+- unsigned long cmd_pending_q_flags;
+ unsigned long scan_pending_q_flags;
+ uint16_t cancel_scan_cmd = false;
+
+@@ -949,12 +948,9 @@ mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
+ cmd_node = adapter->curr_cmd;
+ cmd_node->wait_q_enabled = false;
+ cmd_node->cmd_flag |= CMD_F_CANCELED;
+- spin_lock_irqsave(&adapter->cmd_pending_q_lock,
+- cmd_pending_q_flags);
+- list_del(&cmd_node->list);
+- spin_unlock_irqrestore(&adapter->cmd_pending_q_lock,
+- cmd_pending_q_flags);
+ mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
++ mwifiex_complete_cmd(adapter, adapter->curr_cmd);
++ adapter->curr_cmd = NULL;
+ spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, cmd_flags);
+ }
+
+@@ -981,7 +977,6 @@ mwifiex_cancel_pending_ioctl(struct mwifiex_adapter *adapter)
+ spin_unlock_irqrestore(&adapter->mwifiex_cmd_lock, cmd_flags);
+ }
+ adapter->cmd_wait_q.status = -1;
+- mwifiex_complete_cmd(adapter, adapter->curr_cmd);
+ }
+
+ /*
+--
+1.7.4.4
+
More information about the scm-commits
mailing list