"Bob Copeland" <me@xxxxxxxxxxxxxxx> wrote: > On Fri, 03 Oct 2008 16:42:17 +0200, Elias Oltmanns wrote >> 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; >> } > > Shouldn't the freezer take care of this? If userspace is suspended until > after devices are resumed, then, in a hand-wavy argument, I don't believe > ->stop() could be called. Well, I'm just not too sure about that. Please note that I'm not concerned about user space interfering too early in the resume process, which is indeed prevented by the freezer. It's rather that user space may initiate iface shutdown immediately before tasks are frozen and due to heavy load or other unfortunate circumstances the kernel doesn't get round to serve the request before suspend. When the system rsumes, the kernel completes the iface shutdown procedure by calling ath5k_init(). > > Adding a flag to ath5k_init to make sure we do everything in the mutex >would > certainly ensure that there's no issues. On the other hand, I don't want to > cruft up the code too much since we know at some point mac80211 is going to > take down the interfaces in its suspend/resume callbacks, at which time the > flags can probably get tossed. ath5k_init() is declared statically, so I don't see why adding an argument which may well be dropped again later should be too much trouble. Regards, Elias -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html