rtw88: coex: update the mechanism for A2DP + PAN
authorChing-Te Ku <ku920601@realtek.com>
Thu, 26 Nov 2020 02:10:52 +0000 (10:10 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Wed, 2 Dec 2020 19:23:54 +0000 (21:23 +0200)
Update A2DP+PAN+WL mechanism for CPT(Coexistence Performance Test) to
enhance WL/BT performance at the environment that some specific AP are
existing.

Signed-off-by: Ching-Te Ku <ku920601@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
Link: https://lore.kernel.org/r/20201126021059.11981-4-pkshih@realtek.com
drivers/net/wireless/realtek/rtw88/coex.c

index 33fef85..c0dbc8a 100644 (file)
@@ -1910,6 +1910,7 @@ static void rtw_coex_action_bt_a2dp_pan(struct rtw_dev *rtwdev)
        struct rtw_efuse *efuse = &rtwdev->efuse;
        struct rtw_chip_info *chip = rtwdev->chip;
        u8 table_case, tdma_case;
+       bool wl_cpt_test = false, bt_cpt_test = false;
 
        rtw_dbg(rtwdev, RTW_DBG_COEX, "[BTCoex], %s()\n", __func__);
 
@@ -1917,16 +1918,29 @@ static void rtw_coex_action_bt_a2dp_pan(struct rtw_dev *rtwdev)
        rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]);
        if (efuse->share_ant) {
                /* Shared-Ant */
-               if (coex_stat->wl_gl_busy &&
-                   coex_stat->wl_noisy_level == 0)
-                       table_case = 14;
-               else
-                       table_case = 10;
+               if (wl_cpt_test) {
+                       if (coex_stat->wl_gl_busy) {
+                               table_case = 20;
+                               tdma_case = 17;
+                       } else {
+                               table_case = 10;
+                               tdma_case = 15;
+                       }
+               } else if (bt_cpt_test) {
+                       table_case = 26;
+                       tdma_case = 26;
+               } else {
+                       if (coex_stat->wl_gl_busy &&
+                           coex_stat->wl_noisy_level == 0)
+                               table_case = 14;
+                       else
+                               table_case = 10;
 
-               if (coex_stat->wl_gl_busy)
-                       tdma_case = 15;
-               else
-                       tdma_case = 20;
+                       if (coex_stat->wl_gl_busy)
+                               tdma_case = 15;
+                       else
+                               tdma_case = 20;
+               }
        } else {
                /* Non-Shared-Ant */
                table_case = 112;
@@ -1937,6 +1951,11 @@ static void rtw_coex_action_bt_a2dp_pan(struct rtw_dev *rtwdev)
                        tdma_case = 120;
        }
 
+       if (wl_cpt_test)
+               rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[1]);
+       else
+               rtw_coex_set_rf_para(rtwdev, chip->wl_rf_para_rx[0]);
+
        rtw_coex_table(rtwdev, false, table_case);
        rtw_coex_tdma(rtwdev, false, tdma_case);
 }