All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arend van Spriel <arend.vanspriel@broadcom.com>
To: Kalle Valo <kvalo@codeaurora.org>, Andres Rodriguez <andresx7@gmail.com>
Cc: linux-kernel@vger.kernel.org, gregkh@linuxfoundation.org,
	mcgrof@kernel.org, alexdeucher@gmail.com,
	ckoenig.leichtzumerken@gmail.com, linux-wireless@vger.kernel.org
Subject: Re: [PATCH 9/9] brcmfmac: use request_firmware_nowait2 to load firmware without warnings
Date: Sat, 21 Apr 2018 10:04:57 +0200	[thread overview]
Message-ID: <5ADAF0A9.2090604@broadcom.com> (raw)
In-Reply-To: <87h8o6i36l.fsf@kamboji.qca.qualcomm.com>

On 4/20/2018 12:26 PM, Kalle Valo wrote:
> Andres Rodriguez <andresx7@gmail.com> writes:
>
>> This reduces the unnecessary spew when trying to load optional firmware:
>> "Direct firmware load for ... failed with error -2"

So what happened with the request_firmware_nowarn() api (discussed in 
another thread). Did it get lost with your kidney stones ;-) ? It seems 
we start having the same discussion about the asynchronous variant as 
well here which is a bit counter productive.

Let's get back to the issue of the message above. So when is the message 
unnecessary. To me there are actually to cases in which the message can 
confuse people searching the log for hints on a issue they have with a 
device. 1) when the driver requests a sequence of files and only needs 
one, and 2) when the driver request can be handled by fallback. Why not 
only issue the error message when the device driver uses 
request_firmware_direct() or when there is no fallback.

Also this patch does not seem to be made against latest code as I did a 
major rework that went in v4.17-rc1.

>> Signed-off-by: Andres Rodriguez <andresx7@gmail.com>
>> ---
>>   drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c | 7 ++++---
>>   1 file changed, 4 insertions(+), 3 deletions(-)
>
> With wireless patches always CC linux-wireless list, please. Adding it
> now.
>
>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
>> index 091b52979e03..26db3ebd52dc 100644
>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
>> @@ -503,8 +503,9 @@ static void brcmf_fw_request_code_done(const struct firmware *fw, void *ctx)
>>   		goto done;
>>
>>   	fwctx->code = fw;
>> -	ret = request_firmware_nowait(THIS_MODULE, true, fwctx->nvram_name,
>> -				      fwctx->dev, GFP_KERNEL, fwctx,
>> +	ret = request_firmware_nowait(THIS_MODULE, true, false,
>
> A perfect example why enums should be in function calls instead of
> booleans, that "true, false" tells nothing to me and it would be time
> consuming to check from headers files what it means. If you had proper
> enums, for example "FIRMWARE_MODE_FOO, FIRMWARE_STATE_BAR", it would be
> immediately obvious for the reader what the parameters are. Of course
> the first boolean was already there before, but maybe change the new
> boolean to an enum?

I can not fully agree here. While being a bit more descriptive even with 
enums wrong enum values can be used due to copy-paste errors for 
instance. Also when reviewing code, sometime looking up function 
prototypes and type definitions are part of the fun. Tools like ctags or 
elixir website make it pretty easy.

Now regarding this part of the patch the driver is requesting nvram 
file, which is not always optional. For SDIO devices it is required and 
for PCIe it is optional so firmware.c module is instructed about this 
with a flag. So here that flag should be used to pass the proper 
boolean/call the appropriate function. Actually in the latest code the 
nvram is request synchronously.

>> +				      fwctx->nvram_name, fwctx->dev,
>> +				      GFP_KERNEL, fwctx,
>>   				      brcmf_fw_request_nvram_done);
>>
>>   	/* pass NULL to nvram callback for bcm47xx fallback */
>> @@ -547,7 +548,7 @@ int brcmf_fw_get_firmwares_pcie(struct device *dev, u16 flags,
>>   	fwctx->domain_nr = domain_nr;
>>   	fwctx->bus_nr = bus_nr;
>>
>> -	return request_firmware_nowait(THIS_MODULE, true, code, dev,
>> +	return request_firmware_nowait2(THIS_MODULE, true, false, code, dev,
>>   				       GFP_KERNEL, fwctx,
>>   				       brcmf_fw_request_code_done);
>>   }
>
> Also the number two in the function name is not really telling anything.
> I think that something like request_firmware_nowait_nowarn() would be
> better, even if it's so ugly.

This is requesting the actual firmware that is run by the cpu on the 
chip so it is not optional.

Again, the firmware.c module has been reworked quite a bit in v4.17-rc1 
so this patch is outdated.

Regards,
Arend

  parent reply	other threads:[~2018-04-21  8:05 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-04-17 15:32 [PATCH 0/9] Loading optional firmware v3 Andres Rodriguez
2018-04-17 15:32 ` [PATCH 1/9] firmware: some documentation fixes Andres Rodriguez
2018-04-17 20:59   ` Randy Dunlap
2018-04-17 15:33 ` [PATCH 2/9] firmware: wrap FW_OPT_* into an enum Andres Rodriguez
2018-04-21 13:57   ` Luis R. Rodriguez
2018-04-17 15:33 ` [PATCH 3/9] firmware: add kernel-doc for enum fw_opt Andres Rodriguez
2018-04-21 14:26   ` Luis R. Rodriguez
2018-04-17 15:33 ` [PATCH 4/9] firmware: use () to terminate kernel-doc function names Andres Rodriguez
2018-04-17 20:56   ` Randy Dunlap
2018-04-17 15:33 ` [PATCH 5/9] firmware: add functions to load firmware without warnings v4 Andres Rodriguez
2018-04-20 10:28   ` Kalle Valo
2018-04-21 14:32   ` Luis R. Rodriguez
2018-04-21 14:49     ` Luis R. Rodriguez
2018-04-21 15:11       ` Kees Cook
2018-04-21 15:32         ` Linus Torvalds
2018-04-21 17:36           ` Luis R. Rodriguez
2018-04-22 20:26             ` Luis R. Rodriguez
2018-04-17 15:33 ` [PATCH 6/9] firmware: print firmware name on fallback path Andres Rodriguez
2018-04-17 15:33 ` [PATCH 7/9] drm/amdgpu: use firmware_request_nowarn to load firmware Andres Rodriguez
2018-04-17 15:33 ` [PATCH 8/9] ath10k: use request_firmware_nowarn " Andres Rodriguez
2018-04-20 10:19   ` Kalle Valo
2018-04-20 10:19     ` Kalle Valo
2018-04-20 10:19     ` Kalle Valo
2018-04-17 15:33 ` [PATCH 9/9] brcmfmac: use request_firmware_nowait2 to load firmware without warnings Andres Rodriguez
2018-04-20 10:26   ` Kalle Valo
2018-04-20 10:26     ` Kalle Valo
2018-04-20 19:33     ` Andres Rodriguez
2018-04-21  7:19       ` Kalle Valo
2018-04-21  7:19         ` Kalle Valo
2018-04-21  8:04     ` Arend van Spriel [this message]
2018-04-23 13:54       ` Kalle Valo
2018-04-23 13:54         ` Kalle Valo

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=5ADAF0A9.2090604@broadcom.com \
    --to=arend.vanspriel@broadcom.com \
    --cc=alexdeucher@gmail.com \
    --cc=andresx7@gmail.com \
    --cc=ckoenig.leichtzumerken@gmail.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=kvalo@codeaurora.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-wireless@vger.kernel.org \
    --cc=mcgrof@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.