summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Boyer <jwboyer@redhat.com>2012-06-11 08:01:13 -0400
committerJosh Boyer <jwboyer@redhat.com>2012-06-11 08:05:05 -0400
commitbec80f249c5b9b2a59d359bb917204ea2f83cf66 (patch)
treeaaa714b2bab847b00d7df2d07597f90fa5e713b6
parentbe25d944564ce1377cf9622730389963151d0b86 (diff)
downloadkernel-bec80f249c5b9b2a59d359bb917204ea2f83cf66.tar.gz
kernel-bec80f249c5b9b2a59d359bb917204ea2f83cf66.tar.xz
kernel-bec80f249c5b9b2a59d359bb917204ea2f83cf66.zip
Add two upstream commits to fix flaky iwlwifi (rhbz 825491)
-rw-r--r--iwlwifi-disable-the-buggy-chain-extension-feature-in-HW.patch48
-rw-r--r--iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch45
-rw-r--r--kernel.spec13
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 000000000..c4f2ed3a1
--- /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@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@vger.kernel.org
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: John W. Linville <linville@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 000000000..f7c3c7181
--- /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@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@vger.kernel.org [2.6.27+]
+Reviewed-by: Meenakshi Venkataraman <meenakshi.venkataraman@intel.com>
+Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: John W. Linville <linville@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 caad5aea9..87cbd9214 100644
--- a/kernel.spec
+++ b/kernel.spec
@@ -62,7 +62,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
@@ -740,6 +740,10 @@ Patch22000: weird-root-dentry-name-debug.patch
#selinux ptrace child permissions
Patch22001: selinux-apply-different-permission-to-ptrace-child.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
@@ -1426,6 +1430,10 @@ ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch
#Highbank clock functions
ApplyPatch highbank-export-clock-functions.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
@@ -2276,6 +2284,9 @@ fi
# ||----w |
# || ||
%changelog
+* Mon Jun 11 2012 Josh Boyer <jwboyer@redhat.com>
+- Add two upstream commits to fix flaky iwlwifi (rhbz 825491)
+
* Sun Jun 10 2012 Peter Robinson <pbrobinson@fedoraproject.org>
- Temporarily disable ARM imx kernel due to missing clk patches
- Add patch to fix OMAP build