]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
brcmfmac: enlarge buffer size of caps to 512 bytes
authorWright Feng <wright.feng@cypress.com>
Mon, 11 Dec 2017 07:38:21 +0000 (15:38 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 14 Dec 2017 12:42:22 +0000 (14:42 +0200)
The buffer size of return of cap iovar is greater than 256 bytes in some
firmwares. For instance, the return size of cap iovar is 271 bytes in 4373
13.10.246.79 firmare. It makes feature capability parsing failed because
caps buffer is default value.
So we enlarge caps buffer size to 512 bytes and add the error print for
cap iovar error.

Signed-off-by: Wright Feng <wright.feng@cypress.com>
Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c

index 53ae3025998999e26f2f06307fe4abd6f6343dc9..47de35a338532f65f4817b11b98b1f51b2c4344f 100644 (file)
@@ -130,13 +130,19 @@ static void brcmf_feat_iovar_data_set(struct brcmf_if *ifp,
        }
 }
 
+#define MAX_CAPS_BUFFER_SIZE   512
 static void brcmf_feat_firmware_capabilities(struct brcmf_if *ifp)
 {
-       char caps[256];
+       char caps[MAX_CAPS_BUFFER_SIZE];
        enum brcmf_feat_id id;
-       int i;
+       int i, err;
+
+       err = brcmf_fil_iovar_data_get(ifp, "cap", caps, sizeof(caps));
+       if (err) {
+               brcmf_err("could not get firmware cap (%d)\n", err);
+               return;
+       }
 
-       brcmf_fil_iovar_data_get(ifp, "cap", caps, sizeof(caps));
        brcmf_dbg(INFO, "[ %s]\n", caps);
 
        for (i = 0; i < ARRAY_SIZE(brcmf_fwcap_map); i++) {