Files
build/patch/kernel/archive/sunxi-5.18/patches.megous/rtw89-don-t-flush-hci-queues-and-send-h2c-if-power-is-off.patch
The-going 176c05d4b0 Sunxi 5.18 (#3908)
* sunxi-5.18: add new megous patches

* switch to v5.18.5: exclude a previously applied patch

* fix: tools/mk_format_patch: numbered=false by default

* sunxi-5.18: rebasing and extraction using the mk_format_patch script
2022-06-20 15:31:38 +02:00

56 lines
2.0 KiB
Diff

From aefea50eb72f44ab41be7fcbbef57b38455a1686 Mon Sep 17 00:00:00 2001
From: Ping-Ke Shih <pkshih@realtek.com>
Date: Thu, 21 Apr 2022 20:08:57 +0800
Subject: [PATCH 472/534] rtw89: don't flush hci queues and send h2c if power
is off
When disconnecting, it warns somethings after power is off, and we can't
do HCI IO. So, add this patch to avoid below messages:
rtw89_8852ce 0000:03:00.0: timed out to flush pci txch: 11
rtw89_8852ce 0000:03:00.0: failed to pre-release fwcmd
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220421120903.73715-9-pkshih@realtek.com
---
drivers/net/wireless/realtek/rtw89/core.c | 7 +++++++
drivers/net/wireless/realtek/rtw89/core.h | 3 +++
2 files changed, 10 insertions(+)
diff --git a/drivers/net/wireless/realtek/rtw89/core.c b/drivers/net/wireless/realtek/rtw89/core.c
index e2f8551ed..440413e00 100644
--- a/drivers/net/wireless/realtek/rtw89/core.c
+++ b/drivers/net/wireless/realtek/rtw89/core.c
@@ -856,6 +856,13 @@ int rtw89_h2c_tx(struct rtw89_dev *rtwdev,
u32 cnt;
int ret;
+ if (!test_bit(RTW89_FLAG_POWERON, rtwdev->flags)) {
+ rtw89_debug(rtwdev, RTW89_DBG_FW,
+ "ignore h2c due to power is off with firmware state=%d\n",
+ test_bit(RTW89_FLAG_FW_RDY, rtwdev->flags));
+ return 0;
+ }
+
tx_req.skb = skb;
tx_req.tx_type = RTW89_CORE_TX_TYPE_FWCMD;
if (fwdl)
diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h
index 75c458fba..bc54463e9 100644
--- a/drivers/net/wireless/realtek/rtw89/core.h
+++ b/drivers/net/wireless/realtek/rtw89/core.h
@@ -3200,6 +3200,9 @@ static inline void rtw89_hci_tx_kick_off(struct rtw89_dev *rtwdev, u8 txch)
static inline void rtw89_hci_flush_queues(struct rtw89_dev *rtwdev, u32 queues,
bool drop)
{
+ if (!test_bit(RTW89_FLAG_POWERON, rtwdev->flags))
+ return;
+
if (rtwdev->hci.ops->flush_queues)
return rtwdev->hci.ops->flush_queues(rtwdev, queues, drop);
}
--
2.35.3