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: Avraham Stern <avraham.stern@intel.com>
Reviewed-by: Gregory Greenman <gregory.greenman@intel.com>
Signed-off-by: Miri Korenblit <miriam.rachel.korenblit@intel.com>
Link: https://msgid.link/20240527190228.b197b4f3f9ed.I578ee916d5f517a2e3a89e890a8ea24065946427@changeid
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
Avraham Stern 2024-05-27 19:05:56 +03:00 committed by Johannes Berg
parent a92fd2d932
commit 0e49e940d1
3 changed files with 14 additions and 0 deletions

View File

@ -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.)

View File

@ -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;

View File

@ -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,