Commit e226ba2e authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Felix Fietkau

mt76: remove mt76_queue dependency from tx_complete_skb function pointer

Remove mt76_queue dependency from tx_complete_skb function pointer and
rely on mt76_tx_qid instead. Remove flush from tx_complete_skb
signature. This is a preliminary patch to introduce mt76_sw_queue
support
Signed-off-by: default avatarLorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 300832ad
...@@ -171,7 +171,7 @@ mt76_dma_tx_cleanup(struct mt76_dev *dev, enum mt76_txq_id qid, bool flush) ...@@ -171,7 +171,7 @@ mt76_dma_tx_cleanup(struct mt76_dev *dev, enum mt76_txq_id qid, bool flush)
if (entry.skb) { if (entry.skb) {
spin_unlock_bh(&q->lock); spin_unlock_bh(&q->lock);
dev->drv->tx_complete_skb(dev, q, &entry, flush); dev->drv->tx_complete_skb(dev, qid, &entry);
spin_lock_bh(&q->lock); spin_lock_bh(&q->lock);
} }
...@@ -348,7 +348,7 @@ int mt76_dma_tx_queue_skb(struct mt76_dev *dev, enum mt76_txq_id qid, ...@@ -348,7 +348,7 @@ int mt76_dma_tx_queue_skb(struct mt76_dev *dev, enum mt76_txq_id qid,
free: free:
e.skb = skb; e.skb = skb;
e.txwi = t; e.txwi = t;
dev->drv->tx_complete_skb(dev, q, &e, true); dev->drv->tx_complete_skb(dev, qid, &e);
mt76_put_txwi(dev, t); mt76_put_txwi(dev, t);
return ret; return ret;
} }
......
...@@ -292,8 +292,8 @@ struct mt76_driver_ops { ...@@ -292,8 +292,8 @@ struct mt76_driver_ops {
struct mt76_wcid *wcid, struct mt76_wcid *wcid,
struct ieee80211_sta *sta, u32 *tx_info); struct ieee80211_sta *sta, u32 *tx_info);
void (*tx_complete_skb)(struct mt76_dev *dev, struct mt76_queue *q, void (*tx_complete_skb)(struct mt76_dev *dev, enum mt76_txq_id qid,
struct mt76_queue_entry *e, bool flush); struct mt76_queue_entry *e);
bool (*tx_status_data)(struct mt76_dev *dev, u8 *update); bool (*tx_status_data)(struct mt76_dev *dev, u8 *update);
......
...@@ -1143,8 +1143,8 @@ void mt7603_mac_add_txs(struct mt7603_dev *dev, void *data) ...@@ -1143,8 +1143,8 @@ void mt7603_mac_add_txs(struct mt7603_dev *dev, void *data)
rcu_read_unlock(); rcu_read_unlock();
} }
void mt7603_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q, void mt7603_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
struct mt76_queue_entry *e, bool flush) struct mt76_queue_entry *e)
{ {
struct mt7603_dev *dev = container_of(mdev, struct mt7603_dev, mt76); struct mt7603_dev *dev = container_of(mdev, struct mt7603_dev, mt76);
struct sk_buff *skb = e->skb; struct sk_buff *skb = e->skb;
...@@ -1154,7 +1154,7 @@ void mt7603_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q, ...@@ -1154,7 +1154,7 @@ void mt7603_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q,
return; return;
} }
if (q - dev->mt76.q_tx < 4) if (qid < 4)
dev->tx_hang_check = 0; dev->tx_hang_check = 0;
mt76_tx_complete_skb(mdev, skb); mt76_tx_complete_skb(mdev, skb);
......
...@@ -227,8 +227,8 @@ int mt7603_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, ...@@ -227,8 +227,8 @@ int mt7603_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
struct mt76_wcid *wcid, struct ieee80211_sta *sta, struct mt76_wcid *wcid, struct ieee80211_sta *sta,
u32 *tx_info); u32 *tx_info);
void mt7603_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q, void mt7603_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
struct mt76_queue_entry *e, bool flush); struct mt76_queue_entry *e);
void mt7603_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q, void mt7603_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
struct sk_buff *skb); struct sk_buff *skb);
......
...@@ -757,8 +757,8 @@ void mt76x02_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq) ...@@ -757,8 +757,8 @@ void mt76x02_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq)
} }
} }
void mt76x02_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q, void mt76x02_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
struct mt76_queue_entry *e, bool flush) struct mt76_queue_entry *e)
{ {
struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76); struct mt76x02_dev *dev = container_of(mdev, struct mt76x02_dev, mt76);
struct mt76x02_txwi *txwi; struct mt76x02_txwi *txwi;
......
...@@ -198,8 +198,8 @@ void mt76x02_mac_write_txwi(struct mt76x02_dev *dev, struct mt76x02_txwi *txwi, ...@@ -198,8 +198,8 @@ void mt76x02_mac_write_txwi(struct mt76x02_dev *dev, struct mt76x02_txwi *txwi,
struct sk_buff *skb, struct mt76_wcid *wcid, struct sk_buff *skb, struct mt76_wcid *wcid,
struct ieee80211_sta *sta, int len); struct ieee80211_sta *sta, int len);
void mt76x02_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq); void mt76x02_mac_poll_tx_status(struct mt76x02_dev *dev, bool irq);
void mt76x02_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q, void mt76x02_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
struct mt76_queue_entry *e, bool flush); struct mt76_queue_entry *e);
void mt76x02_update_channel(struct mt76_dev *mdev); void mt76x02_update_channel(struct mt76_dev *mdev);
void mt76x02_mac_work(struct work_struct *work); void mt76x02_mac_work(struct work_struct *work);
......
...@@ -29,6 +29,6 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data, ...@@ -29,6 +29,6 @@ int mt76x02u_tx_prepare_skb(struct mt76_dev *mdev, void *data,
struct sk_buff *skb, enum mt76_txq_id qid, struct sk_buff *skb, enum mt76_txq_id qid,
struct mt76_wcid *wcid, struct ieee80211_sta *sta, struct mt76_wcid *wcid, struct ieee80211_sta *sta,
u32 *tx_info); u32 *tx_info);
void mt76x02u_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q, void mt76x02u_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
struct mt76_queue_entry *e, bool flush); struct mt76_queue_entry *e);
#endif /* __MT76x02_USB_H */ #endif /* __MT76x02_USB_H */
...@@ -26,8 +26,8 @@ static void mt76x02u_remove_dma_hdr(struct sk_buff *skb) ...@@ -26,8 +26,8 @@ static void mt76x02u_remove_dma_hdr(struct sk_buff *skb)
mt76x02_remove_hdr_pad(skb, 2); mt76x02_remove_hdr_pad(skb, 2);
} }
void mt76x02u_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue *q, void mt76x02u_tx_complete_skb(struct mt76_dev *mdev, enum mt76_txq_id qid,
struct mt76_queue_entry *e, bool flush) struct mt76_queue_entry *e)
{ {
mt76x02u_remove_dma_hdr(e->skb); mt76x02u_remove_dma_hdr(e->skb);
mt76_tx_complete_skb(mdev, e->skb); mt76_tx_complete_skb(mdev, e->skb);
......
...@@ -651,7 +651,7 @@ static void mt76u_tx_tasklet(unsigned long data) ...@@ -651,7 +651,7 @@ static void mt76u_tx_tasklet(unsigned long data)
q->queued--; q->queued--;
spin_unlock_bh(&q->lock); spin_unlock_bh(&q->lock);
dev->drv->tx_complete_skb(dev, q, &entry, false); dev->drv->tx_complete_skb(dev, i, &entry);
spin_lock_bh(&q->lock); spin_lock_bh(&q->lock);
} }
mt76_txq_schedule(dev, q); mt76_txq_schedule(dev, q);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment