Add two upstream commits to fix flaky iwlwifi (rhbz 825491)
This commit is contained in:
parent
be25d94456
commit
bec80f249c
@ -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
|
||||||
|
|
45
iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch
Normal file
45
iwlwifi-dont-mess-up-the-SCD-when-removing-a-key.patch
Normal file
@ -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
|
||||||
|
|
13
kernel.spec
13
kernel.spec
@ -62,7 +62,7 @@ Summary: The Linux kernel
|
|||||||
# For non-released -rc kernels, this will be appended after the rcX and
|
# 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"
|
# 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}
|
%global fedora_build %{baserelease}
|
||||||
|
|
||||||
# base_sublevel is the kernel version we're starting with and patching
|
# 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
|
#selinux ptrace child permissions
|
||||||
Patch22001: selinux-apply-different-permission-to-ptrace-child.patch
|
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
|
# END OF PATCH DEFINITIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -1426,6 +1430,10 @@ ApplyPatch selinux-apply-different-permission-to-ptrace-child.patch
|
|||||||
#Highbank clock functions
|
#Highbank clock functions
|
||||||
ApplyPatch highbank-export-clock-functions.patch
|
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
|
# END OF PATCH APPLICATIONS
|
||||||
|
|
||||||
%endif
|
%endif
|
||||||
@ -2276,6 +2284,9 @@ fi
|
|||||||
# ||----w |
|
# ||----w |
|
||||||
# || ||
|
# || ||
|
||||||
%changelog
|
%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>
|
* Sun Jun 10 2012 Peter Robinson <pbrobinson@fedoraproject.org>
|
||||||
- Temporarily disable ARM imx kernel due to missing clk patches
|
- Temporarily disable ARM imx kernel due to missing clk patches
|
||||||
- Add patch to fix OMAP build
|
- Add patch to fix OMAP build
|
||||||
|
Loading…
Reference in New Issue
Block a user