2011-09-13 15:18:17

by Rajkumar Manoharan

[permalink] [raw]
Subject: [PATCH] ath9k_hw: Do full chip reset on 11A channels

AR9003 seems to have issues sometimes with fast channel change
in 5GHz and this case is handled specifically for AR9002 by doing
a full reset. So let's do a full reset for 5GHz channles for all
chipsets.

Signed-off-by: Rajkumar Manoharan <[email protected]>
---
drivers/net/wireless/ath/ath9k/hw.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
index 308847d..622bfc9 100644
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1504,7 +1504,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
(chan->channel != ah->curchan->channel) &&
((chan->channelFlags & CHANNEL_ALL) ==
(ah->curchan->channelFlags & CHANNEL_ALL)) &&
- (!AR_SREV_9280(ah) || AR_DEVID_7010(ah))) {
+ !IS_CHAN_5GHZ(chan)) {

if (ath9k_hw_channel_change(ah, chan)) {
ath9k_hw_loadnf(ah, ah->curchan);
--
1.7.6.1



2011-09-14 06:43:17

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH] ath9k_hw: Do full chip reset on 11A channels

On Tue, Sep 13, 2011 at 10:38:16AM -0700, Paul Stewart wrote:
> On Tue, Sep 13, 2011 at 10:13 AM, Rajkumar Manoharan
> <[email protected]> wrote:
> > On Tue, Sep 13, 2011 at 09:01:29AM -0700, Paul Stewart wrote:
> >> On Tue, Sep 13, 2011 at 8:18 AM, Rajkumar Manoharan
> >> <[email protected]> wrote:
> >> > AR9003 seems to have issues sometimes with fast channel change
> >> > in 5GHz and this case is handled specifically for AR9002 by doing
> >> > a full reset. So let's do a full reset for 5GHz channles for all
> >> > chipsets.
> >>
> >> I'm not sure I understand. ?Are you asserting that AR9002 does not
> >> need a full reset for channel change in 2GHz? ? The code before your
> >> change would fall through for AR_SREV_9280(ah) && !AR_DEVID_7010(ah)
> >> whether in 2HGz or 5GHz, but that case gets removed with your change.
> >> Is that intentional?
> >>
> > Yes. Fast channel change is completely supported on 2GHz band. And also
> > if you look at the log history, the fast channel change was initially
> > disabled in 5GHz alone for AR9280 chips. AR7010 chip is the usb version of
> > AR9280. Instead of adding chip specific checks, the fastcc is disabled for
> > 5GHz.
>
> I might not be finding the right part of the history. I do see things
> like 0a475cc6a0ac8e38ac3587cff87026551800b7fe: Vasanthakumar
> Thiagarajan <[email protected]> "ath9k: Do a full reset for AR9280;
> AR9280 requires a full reset during channel change and HW reset.
> Currently, a fast channel change is done. This patch fixes this bug."
> This patch disabled fast-channel-change for the 9280 AND 2GHz channels
> (what I assume 5MHZ_SPACED to be filtering). I still see no point in
> history where 9280 was enabled for fast channel change in 2Ghz.
>
True. Let me check on this. Meanwhile I will send v2 patch to disable fastcc
on 11A for AR9380 alone.

--
Rajkumar

2011-09-13 17:38:23

by Paul Stewart

[permalink] [raw]
Subject: Re: [PATCH] ath9k_hw: Do full chip reset on 11A channels

On Tue, Sep 13, 2011 at 10:13 AM, Rajkumar Manoharan
<[email protected]> wrote:
> On Tue, Sep 13, 2011 at 09:01:29AM -0700, Paul Stewart wrote:
>> On Tue, Sep 13, 2011 at 8:18 AM, Rajkumar Manoharan
>> <[email protected]> wrote:
>> > AR9003 seems to have issues sometimes with fast channel change
>> > in 5GHz and this case is handled specifically for AR9002 by doing
>> > a full reset. So let's do a full reset for 5GHz channles for all
>> > chipsets.
>> >
>> > Signed-off-by: Rajkumar Manoharan <[email protected]>
>> > ---
>> > ?drivers/net/wireless/ath/ath9k/hw.c | ? ?2 +-
>> > ?1 files changed, 1 insertions(+), 1 deletions(-)
>> >
>> > diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
>> > index 308847d..622bfc9 100644
>> > --- a/drivers/net/wireless/ath/ath9k/hw.c
>> > +++ b/drivers/net/wireless/ath/ath9k/hw.c
>> > @@ -1504,7 +1504,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
>> > ? ? ? ? ? ?(chan->channel != ah->curchan->channel) &&
>> > ? ? ? ? ? ?((chan->channelFlags & CHANNEL_ALL) ==
>> > ? ? ? ? ? ? (ah->curchan->channelFlags & CHANNEL_ALL)) &&
>> > - ? ? ? ? ? (!AR_SREV_9280(ah) || AR_DEVID_7010(ah))) {
>> > + ? ? ? ? ? !IS_CHAN_5GHZ(chan)) {
>>
>> I'm not sure I understand. ?Are you asserting that AR9002 does not
>> need a full reset for channel change in 2GHz? ? The code before your
>> change would fall through for AR_SREV_9280(ah) && !AR_DEVID_7010(ah)
>> whether in 2HGz or 5GHz, but that case gets removed with your change.
>> Is that intentional?
>>
> Yes. Fast channel change is completely supported on 2GHz band. And also
> if you look at the log history, the fast channel change was initially
> disabled in 5GHz alone for AR9280 chips. AR7010 chip is the usb version of
> AR9280. Instead of adding chip specific checks, the fastcc is disabled for
> 5GHz.

I might not be finding the right part of the history. I do see things
like 0a475cc6a0ac8e38ac3587cff87026551800b7fe: Vasanthakumar
Thiagarajan <[email protected]> "ath9k: Do a full reset for AR9280;
AR9280 requires a full reset during channel change and HW reset.
Currently, a fast channel change is done. This patch fixes this bug."
This patch disabled fast-channel-change for the 9280 AND 2GHz channels
(what I assume 5MHZ_SPACED to be filtering). I still see no point in
history where 9280 was enabled for fast channel change in 2Ghz.

>
> --
> Rajkumar
>

2011-09-13 17:12:34

by Rajkumar Manoharan

[permalink] [raw]
Subject: Re: [PATCH] ath9k_hw: Do full chip reset on 11A channels

On Tue, Sep 13, 2011 at 09:01:29AM -0700, Paul Stewart wrote:
> On Tue, Sep 13, 2011 at 8:18 AM, Rajkumar Manoharan
> <[email protected]> wrote:
> > AR9003 seems to have issues sometimes with fast channel change
> > in 5GHz and this case is handled specifically for AR9002 by doing
> > a full reset. So let's do a full reset for 5GHz channles for all
> > chipsets.
> >
> > Signed-off-by: Rajkumar Manoharan <[email protected]>
> > ---
> > ?drivers/net/wireless/ath/ath9k/hw.c | ? ?2 +-
> > ?1 files changed, 1 insertions(+), 1 deletions(-)
> >
> > diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
> > index 308847d..622bfc9 100644
> > --- a/drivers/net/wireless/ath/ath9k/hw.c
> > +++ b/drivers/net/wireless/ath/ath9k/hw.c
> > @@ -1504,7 +1504,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
> > ? ? ? ? ? ?(chan->channel != ah->curchan->channel) &&
> > ? ? ? ? ? ?((chan->channelFlags & CHANNEL_ALL) ==
> > ? ? ? ? ? ? (ah->curchan->channelFlags & CHANNEL_ALL)) &&
> > - ? ? ? ? ? (!AR_SREV_9280(ah) || AR_DEVID_7010(ah))) {
> > + ? ? ? ? ? !IS_CHAN_5GHZ(chan)) {
>
> I'm not sure I understand. Are you asserting that AR9002 does not
> need a full reset for channel change in 2GHz? The code before your
> change would fall through for AR_SREV_9280(ah) && !AR_DEVID_7010(ah)
> whether in 2HGz or 5GHz, but that case gets removed with your change.
> Is that intentional?
>
Yes. Fast channel change is completely supported on 2GHz band. And also
if you look at the log history, the fast channel change was initially
disabled in 5GHz alone for AR9280 chips. AR7010 chip is the usb version of
AR9280. Instead of adding chip specific checks, the fastcc is disabled for
5GHz.

--
Rajkumar

2011-09-13 16:01:38

by Paul Stewart

[permalink] [raw]
Subject: Re: [PATCH] ath9k_hw: Do full chip reset on 11A channels

On Tue, Sep 13, 2011 at 8:18 AM, Rajkumar Manoharan
<[email protected]> wrote:
> AR9003 seems to have issues sometimes with fast channel change
> in 5GHz and this case is handled specifically for AR9002 by doing
> a full reset. So let's do a full reset for 5GHz channles for all
> chipsets.
>
> Signed-off-by: Rajkumar Manoharan <[email protected]>
> ---
> ?drivers/net/wireless/ath/ath9k/hw.c | ? ?2 +-
> ?1 files changed, 1 insertions(+), 1 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
> index 308847d..622bfc9 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.c
> +++ b/drivers/net/wireless/ath/ath9k/hw.c
> @@ -1504,7 +1504,7 @@ int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
> ? ? ? ? ? ?(chan->channel != ah->curchan->channel) &&
> ? ? ? ? ? ?((chan->channelFlags & CHANNEL_ALL) ==
> ? ? ? ? ? ? (ah->curchan->channelFlags & CHANNEL_ALL)) &&
> - ? ? ? ? ? (!AR_SREV_9280(ah) || AR_DEVID_7010(ah))) {
> + ? ? ? ? ? !IS_CHAN_5GHZ(chan)) {

I'm not sure I understand. Are you asserting that AR9002 does not
need a full reset for channel change in 2GHz? The code before your
change would fall through for AR_SREV_9280(ah) && !AR_DEVID_7010(ah)
whether in 2HGz or 5GHz, but that case gets removed with your change.
Is that intentional?

>
> ? ? ? ? ? ? ? ?if (ath9k_hw_channel_change(ah, chan)) {
> ? ? ? ? ? ? ? ? ? ? ? ?ath9k_hw_loadnf(ah, ah->curchan);
> --
> 1.7.6.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-wireless" in
> the body of a message to [email protected]
> More majordomo info at ?http://vger.kernel.org/majordomo-info.html
>