2009-07-09 21:18:01

by Steven Luo

[permalink] [raw]
Subject: [PATCH] ath9k: Fix enabling OFDM weak signal detection

From: Steven Luo <[email protected]>

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 <[email protected]>
Cc: [email protected]
---

--- a/drivers/net/wireless/ath/ath9k/ani.c 2009-06-24 21:14:00.000000000 -0700
+++ b/drivers/net/wireless/ath/ath9k/ani.c 2009-07-06 02:45:57.000000000 -0700
@@ -482,7 +482,7 @@ void ath9k_ani_reset(struct ath_hw *ah)
ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0);
ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0);
ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
- !ATH9K_ANI_USE_OFDM_WEAK_SIG);
+ ATH9K_ANI_USE_OFDM_WEAK_SIG);
ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR,
ATH9K_ANI_CCK_WEAK_SIG_THR);




2009-07-10 18:03:20

by Luis R. Rodriguez

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

On Thu, Jul 9, 2009 at 2:12 PM, Steven Luo<[email protected]> wrote:
> From: Steven Luo <[email protected]>
>
> 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 <[email protected]>
> Cc: [email protected]
> ---

NACK for now, please give us a chance to review this -- this may
actually be correct.

Luis

> --- a/drivers/net/wireless/ath/ath9k/ani.c      2009-06-24 21:14:00.000000000 -0700
> +++ b/drivers/net/wireless/ath/ath9k/ani.c      2009-07-06 02:45:57.000000000 -0700
> @@ -482,7 +482,7 @@ void ath9k_ani_reset(struct ath_hw *ah)
>                ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0);
>                ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0);
>                ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
> -                                    !ATH9K_ANI_USE_OFDM_WEAK_SIG);
> +                                    ATH9K_ANI_USE_OFDM_WEAK_SIG);
>                ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR,
>                                     ATH9K_ANI_CCK_WEAK_SIG_THR);
>
>
> _______________________________________________
> ath9k-devel mailing list
> [email protected]
> https://lists.ath9k.org/mailman/listinfo/ath9k-devel
>

2009-07-11 18:54:54

by Steven Luo

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Fix enabling OFDM weak signal detection

On Sat, Jul 11, 2009 at 06:26:14PM +0300, Nick Kossifidis wrote:
> Does your AP operate on 2.4GHz band or 5GHz ?

2.4 GHz -- my card doesn't support 5 GHz operation.

-Steven Luo

2009-07-15 04:04:28

by Steven Luo

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

On Tue, Jul 14, 2009 at 11:11:48AM -0700, Luis R. Rodriguez wrote:
> On Tue, Jul 14, 2009 at 11:03:48AM -0700, Luis Rodriguez wrote:
> > Please try this patch instead, I've only compile tested this.

Yeah, this works too. Thanks!

-Steven Luo

> Now without the double AP check :)
>
> From: Luis R. Rodriguez <[email protected]>
> 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 <[email protected]>
> Cc: Bennyam Malavazi <[email protected]
> Cc: Jouni Malinen <[email protected]>
> Signed-off-by: Luis R. Rodriguez <[email protected]>
> ---
> 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


2009-07-11 15:26:16

by Nick Kossifidis

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Fix enabling OFDM weak signal detection

2009/7/10 Steven Luo <[email protected]>:
> From: Steven Luo <[email protected]>
>
> 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.
>

(sorry, bad reply to all)

Does your AP operate on 2.4GHz band or 5GHz ?

--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

2009-07-11 15:23:34

by Nick Kossifidis

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

2009/7/10 Luis R. Rodriguez <[email protected]>:
> On Thu, Jul 9, 2009 at 2:12 PM, Steven Luo<[email protected]> wrote:
>> From: Steven Luo <[email protected]>
>>
>> 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 <[email protected]>
>> Cc: [email protected]
>> ---
>
> NACK for now, please give us a chance to review this -- this may
> actually be correct.
>
>  Luis
>
>> --- a/drivers/net/wireless/ath/ath9k/ani.c      2009-06-24 21:14:00.000000000 -0700
>> +++ b/drivers/net/wireless/ath/ath9k/ani.c      2009-07-06 02:45:57.000000000 -0700
>> @@ -482,7 +482,7 @@ void ath9k_ani_reset(struct ath_hw *ah)
>>                ath9k_hw_ani_control(ah, ATH9K_ANI_SPUR_IMMUNITY_LEVEL, 0);
>>                ath9k_hw_ani_control(ah, ATH9K_ANI_FIRSTEP_LEVEL, 0);
>>                ath9k_hw_ani_control(ah, ATH9K_ANI_OFDM_WEAK_SIGNAL_DETECTION,
>> -                                    !ATH9K_ANI_USE_OFDM_WEAK_SIG);
>> +                                    ATH9K_ANI_USE_OFDM_WEAK_SIG);
>>                ath9k_hw_ani_control(ah, ATH9K_ANI_CCK_WEAK_SIGNAL_THR,
>>                                     ATH9K_ANI_CCK_WEAK_SIG_THR);
>>
>>

Does your AP operate on 2.4GHz band or 5GHz ?

--
GPG ID: 0xD21DB2DB
As you read this post global entropy rises. Have Fun ;-)
Nick

2009-07-14 18:03:49

by Luis R. Rodriguez

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

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<[email protected]> wrote:
> > From: Steven Luo <[email protected]>
> >
> > 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 <[email protected]>
> > Cc: [email protected]
> > ---
>
> 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.

From: Luis R. Rodriguez <[email protected]>
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 <[email protected]>
Cc: Bennyam Malavazi <[email protected]
Cc: Jouni Malinen <[email protected]>
Signed-off-by: Luis R. Rodriguez <[email protected]>
---
drivers/net/wireless/ath/ath9k/ani.c | 13 +++++++++++++
1 files changed, 13 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,19 @@ 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 ||
+ 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


2009-07-14 18:11:50

by Luis R. Rodriguez

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

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<[email protected]> wrote:
> > > From: Steven Luo <[email protected]>
> > >
> > > 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 <[email protected]>
> > > Cc: [email protected]
> > > ---
> >
> > 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 <[email protected]>
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 <[email protected]>
Cc: Bennyam Malavazi <[email protected]
Cc: Jouni Malinen <[email protected]>
Signed-off-by: Luis R. Rodriguez <[email protected]>
---
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