rtw88: not to enter or leave PS under IRQ
Remove PS related *_irqsafe functions to avoid entering/leaving PS under interrupt context. Instead, make PS decision in watch_dog. This could simplify the logic and make the code look clean. But it could have a little side-effect that if the driver is having heavy traffic before the every-2-second watch_dog detect the traffic and decide to leave PS, the thoughput will be lower. Once traffic is detected by watch_dog and left PS state, the throughput will resume to the peak the hardware ought to have again. Signed-off-by: Yan-Hsuan Chuang <yhchuang@realtek.com> Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:

committed by
Kalle Valo

parent
6f0b0d28fd
commit
61d7309562
@@ -182,6 +182,8 @@ static void rtw_watch_dog_work(struct work_struct *work)
|
||||
if (rtw_fw_support_lps &&
|
||||
data.rtwvif && !data.active && data.assoc_cnt == 1)
|
||||
rtw_enter_lps(rtwdev, data.rtwvif);
|
||||
else
|
||||
rtw_leave_lps(rtwdev, rtwdev->lps_conf.rtwvif);
|
||||
|
||||
if (test_bit(RTW_FLAG_SCANNING, rtwdev->flags))
|
||||
return;
|
||||
@@ -1152,7 +1154,6 @@ int rtw_core_init(struct rtw_dev *rtwdev)
|
||||
rtw_tx_report_purge_timer, 0);
|
||||
|
||||
INIT_DELAYED_WORK(&rtwdev->watch_dog_work, rtw_watch_dog_work);
|
||||
INIT_DELAYED_WORK(&rtwdev->lps_work, rtw_lps_work);
|
||||
INIT_DELAYED_WORK(&coex->bt_relink_work, rtw_coex_bt_relink_work);
|
||||
INIT_DELAYED_WORK(&coex->bt_reenable_work, rtw_coex_bt_reenable_work);
|
||||
INIT_DELAYED_WORK(&coex->defreeze_work, rtw_coex_defreeze_work);
|
||||
|
Reference in New Issue
Block a user