mt76: move mt76x02_phy_get_min_avg_rssi in mt76x02_phy.c
authorLorenzo Bianconi <lorenzo.bianconi@redhat.com>
Thu, 4 Oct 2018 21:53:03 +0000 (23:53 +0200)
committerFelix Fietkau <nbd@nbd.name>
Fri, 5 Oct 2018 18:05:44 +0000 (20:05 +0200)
Move mt76x02_phy_get_min_avg_rssi in mt76x02-lib module since
it will be used by mt76x0 driver in order to unify rxwi parsing

Signed-off-by: Lorenzo Bianconi <lorenzo.bianconi@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x02_phy.c
drivers/net/wireless/mediatek/mt76/mt76x02_phy.h
drivers/net/wireless/mediatek/mt76/mt76x2/mt76x2.h
drivers/net/wireless/mediatek/mt76/mt76x2/pci_phy.c
drivers/net/wireless/mediatek/mt76/mt76x2/phy.c
drivers/net/wireless/mediatek/mt76/mt76x2/usb_phy.c

index e29914d78b726b7dd0fa60e4125883a66e4a3f64..d31ce1d7b68915000227f2d1cc34e49d9002d84c 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "mt76.h"
 #include "mt76x02_phy.h"
+#include "mt76x02_mac.h"
 
 void mt76x02_phy_set_rxpath(struct mt76_dev *dev)
 {
@@ -133,3 +134,50 @@ void mt76x02_phy_set_txpower(struct mt76_dev *dev, int txp_0, int txp_1)
                  mt76x02_tx_power_mask(t->ht[7], 0, t->stbc[8], t->stbc[9]));
 }
 EXPORT_SYMBOL_GPL(mt76x02_phy_set_txpower);
+
+int mt76x02_phy_get_min_avg_rssi(struct mt76_dev *dev)
+{
+       struct mt76x02_sta *sta;
+       struct mt76_wcid *wcid;
+       int i, j, min_rssi = 0;
+       s8 cur_rssi;
+
+       local_bh_disable();
+       rcu_read_lock();
+
+       for (i = 0; i < ARRAY_SIZE(dev->wcid_mask); i++) {
+               unsigned long mask = dev->wcid_mask[i];
+
+               if (!mask)
+                       continue;
+
+               for (j = i * BITS_PER_LONG; mask; j++, mask >>= 1) {
+                       if (!(mask & 1))
+                               continue;
+
+                       wcid = rcu_dereference(dev->wcid[j]);
+                       if (!wcid)
+                               continue;
+
+                       sta = container_of(wcid, struct mt76x02_sta, wcid);
+                       spin_lock(&dev->rx_lock);
+                       if (sta->inactive_count++ < 5)
+                               cur_rssi = ewma_signal_read(&sta->rssi);
+                       else
+                               cur_rssi = 0;
+                       spin_unlock(&dev->rx_lock);
+
+                       if (cur_rssi < min_rssi)
+                               min_rssi = cur_rssi;
+               }
+       }
+
+       rcu_read_unlock();
+       local_bh_enable();
+
+       if (!min_rssi)
+               return -75;
+
+       return min_rssi;
+}
+EXPORT_SYMBOL_GPL(mt76x02_phy_get_min_avg_rssi);
index df69f8fade753c3b4fb3bce3cd443cf402574b98..e70ea6eeb0777fc6308fd53c7d3742cedc2fc393 100644 (file)
@@ -25,5 +25,6 @@ void mt76x02_limit_rate_power(struct mt76_rate_power *r, int limit);
 int mt76x02_get_max_rate_power(struct mt76_rate_power *r);
 void mt76x02_phy_set_rxpath(struct mt76_dev *dev);
 void mt76x02_phy_set_txdac(struct mt76_dev *dev);
+int mt76x02_phy_get_min_avg_rssi(struct mt76_dev *dev);
 
 #endif /* __MT76x02_PHY_H */
index 5c3425507adf4a739ee3937b585fb469b2155a38..f9ca93ad91cd3163b11f5286463d5cd85e211765 100644 (file)
@@ -202,7 +202,6 @@ void mt76x2_configure_tx_delay(struct mt76x2_dev *dev,
                               enum nl80211_band band, u8 bw);
 void mt76x2_phy_set_bw(struct mt76x2_dev *dev, int width, u8 ctrl);
 void mt76x2_phy_set_band(struct mt76x2_dev *dev, int band, bool primary_upper);
