45 lines
1.5 KiB
Diff
45 lines
1.5 KiB
Diff
|
From 7762bb134e3b40e8ee2611365775b7432190a9c7 Mon Sep 17 00:00:00 2001
|
||
|
From: Wright Feng <wright.feng@cypress.com>
|
||
|
Date: Mon, 11 Dec 2017 15:38:21 +0800
|
||
|
Subject: [PATCH] brcmfmac: enlarge buffer size of caps to 512 bytes
|
||
|
|
||
|
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 | 12 +++++++++---
|
||
|
1 file changed, 9 insertions(+), 3 deletions(-)
|
||
|
|
||
|
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
|
||
|
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
|
||
|
@@ -130,13 +130,19 @@ static void brcmf_feat_iovar_data_set(st
|
||
|
}
|
||
|
}
|
||
|
|
||
|
+#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++) {
|