> -----Original Message-----
> From: Vladimir Oltean <olte...@gmail.com>
> Sent: Monday, August 17, 2020 4:19 PM
> To: richardcoch...@gmail.com
> Cc: linuxptp-devel@lists.sourceforge.net; fer...@gmail.com; Keller, Jacob E
> <jacob.e.kel...@intel.com>
> Subject: [RFC PATCH v2 00/14] Dynamic sync direction for ts2phc
>
> Changes in v2:
> - Added Jacob's review tags, addressed some feedback.
> - Dropped patch "pmc_common: fix potential memory leak in
> run_pmc_events()"
> - Reordered patches (put the tmv helpers first)
> - Fixed memory leaks
>
Any chance you could also provide a "git range-diff"? i.e. assuming v1 is at
dynamic-ts2phc-v1 and v2 is at dynamic-ts2phc-v2
git range-diff master dynamic-ts2phc-v1 dynamic-ts2phc-v2
This creates a sort of diff of the series that can help show what you changed
between the versions.
Thanks,
Jake
> As discussed in this email thread:
> https://sourceforge.net/p/linuxptp/mailman/message/37047555/
> there is a desire to synchronize multiple DSA switches in a
> boundary_clock_jbod setup, using a PPS signal, and the ts2phc program
> already offers a solid base.
>
> This patch series extends the ts2phc program to cater for that use case
> by introducing a new '-a' option and friends ('--transportSpecific').
> This makes it quite similar to phc2sys which has the same ability, just
> that ts2phc can give much better performance if the hardware can assist
> with that.
>
> The overall board design for my use case is that there's an SoC with an
> embedded DSA switch, and hanging off of 3 ports of that embedded switch
> are 3 external switches. Every networking device (the DSA master for the
> embedded switch, the embedded switch, as well as each individual
> external switch) has a PTP clock. The topology for PPS signal
> distribution is fixed - that is given by hardware ability - the
> /dev/ptp1 clock can emit a valid PPS, and all external switches can
> timestamp that PPS (it is connected in a sort-of simplex "bus" design),
> and it cannot be any other way around. It looks like this:
>
> +---------------------------------------------------------------+
> | LS1028A /dev/ptp0 (unused) |
> | +------------------------------+ |
> | | DSA master for Felix | |
> | |(internal ENETC port 2: eno2))| |
> | +------------+------------------------------+-------------+ |
> | | Felix embedded L2 switch /dev/ptp1 | |
> | | PPS master, sync slave | |
> | | +--------------+ +--------------+ +--------------+ | |
> | | |DSA master for| |DSA master for| |DSA master for| | |
> | | | SJA1105 1 | | SJA1105 2 | | SJA1105 3 | | |
> | | |(Felix port 1)| |(Felix port 2)| |(Felix port 3)| | |
> +--+-+--------------+---+--------------+---+--------------+--+--+
>
> /dev/ptp2 /dev/ptp3 /dev/ptp4
> PPS slave, sync master PPS slave, sync slave PPS slave, sync slave
> +-----------------------+ +-----------------------+ +-----------------------+
> | SJA1105 switch 1 | | SJA1105 switch 2 | | SJA1105 switch 3 |
> +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+
> |sw1p0|sw1p1|sw1p2|sw1p3| |sw2p0|sw2p1|sw2p2|sw2p3|
> |sw3p0|sw3p1|sw3p2|sw3p3|
> +-----+-----+-----+-----+ +-----+-----+-----+-----+ +-----+-----+-----+-----+
> ^
> |
> GM connected here
>
> In text, it would be described as this:
>
> cat ts2phc.cfg
> [global]
> first_step_threshold 0.00002
> step_threshold 0.00002
> ts2phc.pulsewidth 500000000
> ts2phc.perout_phase 0
>
> # Felix
> [/dev/ptp1]
> ts2phc.master 1
>
> # SJA1105 switch 1
> [/dev/ptp2]
> ts2phc.channel 0
> ts2phc.extts_polarity both
>
> # SJA1105 switch 2
> [/dev/ptp3]
> ts2phc.channel 0
> ts2phc.extts_polarity both
>
> # SJA1105 switch 3
> [/dev/ptp4]
> ts2phc.channel 0
> ts2phc.extts_polarity both
>
> cat gPTP.cfg
> [global]
> gmCapable 1
> priority1 248
> priority2 248
> logAnnounceInterval 0
> logSyncInterval -3
> syncReceiptTimeout 3
> neighborPropDelayThresh 50000
> min_neighbor_prop_delay -20000000
> assume_two_step 1
> path_trace_enabled 1
> follow_up_info 1
> transportSpecific 0x1
> ptp_dst_mac 01:80:C2:00:00:0E
> network_transport L2
> delay_mechanism P2P
> step_threshold 0.00002
> tx_timestamp_timeout 20
> boundary_clock_jbod 1
>
> [sw1p0]
> [sw1p1]
> [sw1p2]
> [sw1p3]
> [sw2p0]
> [sw2p1]
> [sw2p2]
> [sw2p3]
> [sw3p0]
> [sw3p1]
> [sw3p2]
> [sw3p3]
>
> At a high level, what I have done is:
> - I moved the PMC related code from phc2sys into pmc_common.c, for
> ts2phc reuse
> - I created an extra abstraction in ts2phc as "struct clock" that would
> represent what's synchronizable. The "master" and "slave" concepts
> retain their meaning, which is: "master" == the device that emits PPS,
> and "slave" == the device that timestamps PPS.
>
> The changes should be backwards-compatible with the non-automatic mode.
> I have only tested non-automatic mode with a PHC master (that's all I
> have) and it still appears to work as before.
>
> Vladimir Oltean (14):
> tmv: introduce a conversion helper from ptp_clock_time
> tmv: introduce an initializer from nanoseconds
> posix_clock_open: derive PHC index from device name if possible
> phc2sys: rename struct node to struct phc2sys_private
> phc2sys: break out pmc code into pmc_common.c
> ts2phc: create a private data structure
> ts2phc: instantiate a full clock structure for every slave PHC
> ts2phc: instantiate a full clock structure for every PHC master
> ts2phc: instantiate a pmc node
> ts2phc_slave: print master offset
> ts2phc: split slave poll from servo loop
> ts2phc: reconfigure sync direction by subscribing to ptp4l port events
> ts2phc: allow the PHC PPS master to be synchronized
> ts2phc_phc_master: make use of new kernel API for perout waveform
>
> config.c | 1 +
> makefile | 3 +-
> missing.h | 53 ++++
> phc2sys.c | 661 ++++++++++------------------------------
> pmc_common.c | 337 ++++++++++++++++++++
> pmc_common.h | 35 +++
> tmv.h | 15 +
> ts2phc.8 | 5 +
> ts2phc.c | 638 +++++++++++++++++++++++++++++++++++---
> ts2phc.h | 78 +++++
> ts2phc_generic_master.c | 2 +-
> ts2phc_generic_master.h | 3 +-
> ts2phc_master.c | 10 +-
> ts2phc_master.h | 8 +-
> ts2phc_master_private.h | 1 +
> ts2phc_nmea_master.c | 5 +-
> ts2phc_nmea_master.h | 3 +-
> ts2phc_phc_master.c | 70 +++--
> ts2phc_phc_master.h | 3 +-
> ts2phc_slave.c | 385 +++++++++++------------
> ts2phc_slave.h | 10 +-
> util.c | 10 +
> 22 files changed, 1581 insertions(+), 755 deletions(-)
> create mode 100644 ts2phc.h
>
> --
> 2.25.1
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel