Search Linux Wireless

Re: [ath9k-devel] [PATCH] ath9k: Fix enabling OFDM weak signal detection

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jul 14, 2009 at 11:03:48AM -0700, Luis Rodriguez wrote:
> On Fri, Jul 10, 2009 at 11:02:58AM -0700, Luis R. Rodriguez wrote:
> > On Thu, Jul 9, 2009 at 2:12 PM, Steven Luo<steven@xxxxxxxxxxxxx> wrote:
> > > From: Steven Luo <steven@xxxxxxxxxxxxx>
> > >
> > > It seems that OFDM weak signal detection should be enabled after an ANI
> > > state reset, as indicated by the initial setting of ofdmWeakSigDetectOff
> > > and what the open Atheros HAL does.  Unfortunately, the reversed sense
> > > of ofdmWeakSigDetectOff (true if weak signal detection is NOT enabled)
> > > seems to have resulted in a mixup here, causing weak signal detection to
> > > be disabled.
> > >
> > > This patch significantly improves reception and throughput from distant
> > > stations for my AR5416-based AP running compat-wireless 2009-06-25.
> > >
> > > Signed-off-by: Steven Luo <steven@xxxxxxxxxxxxx>
> > > Cc: stable@xxxxxxxxxx
> > > ---
> >
> > NACK for now, please give us a chance to review this -- this may
> > actually be correct.
> 
> Please try this patch instead, I've only compile tested this.

Now without the double AP check :)

From: Luis R. Rodriguez <lrodriguez@xxxxxxxxxxx>
Subject: [PATCH] ath9k: Tune ANI function processing on AP mode during ANI reset

For AP mode we must tune ANI specially for 2 GHz and
for 5 GHz. We mask in only the flags we want to toggle
on ath9k_hw_ani_control() through the ah->ani_function
bitmask, this will take care of ignoring changes during
ANI reset which we were disabling before.

Reported-by: Steven Luo <steven@xxxxxxxxxxxxx>
Cc: Bennyam Malavazi <Bennyam.Malavazi@xxxxxxxxxxx
Cc: Jouni Malinen <Jouni.Malinen@xxxxxxxxxxx>
Signed-off-by: Luis R. Rodriguez <lrodriguez@xxxxxxxxxxx>
---
 drivers/net/wireless/ath/ath9k/ani.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/ani.c b/drivers/net/wireless/ath/ath9k/ani.c
--- a/drivers/net/wireless/ath/ath9k/ani.c
+++ b/drivers/net/wireless/ath/ath9k/ani.c
@@ -478,6 +478,18 @@ void ath9k_ani_reset(struct ath_hw *ah)
 			"Reset ANI state opmode %u\n", ah->opmode);
 		ah->stats.ast_ani_reset++;
 
+		if (ah->opmode == NL80211_IFTYPE_AP) {
+			/*
+			 * ath9k_hw_ani_control() will only process items set on
+			 * ah->ani_function
+			 */
+			if (IS_CHAN_2GHZ(chan))
+				ah->ani_function = (ATH9K_ANI_SPUR_IMMUNITY_LEVEL |
+						    ATH9K_ANI_FIRSTEP_LEVEL);
+			else
+				ah->ani_function = 0;
+		}
+
 		ath9k_hw_ani_control(ah, ATH9K_ANI_NOISE_IMMUNITY_LEVEL, 0);
 		ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0);
 		ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0);
-- 
1.6.3.3

--
To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux