Thread (11 messages) 11 messages, 4 authors, 2018-07-03

Re: [PATCH] mac80211: add stop/start logic for software TXQs

From: Johannes Berg <johannes@sipsolutions.net>
Date: 2018-07-03 09:45:21

On Mon, 2018-07-02 at 14:48 +0530, Manikanta Pubbisetty wrote:
quoted
quoted
@@ -298,10 +354,15 @@ static void __ieee80211_wake_queue(struct ieee80211_hw *hw, int queue,
  	if (local->q_stop_reasons[queue][reason] == 0)
  		__clear_bit(reason, &local->queue_stop_reasons[queue]);
  
+	if (local->ops->wake_tx_queue)
+		__clear_bit(reason, &local->txqs_stopped);
+
  	if (local->queue_stop_reasons[queue] != 0)
  		/* someone still has this queue stopped */
  		return;
  
+	ieee80211_wake_txqs(local);
I'm not sure this is the right place to hook in?

This might interact really strangely with drivers - which also get here.
Perhaps we should make this conditional on reason != DRIVER?
Good point!  IMO the condition (reason != DRIVER) does not fit well; if 
the reason for stop queues is DRIVER then we don't get a chance to wake 
them again. May be deferring the wake_txqs by scheduling a tasklet 
should help?
Not sure what you mean? But I see what I said was also confusing.

What I meant is that we should just not allow the driver to stop the
TXQs this way - if it's a TXQ driver then it should just stop scheduling
if it needs to, it shouldn't continue scheduling and rely on us blocking
it.

We, for mac80211's purposes, need to stop, cannot influence scheduling
and want to unify it with the 'normal' queue stop - so my thought would
be that we should only set the TXQ to stopped if the reason isn't
DRIVER.

johannes
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help