]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
wifi: brcmfmac: silence warning for non-existent, optional firmware
authorAlexander Stein <alexander.stein@ew.tq-group.com>
Sat, 28 Mar 2026 14:01:21 +0000 (15:01 +0100)
committerJohannes Berg <johannes.berg@intel.com>
Tue, 7 Apr 2026 13:39:18 +0000 (15:39 +0200)
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>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c

index 4bacd83db052edf71e98974f25e16ec57c692c15..22ff326f1924a32043e6765c39d8bae24066035a 100644 (file)
@@ -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,