mt76: connac: move mt76_connac_write_hw_txp in shared code
authorLorenzo Bianconi <lorenzo@kernel.org>
Sun, 19 Jun 2022 20:42:40 +0000 (22:42 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 11 Jul 2022 11:40:02 +0000 (13:40 +0200)
Now we can move mt76_connac_write_hw_txp routine in mt76-connac module
and reuse it in mt7921e and mt7615e driver.

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

index 4cc805f..880c9f7 100644 (file)
@@ -244,12 +244,6 @@ enum tx_phy_bandwidth {
 #define MT_TX_RATE_MODE                        GENMASK(8, 6)
 #define MT_TX_RATE_IDX                 GENMASK(5, 0)
 
-#define MT_TXD_LEN_MASK                        GENMASK(11, 0)
-#define MT_TXD_LEN_MSDU_LAST           BIT(14)
-#define MT_TXD_LEN_AMSDU_LAST          BIT(15)
-/* mt7663 */
-#define MT_TXD_LEN_LAST                        BIT(15)
-
 #define MT_TX_FREE_MSDU_ID_CNT         GENMASK(6, 0)
 
 #define MT_TXS0_PID                    GENMASK(31, 24)
index 9117012..05b6669 100644 (file)
 #include "../dma.h"
 #include "mac.h"
 
-static void
-mt7615_write_hw_txp(struct mt7615_dev *dev, struct mt76_tx_info *tx_info,
-                   void *txp_ptr, u32 id)
-{
-       struct mt76_connac_hw_txp *txp = txp_ptr;
-       struct mt76_connac_txp_ptr *ptr = &txp->ptr[0];
-       int i, nbuf = tx_info->nbuf - 1;
-       u32 last_mask;
-
-       tx_info->buf[0].len = MT_TXD_SIZE + sizeof(*txp);
-       tx_info->nbuf = 1;
-
-       txp->msdu_id[0] = cpu_to_le16(id | MT_MSDU_ID_VALID);
-
-       if (is_mt7663(&dev->mt76))
-               last_mask = MT_TXD_LEN_LAST;
-       else
-               last_mask = MT_TXD_LEN_AMSDU_LAST |
-                           MT_TXD_LEN_MSDU_LAST;
-
-       for (i = 0; i < nbuf; i++) {
-               u16 len = tx_info->buf[i + 1].len & MT_TXD_LEN_MASK;
-               u32 addr = tx_info->buf[i + 1].addr;
-
-               if (i == nbuf - 1)
-                       len |= last_mask;
-
-               if (i & 1) {
-                       ptr->buf1 = cpu_to_le32(addr);
-                       ptr->len1 = cpu_to_le16(len);
-                       ptr++;
-               } else {
-                       ptr->buf0 = cpu_to_le32(addr);
-                       ptr->len0 = cpu_to_le16(len);
-               }
-       }
-}
-
 static void
 mt7615_write_fw_txp(struct mt7615_dev *dev, struct mt76_tx_info *tx_info,
                    void *txp_ptr, u32 id)
@@ -141,7 +103,7 @@ int mt7615_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
        if (is_mt7615(&dev->mt76))
                mt7615_write_fw_txp(dev, tx_info, txp, id);
        else
-               mt7615_write_hw_txp(dev, tx_info, txp, id);
+               mt76_connac_write_hw_txp(mdev, tx_info, txp, id);
 
        tx_info->skb = DMA_DUMMY_DATA;
 
index da41ad6..9f4323d 100644 (file)
 
 #define MT_MSDU_ID_VALID               BIT(15)
 
+#define MT_TXD_LEN_LAST                        BIT(15)
+#define MT_TXD_LEN_MASK                        GENMASK(11, 0)
+#define MT_TXD_LEN_MSDU_LAST           BIT(14)
+#define MT_TXD_LEN_AMSDU_LAST          BIT(15)
+
 enum {
        CMD_CBW_20MHZ = IEEE80211_STA_RX_BW_20,
        CMD_CBW_40MHZ = IEEE80211_STA_RX_BW_40,
@@ -319,6 +324,9 @@ mt76_connac_mutex_release(struct mt76_dev *dev, struct mt76_connac_pm *pm)
        mutex_unlock(&dev->mutex);
 }
 
+void mt76_connac_write_hw_txp(struct mt76_dev *dev,
+                             struct mt76_tx_info *tx_info,
+                             void *txp_ptr, u32 id);
 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 134daa9..9bba5dc 100644 (file)
@@ -152,6 +152,45 @@ void mt76_connac_tx_complete_skb(struct mt76_dev *mdev,
 }
 EXPORT_SYMBOL_GPL(mt76_connac_tx_complete_skb);
 
+void mt76_connac_write_hw_txp(struct mt76_dev *dev,
+                             struct mt76_tx_info *tx_info,
+                             void *txp_ptr, u32 id)
+{
+       struct mt76_connac_hw_txp *txp = txp_ptr;
+       struct mt76_connac_txp_ptr *ptr = &txp->ptr[0];
+       int i, nbuf = tx_info->nbuf - 1;
+       u32 last_mask;
+
+       tx_info->buf[0].len = MT_TXD_SIZE + sizeof(*txp);
+       tx_info->nbuf = 1;
+
+       txp->msdu_id[0] = cpu_to_le16(id | MT_MSDU_ID_VALID);
+
+       if (is_mt7663(dev) || is_mt7921(dev))
+               last_mask = MT_TXD_LEN_LAST;
+       else
+               last_mask = MT_TXD_LEN_AMSDU_LAST |
+                           MT_TXD_LEN_MSDU_LAST;
+
+       for (i = 0; i < nbuf; i++) {
+               u16 len = tx_info->buf[i + 1].len & MT_TXD_LEN_MASK;
+               u32 addr = tx_info->buf[i + 1].addr;
+
+               if (i == nbuf - 1)
+                       len |= last_mask;
+
+               if (i & 1) {
+                       ptr->buf1 = cpu_to_le32(addr);
+                       ptr->len1 = cpu_to_le16(len);
+                       ptr++;
+               } else {
+                       ptr->buf0 = cpu_to_le32(addr);
+                       ptr->len0 = cpu_to_le16(len);
+               }
+       }
+}
+EXPORT_SYMBOL_GPL(mt76_connac_write_hw_txp);
+
 static u16
 mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy, struct ieee80211_vif *vif,
                             bool beacon, bool mcast)
index a2e9e1b..b8cabeb 100644 (file)
@@ -52,11 +52,6 @@ enum tx_mcu_port_q_idx {
 /* will support this field in further revision */
 #define MT_TX_FREE_RATE                        GENMASK(13, 0)
 
-#define MT_TXD_LEN_MASK                        GENMASK(11, 0)
-#define MT_TXD_LEN_MSDU_LAST           BIT(14)
-#define MT_TXD_LEN_AMSDU_LAST          BIT(15)
-#define MT_TXD_LEN_LAST                        BIT(15)
-
 #define MT_WTBL_TXRX_CAP_RATE_OFFSET   7
 #define MT_WTBL_TXRX_RATE_G2_HE                24
 #define MT_WTBL_TXRX_RATE_G2           12
index 75e5dc4..368f114 100644 (file)
@@ -5,37 +5,6 @@
 #include "../dma.h"
 #include "mac.h"
 
-static void
-mt7921_write_hw_txp(struct mt7921_dev *dev, struct mt76_tx_info *tx_info,
-                   void *txp_ptr, u32 id)
-{
-       struct mt76_connac_hw_txp *txp = txp_ptr;
-       struct mt76_connac_txp_ptr *ptr = &txp->ptr[0];
-       int i, nbuf = tx_info->nbuf - 1;
-
-       tx_info->buf[0].len = MT_TXD_SIZE + sizeof(*txp);
-       tx_info->nbuf = 1;
-
-       txp->msdu_id[0] = cpu_to_le16(id | MT_MSDU_ID_VALID);
-
-       for (i = 0; i < nbuf; i++) {
-               u16 len = tx_info->buf[i + 1].len & MT_TXD_LEN_MASK;
-               u32 addr = tx_info->buf[i + 1].addr;
-
-               if (i == nbuf - 1)
-                       len |= MT_TXD_LEN_LAST;
-
-               if (i & 1) {
-                       ptr->buf1 = cpu_to_le32(addr);
-                       ptr->len1 = cpu_to_le16(len);
-                       ptr++;
-               } else {
-                       ptr->buf0 = cpu_to_le32(addr);
-                       ptr->len0 = cpu_to_le16(len);
-               }
-       }
-}
-
 int mt7921e_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
                           enum mt76_txq_id qid, struct mt76_wcid *wcid,
                           struct ieee80211_sta *sta,
@@ -77,7 +46,7 @@ int mt7921e_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
 
        txp = (struct mt76_connac_hw_txp *)(txwi + MT_TXD_SIZE);
        memset(txp, 0, sizeof(struct mt76_connac_hw_txp));
-       mt7921_write_hw_txp(dev, tx_info, txp, id);
+       mt76_connac_write_hw_txp(mdev, tx_info, txp, id);
 
        tx_info->skb = DMA_DUMMY_DATA;