mt76: unify load_tx_status
authorStanislaw Gruszka <sgruszka@redhat.com>
Tue, 4 Sep 2018 14:41:09 +0000 (16:41 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 19 Sep 2018 10:29:18 +0000 (12:29 +0200)
Unify load/fetch tx status from mt76x0 and mt76x2

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x0/mac.c
drivers/net/wireless/mediatek/mt76/mt76x0/tx.c
drivers/net/wireless/mediatek/mt76/mt76x02_mac.c
drivers/net/wireless/mediatek/mt76/mt76x02_mac.h
drivers/net/wireless/mediatek/mt76/mt76x2.h
drivers/net/wireless/mediatek/mt76/mt76x2_mac.c
drivers/net/wireless/mediatek/mt76/mt76x2_mac_common.c
drivers/net/wireless/mediatek/mt76/mt76x2u_core.c

index 46646a7461bd70157f53b87db435e1a5fda46904..41f681cfc5eff5a9fea82338c6f0445c0c13c574 100644 (file)
@@ -116,27 +116,6 @@ mt76_mac_fill_tx_status(struct mt76x0_dev *dev, struct ieee80211_tx_info *info,
                info->flags |= IEEE80211_TX_STAT_ACK;
 }
 
-struct mt76x02_tx_status mt76x0_mac_fetch_tx_status(struct mt76x0_dev *dev)
-{
-       struct mt76x02_tx_status stat = {};
-       u32 stat2, stat1;
-
-       stat2 = mt76_rr(dev, MT_TX_STAT_FIFO_EXT);
-       stat1 = mt76_rr(dev, MT_TX_STAT_FIFO);
-
-       stat.valid = !!(stat1 & MT_TX_STAT_FIFO_VALID);
-       stat.success = !!(stat1 & MT_TX_STAT_FIFO_SUCCESS);
-       stat.aggr = !!(stat1 & MT_TX_STAT_FIFO_AGGR);
-       stat.ack_req = !!(stat1 & MT_TX_STAT_FIFO_ACKREQ);
-       stat.wcid = FIELD_GET(MT_TX_STAT_FIFO_WCID, stat1);
-       stat.rate = FIELD_GET(MT_TX_STAT_FIFO_RATE, stat1);
-
-       stat.retry = FIELD_GET(MT_TX_STAT_FIFO_EXT_RETRY, stat2);
-       stat.pktid = FIELD_GET(MT_TX_STAT_FIFO_EXT_PKTID, stat2);
-
-       return stat;
-}
-
 void mt76x0_send_tx_status(struct mt76x0_dev *dev, struct mt76x02_tx_status *stat, u8 *update)
 {
        struct ieee80211_tx_info info = {};
index c94b9cf4231d72624064f89c67f4f0605cc2e6e3..9270469a580dfa36301f3743bca2837067f7ff4b 100644 (file)
@@ -190,8 +190,7 @@ void mt76x0_tx_stat(struct work_struct *work)
        u8 update = 1;
 
        while (!test_bit(MT76_REMOVED, &dev->mt76.state)) {
-               stat = mt76x0_mac_fetch_tx_status(dev);
-               if (!stat.valid)
+               if (!mt76x02_mac_load_tx_status(&dev->mt76, &stat))
                        break;
 
                mt76x0_send_tx_status(dev, &stat, &update);
index d67e12bd23a7012a1364b036d81c7862c06d12b5..ea1f77579b7c937e110b2009edf6f798637bf433 100644 (file)
@@ -216,3 +216,28 @@ void mt76x02_mac_wcid_set_rate(struct mt76_dev *dev, struct mt76_wcid *wcid,
        wcid->tx_rate_set = true;
        spin_unlock_bh(&dev->lock);
 }
+
+bool mt76x02_mac_load_tx_status(struct mt76_dev *dev,
+                              struct mt76x02_tx_status *stat)
+{
+       u32 stat1, stat2;
+
+       stat2 = __mt76_rr(dev, MT_TX_STAT_FIFO_EXT);
+       stat1 = __mt76_rr(dev, MT_TX_STAT_FIFO);
+
+       stat->valid = !!(stat1 & MT_TX_STAT_FIFO_VALID);
+       if (!stat->valid)
+               return false;
+
+       stat->success = !!(stat1 & MT_TX_STAT_FIFO_SUCCESS);
+       stat->aggr = !!(stat1 & MT_TX_STAT_FIFO_AGGR);
+       stat->ack_req = !!(stat1 & MT_TX_STAT_FIFO_ACKREQ);
+       stat->wcid = FIELD_GET(MT_TX_STAT_FIFO_WCID, stat1);
+       stat->rate = FIELD_GET(MT_TX_STAT_FIFO_RATE, stat1);
+
+       stat->retry = FIELD_GET(MT_TX_STAT_FIFO_EXT_RETRY, stat2);
+       stat->pktid = FIELD_GET(MT_TX_STAT_FIFO_EXT_PKTID, stat2);
+
+       return true;
+}
+EXPORT_SYMBOL_GPL(mt76x02_mac_load_tx_status);
index 498b2b293d20bddbf65adb4eb4e2ab11ee6cadde..0547f7db9d3d110b51f8860f970dfac6f987882c 100644 (file)
@@ -195,4 +195,6 @@ void mt76x02_mac_wcid_set_rate(struct mt76_dev *dev, struct mt76_wcid *wcid,
 __le16
 mt76x02_mac_tx_rate_val(struct mt76_dev *dev,
                       const struct ieee80211_tx_rate *rate, u8 *nss_val);
+bool mt76x02_mac_load_tx_status(struct mt76_dev *dev,
+                              struct mt76x02_tx_status *stat);
 #endif
index faf830585515e4a81ddcf8b371276b7f717c0ea8..0a29e7ae1a9d26d24860d9d4c470d8ffaee85811 100644 (file)
@@ -241,8 +241,6 @@ void mt76x2_tx_set_txpwr_auto(struct mt76x2_dev *dev, s8 txpwr);
 
 int mt76x2_insert_hdr_pad(struct sk_buff *skb);
 
-bool mt76x2_mac_load_tx_status(struct mt76x2_dev *dev,
-                              struct mt76x02_tx_status *stat);
 void mt76x2_send_tx_status(struct mt76x2_dev *dev,
                           struct mt76x02_tx_status *stat, u8 *update);
 void mt76x2_reset_wlan(struct mt76x2_dev *dev, bool enable);
index 0d37d0de0b846eee36d62f683605ff3e6f3497eb..b346f17e49d5f8ca92c8edf0704385ab763f4781 100644 (file)
@@ -42,7 +42,7 @@ void mt76x2_mac_poll_tx_status(struct mt76x2_dev *dev, bool irq)
 
        while (!irq || !kfifo_is_full(&dev->txstatus_fifo)) {
                spin_lock_irqsave(&dev->irq_lock, flags);
-               ret = mt76x2_mac_load_tx_status(dev, &stat);
+               ret = mt76x02_mac_load_tx_status(&dev->mt76, &stat);
                spin_unlock_irqrestore(&dev->irq_lock, flags);
 
                if (!ret)
index 3cd99d4debb8cbba39671fde90f345c076ab9196..4cd94bfc9dbc776d196bbbf14bb4ec6dea3bade9 100644 (file)
@@ -53,31 +53,6 @@ void mt76x2_mac_stop(struct mt76x2_dev *dev, bool force)
 }
 EXPORT_SYMBOL_GPL(mt76x2_mac_stop);
 
-bool mt76x2_mac_load_tx_status(struct mt76x2_dev *dev,
-                              struct mt76x02_tx_status *stat)
-{
-       u32 stat1, stat2;
-
-       stat2 = mt76_rr(dev, MT_TX_STAT_FIFO_EXT);
-       stat1 = mt76_rr(dev, MT_TX_STAT_FIFO);
-
-       stat->valid = !!(stat1 & MT_TX_STAT_FIFO_VALID);
-       if (!stat->valid)
-               return false;
-
-       stat->success = !!(stat1 & MT_TX_STAT_FIFO_SUCCESS);
-       stat->aggr = !!(stat1 & MT_TX_STAT_FIFO_AGGR);
-       stat->ack_req = !!(stat1 & MT_TX_STAT_FIFO_ACKREQ);
-       stat->wcid = FIELD_GET(MT_TX_STAT_FIFO_WCID, stat1);
-       stat->rate = FIELD_GET(MT_TX_STAT_FIFO_RATE, stat1);
-
-       stat->retry = FIELD_GET(MT_TX_STAT_FIFO_EXT_RETRY, stat2);
-       stat->pktid = FIELD_GET(MT_TX_STAT_FIFO_EXT_PKTID, stat2);
-
-       return true;
-}
-EXPORT_SYMBOL_GPL(mt76x2_mac_load_tx_status);
-
 static int
 mt76x2_mac_process_tx_rate(struct ieee80211_tx_rate *txrate, u16 rate,
                           enum nl80211_band band)
index 3bc37123ffd1a51b6a9b2f4821322c59da040ba4..ec434ad86cc0db61b142e255ad8a0314147e0c77 100644 (file)
@@ -68,7 +68,7 @@ bool mt76x2u_tx_status_data(struct mt76_dev *mdev, u8 *update)
        struct mt76x2_dev *dev = container_of(mdev, struct mt76x2_dev, mt76);
        struct mt76x02_tx_status stat;
 
-       if (!mt76x2_mac_load_tx_status(dev, &stat))
+       if (!mt76x02_mac_load_tx_status(&dev->mt76, &stat))
                return false;
 
        mt76x2_send_tx_status(dev, &stat, update);