mac80211: brcmfmac: backport important changes from the 4.16
authorRafał Miłecki <rafal@milecki.pl>
Thu, 16 Aug 2018 08:58:27 +0000 (10:58 +0200)
committerRafał Miłecki <rafal@milecki.pl>
Thu, 16 Aug 2018 11:15:06 +0000 (13:15 +0200)
Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
package/kernel/mac80211/Makefile
package/kernel/mac80211/patches/329-v4.16-0001-brcmfmac-enlarge-buffer-size-of-caps-to-512-bytes.patch [new file with mode: 0644]
package/kernel/mac80211/patches/329-v4.16-0003-brcmfmac-Fix-check-for-ISO3166-code.patch [new file with mode: 0644]

index c3bbac16336cfca4cde73a29fefcf879cc333032..e81af9a2242f6326094aa85b58e0814f2cd29d49 100644 (file)
@@ -11,7 +11,7 @@ include $(INCLUDE_DIR)/kernel.mk
 PKG_NAME:=mac80211
 
 PKG_VERSION:=2017-01-31
-PKG_RELEASE:=10
+PKG_RELEASE:=11
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 PKG_BACKPORT_VERSION:=
 PKG_HASH:=75e6d39e34cf156212a2509172a4a62b673b69eb4a1d9aaa565f7fa719fa2317
diff --git a/package/kernel/mac80211/patches/329-v4.16-0001-brcmfmac-enlarge-buffer-size-of-caps-to-512-bytes.patch b/package/kernel/mac80211/patches/329-v4.16-0001-brcmfmac-enlarge-buffer-size-of-caps-to-512-bytes.patch
new file mode 100644 (file)
index 0000000..2e75ae2
--- /dev/null
@@ -0,0 +1,44 @@
+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++) {
diff --git a/package/kernel/mac80211/patches/329-v4.16-0003-brcmfmac-Fix-check-for-ISO3166-code.patch b/package/kernel/mac80211/patches/329-v4.16-0003-brcmfmac-Fix-check-for-ISO3166-code.patch
new file mode 100644 (file)
index 0000000..3a2f1e7
--- /dev/null
@@ -0,0 +1,29 @@
+From 9b9322db5c5a1917a66c71fe47c3848a9a31227e Mon Sep 17 00:00:00 2001
+From: Stefan Wahren <stefan.wahren@i2se.com>
+Date: Wed, 14 Mar 2018 20:02:59 +0100
+Subject: [PATCH] brcmfmac: Fix check for ISO3166 code
+
+The commit "regulatory: add NUL to request alpha2" increases the length of
+alpha2 to 3. This causes a regression on brcmfmac, because
+brcmf_cfg80211_reg_notifier() expect valid ISO3166 codes in the complete
+array. So fix this accordingly.
+
+Fixes: 657308f73e67 ("regulatory: add NUL to request alpha2")
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+Acked-by: Franky Lin <franky.lin@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+@@ -6775,7 +6775,7 @@ static void brcmf_cfg80211_reg_notifier(
+               return;
+       /* ignore non-ISO3166 country codes */
+-      for (i = 0; i < sizeof(req->alpha2); i++)
++      for (i = 0; i < 2; i++)
+               if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
+                       brcmf_err("not a ISO3166 code (0x%02x 0x%02x)\n",
+                                 req->alpha2[0], req->alpha2[1]);