rtlwifi: btcoex: 21a 2ant: monitor wifi counter to check network status

If there are a lot of low-rate packets, then the connection of wifi is
unstable. If so, we should switch resource to bt to have a higher
transmission quality, or wifi resource will be wasted

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-13 13:06:54 -05:00 committed by Kalle Valo
parent 4776d34907
commit eebc58782e
2 changed files with 48 additions and 0 deletions

View File

@ -306,6 +306,43 @@ static void btc8821a2ant_monitor_bt_ctr(struct btc_coexist *btcoexist)
btcoexist->btc_write_1byte(btcoexist, 0x76e, 0xc);
}
static void btc8821a2ant_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 btc8821a2ant_query_bt_info(struct btc_coexist *btcoexist)
{
struct rtl_priv *rtlpriv = btcoexist->adapter;
@ -2888,4 +2925,5 @@ void ex_btc8821a2ant_periodical(struct btc_coexist *btcoexist)
btc8821a2ant_query_bt_info(btcoexist);
btc8821a2ant_monitor_bt_ctr(btcoexist);
btc8821a2ant_monitor_wifi_ctr(btcoexist);
}

View File

@ -141,6 +141,16 @@ struct coex_sta_8821a_2ant {
bool c2h_bt_inquiry_page;
u8 bt_retry_cnt;
u8 bt_info_ext;
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;
};
/*===========================================