]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: iwlwifi: mvm: Declare support for secure LTF measurement
authorIlan Peer <ilan.peer@intel.com>
Sun, 4 Feb 2024 22:06:15 +0000 (00:06 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 8 Feb 2024 14:00:47 +0000 (15:00 +0100)
Declare support for secure LTF measurement if the FW supports it.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240204235836.f20d2437c06f.I479df8ab543db2d05c413119ad3eb3936cc86294@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
drivers/net/wireless/intel/iwlwifi/fw/file.h
drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c
drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c

index b216da7d95fc25d919bccf46ffa1e4cc18eb7546..b7ef0882dbadc00c3ae857c75258cff088f022f3 100644 (file)
@@ -385,6 +385,7 @@ typedef unsigned int __bitwise iwl_ucode_tlv_capa_t;
  *     complete to FW.
  * @IWL_UCODE_TLV_CAPA_SPP_AMSDU_SUPPORT: Support SPP (signaling and payload
  *     protected) A-MSDU.
+ * @IWL_UCODE_TLV_CAPA_SECURE_LTF_SUPPORT: Support secure LTF measurement.
  *
  * @NUM_IWL_UCODE_TLV_CAPA: number of bits used
  */
@@ -483,7 +484,7 @@ enum iwl_ucode_tlv_capa {
        IWL_UCODE_TLV_CAPA_STA_EXP_MFP_SUPPORT          = (__force iwl_ucode_tlv_capa_t)114,
        IWL_UCODE_TLV_CAPA_SNIFF_VALIDATE_SUPPORT       = (__force iwl_ucode_tlv_capa_t)116,
        IWL_UCODE_TLV_CAPA_CHINA_22_REG_SUPPORT         = (__force iwl_ucode_tlv_capa_t)117,
-
+       IWL_UCODE_TLV_CAPA_SECURE_LTF_SUPPORT           = (__force iwl_ucode_tlv_capa_t)121,
        NUM_IWL_UCODE_TLV_CAPA
 /*
  * This construction make both sparse (which cannot increment the previous
index f72ca38d7c0e1b67aef8ec237268eb2d4dea33a0..dca36b0662c73df0f58ce24b689bf16a375d6906 100644 (file)
@@ -349,6 +349,12 @@ int iwl_mvm_ftm_respoder_add_pasn_sta(struct iwl_mvm *mvm,
        }
 
        if (hltk && hltk_len) {
+               if (!fw_has_capa(&mvm->fw->ucode_capa,
+                                IWL_UCODE_TLV_CAPA_SECURE_LTF_SUPPORT)) {
+                       IWL_ERR(mvm, "No support for secure LTF measurement\n");
+                       return -EINVAL;
+               }
+
                hltk_data.cipher = iwl_mvm_cipher_to_location_cipher(cipher);
                if (hltk_data.cipher == IWL_LOCATION_CIPHER_INVALID) {
                        IWL_ERR(mvm, "invalid cipher: %u\n", cipher);
index fa7d86917741e555f5d9e16c6cf02353adccb305..40e97e812f5f0fa23d1dd78242320cf195a2d5d5 100644 (file)
@@ -710,6 +710,11 @@ int iwl_mvm_mac_setup_register(struct iwl_mvm *mvm)
                                  IWL_FW_CMD_VER_UNKNOWN) >= 11) {
                wiphy_ext_feature_set(hw->wiphy,
                                      NL80211_EXT_FEATURE_PROT_RANGE_NEGO_AND_MEASURE);
+
+               if (fw_has_capa(&mvm->fw->ucode_capa,
+                               IWL_UCODE_TLV_CAPA_SECURE_LTF_SUPPORT))
+                       wiphy_ext_feature_set(hw->wiphy,
+                                             NL80211_EXT_FEATURE_SECURE_LTF);
        }
 
        mvm->rts_threshold = IEEE80211_MAX_RTS_THRESHOLD;