Hey, Johannes. On 11/16/2010 06:40 PM, Johannes Berg wrote: > On Tue, 2010-11-16 at 15:19 +0100, Tejun Heo wrote: > >> 3. What if you replace it with the following? >> >> alloc_workqueue(wiphy_name(local->hw.wiphy), WQ_NON_REENTRANT, 0) > > Wait ... what's the difference between this and > alloc_ordered_workqueue() then? alloc_ordered_workqueue() is fully ordered. ie. Works are executed in the queued order regardless of where it's queued, which also implies that there is only one work in progress at any given time. WQ_NON_REENTRANT doesn't guarantee ordered execution but it guarantees that a single work is not executed concurrently on multiple CPUs. I'm not sure whether this would be safe for the workqueue used by mac80211 but it should let us know whether the workqueue is choked due to a work which is executing for long time. In the long run, if using non reentrant is safe for mac80211, using it would be much better. Thanks. -- tejun -- 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