From: Deren Wu deren.wu@mediatek.com
Hi,
The bug is found on some devices which power off pcie bus in suspend mode. In this case, mt7921 would resume fail on interactive commands. This patch could recover the failure in command timeout.
Need to apply patches below for dependency. Those patches work for stability improvment as well.
upstream patches: commit f92f81d35ac2 ("mt76: mt7921: check mcu returned values in mt7921_start") commit d32464e68ffc ("mt76: mt7921: introduce mt7921_run_firmware utility routine.") commit 1f7396acfef4 ("mt76: mt7921: introduce __mt7921_start utility routine") commit 3990465db682 ("mt76: dma: introduce mt76_dma_queue_reset routine") commit c001df978e4c ("mt76: dma: export mt76_dma_rx_cleanup routine") commit 0c1ce9884607 ("mt76: mt7921: add wifi reset support") commit e513ae49088b ("mt76: mt7921: abort uncompleted scan by wifi reset")
Lorenzo Bianconi (1): mt76: mt7921: get rid of mcu_reset function pointer
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
From: Lorenzo Bianconi lorenzo@kernel.org
[ Upstream commit d43b3257621dfe57c71d875afd3f624b9a042fc5 ]
since mcu_reset it used only by mt7921, move the reset callback to mt7921_mcu_parse_response routine and get rid of the function pointer.
Signed-off-by: Lorenzo Bianconi lorenzo@kernel.org Signed-off-by: Felix Fietkau nbd@nbd.name Link: https://lore.kernel.org/linux-wireless/364293ec8609dd254067d8173c1599526ffd6... Signed-off-by: Deren Wu deren.wu@mediatek.com Cc: stable@vger.kernel.org # 5.12: f92f81d35ac2 mt76: mt7921: check mcu returned values in mt7921_start Cc: stable@vger.kernel.org # 5.12: d32464e68ffc mt76: mt7921: introduce mt7921_run_firmware utility routine. Cc: stable@vger.kernel.org # 5.12: 1f7396acfef4 mt76: mt7921: introduce __mt7921_start utility routine Cc: stable@vger.kernel.org # 5.12: 3990465db682 mt76: dma: introduce mt76_dma_queue_reset routine Cc: stable@vger.kernel.org # 5.12: c001df978e4c mt76: dma: export mt76_dma_rx_cleanup routine Cc: stable@vger.kernel.org # 5.12: 0c1ce9884607 mt76: mt7921: add wifi reset support Cc: stable@vger.kernel.org # 5.12: e513ae49088b mt76: mt7921: abort uncompleted scan by wifi reset Cc: stable@vger.kernel.org # 5.12 --- drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c index d0d6de3f6d41..a4f070cd78fd 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +++ b/drivers/net/wireless/mediatek/mt76/mt7921/mcu.c @@ -161,6 +161,8 @@ mt7921_mcu_parse_response(struct mt76_dev *mdev, int cmd, if (!skb) { dev_err(mdev->dev, "Message %d (seq %d) timeout\n", cmd, seq); + mt7921_reset(mdev); + return -ETIMEDOUT; }
@@ -952,7 +954,6 @@ int mt7921_mcu_init(struct mt7921_dev *dev) .mcu_skb_send_msg = mt7921_mcu_send_message, .mcu_parse_response = mt7921_mcu_parse_response, .mcu_restart = mt7921_mcu_restart, - .mcu_reset = mt7921_reset, };
dev->mt76.mcu_ops = &mt7921_mcu_ops;
On Fri, Jul 09, 2021 at 03:07:19PM +0800, Deren Wu wrote:
From: Lorenzo Bianconi lorenzo@kernel.org
[ Upstream commit d43b3257621dfe57c71d875afd3f624b9a042fc5 ]
since mcu_reset it used only by mt7921, move the reset callback to mt7921_mcu_parse_response routine and get rid of the function pointer.
Signed-off-by: Lorenzo Bianconi lorenzo@kernel.org Signed-off-by: Felix Fietkau nbd@nbd.name Link: https://lore.kernel.org/linux-wireless/364293ec8609dd254067d8173c1599526ffd6... Signed-off-by: Deren Wu deren.wu@mediatek.com Cc: stable@vger.kernel.org # 5.12: f92f81d35ac2 mt76: mt7921: check mcu returned values in mt7921_start Cc: stable@vger.kernel.org # 5.12: d32464e68ffc mt76: mt7921: introduce mt7921_run_firmware utility routine. Cc: stable@vger.kernel.org # 5.12: 1f7396acfef4 mt76: mt7921: introduce __mt7921_start utility routine Cc: stable@vger.kernel.org # 5.12: 3990465db682 mt76: dma: introduce mt76_dma_queue_reset routine Cc: stable@vger.kernel.org # 5.12: c001df978e4c mt76: dma: export mt76_dma_rx_cleanup routine Cc: stable@vger.kernel.org # 5.12: 0c1ce9884607 mt76: mt7921: add wifi reset support Cc: stable@vger.kernel.org # 5.12: e513ae49088b mt76: mt7921: abort uncompleted scan by wifi reset Cc: stable@vger.kernel.org # 5.12
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
All now queued up, thanks.
greg k-h
linux-stable-mirror@lists.linaro.org