mt76: mt7615: check MT76_STATE_PM flag before accessing the device
authorLorenzo Bianconi <lorenzo@kernel.org>
Fri, 3 Jul 2020 08:15:56 +0000 (10:15 +0200)
committerFelix Fietkau <nbd@nbd.name>
Tue, 21 Jul 2020 17:01:17 +0000 (19:01 +0200)
Double-check if the device is in low-power state before accessing
registermap in mt7615_sta_rate_tbl_update() and in
mt7615_led_set_config()

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

index de4230b..0ce7647 100644 (file)
@@ -664,8 +664,10 @@ static void mt7615_sta_rate_tbl_update(struct ieee80211_hw *hw,
                        break;
        }
        msta->n_rates = i;
-       mt7615_mac_set_rates(phy, msta, NULL, msta->rates);
-       msta->rate_probe = false;
+       if (!test_bit(MT76_STATE_PM, &phy->mt76->state)) {
+               mt7615_mac_set_rates(phy, msta, NULL, msta->rates);
+               msta->rate_probe = false;
+       }
        spin_unlock_bh(&dev->mt76.lock);
 }
 
index 69cba86..7224a00 100644 (file)
@@ -70,6 +70,10 @@ mt7615_led_set_config(struct led_classdev *led_cdev,
 
        mt76 = container_of(led_cdev, struct mt76_dev, led_cdev);
        dev = container_of(mt76, struct mt7615_dev, mt76);
+
+       if (test_bit(MT76_STATE_PM, &mt76->phy.state))
+               return;
+
        val = FIELD_PREP(MT_LED_STATUS_DURATION, 0xffff) |
              FIELD_PREP(MT_LED_STATUS_OFF, delay_off) |
              FIELD_PREP(MT_LED_STATUS_ON, delay_on);