Search Linux Wireless

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

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 2018-07-02 at 14:48 +0530, Manikanta Pubbisetty wrote:
> > 
> > > @@ -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



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux