rtlwifi: btcoex: 23b 1ant: check if BT high priority packet exist
authorPing-Ke Shih <pkshih@realtek.com>
Tue, 16 May 2017 13:19:55 +0000 (08:19 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 18 May 2017 14:09:51 +0000 (17:09 +0300)
If there are BT high priority packets, we arrange more time to BT.
To make user experience to  be better, HID and SCO are also seen as
high priority packet exist.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Yan-Hsuan Chuang <yhchuang@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>
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b1ant.c
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8723b1ant.h
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h

index 437007dd0db093eb4a82b9a1a0e8ac11981abd2a..9178cccb5ddfe1fdcd76b391607e9b8759d8b8f3 100644 (file)
@@ -407,6 +407,7 @@ static void halbtc8723b1ant_update_bt_link_info(struct btc_coexist *btcoexist)
        bt_link_info->a2dp_exist = coex_sta->a2dp_exist;
        bt_link_info->pan_exist = coex_sta->pan_exist;
        bt_link_info->hid_exist = coex_sta->hid_exist;
+       bt_link_info->bt_hi_pri_link_exist = coex_sta->bt_hi_pri_link_exist;
 
        /* work around for HS mode. */
        if (bt_hs_on) {
@@ -2644,6 +2645,8 @@ void ex_halbtc8723b1ant_bt_info_notify(struct btc_coexist *btcoexist,
                coex_sta->a2dp_exist = false;
                coex_sta->hid_exist = false;
                coex_sta->sco_exist = false;
+
+               coex_sta->bt_hi_pri_link_exist = false;
        } else {
                /* connection exists */
                coex_sta->bt_link_exist = true;
@@ -2663,6 +2666,14 @@ void ex_halbtc8723b1ant_bt_info_notify(struct btc_coexist *btcoexist,
                        coex_sta->sco_exist = true;
                else
                        coex_sta->sco_exist = false;
+
+               /* Add Hi-Pri Tx/Rx counter to avoid false detection */
+               if (((coex_sta->hid_exist) || (coex_sta->sco_exist)) &&
+                   (coex_sta->high_priority_tx + coex_sta->high_priority_rx >=
+                    160) &&
+                   (!coex_sta->c2h_bt_inquiry_page))
+                       coex_sta->bt_hi_pri_link_exist = true;
+
        }
 
        halbtc8723b1ant_update_bt_link_info(btcoexist);
index cf14db5fa759c955be0185a854caaa92e5dbd70d..0b7b9b2a8e12320aec4f245475a1ffa3d4106565 100644 (file)
@@ -142,6 +142,7 @@ struct coex_sta_8723b_1ant {
        bool a2dp_exist;
        bool hid_exist;
        bool pan_exist;
+       bool bt_hi_pri_link_exist;
 
        bool under_lps;
        bool under_ips;
index ab2e31a442536a9e111c318e06f9885b577a6b9a..6ce2fcadc14460711f67724e99c285b4690c80d8 100644 (file)
@@ -468,6 +468,7 @@ struct btc_statistics {
 
 struct btc_bt_link_info {
        bool bt_link_exist;
+       bool bt_hi_pri_link_exist;
        bool sco_exist;
        bool sco_only;
        bool a2dp_exist;