aboutsummaryrefslogtreecommitdiffstats
path: root/package/kernel/mac80211/patches/374-0006-brcmfmac-Add-RSDB-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'package/kernel/mac80211/patches/374-0006-brcmfmac-Add-RSDB-support.patch')
-rw-r--r--package/kernel/mac80211/patches/374-0006-brcmfmac-Add-RSDB-support.patch65
1 files changed, 65 insertions, 0 deletions
diff --git a/package/kernel/mac80211/patches/374-0006-brcmfmac-Add-RSDB-support.patch b/package/kernel/mac80211/patches/374-0006-brcmfmac-Add-RSDB-support.patch
new file mode 100644
index 0000000000..78a95c57b1
--- /dev/null
+++ b/package/kernel/mac80211/patches/374-0006-brcmfmac-Add-RSDB-support.patch
@@ -0,0 +1,65 @@
+From: Hante Meuleman <meuleman@broadcom.com>
+Date: Thu, 29 Oct 2015 20:33:16 +0100
+Subject: [PATCH] brcmfmac: Add RSDB support.
+
+Broadcom devices with a single 802.11 core can work on two band
+concurrently using VSDB feature, ie. Virtual Simultaneous Dual-Band.
+For devices that are fitted with two 802.11 cores and RF paths the
+driver should support a firmware feature called RSDB, which stands
+for Real Simultaneous Dual-Band. RSDB works almost autonomously in
+firmware except for AP config. When the device supports RSDB then
+the interface should not be brought down when configuring it,
+otherwise the link (if configured) on the other interface will be
+lost.
+
+Reviewed-by: Arend Van Spriel <arend@broadcom.com>
+Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
+Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
+Signed-off-by: Arend van Spriel <arend@broadcom.com>
+[kvalo@codeaurora.org: changed the commit log based on discussion]
+Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
+---
+
+--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
+@@ -4182,7 +4182,9 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
+ }
+ }
+
+- if (dev_role == NL80211_IFTYPE_AP) {
++ if ((dev_role == NL80211_IFTYPE_AP) &&
++ ((ifp->ifidx == 0) ||
++ !brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB))) {
+ err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1);
+ if (err < 0) {
+ brcmf_err("BRCMF_C_DOWN error %d\n", err);
+--- a/drivers/net/wireless/brcm80211/brcmfmac/feature.c
++++ b/drivers/net/wireless/brcm80211/brcmfmac/feature.c
+@@ -137,6 +137,7 @@ void brcmf_feat_attach(struct brcmf_pub
+ if (drvr->bus_if->chip != BRCM_CC_43362_CHIP_ID)
+ brcmf_feat_iovar_int_set(ifp, BRCMF_FEAT_MBSS, "mbss", 0);
+ brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_P2P, "p2p");
++ brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_RSDB, "rsdb_mode");
+
+ if (brcmf_feature_disable) {
+ brcmf_dbg(INFO, "Features: 0x%02x, disable: 0x%02x\n",
+--- a/drivers/net/wireless/brcm80211/brcmfmac/feature.h
++++ b/drivers/net/wireless/brcm80211/brcmfmac/feature.h
+@@ -24,13 +24,16 @@
+ * PNO: preferred network offload.
+ * WOWL: Wake-On-WLAN.
+ * P2P: peer-to-peer
++ * RSDB: Real Simultaneous Dual Band
+ */
+ #define BRCMF_FEAT_LIST \
+ BRCMF_FEAT_DEF(MBSS) \
+ BRCMF_FEAT_DEF(MCHAN) \
+ BRCMF_FEAT_DEF(PNO) \
+ BRCMF_FEAT_DEF(WOWL) \
+- BRCMF_FEAT_DEF(P2P)
++ BRCMF_FEAT_DEF(P2P) \
++ BRCMF_FEAT_DEF(RSDB)
++
+ /*
+ * Quirks:
+ *