Message ID | 1669716458-15327-1-git-send-email-wangyufen@huawei.com |
---|---|
State | New |
Headers | show |
Series | wifi: brcmfmac: Fix error return code in brcmf_sdio_download_firmware() | expand |
On 11/30/2022 3:00 AM, wangyufen wrote: > > > 在 2022/11/30 1:41, Franky Lin 写道: >> On Tue, Nov 29, 2022 at 1:47 AM Wang Yufen <wangyufen@huawei.com> wrote: >>> >>> Fix to return a negative error code -EINVAL instead of 0. >>> >>> Compile tested only. >>> >>> Fixes: d380ebc9b6fb ("brcmfmac: rename chip download functions") >>> Signed-off-by: Wang Yufen <wangyufen@huawei.com> >>> --- >>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + >>> 1 file changed, 1 insertion(+) >>> >>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>> index 465d95d..329ec8ac 100644 >>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>> @@ -3414,6 +3414,7 @@ static int brcmf_sdio_download_firmware(struct >>> brcmf_sdio *bus, >>> /* Take arm out of reset */ >>> if (!brcmf_chip_set_active(bus->ci, rstvec)) { >>> brcmf_err("error getting out of ARM core reset\n"); >>> + bcmerror = -EINVAL; >> >> ENODEV seems more appropriate here. > > However, if brcmf_chip_set_active() fails in > brcmf_pcie_exit_download_state(), "-EINVAL" is returned. > Is it necessary to keep consistent? If we can not get the ARM on the chip out of reset things will fail soon enough further down the road. Anyway, the other function calls return -EIO so let's do the same here. Thanks, Arend
在 2022/11/30 19:19, Arend van Spriel 写道: > On 11/30/2022 3:00 AM, wangyufen wrote: >> >> >> 在 2022/11/30 1:41, Franky Lin 写道: >>> On Tue, Nov 29, 2022 at 1:47 AM Wang Yufen <wangyufen@huawei.com> wrote: >>>> >>>> Fix to return a negative error code -EINVAL instead of 0. >>>> >>>> Compile tested only. >>>> >>>> Fixes: d380ebc9b6fb ("brcmfmac: rename chip download functions") >>>> Signed-off-by: Wang Yufen <wangyufen@huawei.com> >>>> --- >>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + >>>> 1 file changed, 1 insertion(+) >>>> >>>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>> index 465d95d..329ec8ac 100644 >>>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>> @@ -3414,6 +3414,7 @@ static int brcmf_sdio_download_firmware(struct >>>> brcmf_sdio *bus, >>>> /* Take arm out of reset */ >>>> if (!brcmf_chip_set_active(bus->ci, rstvec)) { >>>> brcmf_err("error getting out of ARM core reset\n"); >>>> + bcmerror = -EINVAL; >>> >>> ENODEV seems more appropriate here. >> >> However, if brcmf_chip_set_active() fails in >> brcmf_pcie_exit_download_state(), "-EINVAL" is returned. >> Is it necessary to keep consistent? > > If we can not get the ARM on the chip out of reset things will fail soon > enough further down the road. Anyway, the other function calls return > -EIO so let's do the same here. > So -EIO is better? Anyone else have any other opinions? 😄 Thanks, Wang > Thanks, > Arend
On December 1, 2022 4:01:39 AM wangyufen <wangyufen@huawei.com> wrote: > 在 2022/11/30 19:19, Arend van Spriel 写道: >> On 11/30/2022 3:00 AM, wangyufen wrote: >>> >>> >>> 在 2022/11/30 1:41, Franky Lin 写道: >>>> On Tue, Nov 29, 2022 at 1:47 AM Wang Yufen <wangyufen@huawei.com> wrote: >>>>> >>>>> Fix to return a negative error code -EINVAL instead of 0. >>>>> >>>>> Compile tested only. >>>>> >>>>> Fixes: d380ebc9b6fb ("brcmfmac: rename chip download functions") >>>>> Signed-off-by: Wang Yufen <wangyufen@huawei.com> >>>>> --- >>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + >>>>> 1 file changed, 1 insertion(+) >>>>> >>>>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>> index 465d95d..329ec8ac 100644 >>>>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>> @@ -3414,6 +3414,7 @@ static int brcmf_sdio_download_firmware(struct >>>>> brcmf_sdio *bus, >>>>> /* Take arm out of reset */ >>>>> if (!brcmf_chip_set_active(bus->ci, rstvec)) { >>>>> brcmf_err("error getting out of ARM core reset\n"); >>>>> + bcmerror = -EINVAL; >>>> >>>> ENODEV seems more appropriate here. >>> >>> However, if brcmf_chip_set_active() fails in >>> brcmf_pcie_exit_download_state(), "-EINVAL" is returned. >>> Is it necessary to keep consistent? >> >> If we can not get the ARM on the chip out of reset things will fail soon >> enough further down the road. Anyway, the other function calls return >> -EIO so let's do the same here. > > So -EIO is better? Anyone else have any other opinions? 😄 Obviously it is no better than -EINVAL when you look at the behavior. It is just a feeble attempt to be a little bit more consistent. Feel free to change the return value for brcmf_pcie_exit_download_state() as well. Regards, Arend >>
Arend Van Spriel <arend.vanspriel@broadcom.com> writes: > On December 1, 2022 4:01:39 AM wangyufen <wangyufen@huawei.com> wrote: > >> 在 2022/11/30 19:19, Arend van Spriel 写道: >>> On 11/30/2022 3:00 AM, wangyufen wrote: >>>> >>>> >>>> 在 2022/11/30 1:41, Franky Lin 写道: >>>>> On Tue, Nov 29, 2022 at 1:47 AM Wang Yufen <wangyufen@huawei.com> wrote: >>>>>> >>>>>> Fix to return a negative error code -EINVAL instead of 0. >>>>>> >>>>>> Compile tested only. >>>>>> >>>>>> Fixes: d380ebc9b6fb ("brcmfmac: rename chip download functions") >>>>>> Signed-off-by: Wang Yufen <wangyufen@huawei.com> >>>>>> --- >>>>>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + >>>>>> 1 file changed, 1 insertion(+) >>>>>> >>>>>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>>> index 465d95d..329ec8ac 100644 >>>>>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c >>>>>> @@ -3414,6 +3414,7 @@ static int brcmf_sdio_download_firmware(struct >>>>>> brcmf_sdio *bus, >>>>>> /* Take arm out of reset */ >>>>>> if (!brcmf_chip_set_active(bus->ci, rstvec)) { >>>>>> brcmf_err("error getting out of ARM core reset\n"); >>>>>> + bcmerror = -EINVAL; >>>>> >>>>> ENODEV seems more appropriate here. >>>> >>>> However, if brcmf_chip_set_active() fails in >>>> brcmf_pcie_exit_download_state(), "-EINVAL" is returned. >>>> Is it necessary to keep consistent? >>> >>> If we can not get the ARM on the chip out of reset things will fail soon >>> enough further down the road. Anyway, the other function calls return >>> -EIO so let's do the same here. >> >> So -EIO is better? Anyone else have any other opinions? 😄 > > Obviously it is no better than -EINVAL when you look at the behavior. > It is just a feeble attempt to be a little bit more consistent. Feel > free to change the return value for brcmf_pcie_exit_download_state() > as well. Weirdly Arend's last comment is not visible in patchwork: https://patchwork.kernel.org/project/linux-wireless/patch/1669716458-15327-1-git-send-email-wangyufen@huawei.com/ His last email is visible, but the last paragraph is not shown. Some strange hiccup somewhere I guess, just wanted to mention it in case we see more of them.
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c index 465d95d..329ec8ac 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -3414,6 +3414,7 @@ static int brcmf_sdio_download_firmware(struct brcmf_sdio *bus, /* Take arm out of reset */ if (!brcmf_chip_set_active(bus->ci, rstvec)) { brcmf_err("error getting out of ARM core reset\n"); + bcmerror = -EINVAL; goto err; }
Fix to return a negative error code -EINVAL instead of 0. Compile tested only. Fixes: d380ebc9b6fb ("brcmfmac: rename chip download functions") Signed-off-by: Wang Yufen <wangyufen@huawei.com> --- drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 1 + 1 file changed, 1 insertion(+)