mt76: connac: move mt76_connac_tx_complete_skb in shared code
authorLorenzo Bianconi <lorenzo@kernel.org>
Sun, 19 Jun 2022 20:42:39 +0000 (22:42 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 11 Jul 2022 11:40:02 +0000 (13:40 +0200)
Since now txp structures are in common code we can reuse
mt76_connac_tx_complete_skb routine in mt7921e, mt7915e and mt7615e
drivers.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
13 files changed:
drivers/net/wireless/mediatek/mt76/mt7615/mac.h
drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.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/mt7915/mac.c
drivers/net/wireless/mediatek/mt76/mt7915/mmio.c
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h
drivers/net/wireless/mediatek/mt76/mt7921/mac.h
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
drivers/net/wireless/mediatek/mt76/mt7921/pci.c
drivers/net/wireless/mediatek/mt76/mt7921/pci_mac.c

index 6af15f2..4cc805f 100644 (file)
@@ -244,8 +244,6 @@ enum tx_phy_bandwidth {
 #define MT_TX_RATE_MODE                        GENMASK(8, 6)
 #define MT_TX_RATE_IDX                 GENMASK(5, 0)
 
-#define MT_MSDU_ID_VALID               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)
index 3320a80..a784f9d 100644 (file)
@@ -193,7 +193,7 @@ int mt7615_mmio_probe(struct device *pdev, void __iomem *mem_base,
                                SURVEY_INFO_TIME_BSS_RX,
                .token_size = MT7615_TOKEN_SIZE,
                .tx_prepare_skb = mt7615_tx_prepare_skb,
-               .tx_complete_skb = mt7615_tx_complete_skb,
+               .tx_complete_skb = mt76_connac_tx_complete_skb,
                .rx_check = mt7615_rx_check,
                .rx_skb = mt7615_queue_rx_skb,
                .rx_poll_complete = mt7615_rx_poll_complete,
index 2e91f6a..288cc39 100644 (file)
@@ -507,7 +507,6 @@ int mt7615_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
                          struct mt76_tx_info *tx_info);
 
 void mt7615_tx_worker(struct mt76_worker *w);
-void mt7615_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e);
 void mt7615_tx_token_put(struct mt7615_dev *dev);
 bool mt7615_rx_check(struct mt76_dev *mdev, void *data, int len);
 void mt7615_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
index 4dd0f08..9117012 100644 (file)
 #include "../dma.h"
 #include "mac.h"
 
-void mt7615_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e)
-{
-       if (!e->txwi) {
-               dev_kfree_skb_any(e->skb);
-               return;
-       }
-
-       /* error path */
-       if (e->skb == DMA_DUMMY_DATA) {
-               struct mt76_connac_txp_common *txp;
-               struct mt76_txwi_cache *t;
-               struct mt7615_dev *dev;
-               u16 token;
-
-               dev = container_of(mdev, struct mt7615_dev, mt76);
-               txp = mt76_connac_txwi_to_txp(mdev, e->txwi);
-
-               if (is_mt7615(&dev->mt76))
-                       token = le16_to_cpu(txp->fw.token);
-               else
-                       token = le16_to_cpu(txp->hw.msdu_id[0]) &
-                               ~MT_MSDU_ID_VALID;
-
-               t = mt76_token_put(mdev, token);
-               e->skb = t ? t->skb : NULL;
-       }
-
-       if (e->skb)
-               mt76_tx_complete_skb(mdev, e->wcid, e->skb);
-}
-
 static void
 mt7615_write_hw_txp(struct mt7615_dev *dev, struct mt76_tx_info *tx_info,
                    void *txp_ptr, u32 id)
index 0ef1089..da41ad6 100644 (file)
@@ -27,6 +27,8 @@
 #define MT_SDIO_TAIL_SIZE                      8
 #define MT_SDIO_HDR_SIZE                       4
 
+#define MT_MSDU_ID_VALID               BIT(15)
+
 enum {
        CMD_CBW_20MHZ = IEEE80211_STA_RX_BW_20,
        CMD_CBW_40MHZ = IEEE80211_STA_RX_BW_40,
@@ -198,6 +200,19 @@ static inline bool is_connac_v1(struct mt76_dev *dev)
        return is_mt7615(dev) || is_mt7663(dev) || is_mt7622(dev);
 }
 
