2007/6/1, James Ketrenos <jketreno@xxxxxxxxxxxxxxx>:
Michael Wu wrote: > A workaround could be implemented, but I currently don't see any cases where > stopping/waking the queue outside of open/stop/tx is necessary or correct. Is calling the ieee80211_stop_queue[s] from open/stop OK then? The doc update said only in ops->tx. Should the driver be calling it in the stop callback, or will the stack stop the queues for us? iwlwifi currently calls ieee80211_stop_queue from the Tx handler and calls ieee80211_stop_queues in the event the adapter is reset (due to HW error, RF kill transition, hw tear down, etc.) as it asynchronously brings re-initializes the hardware.
Out of pure "design intuition", there seems to be a real difference between stop_queue and stop_queues. In other words, stop_queues should not be seen as just a shortcut for multi-ring devices, as each should actually be called from different contexts: - stop_queue will indeed stop one queue only, but stopping a single queue seems to make sense only on tx (when a tx_ring gets full). - stop_queues on the other hand means stop all queues, and this should only be needed on stop, reset, etc (why would you stop all queues on tx?). In this regard, a single ring device should probably still call stop_queues in these contexts. (The same difference makes sense for the wake_... counterparts) -- Olivier Cornu - 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