Search Linux Wireless

Re: [PATCH] rtw88: use shorter delay time to poll PS state

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Jan 7, 2020 at 10:27 PM <yhchuang@xxxxxxxxxxx> wrote:
>
> From: Yan-Hsuan Chuang <yhchuang@xxxxxxxxxxx>
>
> When TX packet arrives, driver should leave deep PS state to make
> sure the DMA is working. After requested to leave deep PS state,
> driver needs to poll the PS state to check if the mode has been
> changed successfully. The driver used to check the state of the
> hardware every 20 msecs, which means upon the first failure of
> state check, the CPU is delayed 20 msecs for next check. This is
> harmful for some time-sensitive applications such as media players.
>
> So, use shorter delay time each check from 20 msecs to 100 usecs.
> The state should be changed in several tries. But we still need
> to reserve ~15 msecs in total in case of the state just took too
> long to be changed successfully. If the states of driver and the
> hardware is not synchronized, the power state could be locked
> forever, which mean we could never enter/leave the PS state.
>
> Signed-off-by: Yan-Hsuan Chuang <yhchuang@xxxxxxxxxxx>
Reviewed-by: Chris Chiu <chiu@xxxxxxxxxxxx>
> ---
>  drivers/net/wireless/realtek/rtw88/ps.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/wireless/realtek/rtw88/ps.c b/drivers/net/wireless/realtek/rtw88/ps.c
> index 913e6f47130f..7a189a9926fe 100644
> --- a/drivers/net/wireless/realtek/rtw88/ps.c
> +++ b/drivers/net/wireless/realtek/rtw88/ps.c
> @@ -91,11 +91,11 @@ void rtw_power_mode_change(struct rtw_dev *rtwdev, bool enter)
>                         return;
>
>                 /* check confirm power mode has left power save state */
> -               for (polling_cnt = 0; polling_cnt < 3; polling_cnt++) {
> +               for (polling_cnt = 0; polling_cnt < 50; polling_cnt++) {
>                         polling = rtw_read8(rtwdev, rtwdev->hci.cpwm_addr);
>                         if ((polling ^ confirm) & BIT_RPWM_TOGGLE)
>                                 return;
> -                       mdelay(20);
> +                       udelay(100);
>                 }
>
>                 /* in case of fw/hw missed the request, retry */
> --
> 2.17.1
>



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux