v3: - rebased on current HEAD - added required ethtool netlink declarations to missing.h to build with old kernel headers - fixed return value when netlink socket cannot be opened - fixed vclock setting to use the port-specific phc_index - downgraded error message for missing ethtool netlink to debug message
v2: - rebased on current HEAD - fixed order of phc_index option in config_tab array - renamed search_vclocks() to rtnl_search_vclocks() v1: - fixed rtnl_linkinfo_parse() to make space for the _MAX attrs - added new TLV for PHC index and flags - added support to timemaster - updated defaults.cfg With recent kernels it is possible to create virtual PHCs running on top of a free-running PHC by writing to /sys/class/ptp/ptp?/n_vclocks. If supported in linuxptp, it would allow users to run multiple ptp4l instances with hardware timestamping on one interface, e.g. in different domains for better resiliency, or separate instances using different unicast servers. The kernel support was added in 5.14, but there were some bugs fixed recently. 5.17-rc1 or later is recommended for testing. The 1st patch is a bug fix required by the second patch. The 2nd patch adds detection of virtual clocks via ethtool netlink. The 3rd-5th patch add support to ptp4l. The PHC index of the virtual clock needs to be specified in the configuration. The 6th and 7th patch add support to phc2sys. A new PORT_HWCLOCK_NP TLV is added to get the PHC index of the virtual clock in the automatic mode. The 8th patch adds support to timemaster. If enabled (by default on Linux >=5.18), a virtual clock is created for each HW-timestamping ptp4l instance. Miroslav Lichvar (8): rtnl: Fix rtnl_rtattr_parse() to process max attribute. rtnl: Add function to detect virtual clocks. Add support for binding sockets to virtual clocks. config: Add port-specific phc_index option. port: Check for virtual clocks. tlv: Add PORT_HWCLOCK_NP. phc2sys: Use PHC index from PORT_HWCLOCK_NP. timemaster: Add support for virtual clocks. clock.c | 7 +- config.c | 1 + configs/default.cfg | 1 + incdefs.sh | 4 + interface.c | 12 +++ interface.h | 14 ++++ missing.h | 112 +++++++++++++++++++++++++ phc2sys.c | 42 ++++++---- pmc.c | 11 +++ pmc_agent.c | 18 +++- pmc_agent.h | 4 +- pmc_common.c | 1 + port.c | 24 +++++- ptp4l.8 | 8 ++ raw.c | 3 +- rtnl.c | 93 ++++++++++++++++++++- rtnl.h | 9 ++ sk.c | 11 ++- sk.h | 3 +- timemaster.8 | 14 +++- timemaster.c | 196 ++++++++++++++++++++++++++++++++++++++++++-- tlv.c | 16 +++- tlv.h | 10 +++ udp.c | 3 +- udp6.c | 3 +- 25 files changed, 574 insertions(+), 46 deletions(-) -- 2.35.1 _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel