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 6af15f2e0f5a5880fb199d7778716457ee37229e..4cc805f0fea946894c8ba7e7af6303deeb037358 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 3320a80b4171d6a17f3ed52a0ae07703fdd369fe..a784f9d9e93557fd911db0788cb56f6186fb0f89 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 2e91f6a27d0ff684b1cc8dfa5834cadb7a6ecc12..288cc391b61e8dcc41987f72467959b6e0f8bef4 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 4dd0f0803fda16e205fd551e0e2c9893de9476de..9117012b9b1af4fa146ab4ca22f76b12540f7af6 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 0ef10895fbf8e7c8b49abf159c22dcaa5ff773c7..da41ad6c87feda1c0b4b9241a0701cc567b7e781 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 6aa02ace365be011a4d6630e9d5dcfb1260db1ef..134daa9103a2a807647bb13626cde3bd3deea042 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 6e97c443f1c23c93e2a014599415b3b471444512..719b11e2e57c2829b52b7e0e2b39be4d18828559 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 6b889f454d1a8ebaec1bee450cda5b5bf46899c2..c2646d24b574914a4a904ee344f040ba9099dd39 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 3db0758b75e35726aba462c2b26435f5342735ec..b6a6aa7fcf438d242e6f68875a8e2230833b9a33 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 26b1ec35cc2b735374bc53f89b2db8552e84e0f1..a2e9e1bae8599b27fd199b004404adcd52dfd558 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 f7609c8ac549d80d62f7c7be98764bbbb70513e5..48fd14c67e44997861eed96b5c57a9bbfce33ec8 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 c61e646a1a94a310b1ee0ec6f0e06b92b9133f52..23361a505daf353c55a26585e11de41f47b44354 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 333390cb791be66777f9312e0a3d0b5f105516e4..75e5dc4e6f843a7ee27877ce77976c3792576564 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;