mt76: mt7615: introduce mt7615_mac_wtbl_update routine
authorLorenzo Bianconi <lorenzo@kernel.org>
Wed, 18 Sep 2019 10:58:03 +0000 (12:58 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 20 Nov 2019 12:23:49 +0000 (13:23 +0100)
Introduce mt7615_mac_wtbl_update utility routine in order to update
WTBL update register

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

index f688390bfd3a7dfe27aa6cb26e14229ffdb87dcb..2e36b3289fa6e215b4e038e8dd6f601c454a8fd2 100644 (file)
@@ -492,6 +492,15 @@ static u32 mt7615_mac_wtbl_addr(int wcid)
        return MT_WTBL_BASE + wcid * MT_WTBL_ENTRY_SIZE;
 }
 
+bool mt7615_mac_wtbl_update(struct mt7615_dev *dev, int idx, u32 mask)
+{
+       mt76_rmw(dev, MT_WTBL_UPDATE, MT_WTBL_UPDATE_WLAN_IDX,
+                FIELD_PREP(MT_WTBL_UPDATE_WLAN_IDX, idx) | mask);
+
+       return mt76_poll(dev, MT_WTBL_UPDATE, MT_WTBL_UPDATE_BUSY,
+                        0, 5000);
+}
+
 void mt7615_mac_set_rates(struct mt7615_dev *dev, struct mt7615_sta *sta,
                          struct ieee80211_tx_rate *probe_rate,
                          struct ieee80211_tx_rate *rates)
@@ -724,11 +733,8 @@ mt7615_mac_wtbl_update_pk(struct mt7615_dev *dev, struct mt76_wcid *wcid,
        mt76_wr(dev, MT_WTBL_RICR0, w0);
        mt76_wr(dev, MT_WTBL_RICR1, w1);
 
-       mt76_wr(dev, MT_WTBL_UPDATE,
-               FIELD_PREP(MT_WTBL_UPDATE_WLAN_IDX, wcid->idx) |
-               MT_WTBL_UPDATE_RXINFO_UPDATE);
-
-       if (!mt76_poll(dev, MT_WTBL_UPDATE, MT_WTBL_UPDATE_BUSY, 0, 5000))
+       if (!mt7615_mac_wtbl_update(dev, wcid->idx,
+                                   MT_WTBL_UPDATE_RXINFO_UPDATE))
                return -ETIMEDOUT;
 
        return 0;
index fa8f2f1ed040a18a3a18718ad3274d1f6b020367..857279fda661cba666cb4d2e1ae6892a95bbc9ce 100644 (file)
@@ -231,6 +231,7 @@ static inline void mt7615_irq_disable(struct mt7615_dev *dev, u32 mask)
 }
 
 void mt7615_update_channel(struct mt76_dev *mdev);
+bool mt7615_mac_wtbl_update(struct mt7615_dev *dev, int idx, u32 mask);
 void mt7615_mac_reset_counters(struct mt7615_dev *dev);
 void mt7615_mac_cca_stats_reset(struct mt7615_dev *dev);
 void mt7615_mac_set_scs(struct mt7615_dev *dev, bool enable);