+static inline bool is_mt76_fw_txp(struct mt76_dev *dev)
+{
+       switch (mt76_chip(dev)) {
+       case 0x7961:
+       case 0x7922:
+       case 0x7663:
+       case 0x7622:
+               return false;
+       default:
+               return true;
+       }
+}
+
 static inline u8 mt76_connac_chan_bw(struct cfg80211_chan_def *chandef)
 {
        static const u8 width_to_bw[] = {
@@ -304,6 +319,8 @@ mt76_connac_mutex_release(struct mt76_dev *dev, struct mt76_connac_pm *pm)
        mutex_unlock(&dev->mutex);
 }
 
+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,
                              struct mt76_connac_pm *pm,
                              struct mt76_wcid *wcid,
index 6aa02ac..134daa9 100644 (file)
@@ -3,6 +3,7 @@
 
 #include "mt76_connac.h"
 #include "mt76_connac2_mac.h"
+#include "dma.h"
 
 #define HE_BITS(f)             cpu_to_le16(IEEE80211_RADIOTAP_HE_##f)
 #define HE_PREP(f, m, v)       le16_encode_bits(le32_get_bits(v, MT_CRXV_HE_##m),\
@@ -121,6 +122,36 @@ void mt76_connac_pm_dequeue_skbs(struct mt76_phy *phy,
 }
 EXPORT_SYMBOL_GPL(mt76_connac_pm_dequeue_skbs);
 
+void mt76_connac_tx_complete_skb(struct mt76_dev *mdev,
+                                struct mt76_queue_entry *e)
+{
+       if (!e->txwi) {
+               dev_kfree_skb_any(e->skb);
+               return;
+       }
+
+       /* error path */
+       if (e->skb == DMA_DUMMY_DATA) {
+               struct mt76_connac_txp_common *txp;
+               struct mt76_txwi_cache *t;
+               u16 token;
+
+               txp = mt76_connac_txwi_to_txp(mdev, e->txwi);
+               if (is_mt76_fw_txp(mdev))
+                       token = le16_to_cpu(txp->fw.token);
+               else
+                       token = le16_to_cpu(txp->hw.msdu_id[0]) &
+                               ~MT_MSDU_ID_VALID;
+
+               t = mt76_token_put(mdev, token);
+               e->skb = t ? t->skb : NULL;
+       }
+
+       if (e->skb)
+               mt76_tx_complete_skb(mdev, e->wcid, e->skb);
+}
+EXPORT_SYMBOL_GPL(mt76_connac_tx_complete_skb);
+
 static u16
 mt76_connac2_mac_tx_rate_val(struct mt76_phy *mphy, struct ieee80211_vif *vif,
                             bool beacon, bool mcast)
index 6e97c44..719b11e 100644 (file)
@@ -1111,27 +1111,6 @@ void mt7915_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
        }
 }
 
-void mt7915_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e)
-{
-       if (!e->txwi) {
-               dev_kfree_skb_any(e->skb);
-               return;
-       }
-
-       /* error path */
-       if (e->skb == DMA_DUMMY_DATA) {
-               struct mt76_connac_fw_txp *txp;
-               struct mt76_txwi_cache *t;
-
-               txp = mt76_connac_txwi_to_txp(mdev, e->txwi);
-               t = mt76_token_put(mdev, le16_to_cpu(txp->token));
-               e->skb = t ? t->skb : NULL;
-       }
-
-       if (e->skb)
-               mt76_tx_complete_skb(mdev, e->wcid, e->skb);
-}
-
 void mt7915_mac_cca_stats_reset(struct mt7915_phy *phy)
 {
        struct mt7915_dev *dev = phy->dev;
index 6b889f4..c2646d2 100644 (file)
@@ -652,7 +652,7 @@ struct mt7915_dev *mt7915_mmio_probe(struct device *pdev,
                                SURVEY_INFO_TIME_BSS_RX,
                .token_size = MT7915_TOKEN_SIZE,
                .tx_prepare_skb = mt7915_tx_prepare_skb,
-               .tx_complete_skb = mt7915_tx_complete_skb,
+               .tx_complete_skb = mt76_connac_tx_complete_skb,
                .rx_skb = mt7915_queue_rx_skb,
                .rx_check = mt7915_rx_check,
                .rx_poll_complete = mt7915_rx_poll_complete,
index 3db0758..b6a6aa7 100644 (file)
@@ -571,7 +571,6 @@ int mt7915_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
                          enum mt76_txq_id qid, struct mt76_wcid *wcid,
                          struct ieee80211_sta *sta,
                          struct mt76_tx_info *tx_info);
-void mt7915_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e);
 void mt7915_tx_token_put(struct mt7915_dev *dev);
 void mt7915_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                         struct sk_buff *skb);
index 26b1ec3..a2e9e1b 100644 (file)
@@ -52,8 +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_MSDU_ID_VALID               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)
index f7609c8..48fd14c 100644 (file)
@@ -386,7 +386,6 @@ int mt7921e_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
                           struct mt76_tx_info *tx_info);
 
 void mt7921_tx_worker(struct mt76_worker *w);
-void mt7921e_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e);
 void mt7921_tx_token_put(struct mt7921_dev *dev);
 void mt7921_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
                         struct sk_buff *skb);
index c61e646..23361a5 100644 (file)
@@ -237,7 +237,7 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
                                SURVEY_INFO_TIME_BSS_RX,
                .token_size = MT7921_TOKEN_SIZE,
                .tx_prepare_skb = mt7921e_tx_prepare_skb,
-               .tx_complete_skb = mt7921e_tx_complete_skb,
+               .tx_complete_skb = mt76_connac_tx_complete_skb,
                .rx_check = mt7921e_rx_check,
                .rx_skb = mt7921e_queue_rx_skb,
                .rx_poll_complete = mt7921_rx_poll_complete,
index 333390c..75e5dc4 100644 (file)
@@ -263,29 +263,6 @@ void mt7921e_queue_rx_skb(struct mt76_dev *mdev, enum mt76_rxq_id q,
        }
 }
 
-void mt7921e_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e)
-{
-       if (!e->txwi) {
-               dev_kfree_skb_any(e->skb);
-               return;
-       }
-
-       /* error path */
-       if (e->skb == DMA_DUMMY_DATA) {
-               struct mt76_connac_txp_common *txp;
-               struct mt76_txwi_cache *t;
-               u16 token;
-
-               txp = mt76_connac_txwi_to_txp(mdev, e->txwi);
-               token = le16_to_cpu(txp->hw.msdu_id[0]) & ~MT_MSDU_ID_VALID;
-               t = mt76_token_put(mdev, token);
-               e->skb = t ? t->skb : NULL;
-       }
-
-       if (e->skb)
-               mt76_tx_complete_skb(mdev, e->wcid, e->skb);
-}
-
 void mt7921_tx_token_put(struct mt7921_dev *dev)
 {
        struct mt76_txwi_cache *txwi;