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++) {
 | 
