mirror of
https://github.com/torvalds/linux.git
synced 2026-11-06 21:58:01 +01:00
ptp: vclock: preserve missing hardware timestamps
Socket timestamp delivery converts hardware timestamps to a bound
virtual clock before checking whether a hardware timestamp is present.
A zero timestamp means that the packet has no hardware timestamp, but
timecounter_cyc2time() can turn that zero into a nonzero virtual time.
The socket then reports a hardware timestamp which was never supplied.
Return zero without conversion when the input timestamp is absent.
This also covers skb_get_tx_timestamp(), which checks for an absent
timestamp after the same conversion.
This was identified during review of virtual clock sampling changes.
Fixes: d7c0882655 ("net: socket: support hardware timestamp conversion to PHC bound")
Reviewed-by: Vadim Fedorenko <vadim.fedorenko@linux.dev>
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Link: https://patch.msgid.link/20261026-ptp-vclock-sampling-v6-5-e705612541f1@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
d3fcce5afe
commit
63787dfd1b
|
|
@ -326,6 +326,8 @@ ktime_t ptp_convert_timestamp(const ktime_t *hwtstamp, int vclock_index)
|
|||
u64 ns;
|
||||
|
||||
ns = ktime_to_ns(*hwtstamp);
|
||||
if (!ns)
|
||||
return 0;
|
||||
|
||||
srcu_idx = srcu_read_lock(&vclock_srcu);
|
||||
|
||||
|
|
|
|||
|
|
@ -496,7 +496,7 @@ int ptp_get_vclocks_index(int pclock_index, int **vclock_index);
|
|||
* @hwtstamp: timestamp
|
||||
* @vclock_index: phc index of ptp vclock.
|
||||
*
|
||||
* Returns: converted timestamp, or 0 on error.
|
||||
* Returns: converted timestamp, or 0 if @hwtstamp is zero or on error.
|
||||
*/
|
||||
ktime_t ptp_convert_timestamp(const ktime_t *hwtstamp, int vclock_index);
|
||||
#else
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user