Commit 3a5a5cb0 authored by Ilan Peer's avatar Ilan Peer Committed by Johannes Berg
Browse files

wifi: iwlwifi: mvm: Correctly report TSF data in scan complete



For an MLO connection, the BSSID of the link used during the scanning
should be used (and not the one from the default link).

Signed-off-by: default avatarIlan Peer <ilan.peer@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20231207044813.1e67dba640c1.I6c4941bfab3a04498370e58b402c64d990c39fbf@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 85e7f823
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -947,6 +947,7 @@ struct iwl_mvm {

	/* the vif that requested the current scan */
	struct iwl_mvm_vif *scan_vif;
	u8 scan_link_id;

	/* rx chain antennas set through debugfs for the scan command */
	u8 scan_rx_ant;
+9 −1
Original line number Diff line number Diff line
@@ -2343,12 +2343,15 @@ iwl_mvm_scan_umac_fill_general_p_v12(struct iwl_mvm *mvm,
	if (gen_flags & IWL_UMAC_SCAN_GEN_FLAGS_V2_FRAGMENTED_LMAC2)
		gp->num_of_fragments[SCAN_HB_LMAC_IDX] = IWL_SCAN_NUM_OF_FRAGS;

	mvm->scan_link_id = 0;

	if (version < 16) {
		gp->scan_start_mac_or_link_id = scan_vif->id;
	} else {
		struct iwl_mvm_vif_link_info *link_info =
			scan_vif->link[params->tsf_report_link_id];

		mvm->scan_link_id = params->tsf_report_link_id;
		if (!WARN_ON(!link_info))
			gp->scan_start_mac_or_link_id = link_info->fw_link_id;
	}
@@ -3165,8 +3168,13 @@ void iwl_mvm_rx_umac_scan_complete_notif(struct iwl_mvm *mvm,
			.aborted = aborted,
			.scan_start_tsf = mvm->scan_start,
		};
		struct iwl_mvm_vif *scan_vif = mvm->scan_vif;
		struct iwl_mvm_vif_link_info *link_info =
			scan_vif->link[mvm->scan_link_id];

		if (!WARN_ON(!link_info))
			memcpy(info.tsf_bssid, link_info->bssid, ETH_ALEN);

		memcpy(info.tsf_bssid, mvm->scan_vif->deflink.bssid, ETH_ALEN);
		ieee80211_scan_completed(mvm->hw, &info);
		mvm->scan_vif = NULL;
		cancel_delayed_work(&mvm->scan_timeout_dwork);