rtlwifi: btcoex: 21a 1ant: action when associating/authenticating
authorYan-Hsuan Chuang <yhchuang@realtek.com>
Mon, 10 Apr 2017 16:23:04 +0000 (11:23 -0500)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 13 Apr 2017 14:11:01 +0000 (17:11 +0300)
When wifi is associating or authenticating, set the coex table for wifi
to establish link. These packets should have higher priority.

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>
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtc8821a1ant.c

index cadc0f91af41dfda3fb31a4201f0fc5484014680..05e33d38d49c861e0e5a32224d854172e1a3fc13 100644 (file)
@@ -1486,6 +1486,28 @@ void btc8821a1ant_action_wifi_multi_port(struct btc_coexist *btcoexist)
        btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2);
 }
 
+static
+void btc8821a1ant_action_wifi_not_connected_asso_auth(
+                                       struct btc_coexist *btcoexist)
+{
+       struct btc_bt_link_info *bt_link_info = &btcoexist->bt_link_info;
+
+       btc8821a1ant_power_save_state(btcoexist, BTC_PS_WIFI_NATIVE, 0x0,
+                                     0x0);
+
+       /* tdma and coex table */
+       if ((bt_link_info->sco_exist) || (bt_link_info->hid_exist)) {
+               btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 14);
+               btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 1);
+       } else if ((bt_link_info->a2dp_exist) || (bt_link_info->pan_exist)) {
+               btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, true, 20);
+               btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 4);
+       } else {
+               btc8821a1ant_ps_tdma(btcoexist, NORMAL_EXEC, false, 8);
+               btc8821a1ant_coex_table_with_type(btcoexist, NORMAL_EXEC, 2);
+       }
+}
+
 
 static void btc8821a1ant_action_hs(struct btc_coexist *btcoexist)
 {
@@ -1941,10 +1963,15 @@ static void btc8821a1ant_run_coexist_mechanism(struct btc_coexist *btcoexist)
                btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_LINK, &link);
                btcoexist->btc_get(btcoexist, BTC_GET_BL_WIFI_ROAM, &roam);
 
-               if (scan || link || roam)
-                       btc8821a1ant_act_wifi_not_conn_scan(btcoexist);
-               else
+               if (scan || link || roam) {
+                       if (scan)
+                               btc8821a1ant_act_wifi_not_conn_scan(btcoexist);
+                       else
+                               btc8821a1ant_action_wifi_not_connected_asso_auth(
+                                       btcoexist);
+               } else {
                        btc8821a1ant_action_wifi_not_connected(btcoexist);
+               }
        } else {
                /* wifi LPS/Busy */
                btc8821a1ant_action_wifi_connected(btcoexist);