mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
wifi: rtw89: Lower the timeout in rtw89_fw_read_c2h_reg() for USB
[ Upstream commit 671be46afd1f03de9dc6e4679c88e1a7a81cdff6 ] This read_poll_timeout_atomic() with a delay of 1 µs and a timeout of 1000000 µs can take ~250 seconds in the worst case because sending a USB control message takes ~250 µs. Lower the timeout to 4000 for USB in order to reduce the maximum polling time to ~1 second. This problem was observed with RTL8851BU while suspending to RAM with WOWLAN enabled. The computer sat for 4 minutes with a black screen before suspending. Signed-off-by: Bitterblue Smith <rtl8821cerfe2@gmail.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Link: https://patch.msgid.link/09313da6-c865-4e91-b758-4cb38a878796@gmail.com Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
b16dfa7b4c
commit
72cdcaeaa9
@@ -3427,13 +3427,18 @@ static int rtw89_fw_read_c2h_reg(struct rtw89_dev *rtwdev,
|
||||
const struct rtw89_chip_info *chip = rtwdev->chip;
|
||||
struct rtw89_fw_info *fw_info = &rtwdev->fw;
|
||||
const u32 *c2h_reg = chip->c2h_regs;
|
||||
u32 ret;
|
||||
u32 ret, timeout;
|
||||
u8 i, val;
|
||||
|
||||
info->id = RTW89_FWCMD_C2HREG_FUNC_NULL;
|
||||
|
||||
if (rtwdev->hci.type == RTW89_HCI_TYPE_USB)
|
||||
timeout = RTW89_C2H_TIMEOUT_USB;
|
||||
else
|
||||
timeout = RTW89_C2H_TIMEOUT;
|
||||
|
||||
ret = read_poll_timeout_atomic(rtw89_read8, val, val, 1,
|
||||
RTW89_C2H_TIMEOUT, false, rtwdev,
|
||||
timeout, false, rtwdev,
|
||||
chip->c2h_ctrl_reg);
|
||||
if (ret) {
|
||||
rtw89_warn(rtwdev, "c2h reg timeout\n");
|
||||
|
||||
@@ -69,6 +69,8 @@ struct rtw89_h2creg_sch_tx_en {
|
||||
#define RTW89_C2HREG_HDR_LEN 2
|
||||
#define RTW89_H2CREG_HDR_LEN 2
|
||||
#define RTW89_C2H_TIMEOUT 1000000
|
||||
#define RTW89_C2H_TIMEOUT_USB 4000
|
||||
|
||||
struct rtw89_mac_c2h_info {
|
||||
u8 id;
|
||||
u8 content_len;
|
||||
|
||||
Reference in New Issue
Block a user