lkml.org 
[lkml]   [2022]   [Jan]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
Date
SubjectRe: [PATCH v2 06/35] brcmfmac: firmware: Support passing in multiple board_types
On January 7, 2022 5:02:13 AM Hector Martin <marcan@marcan.st> wrote:

> On 2022/01/06 21:16, Arend van Spriel wrote:
>> On 1/4/2022 8:26 AM, Hector Martin wrote:
>>> In order to make use of the multiple alt_path functionality, change
>>> board_type to an array. Bus drivers can pass in a NULL-terminated list
>>> of board type strings to try for the firmware fetch.
>>
>> Reviewed-by: Arend van Spriel <arend.vanspriel@broadcom.com>
>>> Acked-by: Linus Walleij <linus.walleij@linaro.org>
>>> Signed-off-by: Hector Martin <marcan@marcan.st>
>>> ---
>>> .../broadcom/brcm80211/brcmfmac/firmware.c | 35 ++++++++++++-------
>>> .../broadcom/brcm80211/brcmfmac/firmware.h | 2 +-
>>> .../broadcom/brcm80211/brcmfmac/pcie.c | 4 ++-
>>> .../broadcom/brcm80211/brcmfmac/sdio.c | 2 +-
>>> 4 files changed, 27 insertions(+), 16 deletions(-)
>>>
>>> diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
>>> b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
>>> index 7570dbf22cdd..054ea3ed133e 100644
>>> --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
>>> +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
>>> @@ -594,28 +594,39 @@ static int brcmf_fw_complete_request(const struct
>>> firmware *fw,
>>> return (cur->flags & BRCMF_FW_REQF_OPTIONAL) ? 0 : ret;
>>> }
>>>
>>> -static int brcm_alt_fw_paths(const char *path, const char *board_type,
>>> +static int brcm_alt_fw_paths(const char *path, struct brcmf_fw *fwctx,
>>> const char *alt_paths[BRCMF_FW_MAX_ALT_PATHS])
>>> {
>>> + const char **board_types = fwctx->req->board_types;
>>> + unsigned int i;
>>> char alt_path[BRCMF_FW_NAME_LEN];
>>> const char *suffix;
>>
>> [...]
>>
>>> + for (i = 0; i < BRCMF_FW_MAX_ALT_PATHS; i++) {
>>> + if (!board_types[i])
>>> + break;
>>>
>>> - strlcat(alt_path, ".", BRCMF_FW_NAME_LEN);
>>> - strlcat(alt_path, board_type, BRCMF_FW_NAME_LEN);
>>> - strlcat(alt_path, suffix, BRCMF_FW_NAME_LEN);
>>> + /* strip extension at the end */
>>> + strscpy(alt_path, path, BRCMF_FW_NAME_LEN);
>>> + alt_path[suffix - path] = 0;
>>>
>>> - alt_paths[0] = kstrdup(alt_path, GFP_KERNEL);
>>> + strlcat(alt_path, ".", BRCMF_FW_NAME_LEN);
>>> + strlcat(alt_path, board_types[i], BRCMF_FW_NAME_LEN);
>>> + strlcat(alt_path, suffix, BRCMF_FW_NAME_LEN);
>>> +
>>> + alt_paths[i] = kstrdup(alt_path, GFP_KERNEL);
>>> + brcmf_dbg(TRACE, "FW alt path: %s\n", alt_paths[i]);
>>
>> Could use alt_path in the debug print thus avoiding additional array
>> access (working hard to find those nits to pick ;-) ).
>
> So you're saying my code is so good you have to resort to nits on this
> level to make it clear you read it, right? ;-)

Don't read too much into this :-p Actually never liked the alt_path
approach, but didn't come up with a better solution.

Regards,
Arend



[unhandled content-type:application/pkcs7-signature]
\
 
 \ /
  Last update: 2022-01-07 07:19    [W:0.368 / U:0.048 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site