mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 04:18:39 +08:00
40b0425f8b
There are several cases where virtual net devices may benefit from having a PTP clock, and these have to do with testing. I can see at least netdevsim and veth as potential users of a common mock-up PTP hardware clock driver. The proposed idea is to create an object which emulates PTP clock operations on top of the unadjustable CLOCK_MONOTONIC_RAW plus a software-controlled time domain via a timecounter/cyclecounter and then link that PHC to the netdevsim device. The driver is fully functional for its intended purpose, and it successfully passes the PTP selftests. $ cd tools/testing/selftests/ptp/ $ ./phc.sh /dev/ptp2 TEST: settime [ OK ] TEST: adjtime [ OK ] TEST: adjfreq [ OK ] Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com> Link: https://lore.kernel.org/r/20230807193324.4128292-7-vladimir.oltean@nxp.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
39 lines
670 B
C
39 lines
670 B
C
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
/*
|
|
* Mock-up PTP Hardware Clock driver for virtual network devices
|
|
*
|
|
* Copyright 2023 NXP
|
|
*/
|
|
|
|
#ifndef _PTP_MOCK_H_
|
|
#define _PTP_MOCK_H_
|
|
|
|
struct device;
|
|
struct mock_phc;
|
|
|
|
#if IS_ENABLED(CONFIG_PTP_1588_CLOCK_MOCK)
|
|
|
|
struct mock_phc *mock_phc_create(struct device *dev);
|
|
void mock_phc_destroy(struct mock_phc *phc);
|
|
int mock_phc_index(struct mock_phc *phc);
|
|
|
|
#else
|
|
|
|
static inline struct mock_phc *mock_phc_create(struct device *dev)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
static inline void mock_phc_destroy(struct mock_phc *phc)
|
|
{
|
|
}
|
|
|
|
static inline int mock_phc_index(struct mock_phc *phc)
|
|
{
|
|
return -1;
|
|
}
|
|
|
|
#endif
|
|
|
|
#endif /* _PTP_MOCK_H_ */
|