329-v4.16-0001-brcmfmac-enlarge-buffer-size-of-caps-to-512-bytes.patch 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. From 7762bb134e3b40e8ee2611365775b7432190a9c7 Mon Sep 17 00:00:00 2001
  2. From: Wright Feng <wright.feng@cypress.com>
  3. Date: Mon, 11 Dec 2017 15:38:21 +0800
  4. Subject: [PATCH] brcmfmac: enlarge buffer size of caps to 512 bytes
  5. The buffer size of return of cap iovar is greater than 256 bytes in some
  6. firmwares. For instance, the return size of cap iovar is 271 bytes in 4373
  7. 13.10.246.79 firmare. It makes feature capability parsing failed because
  8. caps buffer is default value.
  9. So we enlarge caps buffer size to 512 bytes and add the error print for
  10. cap iovar error.
  11. Signed-off-by: Wright Feng <wright.feng@cypress.com>
  12. Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
  13. Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
  14. ---
  15. drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c | 12 +++++++++---
  16. 1 file changed, 9 insertions(+), 3 deletions(-)
  17. --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
  18. +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
  19. @@ -113,13 +113,19 @@ static void brcmf_feat_iovar_int_get(str
  20. }
  21. }
  22. +#define MAX_CAPS_BUFFER_SIZE 512
  23. static void brcmf_feat_firmware_capabilities(struct brcmf_if *ifp)
  24. {
  25. - char caps[256];
  26. + char caps[MAX_CAPS_BUFFER_SIZE];
  27. enum brcmf_feat_id id;
  28. - int i;
  29. + int i, err;
  30. +
  31. + err = brcmf_fil_iovar_data_get(ifp, "cap", caps, sizeof(caps));
  32. + if (err) {
  33. + brcmf_err("could not get firmware cap (%d)\n", err);
  34. + return;
  35. + }
  36. - brcmf_fil_iovar_data_get(ifp, "cap", caps, sizeof(caps));
  37. brcmf_dbg(INFO, "[ %s]\n", caps);
  38. for (i = 0; i < ARRAY_SIZE(brcmf_fwcap_map); i++) {