[kernel/f17] Add two upstream commits to fix flaky iwlwifi (rhbz 825491)

Josh Boyer jwboyer at fedoraproject.org
Mon Jun 11 12:03:29 UTC 2012


commit 2ccad4cf5ed711fbd2936b25a650852c8c3980ab
Author: Josh Boyer <jwboyer at redhat.com>
Date:   Mon Jun 11 08:01:13 2012 -0400

    Add two upstream commits to fix flaky iwlwifi (rhbz 825491)

 ...e-the-buggy-chain-extension-feature-in-HW.patch |   48 ++++++++++++++++++++
 ...-dont-mess-up-the-SCD-when-removing-a-key.patch |   45 ++++++++++++++++++
 kernel.spec                                        |   13 +++++-
 3 files changed, 105 insertions(+), 1 deletions(-)
---
diff --git a/iwlwifi-disable-the-buggy-chain-extension-feature-in-HW.patch b/iwlwifi-disable-the-buggy-chain-extension-feature-in-HW.patch
new file mode 100644
index 0000000..c4f2ed3
--- /dev/null
+++ b/iwlwifi-disable-the-buggy-chain-extension-feature-in-HW.patch
@@ -0,0 +1,48 @@
+From d012d04e4d6312ea157b6cf19e9689af934f5aa7 Mon Sep 17 00:00:00 2001
+From: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date: Wed, 6 Jun 2012 13:55:02 +0200
+Subject: [PATCH] iwlwifi: disable the buggy chain extension feature in HW
+
+This feature has been reported to be buggy and enabled by
+default. We therefore need to disable it manually.
+
+Cc: stable at vger.kernel.org
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Signed-off-by: Johannes Berg <johannes.berg at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-prph.h       |    1 +
+ drivers/net/wireless/iwlwifi/iwl-trans-pcie.c |    5 +++++
+ 2 files changed, 6 insertions(+), 0 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-prph.h b/drivers/net/wireless/iwlwifi/iwl-prph.h
+index 3b10692..dfd5466 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-prph.h
++++ b/drivers/net/wireless/iwlwifi/iwl-prph.h
+@@ -224,6 +224,7 @@
+ #define SCD_TXFACT		(SCD_BASE + 0x10)
+ #define SCD_ACTIVE		(SCD_BASE + 0x14)
+ #define SCD_QUEUECHAIN_SEL	(SCD_BASE + 0xe8)
++#define SCD_CHAINEXT_EN		(SCD_BASE + 0x244)
+ #define SCD_AGGR_SEL		(SCD_BASE + 0x248)
+ #define SCD_INTERRUPT_MASK	(SCD_BASE + 0x108)
+ 
+diff --git a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
+index ec6fb39..79c6b91 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
++++ b/drivers/net/wireless/iwlwifi/iwl-trans-pcie.c
+@@ -1058,6 +1058,11 @@ static void iwl_tx_start(struct iwl_trans *trans)
+ 	iwl_write_prph(trans, SCD_DRAM_BASE_ADDR,
+ 		       trans_pcie->scd_bc_tbls.dma >> 10);
+ 
++	/* The chain extension of the SCD doesn't work well. This feature is
++	 * enabled by default by the HW, so we need to disable it manually.
++	 */
++	iwl_write_prph(trans, SCD_CHAINEXT_EN, 0);
++
+ 	/* Enable DMA channel */
+ 	for (chan = 0; chan < FH_TCSR_CHNL_NUM ; chan++)
+ 		iwl_write_direct32(trans, FH_TCSR_CHNL_TX_CONFIG_REG(chan),
+-- 
+1.7.7.6
+
diff --git a/iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch b/iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch
new file mode 100644
index 0000000..f7c3c71
--- /dev/null
+++ b/iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch
@@ -0,0 +1,45 @@
+From d6ee27eb13beab94056e0de52d81220058ca2297 Mon Sep 17 00:00:00 2001
+From: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Date: Wed, 6 Jun 2012 09:13:36 +0200
+Subject: [PATCH] iwlwifi: don't mess up the SCD when removing a key
+
+When we remove a key, we put a key index which was supposed
+to tell the fw that we are actually removing the key. But
+instead the fw took that index as a valid index and messed
+up the SRAM of the device.
+
+This memory corruption on the device mangled the data of
+the SCD. The impact on the user is that SCD queue 2 got
+stuck after having removed keys.
+The message is the log that was printed is:
+
+Queue 2 stuck for 10000ms
+
+This doesn't seem to fix the higher queues that get stuck
+from time to time.
+
+Cc: stable at vger.kernel.org [2.6.27+]
+Reviewed-by: Meenakshi Venkataraman <meenakshi.venkataraman at intel.com>
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach at intel.com>
+Signed-off-by: Johannes Berg <johannes.berg at intel.com>
+Signed-off-by: John W. Linville <linville at tuxdriver.com>
+---
+ drivers/net/wireless/iwlwifi/iwl-agn-sta.c |    2 +-
+ 1 files changed, 1 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
+index aea07aa..eb6a8ea 100644
+--- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
++++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c
+@@ -1267,7 +1267,7 @@ int iwl_remove_dynamic_key(struct iwl_priv *priv,
+ 		key_flags |= STA_KEY_MULTICAST_MSK;
+ 
+ 	sta_cmd.key.key_flags = key_flags;
+-	sta_cmd.key.key_offset = WEP_INVALID_OFFSET;
++	sta_cmd.key.key_offset = keyconf->hw_key_idx;
+ 	sta_cmd.sta.modify_mask = STA_MODIFY_KEY_MASK;
+ 	sta_cmd.mode = STA_CONTROL_MODIFY_MSK;
+ 
+-- 
+1.7.6.5
+
diff --git a/kernel.spec b/kernel.spec
index f132855..a179180 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -54,7 +54,7 @@ Summary: The Linux kernel
 # For non-released -rc kernels, this will be appended after the rcX and
 # gitX tags, so a 3 here would become part of release "0.rcX.gitX.3"
 #
-%global baserelease 1
+%global baserelease 2
 %global fedora_build %{baserelease}
 
 # base_sublevel is the kernel version we're starting with and patching
@@ -769,6 +769,10 @@ Patch22019: rtl818x-fix-sleeping-function-called-from-invalid-context.patch
 #rhbz 822825 822821 CVE-2012-2372
 Patch22021: mm-pmd_read_atomic-fix-32bit-PAE-pmd-walk-vs-pmd_populate-SMP-race-condition.patch
 
+#rhbz 825491
+Patch22023: iwlwifi-disable-the-buggy-chain-extension-feature-in-HW.patch
+Patch22024: iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch
+
 # END OF PATCH DEFINITIONS
 
 %endif
@@ -1478,6 +1482,10 @@ ApplyPatch rtl818x-fix-sleeping-function-called-from-invalid-context.patch
 #rhbz 822825 822821 CVE-2012-2372
 ApplyPatch mm-pmd_read_atomic-fix-32bit-PAE-pmd-walk-vs-pmd_populate-SMP-race-condition.patch
 
+#rhbz 825491
+ApplyPatch iwlwifi-disable-the-buggy-chain-extension-feature-in-HW.patch
+ApplyPatch iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch
+
 # END OF PATCH APPLICATIONS
 
 %endif
@@ -2332,6 +2340,9 @@ fi
 #    '-'      |  |
 #              '-'
 %changelog
+* Mon Jun 11 2012 Josh Boyer <jwboyer at redhat.com>
+- Add two upstream commits to fix flaky iwlwifi (rhbz 825491)
+
 * Sat Jun 09 2012 Josh Boyer <jwboyer at redhat.com> 3.4.2-1
 - Linux v3.4.2
 


More information about the scm-commits mailing list