diff options
author | Lorenzo Bianconi <lorenzo@kernel.org> | 2019-04-02 11:47:56 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2019-05-01 13:03:58 +0200 |
commit | f3950a4141438f2a51337f470bedc9c8f952790a (patch) | |
tree | d1d4671a3d76c085ccaa9c0da0d2e38a0c8fcd79 /drivers/net/wireless/mediatek/mt76/dma.c | |
parent | ce0fd825890856b1681e41bba639b5f3c39569e3 (diff) |
mt76: set txwi_size according to the driver value
Dynamically allocate txwi since new chipsets will use longer txwi
descriptors
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek/mt76/dma.c')
-rw-r--r-- | drivers/net/wireless/mediatek/mt76/dma.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/dma.c b/drivers/net/wireless/mediatek/mt76/dma.c index 5c592566acbb..f739ad297749 100644 --- a/drivers/net/wireless/mediatek/mt76/dma.c +++ b/drivers/net/wireless/mediatek/mt76/dma.c @@ -296,12 +296,14 @@ mt76_dma_tx_queue_skb(struct mt76_dev *dev, enum mt76_txq_id qid, struct mt76_txwi_cache *t; struct sk_buff *iter; dma_addr_t addr; + u8 *txwi; t = mt76_get_txwi(dev); if (!t) { ieee80211_free_txskb(dev->hw, skb); return -ENOMEM; } + txwi = mt76_get_txwi_ptr(dev, t); skb->prev = skb->next = NULL; if (dev->drv->tx_aligned4_skbs) @@ -331,11 +333,11 @@ mt76_dma_tx_queue_skb(struct mt76_dev *dev, enum mt76_txq_id qid, } tx_info.nbuf = n; - dma_sync_single_for_cpu(dev->dev, t->dma_addr, sizeof(t->txwi), + dma_sync_single_for_cpu(dev->dev, t->dma_addr, dev->drv->txwi_size, DMA_TO_DEVICE); - ret = dev->drv->tx_prepare_skb(dev, &t->txwi, skb, qid, wcid, sta, + ret = dev->drv->tx_prepare_skb(dev, txwi, skb, qid, wcid, sta, &tx_info); - dma_sync_single_for_device(dev->dev, t->dma_addr, sizeof(t->txwi), + dma_sync_single_for_device(dev->dev, t->dma_addr, dev->drv->txwi_size, DMA_TO_DEVICE); if (ret < 0) goto unmap; |