wifi: iwlwifi: mvm: check own capabilities for EMLSR
authorJohannes Berg <johannes.berg@intel.com>
Thu, 8 Feb 2024 16:58:47 +0000 (18:58 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Mon, 12 Feb 2024 20:24:53 +0000 (21:24 +0100)
There may be different hardware or configurations supported,
so check for our own EMLSR capability before allowing it to
be used, in addition to checking the AP's.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240208185302.036443611696.If33caabd7cf372834287863b40b2d6d1ef1ca3f7@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/mvm/mld-mac80211.c

index 021592f69f38b8874d9071c6ce1553f77ddcdd09..084314bf6f369ad29e9222a6549d548b4e094731 100644 (file)
@@ -1275,6 +1275,7 @@ static bool iwl_mvm_can_enter_esr(struct iwl_mvm *mvm,
        struct iwl_mvm_vif *mvmvif = iwl_mvm_vif_from_mac80211(vif);
        int primary_link = iwl_mvm_mld_get_primary_link(mvm, vif,
                                                        desired_links);
+       const struct wiphy_iftype_ext_capab *ext_capa;
        bool ret = true;
        int link_id;
 
@@ -1284,6 +1285,12 @@ static bool iwl_mvm_can_enter_esr(struct iwl_mvm *mvm,
        if (!(vif->cfg.eml_cap & IEEE80211_EML_CAP_EMLSR_SUPP))
                return false;
 
+       ext_capa = cfg80211_get_iftype_ext_capa(mvm->hw->wiphy,
+                                               ieee80211_vif_type_p2p(vif));
+       if (!ext_capa ||
+           !(ext_capa->eml_capabilities & IEEE80211_EML_CAP_EMLSR_SUPP))
+               return false;
+
        for_each_set_bit(link_id, &desired_links, IEEE80211_MLD_MAX_NUM_LINKS) {
                struct ieee80211_bss_conf *link_conf =
                        link_conf_dereference_protected(vif, link_id);