mt76: mt7921: always wake the device in mt7921_remove_interface
authorLorenzo Bianconi <lorenzo@kernel.org>
Sat, 3 Apr 2021 12:26:39 +0000 (14:26 +0200)
committerFelix Fietkau <nbd@nbd.name>
Sun, 11 Apr 2021 22:03:06 +0000 (00:03 +0200)
Make sure the mcu is not in sleep mode before sending mcu messages in
mt7921_remove_interface routine.

Fixes: 1d8efc741df80 ("mt76: mt7921: introduce Runtime PM support")
Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Co-developed-by: Leon Yen <leon.yen@mediatek.com>
Signed-off-by: Leon Yen <leon.yen@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7921/main.c

index 0be00389c7ed294d6a5a7aef58abaaf2b2255fe1..06a47cab494e45e16cd7a63bbee116421a80b86c 100644 (file)
@@ -354,12 +354,12 @@ static void mt7921_remove_interface(struct ieee80211_hw *hw,
        if (vif == phy->monitor_vif)
                phy->monitor_vif = NULL;
 
+       mt7921_mutex_acquire(dev);
        mt76_connac_free_pending_tx_skbs(&dev->pm, &msta->wcid);
        mt76_connac_mcu_uni_add_dev(&dev->mphy, vif, &mvif->sta.wcid, false);
 
        rcu_assign_pointer(dev->mt76.wcid[idx], NULL);
 
-       mt7921_mutex_acquire(dev);
        dev->mt76.vif_mask &= ~BIT(mvif->mt76.idx);
        phy->omac_mask &= ~BIT_ULL(mvif->mt76.omac_idx);
        mt7921_mutex_release(dev);