> On Mon, Mar 25, 2019 at 02:00:36PM +0100, Lorenzo Bianconi wrote:
> > > On Sun, Mar 24, 2019 at 03:51:43PM +0100, Lorenzo Bianconi wrote:
> > > > +               int idx;
> > > > +
> > > >                 sq = &dev->q_tx[i];
> > > >                 q = sq->q;
> > > >  
> > > > -               spin_lock_bh(&q->lock);
> > > > -               while (true) {
> > > > -                       if (!q->entry[q->head].done || !q->queued)
> > > > +               while (q->queued > n_queued) {
> > > > +                       if (!q->entry[q->head].done)
> > > >                                 break;
> > > If you place done = false here you will not need additional idx
> > > variable.
> > 
> > As Felix suggested, I would set done to false at the end of the loop, after
> > tx_complete_skb
> Why this is needed? 

logically I think it should be the last thing to do on the current skb but
probably moving it before tx_complete_skb will not make any difference

> 
> > > >                         dev->drv->tx_complete_skb(dev, i, &entry);
> > > > -                       spin_lock_bh(&q->lock);
> > > > +                       q->entry[idx].done = false;
> > > >                 }
> > > >  
> > > > +               spin_lock_bh(&q->lock);
> > > This patch does not apply for me as there is missing
> > > mt76_txq_schedule(dev, sq);
> > 
> > Sorry I forgot to mention this patch is based on
> > https://patchwork.kernel.org/patch/10856027/. Have you applied it?
> No.
> 
> Stanislaw
> 

Attachment: signature.asc
Description: PGP signature

Reply via email to