mirror of https://gitee.com/openkylin/linux.git
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:
parent
61d802619b
commit
55e9e37da2
|
@ -309,6 +309,43 @@ static void btc8723b2ant_monitor_bt_ctr(struct btc_coexist *btcoexist)
|
|||
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)
|
||||
{
|
||||
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)
|
||||
btc8723b2ant_query_bt_info(btcoexist);
|
||||
#else
|
||||
btc8723b2ant_monitor_bt_ctr(btcoexist);
|
||||
btc8723b2ant_monitor_wifi_ctr(btcoexist);
|
||||
|
||||
if (btc8723b2ant_is_wifi_status_changed(btcoexist) ||
|
||||
coex_dm->auto_tdma_adjust)
|
||||
btc8723b2ant_run_coexist_mechanism(btcoexist);
|
||||
|
|
|
@ -149,6 +149,16 @@ struct coex_sta_8723b_2ant {
|
|||
u8 bt_retry_cnt;
|
||||
u8 bt_info_ext;
|
||||
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;
|
||||
};
|
||||
|
||||
/*********************************************************************
|
||||
|
|
Loading…
Reference in New Issue