2013-04-01 14:23:05

by Robert Shade

[permalink] [raw]
Subject: [PATCH] ath9k: Re-enable interrupts after a channel change failure

Re-enable interrupts after a channel change failure, since
ath_complete_reset will not be called. Also schedule a reset as a
best effort method to recover the chip from whatever state caused the
channel change failure.

Signed-off-by: Robert Shade <[email protected]>
---
drivers/net/wireless/ath/ath9k/main.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/main.c
b/drivers/net/wireless/ath/ath9k/main.c
index 24650fd..0567ac9 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -280,6 +280,12 @@ static int ath_reset_internal(struct ath_softc
*sc, struct ath9k_channel *hchan)
if (r) {
ath_err(common,
"Unable to reset channel, reset status %d\n", r);
+
+ ath9k_hw_set_interrupts(ah);
+ ath9k_hw_enable_interrupts(ah);
+
+ ath9k_queue_reset(sc, RESET_TYPE_BB_HANG);
+
goto out;
}

--
1.7.1


2013-04-01 16:25:45

by Adrian Chadd

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Re-enable interrupts after a channel change failure

You filed a bug against this, right? Can you mention the bug report in there?

(What's the "blessed" way to mention a bugzilla.kernel.org bug in a
linux git commit?)



adrian


On 1 April 2013 07:22, Robert Shade <[email protected]> wrote:
> Re-enable interrupts after a channel change failure, since
> ath_complete_reset will not be called. Also schedule a reset as a
> best effort method to recover the chip from whatever state caused the
> channel change failure.
>
> Signed-off-by: Robert Shade <[email protected]>
> ---
> drivers/net/wireless/ath/ath9k/main.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/main.c
> b/drivers/net/wireless/ath/ath9k/main.c
> index 24650fd..0567ac9 100644
> --- a/drivers/net/wireless/ath/ath9k/main.c
> +++ b/drivers/net/wireless/ath/ath9k/main.c
> @@ -280,6 +280,12 @@ static int ath_reset_internal(struct ath_softc
> *sc, struct ath9k_channel *hchan)
> if (r) {
> ath_err(common,
> "Unable to reset channel, reset status %d\n", r);
> +
> + ath9k_hw_set_interrupts(ah);
> + ath9k_hw_enable_interrupts(ah);
> +
> + ath9k_queue_reset(sc, RESET_TYPE_BB_HANG);
> +
> goto out;
> }
>
> --
> 1.7.1

2013-04-01 17:40:46

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Re-enable interrupts after a channel change failure

On 2013-04-01 4:22 PM, Robert Shade wrote:
> Re-enable interrupts after a channel change failure, since
> ath_complete_reset will not be called. Also schedule a reset as a
> best effort method to recover the chip from whatever state caused the
> channel change failure.
>
> Signed-off-by: Robert Shade <[email protected]>
Your patch is badly whitespace damaged.

> ---
> drivers/net/wireless/ath/ath9k/main.c | 6 ++++++
> 1 files changed, 6 insertions(+), 0 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/main.c
> b/drivers/net/wireless/ath/ath9k/main.c
> index 24650fd..0567ac9 100644
> --- a/drivers/net/wireless/ath/ath9k/main.c
> +++ b/drivers/net/wireless/ath/ath9k/main.c
> @@ -280,6 +280,12 @@ static int ath_reset_internal(struct ath_softc
> *sc, struct ath9k_channel *hchan)
> if (r) {
> ath_err(common,
> "Unable to reset channel, reset status %d\n", r);
> +
> + ath9k_hw_set_interrupts(ah);
Why the call to ath9k_hw_set_interrupts here?

> + ath9k_hw_enable_interrupts(ah);
> +
> + ath9k_queue_reset(sc, RESET_TYPE_BB_HANG);
> +
> goto out;
> }


2013-04-02 12:03:45

by Robert Shade

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Re-enable interrupts after a channel change failure

On Mon, Apr 1, 2013 at 1:40 PM, Felix Fietkau <[email protected]> wrote:
> Your patch is badly whitespace damaged.

Ouch, must be the gmail web client. I'll resubmit a fixed one.

> Why the call to ath9k_hw_set_interrupts here?

Simply because that's what ath_complete_reset does

2013-04-01 17:44:13

by John W. Linville

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Re-enable interrupts after a channel change failure

On Mon, Apr 01, 2013 at 09:25:43AM -0700, Adrian Chadd wrote:
> You filed a bug against this, right? Can you mention the bug report in there?
>
> (What's the "blessed" way to mention a bugzilla.kernel.org bug in a
> linux git commit?)

I usually just include the URL. "Fixes Bug #12345" would suffice as well.

--
John W. Linville Someday the world will need a hero, and you
[email protected] might be all we have. Be ready.

2013-04-02 12:24:36

by Felix Fietkau

[permalink] [raw]
Subject: Re: [PATCH] ath9k: Re-enable interrupts after a channel change failure

On 2013-04-02 2:03 PM, Robert Shade wrote:
> On Mon, Apr 1, 2013 at 1:40 PM, Felix Fietkau <[email protected]> wrote:
>> Your patch is badly whitespace damaged.
>
> Ouch, must be the gmail web client. I'll resubmit a fixed one.
>
>> Why the call to ath9k_hw_set_interrupts here?
>
> Simply because that's what ath_complete_reset does
OK. You can leave it out, because it's not required for
interrupt-disable refcounting, and it will be called again after a
successful reset.

- Felix