diff options
| author | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
|---|---|---|
| committer | Dmitry Torokhov <[email protected]> | 2023-08-30 16:06:38 -0700 | 
| commit | 1ac731c529cd4d6adbce134754b51ff7d822b145 (patch) | |
| tree | 143ab3f35ca5f3b69f583c84e6964b17139c2ec1 /drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c | |
| parent | 07b4c950f27bef0362dc6ad7ee713aab61d58149 (diff) | |
| parent | 54116d442e001e1b6bd482122043b1870998a1f3 (diff) | |
Merge branch 'next' into for-linus
Prepare input updates for 6.6 merge window.
Diffstat (limited to 'drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c')
| -rw-r--r-- | drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c | 21 | 
1 files changed, 16 insertions, 5 deletions
diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c b/drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c index e862d1b43f21..1b6fb73ddfc7 100644 --- a/drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c +++ b/drivers/net/wireless/intel/iwlwifi/mvm/ftm-responder.c @@ -119,7 +119,7 @@ iwl_mvm_ftm_responder_cmd(struct iwl_mvm *mvm,  			cpu_to_le32(IWL_TOF_RESPONDER_CMD_VALID_CHAN_INFO |  				    IWL_TOF_RESPONDER_CMD_VALID_BSSID |  				    IWL_TOF_RESPONDER_CMD_VALID_STA_ID), -		.sta_id = mvmvif->bcast_sta.sta_id, +		.sta_id = mvmvif->deflink.bcast_sta.sta_id,  	};  	u8 cmd_ver = iwl_fw_lookup_cmd_ver(mvm->fw, cmd_id, 6);  	int err; @@ -317,6 +317,8 @@ int iwl_mvm_ftm_respoder_add_pasn_sta(struct iwl_mvm *mvm,  		.addr = addr,  		.hltk = hltk,  	}; +	struct iwl_mvm_pasn_hltk_data *hltk_data_ptr = NULL; +  	u8 cmd_ver = iwl_fw_lookup_cmd_ver(mvm->fw,  					   WIDE_ID(LOCATION_GROUP, TOF_RESPONDER_DYN_CONFIG_CMD),  					   2); @@ -328,12 +330,21 @@ int iwl_mvm_ftm_respoder_add_pasn_sta(struct iwl_mvm *mvm,  		return -ENOTSUPP;  	} -	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); +	if ((!hltk || !hltk_len) && (!tk || !tk_len)) { +		IWL_ERR(mvm, "TK and HLTK not set\n");  		return -EINVAL;  	} +	if (hltk && hltk_len) { +		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); +			return -EINVAL; +		} + +		hltk_data_ptr = &hltk_data; +	} +  	if (tk && tk_len) {  		sta = kzalloc(sizeof(*sta), GFP_KERNEL);  		if (!sta) @@ -350,7 +361,7 @@ int iwl_mvm_ftm_respoder_add_pasn_sta(struct iwl_mvm *mvm,  		list_add_tail(&sta->list, &mvm->resp_pasn_list);  	} -	ret = iwl_mvm_ftm_responder_dyn_cfg_v3(mvm, vif, NULL, &hltk_data); +	ret = iwl_mvm_ftm_responder_dyn_cfg_v3(mvm, vif, NULL, hltk_data_ptr);  	if (ret && sta)  		iwl_mvm_resp_del_pasn_sta(mvm, vif, sta);  |