rtlwifi: btcoex: 23b 2ant: monitor wifi counter for allocate tdma time

If there are too many CRC error packets, it means the wifi is operating
under low quality circumstances. If so, we need to reallocate the
resources of wifi and bt

Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Pkshih <pkshih@realtek.com>
Cc: Birming Chiu <birming@realtek.com>
Cc: Shaofu <shaofu@realtek.com>
Cc: Steven Ting <steventing@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
Yan-Hsuan Chuang 2017-04-03 13:41:35 -05:00 committed by Kalle Valo
parent 61d802619b
commit 55e9e37da2
2 changed files with 50 additions and 0 deletions

View File

@ -309,6 +309,43 @@ static void btc8723b2ant_monitor_bt_ctr(struct btc_coexist *btcoexist)
btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc); btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc);
} }
static void btc8723b2ant_monitor_wifi_ctr(struct btc_coexist *btcoexist)
{
if (coex_sta->under_ips) {
coex_sta->crc_ok_cck = 0;
coex_sta->crc_ok_11g = 0;
coex_sta->crc_ok_11n = 0;
coex_sta->crc_ok_11n_agg = 0;
coex_sta->crc_err_cck = 0;
coex_sta->crc_err_11g = 0;
coex_sta->crc_err_11n = 0;
coex_sta->crc_err_11n_agg = 0;
} else {
coex_sta->crc_ok_cck =
btcoexist->btc_read_4byte(btcoexist, 0xf88);
coex_sta->crc_ok_11g =
btcoexist->btc_read_2byte(btcoexist, 0xf94);
coex_sta->crc_ok_11n =
btcoexist->btc_read_2byte(btcoexist, 0xf90);
coex_sta->crc_ok_11n_agg =
btcoexist->btc_read_2byte(btcoexist, 0xfb8);
coex_sta->crc_err_cck =
btcoexist->btc_read_4byte(btcoexist, 0xf84);
coex_sta->crc_err_11g =
btcoexist->btc_read_2byte(btcoexist, 0xf96);
coex_sta->crc_err_11n =
btcoexist->btc_read_2byte(btcoexist, 0xf92);
coex_sta->crc_err_11n_agg =
btcoexist->btc_read_2byte(btcoexist, 0xfba);
}
/* reset counter */
btcoexist->btc_write_1byte_bitmask(btcoexist, 0xf16, 0x1, 0x1);
btcoexist->btc_write_1byte_bitmask(btcoexist, 0xf16, 0x1, 0x0);
}
static void btc8723b2ant_query_bt_info(struct btc_coexist *btcoexist) static void btc8723b2ant_query_bt_info(struct btc_coexist *btcoexist)
{ {
struct rtl_priv *rtlpriv = btcoexist->adapter; struct rtl_priv *rtlpriv = btcoexist->adapter;
@ -2875,6 +2912,9 @@ void ex_btc8723b2ant_periodical(struct btc_coexist *btcoexist)
#if (BT_AUTO_REPORT_ONLY_8723B_2ANT == 0) #if (BT_AUTO_REPORT_ONLY_8723B_2ANT == 0)
btc8723b2ant_query_bt_info(btcoexist); btc8723b2ant_query_bt_info(btcoexist);
#else #else
btc8723b2ant_monitor_bt_ctr(btcoexist);
btc8723b2ant_monitor_wifi_ctr(btcoexist);
if (btc8723b2ant_is_wifi_status_changed(btcoexist) || if (btc8723b2ant_is_wifi_status_changed(btcoexist) ||
coex_dm->auto_tdma_adjust) coex_dm->auto_tdma_adjust)
btc8723b2ant_run_coexist_mechanism(btcoexist); btc8723b2ant_run_coexist_mechanism(btcoexist);

View File

@ -149,6 +149,16 @@ struct coex_sta_8723b_2ant {
u8 bt_retry_cnt; u8 bt_retry_cnt;
u8 bt_info_ext; u8 bt_info_ext;
u32 pop_event_cnt; u32 pop_event_cnt;
u32 crc_ok_cck;
u32 crc_ok_11g;
u32 crc_ok_11n;
u32 crc_ok_11n_agg;
u32 crc_err_cck;
u32 crc_err_11g;
u32 crc_err_11n;
u32 crc_err_11n_agg;
}; };
/********************************************************************* /*********************************************************************