linux-wireless.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Rico Derrer <rico.derrer@neratec.com>
To: Felix Fietkau <nbd@openwrt.org>
Cc: linux-wireless@vger.kernel.org, kvalo@codeaurora.org
Subject: Re: [PATCH 3.19] ath9k: fix race condition in irq processing during hardware reset
Date: Mon, 19 Jan 2015 09:26:57 +0100 (CET)	[thread overview]
Message-ID: <1748015898.90209.1421656017853.JavaMail.zimbra@neratec.com> (raw)
In-Reply-To: <1998405401.90208.1421656011302.JavaMail.zimbra@neratec.com>

> On 2015-01-16 09:00, Rico Derrer wrote:
>> Hi Felix
>> 
>> Felix Fietkau wrote:
>>> diff --git a/drivers/net/wireless/ath/ath9k/main.c
>>> b/drivers/net/wireless/ath/ath9k/main.c
>>> index 9a72640..62b0bf4 100644
>>> --- a/drivers/net/wireless/ath/ath9k/main.c
>>> +++ b/drivers/net/wireless/ath/ath9k/main.c
>>> @@ -285,6 +285,7 @@ static int ath_reset_internal(struct ath_softc *sc, struct
>>> ath9k_channel *hchan)
>>> 
>>> __ath_cancel_work(sc);
>>> 
>>> + disable_irq(sc->irq);
>>> tasklet_disable(&sc->intr_tq);
>>> tasklet_disable(&sc->bcon_tasklet);
>>> spin_lock_bh(&sc->sc_pcu_lock);
>>> @@ -331,6 +332,7 @@ static int ath_reset_internal(struct ath_softc *sc, struct
>>> ath9k_channel *hchan)
>>> r = -EIO;
>>> 
>>> out:
>>> + enable_irq(sc->irq);
>>> spin_unlock_bh(&sc->sc_pcu_lock);
>>> tasklet_enable(&sc->bcon_tasklet);
>>> tasklet_enable(&sc->intr_tq);
>> 
>> This part completely blocks the system on a AR9350. Loading the
>> module works but configuring it hangs the system until watchdog restarts it.
> What kernel/software are you running on there? When I committed this
> patch to OpenWrt, it uncovered IRQ handling bugs in MIPS kernel code
> (both generic and in the ath79 platform code).
> 
> You can find the fixes that I've made here:
> http://git.openwrt.org/?p=openwrt.git;a=blob_plain;f=target/linux/generic/patches-3.14/130-mips_cpu_irq_disable.patch
> http://git.openwrt.org/?p=openwrt.git;a=blob_plain;f=target/linux/ar71xx/patches-3.14/736-MIPS-ath79-fix-chained-irq-disable.patch
> 
> I've already submitted the first one to linux-mips.
> 
> - Felix

Thank you, these patches fixed the problem.

Rico

  parent reply	other threads:[~2015-01-19  8:27 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-01-14 13:17 [PATCH 3.19] ath9k: fix race condition in irq processing during hardware reset Felix Fietkau
2015-01-15  9:09 ` Sujith Manoharan
2015-01-15  9:46   ` Felix Fietkau
     [not found] ` <1459283661.83111.1421395216463.JavaMail.zimbra@neratec.com>
2015-01-16  8:00   ` Rico Derrer
2015-01-16 10:41     ` Felix Fietkau
     [not found]       ` <1998405401.90208.1421656011302.JavaMail.zimbra@neratec.com>
2015-01-19  8:26         ` Rico Derrer [this message]
2015-01-19 12:37           ` Kalle Valo
2015-01-19 12:36 ` Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1748015898.90209.1421656017853.JavaMail.zimbra@neratec.com \
    --to=rico.derrer@neratec.com \
    --cc=kvalo@codeaurora.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=nbd@openwrt.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).