* [PATCH] rtw88: coex: separate BLE HID profile from BLE profile
@ 2020-10-30 5:55 pkshih
2020-11-07 15:50 ` Kalle Valo
0 siblings, 1 reply; 2+ messages in thread
From: pkshih @ 2020-10-30 5:55 UTC (permalink / raw)
To: kvalo, tony0620emma; +Cc: linux-wireless
From: Ching-Te Ku <ku920601@realtek.com>
BT firmware will report BLE-HID and BLE-RCU in different profile.
We can distinguish the two profile from BT info now.
Add the coexistence for BLE-HID coexistence,
it can make BLE HID work more smoothly.
BLE-HID need to Tx/Rx packet more frequently to respond
user operation, but RCU doesn't.
In the case of RCU coexistence, it will make Wi-Fi have a
higher priority to earn more Wi-Fi throughput.
If BLE-HID go for the same case,
it will make user feel mouse is lagging.
Desired BT firmware BT-COEX version: 0x1c
Desired WL firmware version: 9.9
Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
---
drivers/net/wireless/realtek/rtw88/coex.c | 31 ++++++++++++++++---
drivers/net/wireless/realtek/rtw88/main.h | 1 +
drivers/net/wireless/realtek/rtw88/rtw8723d.c | 5 ++-
drivers/net/wireless/realtek/rtw88/rtw8822b.c | 5 ++-
drivers/net/wireless/realtek/rtw88/rtw8822c.c | 9 ++++--
5 files changed, 42 insertions(+), 9 deletions(-)
diff --git a/drivers/net/wireless/realtek/rtw88/coex.c b/drivers/net/wireless/realtek/rtw88/coex.c
index aa08fd7d9fcd..51eef8d0a8e5 100644
--- a/drivers/net/wireless/realtek/rtw88/coex.c
+++ b/drivers/net/wireless/realtek/rtw88/coex.c
@@ -1470,11 +1470,17 @@ static void rtw_coex_action_bt_hid(struct rtw_dev *rtwdev)
} else {
/* for 4/18 HID */
if (coex_stat->bt_418_hid_exist &&
- coex_stat->wl_gl_busy)
+ coex_stat->wl_gl_busy) {
table_case = 12;
- else
+ tdma_case = 4;
+ } else if (coex_stat->bt_ble_hid_exist &&
+ coex_stat->wl_gl_busy) {
+ table_case = 32;
+ tdma_case = 9;
+ } else {
table_case = 10;
- tdma_case = 4;
+ tdma_case = 4;
+ }
}
}
} else {
@@ -2388,6 +2394,23 @@ void rtw_coex_bt_info_notify(struct rtw_dev *rtwdev, u8 *buf, u8 length)
4 * HZ);
}
coex_stat->bt_acl_busy = ((coex_stat->bt_info_lb2 & BIT(3)) == BIT(3));
+ if (coex_stat->bt_info_lb2 & BIT(5)) {
+ if (coex_stat->bt_info_hb1 & BIT(0)) {
+ /*BLE HID*/
+ coex_stat->bt_ble_hid_exist = true;
+ } else {
+ coex_stat->bt_ble_hid_exist = false;
+ }
+ coex_stat->bt_ble_exist = false;
+ } else if (coex_stat->bt_info_hb1 & BIT(0)) {
+ /*RCU*/
+ coex_stat->bt_ble_hid_exist = false;
+ coex_stat->bt_ble_exist = true;
+ } else {
+ coex_stat->bt_ble_hid_exist = false;
+ coex_stat->bt_ble_exist = false;
+ }
+
coex_stat->cnt_bt[COEX_CNT_BT_RETRY] = coex_stat->bt_info_lb3 & 0xf;
if (coex_stat->cnt_bt[COEX_CNT_BT_RETRY] >= 1)
coex_stat->cnt_bt[COEX_CNT_BT_POPEVENT]++;
@@ -2422,7 +2445,6 @@ void rtw_coex_bt_info_notify(struct rtw_dev *rtwdev, u8 *buf, u8 length)
coex_stat->bt_rssi = 0;
}
- coex_stat->bt_ble_exist = ((coex_stat->bt_info_hb1 & BIT(0)) == BIT(0));
if (coex_stat->bt_info_hb1 & BIT(1))
coex_stat->cnt_bt[COEX_CNT_BT_REINIT]++;
@@ -2965,6 +2987,7 @@ void rtw_coex_display_coex_info(struct rtw_dev *rtwdev, struct seq_file *m)
coex_stat->bt_hid_exist ?
(coex_stat->bt_ble_exist ? "HID(RCU)," :
coex_stat->bt_hid_slot >= 2 ? "HID(4/18)" :
+ coex_stat->bt_ble_hid_exist ? "HID(BLE)" :
"HID(2/18),") : "",
coex_stat->bt_pan_exist ? coex_stat->bt_opp_exist ?
"OPP," : "PAN," : "",
diff --git a/drivers/net/wireless/realtek/rtw88/main.h b/drivers/net/wireless/realtek/rtw88/main.h
index ffb02e614217..fb2b1d46e8a9 100644
--- a/drivers/net/wireless/realtek/rtw88/main.h
+++ b/drivers/net/wireless/realtek/rtw88/main.h
@@ -1305,6 +1305,7 @@ struct rtw_coex_stat {
bool bt_init_scan;
bool bt_slave;
bool bt_418_hid_exist;
+ bool bt_ble_hid_exist;
bool bt_mailbox_reply;
bool wl_under_lps;
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8723d.c b/drivers/net/wireless/realtek/rtw88/rtw8723d.c
index 3ddd170f1651..832dc8e98bee 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8723d.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8723d.c
@@ -1976,7 +1976,10 @@ static const struct coex_table_para table_sant_8723d[] = {
{0x55555555, 0x5a5a5a5a},
{0x55555555, 0xaaaaaaaa},
{0x55555555, 0x6a6a6a6a},
- {0x656a656a, 0x656a656a}
+ {0x656a656a, 0x656a656a},
+ {0x66556aaa, 0x6a5a6aaa}, /* case-30 */
+ {0xffffffff, 0x5aaa5aaa},
+ {0x56555555, 0x5a5a5aaa},
};
/* Non-Shared-Antenna Coex Table */
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822b.c b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
index 22d0dd640ac9..59bf77fedbc0 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822b.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822b.c
@@ -2164,7 +2164,10 @@ static const struct coex_table_para table_sant_8822b[] = {
{0x55555555, 0x5a5a5a5a},
{0x55555555, 0xaaaaaaaa},
{0x55555555, 0x6a5a6a5a},
- {0x66556655, 0x66556655}
+ {0x66556655, 0x66556655},
+ {0x66556aaa, 0x6a5a6aaa}, /* case-30 */
+ {0xffffffff, 0x5aaa5aaa},
+ {0x56555555, 0x5a5a5aaa},
};
/* Non-Shared-Antenna Coex Table */
diff --git a/drivers/net/wireless/realtek/rtw88/rtw8822c.c b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
index e37300e98517..1e2f680f2b90 100644
--- a/drivers/net/wireless/realtek/rtw88/rtw8822c.c
+++ b/drivers/net/wireless/realtek/rtw88/rtw8822c.c
@@ -4006,7 +4006,10 @@ static const struct coex_table_para table_sant_8822c[] = {
{0x55555555, 0x5a5a5a5a},
{0x55555555, 0xaaaaaaaa},
{0x55555555, 0x6a5a6a5a},
- {0x66556655, 0x66556655}
+ {0x66556655, 0x66556655},
+ {0x66556aaa, 0x6a5a6aaa}, /* case-30 */
+ {0xffffffff, 0x5aaa5aaa},
+ {0x56555555, 0x5a5a5aaa},
};
/* Non-Shared-Antenna Coex Table */
@@ -4337,8 +4340,8 @@ struct rtw_chip_info rtw8822c_hw_spec = {
.wowlan_stub = &rtw_wowlan_stub_8822c,
.max_sched_scan_ssids = 4,
#endif
- .coex_para_ver = 0x20070217,
- .bt_desired_ver = 0x17,
+ .coex_para_ver = 0x201029,
+ .bt_desired_ver = 0x1c,
.scbd_support = true,
.new_scbd10_def = true,
.pstdma_type = COEX_PSTDMA_FORCE_LPSOFF,
--
2.21.0
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] rtw88: coex: separate BLE HID profile from BLE profile
2020-10-30 5:55 [PATCH] rtw88: coex: separate BLE HID profile from BLE profile pkshih
@ 2020-11-07 15:50 ` Kalle Valo
0 siblings, 0 replies; 2+ messages in thread
From: Kalle Valo @ 2020-11-07 15:50 UTC (permalink / raw)
To: pkshih; +Cc: tony0620emma, linux-wireless
<pkshih@realtek.com> wrote:
> From: Ching-Te Ku <ku920601@realtek.com>
>
> BT firmware will report BLE-HID and BLE-RCU in different profile.
> We can distinguish the two profile from BT info now.
>
> Add the coexistence for BLE-HID coexistence,
> it can make BLE HID work more smoothly.
>
> BLE-HID need to Tx/Rx packet more frequently to respond
> user operation, but RCU doesn't.
>
> In the case of RCU coexistence, it will make Wi-Fi have a
> higher priority to earn more Wi-Fi throughput.
>
> If BLE-HID go for the same case,
> it will make user feel mouse is lagging.
>
> Desired BT firmware BT-COEX version: 0x1c
> Desired WL firmware version: 9.9
>
> Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Patch applied to wireless-drivers-next.git, thanks.
842280da81a9 rtw88: coex: separate BLE HID profile from BLE profile
--
https://patchwork.kernel.org/project/linux-wireless/patch/20201030055506.6560-1-pkshih@realtek.com/
https://wireless.wiki.kernel.org/en/developers/documentation/submittingpatches
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2020-11-07 15:50 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-30 5:55 [PATCH] rtw88: coex: separate BLE HID profile from BLE profile pkshih
2020-11-07 15:50 ` Kalle Valo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.