
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>
93 lines
3.3 KiB
Diff
93 lines
3.3 KiB
Diff
From 1c518663448b8c8aaf914151f54b860bd946cea4 Mon Sep 17 00:00:00 2001
|
|
From: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
Date: Tue, 8 Aug 2023 13:10:50 -0300
|
|
Subject: [PATCH 45/58] Functions starts_with and str_at_column
|
|
|
|
Renaming starts_with and str_at_column functions to match ptp4l code
|
|
style.
|
|
|
|
Test plan: commands
|
|
PASS: Verify 'enable lock <interface>', 'disabel source <interface>' and
|
|
'enable source <interface>' still work.
|
|
|
|
Reviewed-by: Cole Walker <cole.walker@windriver.com>
|
|
Reviewed-by: Andre Fernando Zanella Kantek
|
|
<andrefernandozanella.kantek@windriver.com>
|
|
|
|
[commit f43f86eab5f8f5d2c9895d290d4bdfd6f60853f8 upstream]
|
|
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
phc2sys.c | 16 ++++++++--------
|
|
1 file changed, 8 insertions(+), 8 deletions(-)
|
|
|
|
diff --git a/phc2sys.c b/phc2sys.c
|
|
index a597014..6965162 100644
|
|
--- a/phc2sys.c
|
|
+++ b/phc2sys.c
|
|
@@ -1318,12 +1318,12 @@ static int ha_handle_status_msg(struct phc2sys_private *priv, char *response,
|
|
return curlen;
|
|
}
|
|
|
|
-static bool startsWith(const char *prefix, const char *str)
|
|
+static bool starts_with(const char *prefix, const char *str)
|
|
{
|
|
return 0 == strncmp(prefix, str, strlen(prefix) - 1);
|
|
}
|
|
|
|
-static char * strAtColumn(char *msg, size_t column)
|
|
+static char * str_at_column(char *msg, size_t column)
|
|
{
|
|
int i;
|
|
char * str = NULL;
|
|
@@ -1354,7 +1354,7 @@ static int ha_handle_enable_lock_msg(struct phc2sys_private *priv, char *msg,
|
|
char *interface = NULL;
|
|
struct clock *clock = NULL;
|
|
|
|
- interface = strAtColumn(msg, 3);
|
|
+ interface = str_at_column(msg, 3);
|
|
if (strlen(interface) == 0) {
|
|
return snprintf(response, resplen, "Error: Usage 'enable lock <interface>'");
|
|
}
|
|
@@ -1405,7 +1405,7 @@ static int ha_handle_enable_source_msg(struct phc2sys_private *priv,
|
|
char *interface = NULL;
|
|
struct clock *clock = NULL;
|
|
|
|
- interface = strAtColumn(msg, 3);
|
|
+ interface = str_at_column(msg, 3);
|
|
if (strlen(interface) == 0) {
|
|
return snprintf(response, resplen, "Error: Usage 'enable source <interface>'");
|
|
}
|
|
@@ -1437,7 +1437,7 @@ static int ha_handle_disable_source_msg(struct phc2sys_private *priv,
|
|
char *interface = NULL;
|
|
struct clock *clock = NULL;
|
|
|
|
- interface = strAtColumn(msg, 3);
|
|
+ interface = str_at_column(msg, 3);
|
|
if (strlen(interface) == 0) {
|
|
return snprintf(response, resplen, "Error: Usage 'disable source <interface>'");
|
|
}
|
|
@@ -1524,16 +1524,16 @@ static int ha_com_socket_handle_msg(struct phc2sys_private *priv,
|
|
} else if (strcmp((const char*)buffer, "forced lock") == 0) {
|
|
cnt = snprintf((char*)response, HA_SCK_BUFFER_SIZE, "%s",
|
|
priv->forced_source_clock ? "True" : "False");
|
|
- } else if (startsWith("enable lock", buffer)) {
|
|
+ } else if (starts_with("enable lock", buffer)) {
|
|
cnt = ha_handle_enable_lock_msg(priv, buffer, response,
|
|
HA_SCK_BUFFER_SIZE);
|
|
} else if (strcmp((const char*)buffer, "disable lock") == 0) {
|
|
cnt = ha_handle_disable_lock_msg(priv, cfg, response,
|
|
HA_SCK_BUFFER_SIZE);
|
|
- } else if (startsWith("enable source", buffer)) {
|
|
+ } else if (starts_with("enable source", buffer)) {
|
|
cnt = ha_handle_enable_source_msg(priv, cfg, buffer, response,
|
|
HA_SCK_BUFFER_SIZE);
|
|
- } else if (startsWith("disable source", buffer)) {
|
|
+ } else if (starts_with("disable source", buffer)) {
|
|
cnt = ha_handle_disable_source_msg(priv, cfg, buffer, response,
|
|
HA_SCK_BUFFER_SIZE);
|
|
} else {
|
|
--
|
|
2.30.2
|
|
|