Commit 4517f811 authored by Ching-Te Ku's avatar Ching-Te Ku Committed by Kalle Valo

rtw88: coex: fix A2DP stutters while WL busy + WL scan

While WL scan, WL is more high priority than BT. The packets from AP
will be a big interference to A2DP. It will lead to A2DP stutters. Stop
answering CTS to AP to decrease AP's packets Tx while WL scan + WL busy.
Enable BT AFH feature to make BT leave away from WL channel.

Desired BT firmware BT-COEX version: 0x1c
Desired WL firmware version: 9.9.x
Signed-off-by: default avatarChing-Te Ku <ku920601@realtek.com>
Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarKalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20210319054218.3319-8-pkshih@realtek.com
parent 7ae7784e
...@@ -787,7 +787,6 @@ static void rtw_coex_update_wl_ch_info(struct rtw_dev *rtwdev, u8 type) ...@@ -787,7 +787,6 @@ static void rtw_coex_update_wl_ch_info(struct rtw_dev *rtwdev, u8 type)
{ {
struct rtw_chip_info *chip = rtwdev->chip; struct rtw_chip_info *chip = rtwdev->chip;
struct rtw_coex_dm *coex_dm = &rtwdev->coex.dm; struct rtw_coex_dm *coex_dm = &rtwdev->coex.dm;
struct rtw_efuse *efuse = &rtwdev->efuse;
u8 link = 0; u8 link = 0;
u8 center_chan = 0; u8 center_chan = 0;
u8 bw; u8 bw;
...@@ -798,7 +797,7 @@ static void rtw_coex_update_wl_ch_info(struct rtw_dev *rtwdev, u8 type) ...@@ -798,7 +797,7 @@ static void rtw_coex_update_wl_ch_info(struct rtw_dev *rtwdev, u8 type)
if (type != COEX_MEDIA_DISCONNECT) if (type != COEX_MEDIA_DISCONNECT)
center_chan = rtwdev->hal.current_channel; center_chan = rtwdev->hal.current_channel;
if (center_chan == 0 || (efuse->share_ant && center_chan <= 14)) { if (center_chan == 0) {
link = 0; link = 0;
center_chan = 0; center_chan = 0;
bw = 0; bw = 0;
...@@ -2325,8 +2324,11 @@ static void rtw_coex_action_wl_linkscan(struct rtw_dev *rtwdev) ...@@ -2325,8 +2324,11 @@ static void rtw_coex_action_wl_linkscan(struct rtw_dev *rtwdev)
if (efuse->share_ant) { /* Shared-Ant */ if (efuse->share_ant) { /* Shared-Ant */
if (coex_stat->bt_a2dp_exist) { if (coex_stat->bt_a2dp_exist) {
slot_type = TDMA_4SLOT; slot_type = TDMA_4SLOT;
table_case = 9;
tdma_case = 11; tdma_case = 11;
if (coex_stat->wl_gl_busy)
table_case = 26;
else
table_case = 9;
} else { } else {
table_case = 9; table_case = 9;
tdma_case = 7; tdma_case = 7;
......
...@@ -4393,7 +4393,7 @@ struct rtw_chip_info rtw8822c_hw_spec = { ...@@ -4393,7 +4393,7 @@ struct rtw_chip_info rtw8822c_hw_spec = {
.wowlan_stub = &rtw_wowlan_stub_8822c, .wowlan_stub = &rtw_wowlan_stub_8822c,
.max_sched_scan_ssids = 4, .max_sched_scan_ssids = 4,
#endif #endif
.coex_para_ver = 0x201029, .coex_para_ver = 0x2103181c,
.bt_desired_ver = 0x1c, .bt_desired_ver = 0x1c,
.scbd_support = true, .scbd_support = true,
.new_scbd10_def = true, .new_scbd10_def = true,
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment