summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Stein <alexander.stein@ew.tq-group.com>2026-03-28 15:01:21 +0100
committerJohannes Berg <johannes.berg@intel.com>2026-04-07 15:39:18 +0200
commit368f5098ed0b2eb5d06dbbe692c163c85f240a4d (patch)
treeb8efe14b07d107807959ca6b15b8225e0d5a4574
parent1c161ca67e9bbd39b5c2adc8e067affcab10e8a5 (diff)
wifi: brcmfmac: silence warning for non-existent, optional firmware
The driver tries to load optional firmware files, specific to the actual board compatible. These might not exist resulting in a warning like this: brcmfmac mmc2:0001:1: Direct firmware load for brcm/brcmfmac4373-sdio.tq,imx93-tqma9352-mba93xxla-mini.bin failed with error -2 Silence this by using firmware_request_nowait_nowarn() for all firmware loads which use brcmf_fw_request_done_alt_path() as callback. This one handles optional firmware files. Signed-off-by: Alexander Stein <alexander.stein@ew.tq-group.com> Tested-by: Christian Hewitt <christianshewitt@gmail.com> [arend: use nowarn api for optional firmware files] Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com> Link: https://patch.msgid.link/20260328140121.2583606-1-arend.vanspriel@broadcom.com [clean up code a bit] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
-rw-r--r--drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c17
1 files changed, 11 insertions, 6 deletions
diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
index 4bacd83db052..22ff326f1924 100644
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
@@ -670,6 +670,9 @@ static int brcmf_fw_request_firmware(const struct firmware **fw,
}
fallback:
+ if (cur->flags & BRCMF_FW_REQF_OPTIONAL)
+ return firmware_request_nowarn(fw, cur->path, fwctx->dev);
+
return request_firmware(fw, cur->path, fwctx->dev);
}
@@ -714,9 +717,10 @@ static void brcmf_fw_request_done_alt_path(const struct firmware *fw, void *ctx)
if (!alt_path)
goto fallback;
- ret = request_firmware_nowait(THIS_MODULE, true, alt_path,
- fwctx->dev, GFP_KERNEL, fwctx,
- brcmf_fw_request_done_alt_path);
+ ret = firmware_request_nowait_nowarn(THIS_MODULE,
+ alt_path, fwctx->dev,
+ GFP_KERNEL, fwctx,
+ brcmf_fw_request_done_alt_path);
kfree(alt_path);
if (ret < 0)
@@ -779,9 +783,10 @@ int brcmf_fw_get_firmwares(struct device *dev, struct brcmf_fw_request *req,
fwctx->req->board_types[0]);
if (alt_path) {
fwctx->board_index++;
- ret = request_firmware_nowait(THIS_MODULE, true, alt_path,
- fwctx->dev, GFP_KERNEL, fwctx,
- brcmf_fw_request_done_alt_path);
+ ret = firmware_request_nowait_nowarn(THIS_MODULE,
+ alt_path, fwctx->dev,
+ GFP_KERNEL, fwctx,
+ brcmf_fw_request_done_alt_path);
kfree(alt_path);
} else {
ret = request_firmware_nowait(THIS_MODULE, true, first->path,