2018-01-16 06:12:57

by Wright Feng

[permalink] [raw]
Subject: [PATCH v3] brcmfmac: fix CLM load error for legacy chips when user helper is enabled

For legacy chips without CLM blob files, kernel with user helper function
returns -EAGAIN when we request_firmware(), and then driver got failed
when bringing up legacy chips. We expect the CLM blob file for legacy chip
is not existence in firmware path, but the -ENOENT error is transferred to
-EAGAIN in firmware_class.c with user helper.
Because of that, we continue with CLM data currently present in firmware
if getting error from doing request_firmware().

Signed-off-by: Wright Feng <[email protected]>
---
v2: remove retry from patch v1
v3: remove redundant log print
---
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
index 6a59d06..b0ef0e7 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
@@ -182,12 +182,9 @@ static int brcmf_c_process_clm_blob(struct brcmf_if *ifp)

err = request_firmware(&clm, clm_name, dev);
if (err) {
- if (err == -ENOENT) {
- brcmf_dbg(INFO, "continue with CLM data currently present in firmware\n");
- return 0;
- }
- brcmf_err("request CLM blob file failed (%d)\n", err);
- return err;
+ brcmf_info("no clm_blob available(%d), device may have limited channels available\n",
+ err);
+ return 0;
}

chunk_buf = kzalloc(sizeof(*chunk_buf) + MAX_CHUNK_LEN - 1, GFP_KERNEL);
--
1.9.1


2018-01-16 08:57:06

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH v3] brcmfmac: fix CLM load error for legacy chips when user helper is enabled

On 1/16/2018 9:55 AM, Arend van Spriel wrote:
> On 1/16/2018 7:14 AM, Wright Feng wrote:
>> For legacy chips without CLM blob files, kernel with user helper function
>> returns -EAGAIN when we request_firmware(), and then driver got failed
>> when bringing up legacy chips. We expect the CLM blob file for legacy
>> chip
>> is not existence in firmware path, but the -ENOENT error is
>> transferred to
>> -EAGAIN in firmware_class.c with user helper.
>> Because of that, we continue with CLM data currently present in firmware
>> if getting error from doing request_firmware().

Forgot to mention, but also please add following Cc: as it will probably
not make it before the merge window opens.

Cc: [email protected] # v4.15.y
> Reviewed-by: Arend van Spriel <[email protected]>
>> Signed-off-by: Wright Feng <[email protected]>
>> ---
>> v2: remove retry from patch v1
>> v3: remove redundant log print
>> ---
>> drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 9 +++------
>> 1 file changed, 3 insertions(+), 6 deletions(-)
>>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
>> index 6a59d06..b0ef0e7 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
>> @@ -182,12 +182,9 @@ static int brcmf_c_process_clm_blob(struct
>> brcmf_if *ifp)
>>
>> err = request_firmware(&clm, clm_name, dev);
>> if (err) {
>> - if (err == -ENOENT) {
>> - brcmf_dbg(INFO, "continue with CLM data currently present
>> in firmware\n");
>> - return 0;
>> - }
>> - brcmf_err("request CLM blob file failed (%d)\n", err);
>> - return err;
>> + brcmf_info("no clm_blob available(%d), device may have
>> limited channels available\n",
>> + err);
>> + return 0;
>
> Looking good. However, let's nitpick (my bad). Please make it
> "..available (err=%d), ...".
>
> Regards,
> Arend
>

2018-01-16 08:55:05

by Arend van Spriel

[permalink] [raw]
Subject: Re: [PATCH v3] brcmfmac: fix CLM load error for legacy chips when user helper is enabled

On 1/16/2018 7:14 AM, Wright Feng wrote:
> For legacy chips without CLM blob files, kernel with user helper function
> returns -EAGAIN when we request_firmware(), and then driver got failed
> when bringing up legacy chips. We expect the CLM blob file for legacy chip
> is not existence in firmware path, but the -ENOENT error is transferred to
> -EAGAIN in firmware_class.c with user helper.
> Because of that, we continue with CLM data currently present in firmware
> if getting error from doing request_firmware().

Reviewed-by: Arend van Spriel <[email protected]>
> Signed-off-by: Wright Feng <[email protected]>
> ---
> v2: remove retry from patch v1
> v3: remove redundant log print
> ---
> drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
> index 6a59d06..b0ef0e7 100644
> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
> @@ -182,12 +182,9 @@ static int brcmf_c_process_clm_blob(struct brcmf_if *ifp)
>
> err = request_firmware(&clm, clm_name, dev);
> if (err) {
> - if (err == -ENOENT) {
> - brcmf_dbg(INFO, "continue with CLM data currently present in firmware\n");
> - return 0;
> - }
> - brcmf_err("request CLM blob file failed (%d)\n", err);
> - return err;
> + brcmf_info("no clm_blob available(%d), device may have limited channels available\n",
> + err);
> + return 0;

Looking good. However, let's nitpick (my bad). Please make it
"..available (err=%d), ...".

Regards,
Arend