Commit 0e49e940 authored by Avraham Stern's avatar Avraham Stern Committed by Johannes Berg
Browse files

wifi: iwlwifi: mvm: add an option to use ptp clock for rx timestamp



Add a debugfs option to use the ptp clock time for rx device
timestamps. This can be useful to e.g. synchronize multiple NICs or
reporting the timestamp in the system clock instead of gp2.

Signed-off-by: default avatarAvraham Stern <avraham.stern@intel.com>
Reviewed-by: default avatarGregory Greenman <gregory.greenman@intel.com>
Signed-off-by: default avatarMiri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240527190228.b197b4f3f9ed.I578ee916d5f517a2e3a89e890a8ea24065946427@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent a92fd2d9
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -2441,6 +2441,9 @@ void iwl_mvm_dbgfs_register(struct iwl_mvm *mvm)
	debugfs_create_file("mem", 0600, mvm->debugfs_dir, mvm,
			    &iwl_dbgfs_mem_ops);

	debugfs_create_bool("rx_ts_ptp", 0600, mvm->debugfs_dir,
			    &mvm->rx_ts_ptp);

	/*
	 * Create a symlink with mac80211. It will be removed when mac80211
	 * exists (before the opmode exists which removes the target.)
+3 −0
Original line number Diff line number Diff line
@@ -1309,6 +1309,9 @@ struct iwl_mvm {
	struct iwl_phy_specific_cfg phy_filters;
#endif

	/* report rx timestamp in ptp clock time */
	bool rx_ts_ptp;

	unsigned long last_6ghz_passive_scan_jiffies;
	unsigned long last_reset_or_resume_time_jiffies;

+8 −0
Original line number Diff line number Diff line
@@ -1954,6 +1954,14 @@ static void iwl_mvm_rx_fill_status(struct iwl_mvm *mvm,
	iwl_mvm_decode_lsig(skb, phy_data);

	rx_status->device_timestamp = phy_data->gp2_on_air_rise;

	if (mvm->rx_ts_ptp && mvm->monitor_on) {
		u64 adj_time =
			iwl_mvm_ptp_get_adj_time(mvm, phy_data->gp2_on_air_rise * NSEC_PER_USEC);

		rx_status->device_timestamp = div64_u64(adj_time, NSEC_PER_USEC);
	}

	rx_status->freq = ieee80211_channel_to_frequency(phy_data->channel,
							 rx_status->band);
	iwl_mvm_get_signal_strength(mvm, rx_status, rate_n_flags,