net: fix SOF_TIMESTAMPING_BIND_PHC to work with multiple sockets
When multiple sockets using the SOF_TIMESTAMPING_BIND_PHC flag received
a packet with a hardware timestamp (e.g. multiple PTP instances in
different PTP domains using the UDPv4/v6 multicast or L2 transport),
the timestamps received on some sockets were corrupted due to repeated
conversion of the same timestamp (by the same or different vclocks).
Fix ptp_convert_timestamp() to not modify the shared skb timestamp
and return the converted timestamp as a ktime_t instead. If the
conversion fails, return 0 to not confuse the application with
timestamps corresponding to an unexpected PHC.
Fixes: d7c0882655 ("net: socket: support hardware timestamp conversion to PHC bound")
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
Cc: Yangbo Lu <yangbo.lu@nxp.com>
Cc: Richard Cochran <richardcochran@gmail.com>
Acked-by: Richard Cochran <richardcochran@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
1b26d364e4
commit
007747a984
3 changed files with 18 additions and 13 deletions
|
|
@ -351,15 +351,17 @@ int ptp_get_vclocks_index(int pclock_index, int **vclock_index);
|
|||
*
|
||||
* @hwtstamps: skb_shared_hwtstamps structure pointer
|
||||
* @vclock_index: phc index of ptp vclock.
|
||||
*
|
||||
* Returns converted timestamp, or 0 on error.
|
||||
*/
|
||||
void ptp_convert_timestamp(struct skb_shared_hwtstamps *hwtstamps,
|
||||
int vclock_index);
|
||||
ktime_t ptp_convert_timestamp(const struct skb_shared_hwtstamps *hwtstamps,
|
||||
int vclock_index);
|
||||
#else
|
||||
static inline int ptp_get_vclocks_index(int pclock_index, int **vclock_index)
|
||||
{ return 0; }
|
||||
static inline void ptp_convert_timestamp(struct skb_shared_hwtstamps *hwtstamps,
|
||||
int vclock_index)
|
||||
{ }
|
||||
static inline ktime_t ptp_convert_timestamp(const struct skb_shared_hwtstamps *hwtstamps,
|
||||
int vclock_index)
|
||||
{ return 0; }
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue