1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- 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
- @@ -113,13 +113,19 @@ static void brcmf_feat_iovar_int_get(str
- }
- }
-
- +#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++) {
|