Michael Buesch wrote:
This updates stop_queue(s) kdoc as currently there's a undocumented dependency. Stopping the queue from anywhere else than the ops->tx() callback will result in a hard to debug deadlock and system freeze (on UP).
...
-- I'd still prefer someone fixes the issue. I don't understand the code well enough to fix it.
Perhaps having ieee80211_stop_queue keep a mac80211 internal state flag that is checked within the Tx operation before the driver's Tx callback is made. Then, if that bit is set, mac80211 can invoke the internal "deadlock if outside of Tx" queue stop action to halt Tx?
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) James - 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