Search Linux Wireless

RE: [PATCH rtw-next v1 06/13] wifi: rtw89: Disable some power saving for USB

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

 



Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote:
> Disable rtw89_ps_power_mode_change() and rtw89_mac_send_rpwm() for
> USB because they are called in atomic context and accessing hardware
> registers results in "scheduling while atomic" errors.

I feel rtw89_ps_power_mode_change() should be not in atomic context.
Please check this. 

> 
> Signed-off-by: Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx>
> ---
>  drivers/net/wireless/realtek/rtw89/mac.c | 3 +++
>  drivers/net/wireless/realtek/rtw89/ps.c  | 3 +++
>  2 files changed, 6 insertions(+)
> 
> diff --git a/drivers/net/wireless/realtek/rtw89/mac.c b/drivers/net/wireless/realtek/rtw89/mac.c
> index a316864ad137..1a03355b340f 100644
> --- a/drivers/net/wireless/realtek/rtw89/mac.c
> +++ b/drivers/net/wireless/realtek/rtw89/mac.c
> @@ -1338,6 +1338,9 @@ static void rtw89_mac_send_rpwm(struct rtw89_dev *rtwdev,
>  {
>         u16 request;
> 
> +       if (rtwdev->hci.type == RTW89_HCI_TYPE_USB)

I think SDIO devices have the same problems as USB, so I prefer to return
if "!= PCIE".

> +               return;
> +
>         spin_lock_bh(&rtwdev->rpwm_lock);
> 
>         request = rtw89_read16(rtwdev, R_AX_RPWM);
> diff --git a/drivers/net/wireless/realtek/rtw89/ps.c b/drivers/net/wireless/realtek/rtw89/ps.c
> index ac46a7baa00d..edff9f8e1016 100644
> --- a/drivers/net/wireless/realtek/rtw89/ps.c
> +++ b/drivers/net/wireless/realtek/rtw89/ps.c
> @@ -56,6 +56,9 @@ static void rtw89_ps_power_mode_change_with_hci(struct rtw89_dev *rtwdev,
> 
>  static void rtw89_ps_power_mode_change(struct rtw89_dev *rtwdev, bool enter)
>  {
> +       if (rtwdev->hci.type == RTW89_HCI_TYPE_USB)
> +               return;
> +
>         if (rtwdev->chip->low_power_hci_modes & BIT(rtwdev->ps_mode) &&
>             !test_bit(RTW89_FLAG_WOWLAN, rtwdev->flags))
>                 rtw89_ps_power_mode_change_with_hci(rtwdev, enter);
> --
> 2.49.0





[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