diff options
author | Felix Fietkau <nbd@nbd.name> | 2020-08-23 14:50:13 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2020-09-24 18:10:16 +0200 |
commit | fe5b5ab52e9d385d5e6d20e3ce2d2af69175f6ad (patch) | |
tree | b6b17fa7c2f983ad1370576ce6653ea318c0dd31 /drivers/net/wireless/mediatek/mt76/tx.c | |
parent | 16254fc51f7df622bd870f70cf6ae84d2d4c08a3 (diff) |
mt76: unify queue tx cleanup code
Cleanup and preparation for changing tx scheduling behavior
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/tx.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/tx.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/tx.c b/drivers/net/wireless/mediatek/mt76/tx.c index d8252e28bacd..1a2f2163c6c3 100644 --- a/drivers/net/wireless/mediatek/mt76/tx.c +++ b/drivers/net/wireless/mediatek/mt76/tx.c @@ -696,3 +696,25 @@ int mt76_skb_adjust_pad(struct sk_buff *skb) return 0; } EXPORT_SYMBOL_GPL(mt76_skb_adjust_pad); + +void mt76_queue_tx_complete(struct mt76_dev *dev, struct mt76_queue *q, + struct mt76_queue_entry *e) +{ + enum mt76_txq_id qid = e->qid % 4; + bool ext_phy = e->qid >= 4; + + if (e->skb) + dev->drv->tx_complete_skb(dev, qid, e); + + spin_lock_bh(&q->lock); + q->tail = (q->tail + 1) % q->ndesc; + q->queued--; + + if (ext_phy) + qid += __MT_TXQ_MAX; + + if (e->schedule) + dev->q_tx[qid].swq_queued--; + spin_unlock_bh(&q->lock); +} +EXPORT_SYMBOL_GPL(mt76_queue_tx_complete); |