Commit 12515a08 authored by Ping-Ke Shih's avatar Ping-Ke Shih Committed by Kalle Valo

rtlwifi: btcoex: 23b 1ant: check PS state before setting tdma duration

For time division multiple access, the wifi and bt take turns to
transmit, but we need to let AP know that wifi is under standby mode by
sending null data to "pretend" entering power saving state using lps
rpwm.

But, the fw does not know if it is the actual power saving mode or just a
fake one to cheat to the AP. Hence, before fw setting the tdma duration,
the fw needs the driver to check the power saving state first.
Signed-off-by: default avatarPing-Ke Shih <pkshih@realtek.com>
Signed-off-by: default avatarLarry 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: default avatarKalle Valo <kvalo@codeaurora.org>
parent 12e87c09
...@@ -1401,6 +1401,7 @@ static void halbtc8723b1ant_power_save_state(struct btc_coexist *btcoexist, ...@@ -1401,6 +1401,7 @@ static void halbtc8723b1ant_power_save_state(struct btc_coexist *btcoexist,
btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER, btcoexist->btc_set(btcoexist, BTC_SET_ACT_DISABLE_LOW_POWER,
&low_pwr_disable); &low_pwr_disable);
btcoexist->btc_set(btcoexist, BTC_SET_ACT_NORMAL_LPS, NULL); btcoexist->btc_set(btcoexist, BTC_SET_ACT_NORMAL_LPS, NULL);
coex_sta->force_lps_on = false;
break; break;
case BTC_PS_LPS_ON: case BTC_PS_LPS_ON:
halbtc8723b1ant_ps_tdma_chk_pwr_save(btcoexist, true); halbtc8723b1ant_ps_tdma_chk_pwr_save(btcoexist, true);
...@@ -1412,10 +1413,12 @@ static void halbtc8723b1ant_power_save_state(struct btc_coexist *btcoexist, ...@@ -1412,10 +1413,12 @@ static void halbtc8723b1ant_power_save_state(struct btc_coexist *btcoexist,
&low_pwr_disable); &low_pwr_disable);
/* power save must executed before psTdma */ /* power save must executed before psTdma */
btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL); btcoexist->btc_set(btcoexist, BTC_SET_ACT_ENTER_LPS, NULL);
coex_sta->force_lps_on = true;
break; break;
case BTC_PS_LPS_OFF: case BTC_PS_LPS_OFF:
halbtc8723b1ant_ps_tdma_chk_pwr_save(btcoexist, false); halbtc8723b1ant_ps_tdma_chk_pwr_save(btcoexist, false);
btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL); btcoexist->btc_set(btcoexist, BTC_SET_ACT_LEAVE_LPS, NULL);
coex_sta->force_lps_on = false;
break; break;
default: default:
break; break;
......
...@@ -161,6 +161,7 @@ struct coex_sta_8723b_1ant { ...@@ -161,6 +161,7 @@ struct coex_sta_8723b_1ant {
u8 bt_retry_cnt; u8 bt_retry_cnt;
u8 bt_info_ext; u8 bt_info_ext;
bool cck_ever_lock; bool cck_ever_lock;
bool force_lps_on;
u32 pop_event_cnt; u32 pop_event_cnt;
u32 crc_ok_cck; u32 crc_ok_cck;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment