brcmfmac: Use firmware_request_nowarn for the clm_blob
authorHans de Goede <hdegoede@redhat.com>
Mon, 7 Jan 2019 13:33:27 +0000 (14:33 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 10 Jan 2019 11:41:03 +0000 (13:41 +0200)
The linux-firmware brcmfmac firmware files contain an embedded table with
per country allowed channels and strength info.

For recent hardware these versions of the firmware are specially build for
linux-firmware, the firmware files directly available from Cypress rely on
a separate clm_blob file for this info.

For some unknown reason Cypress refuses to provide the standard firmware
files + clm_blob files it uses elsewhere for inclusion into linux-firmware,
instead relying on these special builds with the clm_blob info embedded.
This means that the linux-firmware firmware versions often lag behind,
but I digress.

The brcmfmac driver does support the separate clm_blob file and always
tries to load this. Currently we use request_firmware for this. This means
that on any standard install, using the standard combo of linux-kernel +
linux-firmware, we will get a warning:
"Direct firmware load for ... failed with error -2"

On top of this, brcmfmac itself prints: "no clm_blob available (err=-2),
device may have limited channels available".

This commit switches to firmware_request_nowarn, fixing almost any brcmfmac
device logging the warning (it leaves the brcmfmac info message in place).

Signed-off-by: Hans de Goede <hdegoede@redhat.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c

index 1f1e95a15a171b4957278ae1111a276d10a48853..0ce1d8174e6ddd099e24d96cbf0b636a1caee371 100644 (file)
@@ -149,7 +149,7 @@ static int brcmf_c_process_clm_blob(struct brcmf_if *ifp)
                return err;
        }
 
-       err = request_firmware(&clm, clm_name, bus->dev);
+       err = firmware_request_nowarn(&clm, clm_name, bus->dev);
        if (err) {
                brcmf_info("no clm_blob available (err=%d), device may have limited channels available\n",
                           err);