"[BTCoex], Hi-Pri Rx/Tx: %d/%d, Lo-Pri Rx/Tx: %d/%d\n",
coex_stat->hi_pri_rx, coex_stat->hi_pri_tx,
coex_stat->lo_pri_rx, coex_stat->lo_pri_tx);
+
+ if (coex_stat->wl_under_lps || coex_stat->wl_under_ips ||
+ (coex_stat->hi_pri_rx > 60000 && coex_stat->hi_pri_tx == 60000 &&
+ coex_stat->lo_pri_rx > 60000 && coex_stat->lo_pri_tx == 60000))
+ coex_stat->bt_ctr_ok = false;
+ else
+ coex_stat->bt_ctr_ok = true;
}
static void rtw_coex_monitor_bt_enable(struct rtw_dev *rtwdev)
struct rtw_coex *coex = &rtwdev->coex;
struct rtw_coex_stat *coex_stat = &coex->stat;
struct rtw_efuse *efuse = &rtwdev->efuse;
+ bool is_bt_ctr_hi = false, is_toggle_table = false;
u8 table_case, tdma_case;
u32 slot_type = 0;
- bool bt_multi_link_remain = false, is_toggle_table = false;
rtw_dbg(rtwdev, RTW_DBG_COEX, "[BTCoex], %s()\n", __func__);
rtw_coex_set_ant_path(rtwdev, false, COEX_SET_ANT_2G);
rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]);
+ if (coex_stat->bt_ctr_ok &&
+ coex_stat->lo_pri_rx + coex_stat->lo_pri_tx > 360)
+ is_bt_ctr_hi = true;
+
if (efuse->share_ant) {
/* Shared-Ant */
if (coex_stat->bt_ble_exist) {
}
} else {
/* Legacy HID */
- if (coex_stat->bt_profile_num == 1 &&
- (coex_stat->bt_multi_link ||
- (coex_stat->lo_pri_rx +
- coex_stat->lo_pri_tx > 360) ||
- coex_stat->bt_slave ||
- bt_multi_link_remain)) {
- slot_type = TDMA_4SLOT;
- table_case = 12;
- tdma_case = 20;
- } else if (coex_stat->bt_a2dp_active) {
+ if (coex_stat->bt_a2dp_active) {
table_case = 9;
tdma_case = 18;
+ } else if (coex_stat->bt_profile_num == 1 &&
+ (coex_stat->bt_multi_link &&
+ (is_bt_ctr_hi || coex_stat->bt_slave ||
+ coex_stat->bt_multi_link_remain))) {
+ if (coex_stat->wl_gl_busy &&
+ (coex_stat->wl_rx_rate <= 3 ||
+ coex_stat->wl_rts_rx_rate <= 3))
+ table_case = 13;
+ else
+ table_case = 12;
+
+ tdma_case = 26;
} else if (coex_stat->bt_418_hid_exist &&
coex_stat->wl_gl_busy) {
is_toggle_table = true;
slot_type = TDMA_4SLOT;
- table_case = 9;
- tdma_case = 24;
+ table_case = 32;
+ tdma_case = 27;
} else if (coex_stat->bt_ble_hid_exist &&
coex_stat->wl_gl_busy) {
- table_case = 32;
- tdma_case = 9;
+ table_case = 36;
+ tdma_case = 0;
} else {
table_case = 9;
tdma_case = 9;
bool bt_game_hid_exist;
bool bt_hid_handle_cnt;
bool bt_mailbox_reply;
+ bool bt_ctr_ok;
bool wl_under_lps;
bool wl_under_ips;
{0x66556aaa, 0x6a5a6aaa}, /* case-30 */
{0xffffffff, 0x5aaa5aaa},
{0x56555555, 0x5a5a5aaa},
+ {0xdaffdaff, 0xdaffdaff},
+ {0xddffddff, 0xddffddff},
+ {0xe5555555, 0xe5555555}, /* case-35 */
+ {0xea5a5a5a, 0xea5a5a5a},
+ {0xea6a6a6a, 0xea6a6a6a},
};
/* Shared-Antenna TDMA */
{0x66556aaa, 0x6a5a6aaa}, /* case-30 */
{0xffffffff, 0x5aaa5aaa},
{0x56555555, 0x5a5a5aaa},
+ {0xdaffdaff, 0xdaffdaff},
+ {0xddffddff, 0xddffddff},
+ {0xe5555555, 0xe5555555}, /* case-35 */
+ {0xea5a5a5a, 0xea5a5a5a},
+ {0xea6a6a6a, 0xea6a6a6a},
};
/* Non-Shared-Antenna Coex Table */
{0x66556655, 0x66556655},
{0x66556aaa, 0x6a5a6aaa}, /* case-30 */
{0xffffffff, 0x5aaa5aaa},
- {0x56555555, 0x5a5a5aaa}
+ {0x56555555, 0x5a5a5aaa},
+ {0xdaffdaff, 0xdaffdaff},
+ {0xddffddff, 0xddffddff},
+ {0xe5555555, 0xe5555555}, /* case-35 */
+ {0xea5a5a5a, 0xea5a5a5a},
+ {0xea6a6a6a, 0xea6a6a6a},
};
/* Non-Shared-Antenna Coex Table */
{0x66556655, 0x66556655},
{0x66556aaa, 0x6a5a6aaa}, /* case-30 */
{0xffffffff, 0x5aaa5aaa},
- {0x56555555, 0x5a5a5aaa}
+ {0x56555555, 0x5a5a5aaa},
+ {0xdaffdaff, 0xdaffdaff},
+ {0xddffddff, 0xddffddff},
+ {0xe5555555, 0xe5555555}, /* case-35 */
+ {0xea5a5a5a, 0xea5a5a5a},
+ {0xea6a6a6a, 0xea6a6a6a},
};
/* Non-Shared-Antenna Coex Table */
{0x66556aaa, 0x6a5a6aaa}, /* case-30 */
{0xffffffff, 0x5aaa5aaa},
{0x56555555, 0x5a5a5aaa},
+ {0xdaffdaff, 0xdaffdaff},
+ {0xddffddff, 0xddffddff},
+ {0xe5555555, 0xe5555555}, /* case-35 */
+ {0xea5a5a5a, 0xea5a5a5a},
+ {0xea6a6a6a, 0xea6a6a6a},
};
/* Non-Shared-Antenna Coex Table */
{0x56555555, 0x5a5a5aaa},
{0xdaffdaff, 0xdaffdaff},
{0xddffddff, 0xddffddff},
+ {0xe5555555, 0xe5555555}, /* case-35 */
+ {0xea5a5a5a, 0xea5a5a5a},
+ {0xea6a6a6a, 0xea6a6a6a},
};
/* Non-Shared-Antenna Coex Table */
.max_sched_scan_ssids = 4,
#endif
.max_scan_ie_len = (RTW_PROBE_PG_CNT - 1) * TX_PAGE_SIZE,
- .coex_para_ver = 0x22020720,
+ .coex_para_ver = 0x26020420,
.bt_desired_ver = 0x20,
.scbd_support = true,
.new_scbd10_def = true,