On 2018-09-16 10:42, Toke Høiland-Jørgensen wrote:
Another update, addressing most of the concerns raised in the last round:

- Added schedule_start()/end() functions that adds locking around the
  whole scheduling operation, which means we can get rid of the 'first'
  parameter to ieee80211_next_txq().

Toke,

Wouldn't this start()/end() APIs cause deadlock if mac80211 tries to acquire
active_txq_lock[ac] again? Or am I missing?

schedule_start()
while (next_txq()) {
  push_txq -> tx_dequeue()
  return_txq()
}
schedule_end()

tx_dequeue()
 ieee80211_free_txskb
  -> ieee80211_report_used_skb
   -> ieee80211_tdls_td_tx_handle
    -> ieee80211_subif_start_xmit
    -> __ieee80211_subif_start_xmit
      -> ieee80211_xmit_fast
        -> ieee80211_queue_skb
         -> schedule_and_wake_txq

-Rajkumar

Reply via email to