diff --git a/mt7915/mcu.c b/mt7915/mcu.c index 59ebaee5..ce499dba 100644 --- a/mt7915/mcu.c +++ b/mt7915/mcu.c @@ -157,12 +157,19 @@ static int mt7915_mcu_parse_response(struct mt76_dev *mdev, int cmd, struct sk_buff *skb, int seq) { + struct mt7915_dev *dev = container_of(mdev, struct mt7915_dev, mt76); struct mt76_connac2_mcu_rxd *rxd; int ret = 0; if (!skb) { dev_err(mdev->dev, "Message %08x (seq %d) timeout\n", cmd, seq); + dev->recovery.restart = true; + set_bit(MT76_MCU_RESET, &dev->mphy.state); + wake_up(&dev->mt76.mcu.wait); + queue_work(dev->mt76.wq, &dev->reset_work); + wake_up(&dev->reset_wait); + return -ETIMEDOUT; }