mac80211: brcmfmac: add beamforming support
[15.05/openwrt.git] / package / kernel / mac80211 / patches / 374-0006-brcmfmac-Add-RSDB-support.patch
1 From: Hante Meuleman <meuleman@broadcom.com>
2 Date: Thu, 29 Oct 2015 20:33:16 +0100
3 Subject: [PATCH] brcmfmac: Add RSDB support.
4
5 Broadcom devices with a single 802.11 core can work on two band
6 concurrently using VSDB feature, ie. Virtual Simultaneous Dual-Band.
7 For devices that are fitted with two 802.11 cores and RF paths the
8 driver should support a firmware feature called RSDB, which stands
9 for Real Simultaneous Dual-Band. RSDB works almost autonomously in
10 firmware except for AP config. When the device supports RSDB then
11 the interface should not be brought down when configuring it,
12 otherwise the link (if configured) on the other interface will be
13 lost.
14
15 Reviewed-by: Arend Van Spriel <arend@broadcom.com>
16 Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com>
17 Signed-off-by: Hante Meuleman <meuleman@broadcom.com>
18 Signed-off-by: Arend van Spriel <arend@broadcom.com>
19 [kvalo@codeaurora.org: changed the commit log based on discussion]
20 Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
21 ---
22
23 --- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
24 +++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
25 @@ -4182,7 +4182,9 @@ brcmf_cfg80211_start_ap(struct wiphy *wi
26                         }
27                 }
28  
29 -               if (dev_role == NL80211_IFTYPE_AP) {
30 +               if ((dev_role == NL80211_IFTYPE_AP) &&
31 +                   ((ifp->ifidx == 0) ||
32 +                    !brcmf_feat_is_enabled(ifp, BRCMF_FEAT_RSDB))) {
33                         err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_DOWN, 1);
34                         if (err < 0) {
35                                 brcmf_err("BRCMF_C_DOWN error %d\n", err);
36 --- a/drivers/net/wireless/brcm80211/brcmfmac/feature.c
37 +++ b/drivers/net/wireless/brcm80211/brcmfmac/feature.c
38 @@ -137,6 +137,7 @@ void brcmf_feat_attach(struct brcmf_pub
39         if (drvr->bus_if->chip != BRCM_CC_43362_CHIP_ID)
40                 brcmf_feat_iovar_int_set(ifp, BRCMF_FEAT_MBSS, "mbss", 0);
41         brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_P2P, "p2p");
42 +       brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_RSDB, "rsdb_mode");
43  
44         if (brcmf_feature_disable) {
45                 brcmf_dbg(INFO, "Features: 0x%02x, disable: 0x%02x\n",
46 --- a/drivers/net/wireless/brcm80211/brcmfmac/feature.h
47 +++ b/drivers/net/wireless/brcm80211/brcmfmac/feature.h
48 @@ -24,13 +24,16 @@
49   * PNO: preferred network offload.
50   * WOWL: Wake-On-WLAN.
51   * P2P: peer-to-peer
52 + * RSDB: Real Simultaneous Dual Band
53   */
54  #define BRCMF_FEAT_LIST \
55         BRCMF_FEAT_DEF(MBSS) \
56         BRCMF_FEAT_DEF(MCHAN) \
57         BRCMF_FEAT_DEF(PNO) \
58         BRCMF_FEAT_DEF(WOWL) \
59 -       BRCMF_FEAT_DEF(P2P)
60 +       BRCMF_FEAT_DEF(P2P) \
61 +       BRCMF_FEAT_DEF(RSDB)
62 +
63  /*
64   * Quirks:
65   *