All of lore.kernel.org
 help / color / mirror / Atom feed
From: Elias Oltmanns <eo@nebensachen.de>
To: "Bob Copeland" <me@bobcopeland.com>
Cc: jirislaby@gmail.com, toralf.foerster@gmx.de,
	ath5k-devel@lists.ath5k.org, linux-wireless@vger.kernel.org,
	johannes@sipsolutions.net
Subject: Re: [ath5k-devel] Oops with current kernel and ath5k
Date: Fri, 03 Oct 2008 16:42:17 +0200	[thread overview]
Message-ID: <87fxnd2112.fsf@denkblock.local> (raw)
In-Reply-To: <20081003134648.M45120@bobcopeland.com> (Bob Copeland's message of "Fri, 3 Oct 2008 10:13:33 -0400")

"Bob Copeland" <me@bobcopeland.com> wrote:
> On Thu, 2 Oct 2008 14:37:17 -0400, Bob Copeland wrote
>> On Thu, Oct 2, 2008 at 12:31 PM, Elias Oltmanns <eo@nebensachen.de> wrote:
>
>> > Sorry, but I don't think this is safe. Checking and restoring the
>> > started flag has to be protected too, otherwise there can be races
>> > against ->stop().
>> 
>> Yes, it's a bit of a mess.  Even if it were serialized, a ->stop()
>> happening between suspend's call to hw_stop and actually powering down
>> the device would clear the flag.  Ho hum.
>
> Okay, as usual I'm wrong here; it will clear the flag but we don't care
> since then we just wouldn't power up on resume.
>
> Since no one else chimed in, here's take two with more chewing gum and 
> baling wire to fix the suspend/stop race.
>
> ---
>  drivers/net/wireless/ath5k/base.c |   24 +++++++++++++++++-------
>  drivers/net/wireless/ath5k/base.h |    3 ++-
>  2 files changed, 19 insertions(+), 8 deletions(-)
>
> diff --git a/drivers/net/wireless/ath5k/base.c b/drivers/net/wireless/ath5k/base.c
> index e09ed2c..7e8fa2e 100644
> --- a/drivers/net/wireless/ath5k/base.c
> +++ b/drivers/net/wireless/ath5k/base.c
[...]
> @@ -666,9 +666,12 @@ ath5k_pci_resume(struct pci_dev *pdev)
>  		goto err_no_irq;
>  	}
>  
> -	err = ath5k_init(sc);
> -	if (err)
> -		goto err_irq;
> +	if (test_bit(ATH_STAT_STARTED, sc->status)) {
> +		err = ath5k_init(sc);

I still feel uneasy about this. Granted, I haven't thought this through
too carefully, but I'd rather not rely on the fact that ath5k_stop_hw()
will not get called between the check for ATH_STAT_STARTED and the call
to ath5k_init if I can help it. Perhaps you can add an argument `reinit'
to ath5k_init() and do something like this under the mutex:

	if (reinit && !test_bit(ATH_STAT_STARTED, sc->status)) {
		mutex_unlock(...);
		return;
	}

Regards,

Elias

  reply	other threads:[~2008-10-03 14:42 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <200808101401.03339.toralf.foerster@gmx.de>
     [not found] ` <b6c5339f0808101124x6f9359dct9ad828db1e6d1b2c@mail.gmail.com>
2008-10-01 18:55   ` Oops with current kernel and ath5k Toralf Förster
2008-10-01 21:10     ` Elias Oltmanns
2008-10-01 22:15       ` [ath5k-devel] " Bob Copeland
2008-10-01 22:34         ` Elias Oltmanns
2008-10-02  2:04           ` Bob Copeland
2008-10-02  7:53             ` Elias Oltmanns
2008-10-02  9:24               ` Johannes Berg
2008-10-02 12:52               ` Bob Copeland
2008-10-02 15:02                 ` Bob Copeland
2008-10-02 16:31                   ` Elias Oltmanns
2008-10-02 18:37                     ` Bob Copeland
2008-10-03 14:13                       ` Bob Copeland
2008-10-03 14:42                         ` Elias Oltmanns [this message]
2008-10-03 19:43                           ` Bob Copeland
2008-10-05 12:45                             ` Elias Oltmanns
2008-10-06 14:12                               ` Bob Copeland
2008-10-06 14:23                                 ` Johannes Berg
2008-10-06 14:36                                   ` Bob Copeland
2008-10-09 10:40                                     ` Johannes Berg
2008-10-07  1:35                               ` Bob Copeland
2008-10-07 10:44                                 ` Elias Oltmanns
2008-10-07 12:19                                   ` Bob Copeland
2008-10-07 12:57                                   ` Bob Copeland
2008-10-07 20:48                                     ` Elias Oltmanns
2008-10-07 13:06                                   ` Bob Copeland
2008-10-07 20:52                                     ` Elias Oltmanns
2008-10-09  2:15                                       ` Bob Copeland
2008-10-11 20:30                                         ` Elias Oltmanns
2008-10-02  8:17       ` Johannes Berg

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=87fxnd2112.fsf@denkblock.local \
    --to=eo@nebensachen.de \
    --cc=ath5k-devel@lists.ath5k.org \
    --cc=jirislaby@gmail.com \
    --cc=johannes@sipsolutions.net \
    --cc=linux-wireless@vger.kernel.org \
    --cc=me@bobcopeland.com \
    --cc=toralf.foerster@gmx.de \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.