summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGreg Kroah-Hartman <gregkh@suse.de>2011-05-27 17:36:23 +0800
committerGreg Kroah-Hartman <gregkh@suse.de>2011-05-27 17:36:23 +0800
commit42730985ffe992c4ce51a3aa40e29a488bd2b58f (patch)
treecb28870c76d6e8421656795d1538e7418bd7c86d
parent731b282bf141c664f745cdc0f84f6cbf89ee1830 (diff)
downloadstable-queue-42730985ffe992c4ce51a3aa40e29a488bd2b58f.tar.gz
.39 patches
-rw-r--r--queue-2.6.39/ath9k_hw-do-noise-floor-calibration-only-on-required-chains.patch83
-rw-r--r--queue-2.6.39/ath9k_hw-fix-dual-band-assumption-for-xb113.patch39
-rw-r--r--queue-2.6.39/ath9k_hw-fix-power-for-the-ht40-duplicate-frames.patch53
-rw-r--r--queue-2.6.39/ath9k_hw-fix-sta-connection-issues-with-ar9380-xb113.patch35
-rw-r--r--queue-2.6.39/iwlagn-fix-iwl_is_any_associated.patch68
-rw-r--r--queue-2.6.39/powerpc-oprofile-handle-events-that-raise-an-exception-without-overflowing.patch66
-rw-r--r--queue-2.6.39/series6
7 files changed, 350 insertions, 0 deletions
diff --git a/queue-2.6.39/ath9k_hw-do-noise-floor-calibration-only-on-required-chains.patch b/queue-2.6.39/ath9k_hw-do-noise-floor-calibration-only-on-required-chains.patch
new file mode 100644
index 0000000000..2d48e13e46
--- /dev/null
+++ b/queue-2.6.39/ath9k_hw-do-noise-floor-calibration-only-on-required-chains.patch
@@ -0,0 +1,83 @@
+From 28ef6450f0182f95c4f50aaa0ab2043a09c72b0a Mon Sep 17 00:00:00 2001
+From: Rajkumar Manoharan <rmanoharan@atheros.com>
+Date: Wed, 4 May 2011 19:37:17 +0530
+Subject: ath9k_hw: do noise floor calibration only on required chains
+
+From: Rajkumar Manoharan <rmanoharan@atheros.com>
+
+commit 28ef6450f0182f95c4f50aaa0ab2043a09c72b0a upstream.
+
+At present the noise floor calibration is processed in supported
+control and extension chains rather than required chains.
+Unnccesarily doing nfcal in all supported chains leads to
+invalid nf readings on extn chains and these invalid values
+got updated into history buffer. While loading those values
+from history buffer is moving the chip to deaf state.
+
+This issue was observed in AR9002/AR9003 chips while doing
+associate/dissociate in HT40 mode and interface up/down
+in iterative manner. After some iterations, the chip was moved
+to deaf state. Somehow the pci devices are recovered by poll work
+after chip reset. Raading the nf values in all supported extension chains
+when the hw is not yet configured in HT40 mode results invalid values.
+
+Signed-off-by: Rajkumar Manoharan <rmanoharan@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/calib.c | 13 +++++++++++++
+ 1 file changed, 13 insertions(+)
+
+--- a/drivers/net/wireless/ath/ath9k/calib.c
++++ b/drivers/net/wireless/ath/ath9k/calib.c
+@@ -69,15 +69,21 @@ static void ath9k_hw_update_nfcal_hist_b
+ int16_t *nfarray)
+ {
+ struct ath_common *common = ath9k_hw_common(ah);
++ struct ieee80211_conf *conf = &common->hw->conf;
+ struct ath_nf_limits *limit;
+ struct ath9k_nfcal_hist *h;
+ bool high_nf_mid = false;
++ u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask;
+ int i;
+
+ h = cal->nfCalHist;
+ limit = ath9k_hw_get_nf_limits(ah, ah->curchan);
+
+ for (i = 0; i < NUM_NF_READINGS; i++) {
++ if (!(chainmask & (1 << i)) ||
++ ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf)))
++ continue;
++
+ h[i].nfCalBuffer[h[i].currIndex] = nfarray[i];
+
+ if (++h[i].currIndex >= ATH9K_NF_CAL_HIST_MAX)
+@@ -225,6 +231,7 @@ void ath9k_hw_loadnf(struct ath_hw *ah,
+ int32_t val;
+ u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask;
+ struct ath_common *common = ath9k_hw_common(ah);
++ struct ieee80211_conf *conf = &common->hw->conf;
+ s16 default_nf = ath9k_hw_get_default_nf(ah, chan);
+
+ if (ah->caldata)
+@@ -234,6 +241,9 @@ void ath9k_hw_loadnf(struct ath_hw *ah,
+ if (chainmask & (1 << i)) {
+ s16 nfval;
+
++ if ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf))
++ continue;
++
+ if (h)
+ nfval = h[i].privNF;
+ else
+@@ -293,6 +303,9 @@ void ath9k_hw_loadnf(struct ath_hw *ah,
+ ENABLE_REGWRITE_BUFFER(ah);
+ for (i = 0; i < NUM_NF_READINGS; i++) {
+ if (chainmask & (1 << i)) {
++ if ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf))
++ continue;
++
+ val = REG_READ(ah, ah->nf_regs[i]);
+ val &= 0xFFFFFE00;
+ val |= (((u32) (-50) << 1) & 0x1ff);
diff --git a/queue-2.6.39/ath9k_hw-fix-dual-band-assumption-for-xb113.patch b/queue-2.6.39/ath9k_hw-fix-dual-band-assumption-for-xb113.patch
new file mode 100644
index 0000000000..c78d20b5a7
--- /dev/null
+++ b/queue-2.6.39/ath9k_hw-fix-dual-band-assumption-for-xb113.patch
@@ -0,0 +1,39 @@
+From 9ba7f4f5eba5f4b44c7796bbad29f8ec3a7d5864 Mon Sep 17 00:00:00 2001
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+Date: Wed, 11 May 2011 14:57:26 -0700
+Subject: ath9k_hw: fix dual band assumption for XB113
+
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+
+commit 9ba7f4f5eba5f4b44c7796bbad29f8ec3a7d5864 upstream.
+
+The XB113 cards are single band, 5 GHz-only, but the
+default settings were configured to assume it was dual
+band. Users of these cards then would see 2.4 GHz channels
+but you would never get any scan results from these channels
+given that the radio is not present.
+
+Cc: Fiona Cain <Fiona.Cain@atheros.com>
+Cc: Ray Li <ray.li@greenwavereality.com>
+Cc: Kathy Giori <kathy.giori@atheros.com>
+Cc: Aeolus Yang <aeolus.yang@atheros.com>
+Cc: Dan Friedman <dan.friedman@atheros.com>
+Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+@@ -652,7 +652,7 @@ static const struct ar9300_eeprom ar9300
+ .regDmn = { LE16(0), LE16(0x1f) },
+ .txrxMask = 0x77, /* 4 bits tx and 4 bits rx */
+ .opCapFlags = {
+- .opFlags = AR5416_OPFLAGS_11G | AR5416_OPFLAGS_11A,
++ .opFlags = AR5416_OPFLAGS_11A,
+ .eepMisc = 0,
+ },
+ .rfSilent = 0,
diff --git a/queue-2.6.39/ath9k_hw-fix-power-for-the-ht40-duplicate-frames.patch b/queue-2.6.39/ath9k_hw-fix-power-for-the-ht40-duplicate-frames.patch
new file mode 100644
index 0000000000..6e962cfc79
--- /dev/null
+++ b/queue-2.6.39/ath9k_hw-fix-power-for-the-ht40-duplicate-frames.patch
@@ -0,0 +1,53 @@
+From cf3a03b9c99a0b2715741d116f50f513f545bb2d Mon Sep 17 00:00:00 2001
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+Date: Wed, 4 May 2011 14:01:26 -0700
+Subject: ath9k_hw: fix power for the HT40 duplicate frames
+
+From: Luis R. Rodriguez <lrodriguez@atheros.com>
+
+commit cf3a03b9c99a0b2715741d116f50f513f545bb2d upstream.
+
+With AR9003 at about ~ 10 feet from an AP that uses RTS / CTS you
+will be able to associate but not not get data through given that
+the power for the rates used was set too low. This increases the
+power and permits data connectivity at longer distances from
+access points when connected with HT40. Without this you will not
+get any data through when associated to APs configured in HT40
+at about more than 10 feet away.
+
+Cc: Fiona Cain <fcain@atheros.com>
+Cc: Zhen Xie <Zhen.Xie@Atheros.com>
+Cc: Kathy Giori <kathy.giori@atheros.com>
+Cc: Neha Choksi <neha.choksi@atheros.com>
+Cc: Wayne Daniel <wayne.daniel@atheros.com>
+Cc: Gaurav Jauhar <gaurav.jauhar@atheros.com>
+Cc: Samira Naraghi <samira.naraghi@atheros.com>
+CC: Ashok Chennupati <ashok.chennupati@atheros.com>
+Cc: Lance Zimmerman <lance.zimmerman@atheros.com>
+Signed-off-by: Luis R. Rodriguez <lrodriguez@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+@@ -3994,6 +3994,16 @@ static int ar9003_hw_tx_power_regwrite(s
+ POW_SM(pPwrArray[ALL_TARGET_LEGACY_1L_5L], 0)
+ );
+
++ /* Write the power for duplicated frames - HT40 */
++
++ /* dup40_cck (LSB), dup40_ofdm, ext20_cck, ext20_ofdm (MSB) */
++ REG_WRITE(ah, 0xa3e0,
++ POW_SM(pPwrArray[ALL_TARGET_LEGACY_6_24], 24) |
++ POW_SM(pPwrArray[ALL_TARGET_LEGACY_1L_5L], 16) |
++ POW_SM(pPwrArray[ALL_TARGET_LEGACY_6_24], 8) |
++ POW_SM(pPwrArray[ALL_TARGET_LEGACY_1L_5L], 0)
++ );
++
+ /* Write the HT20 power per rate set */
+
+ /* 0/8/16 (LSB), 1-3/9-11/17-19, 4, 5 (MSB) */
diff --git a/queue-2.6.39/ath9k_hw-fix-sta-connection-issues-with-ar9380-xb113.patch b/queue-2.6.39/ath9k_hw-fix-sta-connection-issues-with-ar9380-xb113.patch
new file mode 100644
index 0000000000..55de17655b
--- /dev/null
+++ b/queue-2.6.39/ath9k_hw-fix-sta-connection-issues-with-ar9380-xb113.patch
@@ -0,0 +1,35 @@
+From be0e6aa5a0c487a2a0880dda8bc70f7f1860fc39 Mon Sep 17 00:00:00 2001
+From: Senthil Balasubramanian <senthilkumar@atheros.com>
+Date: Thu, 12 May 2011 16:24:28 +0530
+Subject: ath9k_hw: Fix STA connection issues with AR9380 (XB113).
+
+From: Senthil Balasubramanian <senthilkumar@atheros.com>
+
+commit be0e6aa5a0c487a2a0880dda8bc70f7f1860fc39 upstream.
+
+XB113 (AR9380) 3x3 SB 5G only cards were failing to connect to APs
+due to incorrect xpabiaslevel configuration. fix it.
+
+Cc: Ray Li <ray.li@greenwavereality.com>
+Cc: Kathy Giori <kathy.giori@atheros.com>
+Cc: Aeolus Yang <aeolus.yang@atheros.com>
+Cc: compat@orbit-lab.org
+Signed-off-by: Senthil Balasubramanian <senthilkumar@atheros.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/ath/ath9k/ar9003_eeprom.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
+@@ -922,7 +922,7 @@ static const struct ar9300_eeprom ar9300
+ .db_stage2 = {3, 3, 3}, /* 3 chain */
+ .db_stage3 = {3, 3, 3}, /* doesn't exist for 2G */
+ .db_stage4 = {3, 3, 3}, /* don't exist for 2G */
+- .xpaBiasLvl = 0,
++ .xpaBiasLvl = 0xf,
+ .txFrameToDataStart = 0x0e,
+ .txFrameToPaOn = 0x0e,
+ .txClip = 3, /* 4 bits tx_clip, 4 bits dac_scale_cck */
diff --git a/queue-2.6.39/iwlagn-fix-iwl_is_any_associated.patch b/queue-2.6.39/iwlagn-fix-iwl_is_any_associated.patch
new file mode 100644
index 0000000000..26067d7bec
--- /dev/null
+++ b/queue-2.6.39/iwlagn-fix-iwl_is_any_associated.patch
@@ -0,0 +1,68 @@
+From 054ec924944912413e4ee927b8cf02f476d08783 Mon Sep 17 00:00:00 2001
+From: Johannes Berg <johannes.berg@intel.com>
+Date: Fri, 6 May 2011 11:11:20 -0700
+Subject: iwlagn: fix iwl_is_any_associated
+
+From: Johannes Berg <johannes.berg@intel.com>
+
+commit 054ec924944912413e4ee927b8cf02f476d08783 upstream.
+
+The function iwl_is_any_associated() was intended
+to check both contexts, but due to an oversight
+it only checks the BSS context. This leads to a
+problem with scanning since the passive dwell
+time isn't restricted appropriately and a scan
+that includes passive channels will never finish
+if only the PAN context is associated since the
+default dwell time of 120ms won't fit into the
+normal 100 TU DTIM interval.
+
+Fix the function by using for_each_context() and
+also reorganise the other functions a bit to take
+advantage of each other making the code easier to
+read.
+
+Signed-off-by: Johannes Berg <johannes.berg@intel.com>
+Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ drivers/net/wireless/iwlwifi/iwl-dev.h | 19 +++++++++++--------
+ 1 file changed, 11 insertions(+), 8 deletions(-)
+
+--- a/drivers/net/wireless/iwlwifi/iwl-dev.h
++++ b/drivers/net/wireless/iwlwifi/iwl-dev.h
+@@ -1658,21 +1658,24 @@ iwl_rxon_ctx_from_vif(struct ieee80211_v
+ ctx < &priv->contexts[NUM_IWL_RXON_CTX]; ctx++) \
+ if (priv->valid_contexts & BIT(ctx->ctxid))
+
+-static inline int iwl_is_associated(struct iwl_priv *priv,
+- enum iwl_rxon_context_id ctxid)
++static inline int iwl_is_associated_ctx(struct iwl_rxon_context *ctx)
+ {
+- return (priv->contexts[ctxid].active.filter_flags &
+- RXON_FILTER_ASSOC_MSK) ? 1 : 0;
++ return (ctx->active.filter_flags & RXON_FILTER_ASSOC_MSK) ? 1 : 0;
+ }
+
+-static inline int iwl_is_any_associated(struct iwl_priv *priv)
++static inline int iwl_is_associated(struct iwl_priv *priv,
++ enum iwl_rxon_context_id ctxid)
+ {
+- return iwl_is_associated(priv, IWL_RXON_CTX_BSS);
++ return iwl_is_associated_ctx(&priv->contexts[ctxid]);
+ }
+
+-static inline int iwl_is_associated_ctx(struct iwl_rxon_context *ctx)
++static inline int iwl_is_any_associated(struct iwl_priv *priv)
+ {
+- return (ctx->active.filter_flags & RXON_FILTER_ASSOC_MSK) ? 1 : 0;
++ struct iwl_rxon_context *ctx;
++ for_each_context(priv, ctx)
++ if (iwl_is_associated_ctx(ctx))
++ return true;
++ return false;
+ }
+
+ static inline int is_channel_valid(const struct iwl_channel_info *ch_info)
diff --git a/queue-2.6.39/powerpc-oprofile-handle-events-that-raise-an-exception-without-overflowing.patch b/queue-2.6.39/powerpc-oprofile-handle-events-that-raise-an-exception-without-overflowing.patch
new file mode 100644
index 0000000000..31bfd8d1f8
--- /dev/null
+++ b/queue-2.6.39/powerpc-oprofile-handle-events-that-raise-an-exception-without-overflowing.patch
@@ -0,0 +1,66 @@
+From ad5d5292f16c6c1d7d3e257c4c7407594286b97e Mon Sep 17 00:00:00 2001
+From: Eric B Munson <emunson@mgebm.net>
+Date: Mon, 23 May 2011 04:22:40 +0000
+Subject: powerpc/oprofile: Handle events that raise an exception without overflowing
+
+From: Eric B Munson <emunson@mgebm.net>
+
+commit ad5d5292f16c6c1d7d3e257c4c7407594286b97e upstream.
+
+Commit 0837e3242c73566fc1c0196b4ec61779c25ffc93 fixes a situation on POWER7
+where events can roll back if a specualtive event doesn't actually complete.
+This can raise a performance monitor exception. We need to catch this to ensure
+that we reset the PMC. In all cases the PMC will be less than 256 cycles from
+overflow.
+
+This patch lifts Anton's fix for the problem in perf and applies it to oprofile
+as well.
+
+Signed-off-by: Eric B Munson <emunson@mgebm.net>
+Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
+
+---
+ arch/powerpc/oprofile/op_model_power4.c | 24 +++++++++++++++++++++++-
+ 1 file changed, 23 insertions(+), 1 deletion(-)
+
+--- a/arch/powerpc/oprofile/op_model_power4.c
++++ b/arch/powerpc/oprofile/op_model_power4.c
+@@ -261,6 +261,28 @@ static int get_kernel(unsigned long pc,
+ return is_kernel;
+ }
+
++static bool pmc_overflow(unsigned long val)
++{
++ if ((int)val < 0)
++ return true;
++
++ /*
++ * Events on POWER7 can roll back if a speculative event doesn't
++ * eventually complete. Unfortunately in some rare cases they will
++ * raise a performance monitor exception. We need to catch this to
++ * ensure we reset the PMC. In all cases the PMC will be 256 or less
++ * cycles from overflow.
++ *
++ * We only do this if the first pass fails to find any overflowing
++ * PMCs because a user might set a period of less than 256 and we
++ * don't want to mistakenly reset them.
++ */
++ if (__is_processor(PV_POWER7) && ((0x80000000 - val) <= 256))
++ return true;
++
++ return false;
++}
++
+ static void power4_handle_interrupt(struct pt_regs *regs,
+ struct op_counter_config *ctr)
+ {
+@@ -281,7 +303,7 @@ static void power4_handle_interrupt(stru
+
+ for (i = 0; i < cur_cpu_spec->num_pmcs; ++i) {
+ val = classic_ctr_read(i);
+- if (val < 0) {
++ if (pmc_overflow(val)) {
+ if (oprofile_running && ctr[i].enabled) {
+ oprofile_add_ext_sample(pc, regs, i, is_kernel);
+ classic_ctr_write(i, reset_value[i]);
diff --git a/queue-2.6.39/series b/queue-2.6.39/series
index 9caabd9834..30951c7540 100644
--- a/queue-2.6.39/series
+++ b/queue-2.6.39/series
@@ -14,3 +14,9 @@ qla2xxx-fix-vport-delete-hang-when-logins-are-outstanding.patch
powerpc-kdump64-don-t-reference-freed-memory-as-pacas.patch
powerpc-kexec-fix-memory-corruption-from-unallocated-slaves.patch
x86-cpufeature-fix-cpuid-leaf-7-feature-detection.patch
+ath9k_hw-do-noise-floor-calibration-only-on-required-chains.patch
+ath9k_hw-fix-power-for-the-ht40-duplicate-frames.patch
+ath9k_hw-fix-dual-band-assumption-for-xb113.patch
+ath9k_hw-fix-sta-connection-issues-with-ar9380-xb113.patch
+powerpc-oprofile-handle-events-that-raise-an-exception-without-overflowing.patch
+iwlagn-fix-iwl_is_any_associated.patch