mt76: mt76x0u: do not reset radio on resume
PATCH 1/1 mt76: mt76x0u: do not reset radio on resume
commit 8f2d163cb26da87e7d8e1677368b8ba1ba4d30b3 upstream.
On some machines mt76x0u firmware can hung during resume, what result on messages like below:
[ 475.480062] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 475.990066] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 475.990075] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 476.500003] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 476.500012] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.010046] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 477.010055] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.529997] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 477.530006] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.824907] mt76x0 1-8:1.0: Error: send MCU cmd failed:-71 [ 477.824916] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.825029] usb 1-8: USB disconnect, device number 6
and possible whole system freeze.
This can be avoided, if we do not perform mt76x0_chip_onoff() reset.
Fixes 134b2d0d1fcf ("mt76x0: init files")
Signed-off-by Stanislaw Gruszka <[email protected]>
Signed-off-by Kalle Valo <[email protected]>
--- drivers/net/wireless/mediatek/mt76/mt76x0/init.c | 4 ++-- drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0.h | 2 +- drivers/net/wireless/mediatek/mt76/mt76x0/usb.c | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76x0/init.c +2 -2
@@ -369,7 +369,7 @@ static void mt76x0_stop_hardware(struct mt76x0_dev *dev)mt76x0_chip_onoff (dev, false, false); } -int mt76x0_init_hardware (struct mt76x0_dev *dev) +int mt76x0_init_hardware (struct mt76x0_dev *dev,bool reset) {static const u16 beacon_offsets[16 ] = {/* 512 byte per beacon */
@@ -382,7 +382,7 @@ int mt76x0_init_hardware(struct mt76x0_dev *dev) dev->beacon_offsets = beacon_offsets; -mt76x0_chip_onoff (dev, true, true); +mt76x0_chip_onoff (dev, true, reset); ret =mt76x0_wait_asic_ready (dev);if (ret)
drivers/net/wireless/mediatek/mt76/mt76x0/mt76x0.h +1 -1
@@ -279,7 +279,7 @@ void mt76x0_addr_wr(struct mt76x0_dev *dev, const u32 offset, const u8 *addr);/* Init */ struct mt76x0_dev *mt76x0_alloc_device (struct device *dev); -int mt76x0_init_hardware (struct mt76x0_dev *dev); +int mt76x0_init_hardware (struct mt76x0_dev *dev,bool reset);int mt76x0_register_device (struct mt76x0_dev *dev);void mt76x0_cleanup (struct mt76x0_dev *dev);void mt76x0_chip_onoff (struct mt76x0_dev *dev,bool enable,bool reset);
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c +2 -2
@@ -300,7 +300,7 @@ static int mt76x0_probe(struct usb_interface *usb_intf,if (!(mt76_rr (dev,MT_EFUSE_CTRL ) &MT_EFUSE_CTRL_SEL ))dev_warn (dev->mt76.dev,"Warning: eFUSE not present\n" ); - ret =mt76x0_init_hardware (dev); + ret =mt76x0_init_hardware (dev, true);if (ret) goto err;
@@ -354,7 +354,7 @@ static int mt76x0_resume(struct usb_interface *usb_intf)struct mt76x0_dev *dev =usb_get_intfdata (usb_intf);int ret; - ret =mt76x0_init_hardware (dev); + ret =mt76x0_init_hardware (dev, false);if (ret)return ret;
Signature · 1 line
2.20.1
Quoted 18 lines · Stanislaw Gruszka
commit
8f2d163cb26da87e7d8e1677368b8ba1ba4d30b3upstream.On some machines mt76x0u firmware can hung during resume, what result on messages like below:
[ 475.480062] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 475.990066] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 475.990075] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 476.500003] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 476.500012] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.010046] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 477.010055] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.529997] mt76x0 1-8:1.0: Error: send MCU cmd failed:-110 [ 477.530006] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.824907] mt76x0 1-8:1.0: Error: send MCU cmd failed:-71 [ 477.824916] mt76x0 1-8:1.0: Error: MCU response pre-completed! [ 477.825029] usb 1-8: USB disconnect, device number 6
Quoted 8 lines
and possible whole system freeze.
This can be avoided, if we do not perform
mt76x0_chip_onoff()reset.Fixes 134b2d0d1fcf ("mt76x0: init files")Signed-off-by Stanislaw Gruszka <[email protected]>Signed-off-by Kalle Valo <[email protected]>
Queued up for 4.19, thank you!
--
Thanks,
Sasha