diff options
author | Josh Boyer <jwboyer@redhat.com> | 2012-06-11 08:01:13 -0400 |
---|---|---|
committer | Josh Boyer <jwboyer@redhat.com> | 2012-06-11 08:05:05 -0400 |
commit | bec80f249c5b9b2a59d359bb917204ea2f83cf66 (patch) | |
tree | aaa714b2bab847b00d7df2d07597f90fa5e713b6 | |
parent | be25d944564ce1377cf9622730389963151d0b86 (diff) | |
download | kernel-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.patch | 48 | ||||
-rw-r--r-- | iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch | 45 | ||||
-rw-r--r-- | 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 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 |