Michael Wu wrote:
On Friday 01 June 2007 09:58, James Ketrenos wrote:
In this way we are putting in a work around that doesn't result in an API
change, and that can eventually (hopefully) be fixed the "right way"
(whatever that may end up being)
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.
We definitely need to wake the queue outside of open/stop/tx. If you stop the queue due to the HW ring being full, you won't be able to wake the queue until the HW has asynchronously freed a Tx slot.
iwlwifi calls ieee80211_wake_queue during buffer reclaiming after the HW indicates the Tx has completed.
James
(in bcm43xx, stopping the tx rings is more correct and effective for what is
being done there - stopping TX so the radio can be recalibrated)
-Michael Wu
-
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