Commit 469d4818 authored by Lorenzo Bianconi's avatar Lorenzo Bianconi Committed by Kalle Valo

mt76: introduce tx_queue_skb function pointer in mt76_bus_ops

Add tx_queue_skb function pointer in mt76_bus_ops since mt76x2u based
devices do not map mt76x2_txwi on dma buffers and it is not possible
to reuse mt76_dma_tx_queue_skb() routine to enqueue tx frames to
hw buffers
Signed-off-by: default avatarLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
parent fcdd99ce
...@@ -510,6 +510,7 @@ static const struct mt76_queue_ops mt76_dma_ops = { ...@@ -510,6 +510,7 @@ static const struct mt76_queue_ops mt76_dma_ops = {
.init = mt76_dma_init, .init = mt76_dma_init,
.alloc = mt76_dma_alloc_queue, .alloc = mt76_dma_alloc_queue,
.add_buf = mt76_dma_add_buf, .add_buf = mt76_dma_add_buf,
.tx_queue_skb = mt76_dma_tx_queue_skb,
.tx_cleanup = mt76_dma_tx_cleanup, .tx_cleanup = mt76_dma_tx_cleanup,
.rx_reset = mt76_dma_rx_reset, .rx_reset = mt76_dma_rx_reset,
.kick = mt76_dma_kick_queue, .kick = mt76_dma_kick_queue,
......
...@@ -30,6 +30,7 @@ ...@@ -30,6 +30,7 @@
#define MT_RX_BUF_SIZE 2048 #define MT_RX_BUF_SIZE 2048
struct mt76_dev; struct mt76_dev;
struct mt76_wcid;
struct mt76_bus_ops { struct mt76_bus_ops {
u32 (*rr)(struct mt76_dev *dev, u32 offset); u32 (*rr)(struct mt76_dev *dev, u32 offset);
...@@ -110,6 +111,10 @@ struct mt76_queue_ops { ...@@ -110,6 +111,10 @@ struct mt76_queue_ops {
struct mt76_queue_buf *buf, int nbufs, u32 info, struct mt76_queue_buf *buf, int nbufs, u32 info,
struct sk_buff *skb, void *txwi); struct sk_buff *skb, void *txwi);
int (*tx_queue_skb)(struct mt76_dev *dev, struct mt76_queue *q,
struct sk_buff *skb, struct mt76_wcid *wcid,
struct ieee80211_sta *sta);
void *(*dequeue)(struct mt76_dev *dev, struct mt76_queue *q, bool flush, void *(*dequeue)(struct mt76_dev *dev, struct mt76_queue *q, bool flush,
int *len, u32 *info, bool *more); int *len, u32 *info, bool *more);
......
...@@ -111,7 +111,7 @@ mt76_tx(struct mt76_dev *dev, struct ieee80211_sta *sta, ...@@ -111,7 +111,7 @@ mt76_tx(struct mt76_dev *dev, struct ieee80211_sta *sta,
q = &dev->q_tx[qid]; q = &dev->q_tx[qid];
spin_lock_bh(&q->lock); spin_lock_bh(&q->lock);
mt76_dma_tx_queue_skb(dev, q, skb, wcid, sta); dev->queue_ops->tx_queue_skb(dev, q, skb, wcid, sta);
dev->queue_ops->kick(dev, q); dev->queue_ops->kick(dev, q);
if (q->queued > q->ndesc - 8) if (q->queued > q->ndesc - 8)
...@@ -167,7 +167,7 @@ mt76_queue_ps_skb(struct mt76_dev *dev, struct ieee80211_sta *sta, ...@@ -167,7 +167,7 @@ mt76_queue_ps_skb(struct mt76_dev *dev, struct ieee80211_sta *sta,
info->flags |= IEEE80211_TX_STATUS_EOSP; info->flags |= IEEE80211_TX_STATUS_EOSP;
mt76_skb_set_moredata(skb, !last); mt76_skb_set_moredata(skb, !last);
mt76_dma_tx_queue_skb(dev, hwq, skb, wcid, sta); dev->queue_ops->tx_queue_skb(dev, hwq, skb, wcid, sta);
} }
void void
...@@ -247,7 +247,7 @@ mt76_txq_send_burst(struct mt76_dev *dev, struct mt76_queue *hwq, ...@@ -247,7 +247,7 @@ mt76_txq_send_burst(struct mt76_dev *dev, struct mt76_queue *hwq,
if (ampdu) if (ampdu)
mt76_check_agg_ssn(mtxq, skb); mt76_check_agg_ssn(mtxq, skb);
idx = mt76_dma_tx_queue_skb(dev, hwq, skb, wcid, txq->sta); idx = dev->queue_ops->tx_queue_skb(dev, hwq, skb, wcid, txq->sta);
if (idx < 0) if (idx < 0)
return idx; return idx;
...@@ -282,7 +282,8 @@ mt76_txq_send_burst(struct mt76_dev *dev, struct mt76_queue *hwq, ...@@ -282,7 +282,8 @@ mt76_txq_send_burst(struct mt76_dev *dev, struct mt76_queue *hwq,
if (cur_ampdu) if (cur_ampdu)
mt76_check_agg_ssn(mtxq, skb); mt76_check_agg_ssn(mtxq, skb);
idx = mt76_dma_tx_queue_skb(dev, hwq, skb, wcid, txq->sta); idx = dev->queue_ops->tx_queue_skb(dev, hwq, skb, wcid,
txq->sta);
if (idx < 0) if (idx < 0)
return idx; return idx;
......
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