mac80211: brcmfmac: backport remaining patches from the Linux 5.0
[openwrt/staging/lynxis.git] / package / kernel / mac80211 / patches / brcm / 332-v5.0-0001-brcmfmac-Fix-access-point-mode.patch
diff --git a/package/kernel/mac80211/patches/brcm/332-v5.0-0001-brcmfmac-Fix-access-point-mode.patch b/package/kernel/mac80211/patches/brcm/332-v5.0-0001-brcmfmac-Fix-access-point-mode.patch
new file mode 100644 (file)
index 0000000..acf5876
--- /dev/null
@@ -0,0 +1,41 @@
+From 861cb5eb467f5e38dce1aabe4e8db379255bd89b Mon Sep 17 00:00:00 2001
+From: Stefan Wahren <stefan.wahren@i2se.com>
+Date: Wed, 12 Dec 2018 20:20:06 +0100
+Subject: [PATCH] brcmfmac: Fix access point mode
+
+Since commit 1204aa17f3b4 ("brcmfmac: set WIPHY_FLAG_HAVE_AP_SME flag")
+the Raspberry Pi 3 A+ (BCM43455) isn't able to operate in AP mode with
+hostapd (device_ap_sme=1 use_monitor=0):
+
+brcmfmac: brcmf_cfg80211_stop_ap: setting AP mode failed -52
+
+So add the missing mgmt_stypes for AP mode to fix this.
+
+Fixes: 1204aa17f3b4 ("brcmfmac: set WIPHY_FLAG_HAVE_AP_SME flag")
+Suggested-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Stefan Wahren <stefan.wahren@i2se.com>
+Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+ .../wireless/broadcom/brcm80211/brcmfmac/cfg80211.c    | 10 ++++++++++
+ 1 file changed, 10 insertions(+)
+
+--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
+@@ -6308,6 +6308,16 @@ brcmf_txrx_stypes[NUM_NL80211_IFTYPES] =
+               .tx = 0xffff,
+               .rx = BIT(IEEE80211_STYPE_ACTION >> 4) |
+                     BIT(IEEE80211_STYPE_PROBE_REQ >> 4)
++      },
++      [NL80211_IFTYPE_AP] = {
++              .tx = 0xffff,
++              .rx = BIT(IEEE80211_STYPE_ASSOC_REQ >> 4) |
++                    BIT(IEEE80211_STYPE_REASSOC_REQ >> 4) |
++                    BIT(IEEE80211_STYPE_PROBE_REQ >> 4) |
++                    BIT(IEEE80211_STYPE_DISASSOC >> 4) |
++                    BIT(IEEE80211_STYPE_AUTH >> 4) |
++                    BIT(IEEE80211_STYPE_DEAUTH >> 4) |
++                    BIT(IEEE80211_STYPE_ACTION >> 4)
+       }
+ };