rtlwifi: btcoex: Add pre- and post- normal LPS function
authorPing-Ke Shih <pkshih@realtek.com>
Tue, 6 Mar 2018 01:25:47 +0000 (09:25 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Tue, 27 Mar 2018 08:54:50 +0000 (11:54 +0300)
Normal LPS is decomposed into pre- and post- parts, so we can issue H2C
with TDMA parameters in the "critical section" that dirver can't change
LPS state at the moment.

Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Acked-by: Larry Finger <Larry.Finger@lwfinger.net>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.c
drivers/net/wireless/realtek/rtlwifi/btcoexist/halbtcoutsrc.h

index bfb32d4..0f664a0 100644 (file)
@@ -363,6 +363,22 @@ static void halbtc_normal_lps(struct btc_coexist *btcoexist)
        }
 }
 
+static void halbtc_pre_normal_lps(struct btc_coexist *btcoexist)
+{
+       struct rtl_priv *rtlpriv = btcoexist->adapter;
+
+       if (btcoexist->bt_info.bt_ctrl_lps) {
+               btcoexist->bt_info.bt_lps_on = false;
+               rtl_lps_leave(rtlpriv->mac80211.hw);
+       }
+}
+
+static void halbtc_post_normal_lps(struct btc_coexist *btcoexist)
+{
+       if (btcoexist->bt_info.bt_ctrl_lps)
+               btcoexist->bt_info.bt_ctrl_lps = false;
+}
+
 static void halbtc_leave_low_power(struct btc_coexist *btcoexist)
 {
 }
@@ -806,6 +822,12 @@ static bool halbtc_set(void *void_btcoexist, u8 set_type, void *in_buf)
        case BTC_SET_ACT_NORMAL_LPS:
                halbtc_normal_lps(btcoexist);
                break;
+       case BTC_SET_ACT_PRE_NORMAL_LPS:
+               halbtc_pre_normal_lps(btcoexist);
+               break;
+       case BTC_SET_ACT_POST_NORMAL_LPS:
+               halbtc_post_normal_lps(btcoexist);
+               break;
        case BTC_SET_ACT_DISABLE_LOW_POWER:
                halbtc_disable_low_power(btcoexist, *bool_tmp);
                break;
index 1f12449..ad80ec0 100644 (file)
@@ -349,6 +349,8 @@ enum btc_set_type {
        BTC_SET_ACT_LEAVE_LPS,
        BTC_SET_ACT_ENTER_LPS,
        BTC_SET_ACT_NORMAL_LPS,
+       BTC_SET_ACT_PRE_NORMAL_LPS,
+       BTC_SET_ACT_POST_NORMAL_LPS,
        BTC_SET_ACT_INC_FORCE_EXEC_PWR_CMD_CNT,
        BTC_SET_ACT_DISABLE_LOW_POWER,
        BTC_SET_ACT_UPDATE_RAMASK,