]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
igc: Use provided clock ID for history snapshot
authorThomas Gleixner <tglx@kernel.org>
Fri, 29 May 2026 20:00:44 +0000 (22:00 +0200)
committerThomas Gleixner <tglx@kernel.org>
Thu, 4 Jun 2026 09:04:17 +0000 (11:04 +0200)
The PTP core indicates in system_device_crosststamp::clock_id the clock ID
for which the system time stamp should be taken. That allows to utilize
hardware timestamps with e.g. AUX clocks.

Save the provided clock ID and use it in igc_phc_get_syncdevicetime() for
taking the history snapshot.

No functional change.

Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Tested-by: Arthur Kiyanovski <akiyano@amazon.com>
Reviewed-by: David Woodhouse <dwmw@amazon.co.uk>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Link: https://patch.msgid.link/20260529195557.637381831@kernel.org
drivers/net/ethernet/intel/igc/igc.h
drivers/net/ethernet/intel/igc/igc_ptp.c

index 17236813965d334f14eba928affbd4f91b96ecd4..46d625b15f4487a8543c230c1c50cfeb4dfe9572 100644 (file)
@@ -326,6 +326,7 @@ struct igc_adapter {
        struct timespec64 prev_ptp_time; /* Pre-reset PTP clock */
        ktime_t ptp_reset_start; /* Reset time in clock mono */
        struct system_time_snapshot snapshot;
+       clockid_t snapshot_clock_id;
        struct mutex ptm_lock; /* Only allow one PTM transaction at a time */
 
        char fw_version[32];
index 3d6b2264164af8f7cd4fc9ec1c0ff92970b096dc..b40aba9ab685058fcec2e10e580a061e956ec2a3 100644 (file)
@@ -1049,7 +1049,7 @@ static int igc_phc_get_syncdevicetime(ktime_t *device,
         */
        do {
                /* Get a snapshot of system clocks to use as historic value. */
-               ktime_get_snapshot(&adapter->snapshot);
+               ktime_get_snapshot_id(adapter->snapshot_clock_id, &adapter->snapshot);
 
                igc_ptm_trigger(hw);
 
@@ -1103,6 +1103,8 @@ static int igc_ptp_getcrosststamp(struct ptp_clock_info *ptp,
        /* This blocks until any in progress PTM transactions complete */
        mutex_lock(&adapter->ptm_lock);
 
+       adapter->snapshot_clock_id = cts->clock_id;
+
        ret = get_device_system_crosststamp(igc_phc_get_syncdevicetime,
                                            adapter, &adapter->snapshot, cts);
        mutex_unlock(&adapter->ptm_lock);