int i;
 
        dev_err(dev->mt76.dev, "chip reset\n");
+       dev->hw_full_reset = true;
        ieee80211_stop_queues(hw);
 
        cancel_delayed_work_sync(&dev->mphy.mac_work);
                ieee80211_scan_completed(dev->mphy.hw, &info);
        }
 
+       dev->hw_full_reset = false;
        ieee80211_wake_queues(hw);
        ieee80211_iterate_active_interfaces(hw,
                                            IEEE80211_IFACE_ITER_RESUME_ALL,
 {
        struct mt7921_dev *dev = container_of(mdev, struct mt7921_dev, mt76);
 
-       queue_work(dev->mt76.wq, &dev->reset_work);
+       if (!dev->hw_full_reset)
+               queue_work(dev->mt76.wq, &dev->reset_work);
 }
 
 static void