wifi: rtw88: mac: Return the original error from rtw_mac_power_switch()
authorMartin Blumenstingl <martin.blumenstingl@googlemail.com>
Sun, 26 Feb 2023 22:10:04 +0000 (23:10 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 11 May 2023 14:03:17 +0000 (23:03 +0900)
[ Upstream commit 15c8e267dfa62f207ee1db666c822324e3362b84 ]

rtw_mac_power_switch() calls rtw_pwr_seq_parser() which can return
-EINVAL, -EBUSY or 0. Propagate the original error code instead of
unconditionally returning -EINVAL in case of an error.

Fixes: e3037485c68e ("rtw88: new Realtek 802.11ac driver")
Signed-off-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Reviewed-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20230226221004.138331-3-martin.blumenstingl@googlemail.com
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/wireless/realtek/rtw88/mac.c

index 498f15655369920ab6d9de9cb6c54aa96510678e..589caeff2033a4b1e776b5ceaa9b5f7728eb3f32 100644 (file)
@@ -247,6 +247,7 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on)
        const struct rtw_pwr_seq_cmd **pwr_seq;
        u8 rpwm;
        bool cur_pwr;
+       int ret;
 
        if (rtw_chip_wcpu_11ac(rtwdev)) {
                rpwm = rtw_read8(rtwdev, rtwdev->hci.rpwm_addr);
@@ -270,8 +271,9 @@ static int rtw_mac_power_switch(struct rtw_dev *rtwdev, bool pwr_on)
                return -EALREADY;
 
        pwr_seq = pwr_on ? chip->pwr_on_seq : chip->pwr_off_seq;
-       if (rtw_pwr_seq_parser(rtwdev, pwr_seq))
-               return -EINVAL;
+       ret = rtw_pwr_seq_parser(rtwdev, pwr_seq);
+       if (ret)
+               return ret;
 
        if (pwr_on)
                set_bit(RTW_FLAG_POWERON, rtwdev->flags);