mt76: mt7615: avoid scheduling runtime-pm during hw scan
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 7 Jul 2020 21:23:11 +0000 (23:23 +0200)
committerFelix Fietkau <nbd@nbd.name>
Tue, 21 Jul 2020 17:01:17 +0000 (19:01 +0200)
Do not schedule ps_work during hw scanning or hw scheduled frequency
scan

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

index af5716797475c56061c6541b03d49e958404b91e..1c440ed183eee4b82da580a37d2dfdd6033e3002 100644 (file)
@@ -1908,12 +1908,21 @@ void mt7615_pm_power_save_sched(struct mt7615_dev *dev)
 {
        struct mt76_phy *mphy = dev->phy.mt76;
 
-       if (!mt7615_firmware_offload(dev) ||
-           !dev->pm.enable || !mt76_is_mmio(mphy->dev) ||
-           !test_bit(MT76_STATE_RUNNING, &mphy->state))
+       if (!mt7615_firmware_offload(dev))
+               return;
+
+       if (!mt76_is_mmio(mphy->dev))
+               return;
+
+       if (!dev->pm.enable || !test_bit(MT76_STATE_RUNNING, &mphy->state))
                return;
 
        dev->pm.last_activity = jiffies;
+
+       if (test_bit(MT76_HW_SCANNING, &mphy->state) ||
+           test_bit(MT76_HW_SCHED_SCANNING, &mphy->state))
+               return;
+
        if (!test_bit(MT76_STATE_PM, &mphy->state))
                queue_delayed_work(dev->mt76.wq, &dev->pm.ps_work,
                                   dev->pm.idle_timeout);