You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.5 KiB
72 lines
2.5 KiB
From da03f6e3ed4f6dc74b3f0be2c7f959cea5af6c55 Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?=C3=8D=C3=B1igo=20Huguet?= <ihuguet@redhat.com>
|
|
Date: Fri, 21 Jan 2022 08:49:04 +0100
|
|
Subject: [PATCH 27/36] rtw89: coex: Not to send H2C when WL not ready and
|
|
count H2C
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
Bugzilla: http://bugzilla.redhat.com/2033291
|
|
|
|
commit f8028a9a92f2b8653658f2ad9cc1fb849873ba5a
|
|
Author: Ching-Te Ku <ku920601@realtek.com>
|
|
Date: Thu Dec 9 16:32:24 2021 +0800
|
|
|
|
rtw89: coex: Not to send H2C when WL not ready and count H2C
|
|
|
|
Prevent to send H2C request to FW when BTC is not initialized or
|
|
WL is under power saving. Add counter to count the H2C success or fail.
|
|
|
|
Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
|
|
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
|
|
Signed-off-by: Kalle Valo <kvalo@kernel.org>
|
|
Link: https://lore.kernel.org/r/20211209083229.10815-3-pkshih@realtek.com
|
|
|
|
Signed-off-by: Íñigo Huguet <ihuguet@redhat.com>
|
|
---
|
|
drivers/net/wireless/realtek/rtw89/coex.c | 27 +++++++++++++++++++++++++--
|
|
1 file changed, 25 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/drivers/net/wireless/realtek/rtw89/coex.c b/drivers/net/wireless/realtek/rtw89/coex.c
|
|
index f220229a7a48..c8f912e7344d 100644
|
|
--- a/drivers/net/wireless/realtek/rtw89/coex.c
|
|
+++ b/drivers/net/wireless/realtek/rtw89/coex.c
|
|
@@ -540,8 +540,31 @@ static void _update_bt_scbd(struct rtw89_dev *rtwdev, bool only_update);
|
|
static void _send_fw_cmd(struct rtw89_dev *rtwdev, u8 h2c_class, u8 h2c_func,
|
|
void *param, u16 len)
|
|
{
|
|
- rtw89_fw_h2c_raw_with_hdr(rtwdev, h2c_class, h2c_func, param, len,
|
|
- false, true);
|
|
+ struct rtw89_btc *btc = &rtwdev->btc;
|
|
+ struct rtw89_btc_btf_fwinfo *pfwinfo = &btc->fwinfo;
|
|
+ struct rtw89_btc_cx *cx = &btc->cx;
|
|
+ struct rtw89_btc_wl_info *wl = &cx->wl;
|
|
+ int ret;
|
|
+
|
|
+ if (!wl->status.map.init_ok) {
|
|
+ rtw89_debug(rtwdev, RTW89_DBG_BTC,
|
|
+ "[BTC], %s(): return by btc not init!!\n", __func__);
|
|
+ pfwinfo->cnt_h2c_fail++;
|
|
+ return;
|
|
+ } else if ((wl->status.map.rf_off_pre == 1 && wl->status.map.rf_off == 1) ||
|
|
+ (wl->status.map.lps_pre == 1 && wl->status.map.lps == 1)) {
|
|
+ rtw89_debug(rtwdev, RTW89_DBG_BTC,
|
|
+ "[BTC], %s(): return by wl off!!\n", __func__);
|
|
+ pfwinfo->cnt_h2c_fail++;
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ pfwinfo->cnt_h2c++;
|
|
+
|
|
+ ret = rtw89_fw_h2c_raw_with_hdr(rtwdev, h2c_class, h2c_func, param, len,
|
|
+ false, true);
|
|
+ if (ret != 0)
|
|
+ pfwinfo->cnt_h2c_fail++;
|
|
}
|
|
|
|
static void _reset_btc_var(struct rtw89_dev *rtwdev, u8 type)
|
|
--
|
|
2.13.6
|
|
|