Commit 55e9e37d authored by Yan-Hsuan Chuang's avatar Yan-Hsuan Chuang Committed by Kalle Valo

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: default avatarYan-Hsuan Chuang <yhchuang@realtek.com>
Signed-off-by: default avatarLarry 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: default avatarKalle Valo <kvalo@codeaurora.org>
parent 61d80261
...@@ -309,6 +309,43 @@ static void btc8723b2ant_monitor_bt_ctr(struct btc_coexist *btcoexist) ...@@ -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) ...@@ -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);
......
...@@ -149,6 +149,16 @@ struct coex_sta_8723b_2ant { ...@@ -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;
}; };
/********************************************************************* /*********************************************************************
......
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