49 lines
1.9 KiB
Diff
49 lines
1.9 KiB
Diff
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
|
|
|