According to 1588, PTP message loops are simply someone else's problem with respect to transparent clocks. Since we are running the BMCA for syntonization anyway, we might as well go ahead and implement the spanning tree for PTP messages.
Signed-off-by: Richard Cochran <richardcoch...@gmail.com> --- config.c | 1 + default.cfg | 1 + port.c | 1 + ptp4l.8 | 6 ++++++ 4 files changed, 9 insertions(+) diff --git a/config.c b/config.c index e751d40..748529d 100644 --- a/config.c +++ b/config.c @@ -254,6 +254,7 @@ struct config_item config_tab[] = { GLOB_ITEM_DBL("step_threshold", 0.0, 0.0, DBL_MAX), GLOB_ITEM_INT("summary_interval", 0, INT_MIN, INT_MAX), PORT_ITEM_INT("syncReceiptTimeout", 0, 0, UINT8_MAX), + GLOB_ITEM_INT("tc_spanning_tree", 0, 1, 1), GLOB_ITEM_INT("timeSource", INTERNAL_OSCILLATOR, 0x10, 0xfe), GLOB_ITEM_ENU("time_stamping", TS_HARDWARE, timestamping_enu), PORT_ITEM_INT("transportSpecific", 0, 0, 0x0F), diff --git a/default.cfg b/default.cfg index 142675d..456a995 100644 --- a/default.cfg +++ b/default.cfg @@ -40,6 +40,7 @@ path_trace_enabled 0 follow_up_info 0 hybrid_e2e 0 net_sync_monitor 0 +tc_spanning_tree 0 tx_timestamp_timeout 1 use_syslog 1 verbose 0 diff --git a/port.c b/port.c index e83f44a..23c1f13 100644 --- a/port.c +++ b/port.c @@ -2834,6 +2834,7 @@ struct port *port_open(int phc_index, p->hybrid_e2e = config_get_int(cfg, p->name, "hybrid_e2e"); p->net_sync_monitor = config_get_int(cfg, p->name, "net_sync_monitor"); p->path_trace_enabled = config_get_int(cfg, p->name, "path_trace_enabled"); + p->tc_spanning_tree = config_get_int(cfg, p->name, "tc_spanning_tree"); p->rx_timestamp_offset = config_get_int(cfg, p->name, "ingressLatency"); p->rx_timestamp_offset <<= 16; p->tx_timestamp_offset = config_get_int(cfg, p->name, "egressLatency"); diff --git a/ptp4l.8 b/ptp4l.8 index 83549a8..0a35db2 100644 --- a/ptp4l.8 +++ b/ptp4l.8 @@ -399,6 +399,12 @@ Treat one-step responses as two-step if enabled. It is used to work around buggy 802.1AS switches. The default is 0 (disabled). .TP +.B tc_spanning_tree +When running as a Transparent Clock, increment the "stepsRemoved" +field of Announce messages that pass through the switch. Enabling +this option ensures that PTP message loops never form, provided the +switches all implement this option together with the BMCA. +.TP .B tx_timestamp_timeout The number of milliseconds to poll waiting for the tx time stamp from the kernel when a message has recently been sent. -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel