mt76: connac: move mt7615_txp_skb_unmap in common code
authorLorenzo Bianconi <lorenzo@kernel.org>
Sun, 19 Jun 2022 20:42:41 +0000 (22:42 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 11 Jul 2022 11:40:02 +0000 (13:40 +0200)
Move mt7615_txp_skb_unmap in shared code and reuse it in mt7915e and
mt7921e driver.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7615/mac.c
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h
drivers/net/wireless/mediatek/mt76/mt76_connac.h
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c

index 06d17e0..d9dd3d4 100644 (file)
@@ -876,60 +876,6 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi,
 }
 EXPORT_SYMBOL_GPL(mt7615_mac_write_txwi);
 
-static void
-mt7615_txp_skb_unmap_fw(struct mt76_dev *dev, struct mt76_connac_fw_txp *txp)
-{
-       int i;
-
-       for (i = 0; i < txp->nbuf; i++)
-               dma_unmap_single(dev->dev, le32_to_cpu(txp->buf[i]),
-                                le16_to_cpu(txp->len[i]), DMA_TO_DEVICE);
-}
-
-static void
-mt7615_txp_skb_unmap_hw(struct mt76_dev *dev, struct mt76_connac_hw_txp *txp)
-{
-       u32 last_mask;
-       int i;
-
-       last_mask = is_mt7663(dev) ? MT_TXD_LEN_LAST : MT_TXD_LEN_MSDU_LAST;
-
-       for (i = 0; i < ARRAY_SIZE(txp->ptr); i++) {
-               struct mt76_connac_txp_ptr *ptr = &txp->ptr[i];
-               bool last;
-               u16 len;
-
-               len = le16_to_cpu(ptr->len0);
-               last = len & last_mask;
-               len &= MT_TXD_LEN_MASK;
-               dma_unmap_single(dev->dev, le32_to_cpu(ptr->buf0), len,
-                                DMA_TO_DEVICE);
-               if (last)
-                       break;
-
-               len = le16_to_cpu(ptr->len1);
-               last = len & last_mask;
-               len &= MT_TXD_LEN_MASK;
-               dma_unmap_single(dev->dev, le32_to_cpu(ptr->buf1), len,
-                                DMA_TO_DEVICE);
-               if (last)
-                       break;
-       }
-}
-
-void mt7615_txp_skb_unmap(struct mt76_dev *dev,
-                         struct mt76_txwi_cache *t)
-{
-       struct mt76_connac_txp_common *txp;
-
-       txp = mt76_connac_txwi_to_txp(dev, t);
-       if (is_mt7615(dev))
-               mt7615_txp_skb_unmap_fw(dev, &txp->fw);
-       else
-               mt7615_txp_skb_unmap_hw(dev, &txp->hw);
-}
-EXPORT_SYMBOL_GPL(mt7615_txp_skb_unmap);
-
 bool mt7615_mac_wtbl_update(struct mt7615_dev *dev, int idx, u32 mask)
 {
        mt76_rmw(dev, MT_WTBL_UPDATE, MT_WTBL_UPDATE_WLAN_IDX,
@@ -1608,7 +1554,7 @@ mt7615_txwi_free(struct mt7615_dev *dev, struct mt76_txwi_cache *txwi)
        u32 val;
        u8 wcid;
 
-       mt7615_txp_skb_unmap(mdev, txwi);
+       mt76_connac_txp_skb_unmap(mdev, txwi);
        if (!txwi->skb)
                goto out;
 
index 288cc39..6531819 100644 (file)
@@ -517,8 +517,6 @@ int mt7615_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
 void mt7615_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif,
                           struct ieee80211_sta *sta);
 void mt7615_mac_work(struct work_struct *work);
-void mt7615_txp_skb_unmap(struct mt76_dev *dev,
-                         struct mt76_txwi_cache *txwi);
 int mt7615_mcu_set_rx_hdr_trans_blacklist(struct mt7615_dev *dev);
 int mt7615_mcu_set_fcc5_lpn(struct mt7615_dev *dev, int val);
 int mt7615_mcu_set_pulse_th(struct mt7615_dev *dev,
index 9f4323d..077239b 100644 (file)
@@ -327,6 +327,8 @@ mt76_connac_mutex_release(struct mt76_dev *dev, struct mt76_connac_pm *pm)
 void mt76_connac_write_hw_txp(struct mt76_dev *dev,
                              struct mt76_tx_info *tx_info,
                              void *txp_ptr, u32 id);
+void mt76_connac_txp_skb_unmap(struct mt76_dev *dev,
+                              struct mt76_txwi_cache *txwi);
 void mt76_connac_tx_complete_skb(struct mt76_dev *mdev,
                                 struct mt76_queue_entry *e);
 void mt76_connac_pm_queue_skb(struct ieee80211_hw *hw,
index 9bba5dc..af2b33d 100644 (file)
@@ -191,6 +191,66 @@ void mt76_connac_write_hw_txp(struct mt76_dev *dev,
 }
 EXPORT_SYMBOL_GPL(mt76_connac_write_hw_txp);
 
+static void
+mt76_connac_txp_skb_unmap_fw(struct mt76_dev *mdev,
+                            struct mt76_connac_fw_txp *txp)
+{
+       struct device *dev = is_connac_v1(mdev) ? mdev->dev : mdev->dma_dev;
+       int i;
+
+       for (i = 0; i < txp->nbuf; i++)
+               dma_unmap_single(dev, le32_to_cpu(txp->buf[i]),
+                                le16_to_cpu(txp->len[i]), DMA_TO_DEVICE);
+}
+
+static void
+mt76_connac_txp_skb_unmap_hw(struct mt76_dev *dev,
+                            struct mt76_connac_hw_txp *txp)
+{
+       u32 last_mask;
+       int i;
+
+       if (is_mt7663(dev) || is_mt7921(dev))
+               last_mask = MT_TXD_LEN_LAST;
+       else
+               last_mask = MT_TXD_LEN_MSDU_LAST;
+
+       for (i = 0; i < ARRAY_SIZE(txp->ptr); i++) {
+               struct mt76_connac_txp_ptr *ptr = &txp->ptr[i];
+               bool last;
+               u16 len;
+
+               len = le16_to_cpu(ptr->len0);
+               last = len & last_mask;
+               len &= MT_TXD_LEN_MASK;
+               dma_unmap_single(dev->dev, le32_to_cpu(ptr->buf0), len,
+                                DMA_TO_DEVICE);
+               if (last)
+                       break;
+
+               len = le16_to_cpu(ptr->len1);
+               last = len & last_mask;
+               len &= MT_TXD_LEN_MASK;
+               dma_unmap_single(dev->dev, le32_to_cpu(ptr->buf1), len,
+                                DMA_TO_DEVICE);
+               if (last)
+                       break;
+       }
+}
+
+void mt76_connac_txp_skb_unmap(struct mt76_dev *dev,
+                              struct mt76_txwi_cache *t)
+{
+       struct mt76_connac_txp_common *txp;
+
+       txp = mt76_connac_txwi_to_txp(dev, t);
+       if (is_mt76_fw_txp(dev))
+               mt76_connac_txp_skb_unmap_fw(dev, &txp->fw);
+       else
+               mt76_connac_txp_skb_unmap_hw(dev, &txp->hw);
+}
+EXPORT_SYMBOL_GPL(mt76_connac_txp_skb_unmap);
+
 static u16
 mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy, struct ieee80211_vif *vif,
                             bool beacon, bool mcast)
index 719b11e..dabcd42 100644 (file)
@@ -805,18 +805,6 @@ mt7915_tx_check_aggr(struct ieee80211_sta *sta, __le32 *txwi)
 }
 
 static void
-mt7915_txp_skb_unmap(struct mt76_dev *dev, struct mt76_txwi_cache *t)
-{
-       struct mt76_connac_fw_txp *txp;
-       int i;
-
-       txp = mt76_connac_txwi_to_txp(dev, t);
-       for (i = 0; i < txp->nbuf; i++)
-               dma_unmap_single(dev->dma_dev, le32_to_cpu(txp->buf[i]),
-                                le16_to_cpu(txp->len[i]), DMA_TO_DEVICE);
-}
-
-static void
 mt7915_txwi_free(struct mt7915_dev *dev, struct mt76_txwi_cache *t,
                 struct ieee80211_sta *sta, struct list_head *free_list)
 {
@@ -826,7 +814,7 @@ mt7915_txwi_free(struct mt7915_dev *dev, struct mt76_txwi_cache *t,
        __le32 *txwi;
        u16 wcid_idx;
 
-       mt7915_txp_skb_unmap(mdev, t);
+       mt76_connac_txp_skb_unmap(mdev, t);
        if (!t->skb)
                goto out;
 
index 368f114..f6c605a 100644 (file)
@@ -54,37 +54,6 @@ int mt7921e_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
 }
 
 static void
-mt7921_txp_skb_unmap(struct mt76_dev *dev, struct mt76_txwi_cache *t)
-{
-       struct mt76_connac_txp_common *txp;
-       int i;
-
-       txp = mt76_connac_txwi_to_txp(dev, t);
-
-       for (i = 0; i < ARRAY_SIZE(txp->hw.ptr); i++) {
-               struct mt76_connac_txp_ptr *ptr = &txp->hw.ptr[i];
-               bool last;
-               u16 len;
-
-               len = le16_to_cpu(ptr->len0);
-               last = len & MT_TXD_LEN_LAST;
-               len &= MT_TXD_LEN_MASK;
-               dma_unmap_single(dev->dev, le32_to_cpu(ptr->buf0), len,
-                                DMA_TO_DEVICE);
-               if (last)
-                       break;
-
-               len = le16_to_cpu(ptr->len1);
-               last = len & MT_TXD_LEN_LAST;
-               len &= MT_TXD_LEN_MASK;
-               dma_unmap_single(dev->dev, le32_to_cpu(ptr->buf1), len,
-                                DMA_TO_DEVICE);
-               if (last)
-                       break;
-       }
-}
-
-static void
 mt7921_txwi_free(struct mt7921_dev *dev, struct mt76_txwi_cache *t,
                 struct ieee80211_sta *sta, bool clear_status,
                 struct list_head *free_list)
@@ -93,7 +62,7 @@ mt7921_txwi_free(struct mt7921_dev *dev, struct mt76_txwi_cache *t,
        __le32 *txwi;
        u16 wcid_idx;
 
-       mt7921_txp_skb_unmap(mdev, t);
+       mt76_connac_txp_skb_unmap(mdev, t);
        if (!t->skb)
                goto out;