brcmfmac: Make TDLS a detectable feature
authorHante Meuleman <meuleman@broadcom.com>
Thu, 10 Dec 2015 12:43:04 +0000 (13:43 +0100)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 11 Dec 2015 11:51:25 +0000 (13:51 +0200)
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>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h

index 564e533..8557566 100644 (file)
@@ -5983,8 +5983,9 @@ static int brcmf_setup_wiphy(struct wiphy *wiphy, struct brcmf_if *ifp)
        wiphy->n_cipher_suites = ARRAY_SIZE(__wl_cipher_suites);
        wiphy->flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT |
                        WIPHY_FLAG_OFFCHAN_TX |
-                       WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL |
-                       WIPHY_FLAG_SUPPORTS_TDLS;
+                       WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL;
+       if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_TDLS))
+               wiphy->flags |= WIPHY_FLAG_SUPPORTS_TDLS;
        if (!brcmf_roamoff)
                wiphy->flags |= WIPHY_FLAG_SUPPORTS_FW_ROAM;
        wiphy->mgmt_stypes = brcmf_txrx_stypes;
@@ -6376,13 +6377,15 @@ struct brcmf_cfg80211_info *brcmf_cfg80211_attach(struct brcmf_pub *drvr,
                goto wiphy_unreg_out;
        }
 
-       err = brcmf_fil_iovar_int_set(ifp, "tdls_enable", 1);
-       if (err) {
-               brcmf_dbg(INFO, "TDLS not enabled (%d)\n", err);
-               wiphy->flags &= ~WIPHY_FLAG_SUPPORTS_TDLS;
-       } else {
-               brcmf_fweh_register(cfg->pub, BRCMF_E_TDLS_PEER_EVENT,
-                                   brcmf_notify_tdls_peer_event);
+       if (brcmf_feat_is_enabled(ifp, BRCMF_FEAT_TDLS)) {
+               err = brcmf_fil_iovar_int_set(ifp, "tdls_enable", 1);
+               if (err) {
+                       brcmf_dbg(INFO, "TDLS not enabled (%d)\n", err);
+                       wiphy->flags &= ~WIPHY_FLAG_SUPPORTS_TDLS;
+               } else {
+                       brcmf_fweh_register(cfg->pub, BRCMF_E_TDLS_PEER_EVENT,
+                                           brcmf_notify_tdls_peer_event);
+               }
        }
 
        /* (re-) activate FWEH event handling */
index ba52494..d9d1ca4 100644 (file)
@@ -138,6 +138,7 @@ void brcmf_feat_attach(struct brcmf_pub *drvr)
                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");
+       brcmf_feat_iovar_int_get(ifp, BRCMF_FEAT_TDLS, "tdls_enable");
 
        if (brcmf_feature_disable) {
                brcmf_dbg(INFO, "Features: 0x%02x, disable: 0x%02x\n",
index 5381758..1390656 100644 (file)
@@ -25,6 +25,7 @@
  * WOWL: Wake-On-WLAN.
  * P2P: peer-to-peer
  * RSDB: Real Simultaneous Dual Band
+ * TDLS: Tunneled Direct Link Setup
  */
 #define BRCMF_FEAT_LIST \
        BRCMF_FEAT_DEF(MBSS) \
@@ -32,7 +33,8 @@
        BRCMF_FEAT_DEF(PNO) \
        BRCMF_FEAT_DEF(WOWL) \
        BRCMF_FEAT_DEF(P2P) \
-       BRCMF_FEAT_DEF(RSDB)
+       BRCMF_FEAT_DEF(RSDB) \
+       BRCMF_FEAT_DEF(TDLS)
 
 /*
  * Quirks: