
This change allows ts2phc to be configured to ignore timing updates that have a large offset spike in order to mitigate the resulting timing skew. In some circumstances on realtime systems with high CPU load, the timestamp consumed by ts2phc can be delayed in reaching ts2phc and results in the offset calculation attempting to speed the clock up by a large margin. This change causes ts2phc to ignore updates that would greatly skew the clock when ts2phc is already in a synchronized state. The global configuration option "max_phc_update_skip_cnt" is provided to allow users to specify how many consecutive offset spike incidents will be ignored before adjusting the clock. The default value is 120. The behaviour can be disabled by setting max_phc_update_skip_cnt to 0. This code is ported from a proposed upstream patch found here: https://sourceforge.net/p/linuxptp/mailman/message/44114092/ Test-plan: Pass: Verify linuxptp package build Pass: Deploy ts2phc binary and verify system time sync Pass: Manually trigger offset spike and verify that ts2phc maintains stable time sync Closes-bug: https://bugs.launchpad.net/starlingx/+bug/2059955 Change-Id: I13cd5c3440682ec9256e11449fe62d5fe28f66fa Signed-off-by: Cole Walker <cole.walker@windriver.com>
44 lines
1.4 KiB
Diff
44 lines
1.4 KiB
Diff
From ab617c7f70e8d8bc66673412a536fc1a8cf3584c Mon Sep 17 00:00:00 2001
|
|
From: Miroslav Lichvar <mlichvar@redhat.com>
|
|
Date: Mon, 31 May 2021 11:07:55 +0200
|
|
Subject: [PATCH 04/58] port: Don't renew raw transport.
|
|
|
|
Renewing of the transport on announce/sync timeout is needed in the
|
|
client-only mode to avoid getting stuck with a broken multicast socket
|
|
when the link goes down.
|
|
|
|
This shouldn't be necessary with the raw transport. Closing and binding
|
|
of raw sockets can apparently be so slow that it triggers a false
|
|
positive in the clock check.
|
|
|
|
Reported-by: Amar Subramanyam <asubramanyam@altiostar.com>
|
|
Signed-off-by: Miroslav Lichvar <mlichvar@redhat.com>
|
|
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
|
|
[commit 6df84259647757bc53818a039734f8ff85618c02 upstream]
|
|
Signed-off-by: Jim Somerville <Jim.Somerville@windriver.com>
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
port.c | 6 ++++++
|
|
1 file changed, 6 insertions(+)
|
|
|
|
diff --git a/port.c b/port.c
|
|
index 8cf3f59..f22bff4 100644
|
|
--- a/port.c
|
|
+++ b/port.c
|
|
@@ -1796,6 +1796,12 @@ static int port_renew_transport(struct port *p)
|
|
if (!port_is_enabled(p)) {
|
|
return 0;
|
|
}
|
|
+
|
|
+ /* Closing and binding of raw sockets is too slow and unnecessary */
|
|
+ if (transport_type(p->trp) == TRANS_IEEE_802_3) {
|
|
+ return 0;
|
|
+ }
|
|
+
|
|
transport_close(p->trp, &p->fda);
|
|
port_clear_fda(p, FD_FIRST_TIMER);
|
|
res = transport_open(p->trp, p->iface, &p->fda, p->timestamping);
|
|
--
|
|
2.30.2
|
|
|