iwlwifi: mvm: support multiple BSSID
authorSara Sharon <sara.sharon@intel.com>
Tue, 22 Jan 2019 10:11:12 +0000 (12:11 +0200)
committerLuca Coelho <luciano.coelho@intel.com>
Fri, 22 Mar 2019 10:59:40 +0000 (12:59 +0200)
Set the capabilities flags and inform firmware

Signed-off-by: Sara Sharon <sara.sharon@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index e18b57c84dd24372162ee37dcf3480d78b45b564..fd989c43df2ac5c472cac2af5351c4526a29db94 100644 (file)
@@ -420,6 +420,7 @@ int iwl_mvm_init_fw_regd(struct iwl_mvm *mvm)
 
 const static u8 he_if_types_ext_capa_sta[] = {
         [0] = WLAN_EXT_CAPA1_EXT_CHANNEL_SWITCHING,
+        [2] = WLAN_EXT_CAPA3_MULTI_BSSID_SUPPORT,
         [7] = WLAN_EXT_CAPA8_OPMODE_NOTIF,
         [9] = WLAN_EXT_CAPA10_TWT_REQUESTER_SUPPORT,
 };
@@ -732,6 +733,9 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
                hw->wiphy->iftype_ext_capab = he_iftypes_ext_capa;
                hw->wiphy->num_iftype_ext_capab =
                        ARRAY_SIZE(he_iftypes_ext_capa);
+
+               ieee80211_hw_set(hw, SUPPORTS_MULTI_BSSID);
+               ieee80211_hw_set(hw, SUPPORTS_ONLY_HE_MULTI_BSSID);
        }
 
        mvm->rts_threshold = IEEE80211_MAX_RTS_THRESHOLD;
@@ -2395,7 +2399,11 @@ static void iwl_mvm_cfg_he_sta(struct iwl_mvm *mvm,
                        (vif->bss_conf.uora_ocw_range >> 3) & 0x7;
        }
 
-       /* TODO: support Multi BSSID IE */
+       if (vif->bss_conf.nontransmitted) {
+               flags |= STA_CTXT_HE_REF_BSSID_VALID;
+               ether_addr_copy(sta_ctxt_cmd.ref_bssid_addr,
+                               vif->bss_conf.transmitter_bssid);
+       }
 
        sta_ctxt_cmd.flags = cpu_to_le32(flags);