-int mt76x2_phy_get_min_avg_rssi(struct mt76x2_dev *dev);
 void mt76x2_apply_gain_adj(struct mt76x2_dev *dev);
 
 #endif
index 392601310e3959c2a50e16203618871207307371..2ac0cc6c712678144690c7d3c8bb51aabc7e2f37 100644 (file)
@@ -18,6 +18,7 @@
 #include "mt76x2.h"
 #include "mcu.h"
 #include "eeprom.h"
+#include "../mt76x02_phy.h"
 
 static bool
 mt76x2_phy_tssi_init_cal(struct mt76x2_dev *dev)
@@ -209,7 +210,7 @@ mt76x2_phy_update_channel_gain(struct mt76x2_dev *dev)
        int low_gain;
        u32 val;
 
-       dev->cal.avg_rssi_all = mt76x2_phy_get_min_avg_rssi(dev);
+       dev->cal.avg_rssi_all = mt76x02_phy_get_min_avg_rssi(&dev->mt76);
 
        low_gain = (dev->cal.avg_rssi_all > mt76x2_get_rssi_gain_thresh(dev)) +
                   (dev->cal.avg_rssi_all > mt76x2_get_low_rssi_gain_thresh(dev));
index b3ecb80340b56cca9aa3276fdbb675df539705b4..06ef2c4a5c1130bdd3085888c793ba251a08332b 100644 (file)
@@ -254,53 +254,6 @@ void mt76x2_phy_set_band(struct mt76x2_dev *dev, int band, bool primary_upper)
 }
 EXPORT_SYMBOL_GPL(mt76x2_phy_set_band);
 
-int mt76x2_phy_get_min_avg_rssi(struct mt76x2_dev *dev)
-{
-       struct mt76x02_sta *sta;
-       struct mt76_wcid *wcid;
-       int i, j, min_rssi = 0;
-       s8 cur_rssi;
-
-       local_bh_disable();
-       rcu_read_lock();
-
-       for (i = 0; i < ARRAY_SIZE(dev->mt76.wcid_mask); i++) {
-               unsigned long mask = dev->mt76.wcid_mask[i];
-
-               if (!mask)
-                       continue;
-
-               for (j = i * BITS_PER_LONG; mask; j++, mask >>= 1) {
-                       if (!(mask & 1))
-                               continue;
-
-                       wcid = rcu_dereference(dev->mt76.wcid[j]);
-                       if (!wcid)
-                               continue;
-
-                       sta = container_of(wcid, struct mt76x02_sta, wcid);
-                       spin_lock(&dev->mt76.rx_lock);
-                       if (sta->inactive_count++ < 5)
-                               cur_rssi = ewma_signal_read(&sta->rssi);
-                       else
-                               cur_rssi = 0;
-                       spin_unlock(&dev->mt76.rx_lock);
-
-                       if (cur_rssi < min_rssi)
-                               min_rssi = cur_rssi;
-               }
-       }
-
-       rcu_read_unlock();
-       local_bh_enable();
-
-       if (!min_rssi)
-               return -75;
-
-       return min_rssi;
-}
-EXPORT_SYMBOL_GPL(mt76x2_phy_get_min_avg_rssi);
-
 void mt76x2_phy_tssi_compensate(struct mt76x2_dev *dev, bool wait)
 {
        struct ieee80211_channel *chan = dev->mt76.chandef.chan;
index 9dd1943a71bb9968df8993d10d373e9797ba3927..b14c073b000651aeee0502c94cafe33fd211f5f6 100644 (file)
@@ -16,6 +16,7 @@
 
 #include "mt76x2u.h"
 #include "eeprom.h"
+#include "../mt76x02_phy.h"
 
 void mt76x2u_phy_channel_calibrate(struct mt76x2_dev *dev)
 {
@@ -68,7 +69,7 @@ mt76x2u_phy_update_channel_gain(struct mt76x2_dev *dev)
                break;
        }
 
-       dev->cal.avg_rssi_all = mt76x2_phy_get_min_avg_rssi(dev);
+       dev->cal.avg_rssi_all = mt76x02_phy_get_min_avg_rssi(&dev->mt76);
        false_cca = FIELD_GET(MT_RX_STAT_1_CCA_ERRORS,
                              mt76_rr(dev, MT_RX_STAT_1));