On Wed, Aug 19, 2009 at 5:42 PM, Bob Copeland<me@xxxxxxxxxxxxxxx> wrote: > On Wed, Aug 19, 2009 at 4:47 PM, Fabio Comolli<fabio.comolli@xxxxxxxxx> wrote: >> Hi all. >> I see the following warning on an eeePC 900 (AR5001) running >> 2.6.31-rc6 after a suspend/resume cycle: >> >> [ 292.377941] ------------[ cut here ]------------ >> [ 292.377976] WARNING: at net/mac80211/mlme.c:2292 >> ieee80211_sta_work+0x89/0xc39 [mac80211]() > > if (WARN_ON(local->suspended)) ... Okay, I think I see what is going on here. suspend ieee80211_scan_cancel ieee80211_notify_scan_completed ieee80211_mlme_scan_completed ieee80211_ibss_scan_completed ieee80211_mesh_scan_completed All of these completed() notifications queue work. That's not a problem because we flush the workqueue shortly thereafter. However, flushing the workqueue runs the scheduled work, which can queue _more_ work (sometimes on a timer with queue_delayed_work), and none of the work functions in 2.6.31 currently check for local->quiesced. Repeat this process once more and we eventually hit the warning. Can we just replace the last flush_workqueue() with cancel_delayed_work_sync() or will that break something? -- Bob Copeland %% www.bobcopeland.com -- 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