> 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