mt76: mt7921: move mt7921_usb_sdio_tx_complete_skb in common mac code.
authorLorenzo Bianconi <lorenzo@kernel.org>
Mon, 14 Mar 2022 15:10:29 +0000 (16:10 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 16 Mar 2022 16:40:23 +0000 (17:40 +0100)
This is a preliminary patch to add mt7921u driver support.

Tested-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/mac.c
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
drivers/net/wireless/mediatek/mt76/mt7921/sdio.c
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mac.c

index dd1a241c45d61b72a48ceea7123e854347b705b2..0c1b6565310254bf57aa6ae5bca1dfe5a99d1291 100644 (file)
@@ -1680,3 +1680,24 @@ int mt7921_usb_sdio_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,
        return err;
 }
 EXPORT_SYMBOL_GPL(mt7921_usb_sdio_tx_prepare_skb);
+
+void mt7921_usb_sdio_tx_complete_skb(struct mt76_dev *mdev,
+                                    struct mt76_queue_entry *e)
+{
+       __le32 *txwi = (__le32 *)(e->skb->data + MT_SDIO_HDR_SIZE);
+       unsigned int headroom = MT_SDIO_TXD_SIZE + MT_SDIO_HDR_SIZE;
+       struct ieee80211_sta *sta;
+       struct mt76_wcid *wcid;
+       u16 idx;
+
+       idx = le32_get_bits(txwi[1], MT_TXD1_WLAN_IDX);
+       wcid = rcu_dereference(mdev->wcid[idx]);
+       sta = wcid_to_sta(wcid);
+
+       if (sta && likely(e->skb->protocol != cpu_to_be16(ETH_P_PAE)))
+               mt7921_tx_check_aggr(sta, txwi);
+
+       skb_pull(e->skb, headroom);
+       mt76_tx_complete_skb(mdev, e->wcid, e->skb);
+}
+EXPORT_SYMBOL_GPL(mt7921_usb_sdio_tx_complete_skb);
index 06db3e1f39a206c7a2a9b040bbc95d789f0ee3e7..32b77fe49abd511142cbcf5a16705f7c2ff26c79 100644 (file)
@@ -444,7 +444,6 @@ int mt7921e_mcu_fw_pmctrl(struct mt7921_dev *dev);
 int mt7921s_mcu_init(struct mt7921_dev *dev);
 int mt7921s_mcu_drv_pmctrl(struct mt7921_dev *dev);
 int mt7921s_mcu_fw_pmctrl(struct mt7921_dev *dev);
-void mt7921s_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e);
 bool mt7921s_tx_status_data(struct mt76_dev *mdev, u8 *update);
 void mt7921_mac_add_txs(struct mt7921_dev *dev, void *data);
 void mt7921_set_runtime_pm(struct mt7921_dev *dev);
@@ -455,4 +454,6 @@ int mt7921_usb_sdio_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 mt7921_usb_sdio_tx_complete_skb(struct mt76_dev *mdev,
+                                    struct mt76_queue_entry *e);
 #endif
index fc6499640a1c6b688927ffaa25c15845bd9bcaa3..507bd550b0636da8bd0e41f89d9488e86e06c306 100644 (file)
@@ -92,7 +92,7 @@ static int mt7921s_probe(struct sdio_func *func,
                                SURVEY_INFO_TIME_RX |
                                SURVEY_INFO_TIME_BSS_RX,
                .tx_prepare_skb = mt7921_usb_sdio_tx_prepare_skb,
-               .tx_complete_skb = mt7921s_tx_complete_skb,
+               .tx_complete_skb = mt7921_usb_sdio_tx_complete_skb,
                .tx_status_data = mt7921s_tx_status_data,
                .rx_skb = mt7921_queue_rx_skb,
                .sta_ps = mt7921_sta_ps,
index d741a58c1260a067fe4472cb2eb4222cc8cb933a..fa9db21bb3e8bb260e9ef391689fa9032919b269 100644 (file)
@@ -141,25 +141,6 @@ out:
        return err;
 }
 
-void mt7921s_tx_complete_skb(struct mt76_dev *mdev, struct mt76_queue_entry *e)
-{
-       __le32 *txwi = (__le32 *)(e->skb->data + MT_SDIO_HDR_SIZE);
-       unsigned int headroom = MT_SDIO_TXD_SIZE + MT_SDIO_HDR_SIZE;
-       struct ieee80211_sta *sta;
-       struct mt76_wcid *wcid;
-       u16 idx;
-
-       idx = le32_get_bits(txwi[1], MT_TXD1_WLAN_IDX);
-       wcid = rcu_dereference(mdev->wcid[idx]);
-       sta = wcid_to_sta(wcid);
-
-       if (sta && likely(e->skb->protocol != cpu_to_be16(ETH_P_PAE)))
-               mt7921_tx_check_aggr(sta, txwi);
-
-       skb_pull(e->skb, headroom);
-       mt76_tx_complete_skb(mdev, e->wcid, e->skb);
-}
-
 bool mt7921s_tx_status_data(struct mt76_dev *mdev, u8 *update)
 {
        struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);