A new time traceable flag was added to pmc agent to store the current time traceable status. This flag replaces the utc_offset_traceable flag in the HA clock selection algorithm and status command. Test plan: HA clock selection algorithm PASS: Verify the clock source which time isn't traceable is discarded by the algorithm if ha_gm_timeTraceable is enabled. PASS: Verify the clock source which time is traceable isn't discarded by the algorithm if ha_gm_timeTraceable is enabled. Regression: status command PASS: Verify the response of status command shows the correct GM time traceable. The 'valid sources' command is used to get a list of interfaces which the clock is matching the requirements. The response contains a space separated list of interfaces, or "None" when not a single clock is matching all the requirements. Test plan: valid sources command PASS: Verify that a space separated list of interface is returned when one or more clocks match the requirements. PASS: Verify that the string "None" is returned when not a single clock match the requirements. Now the GM time traceable check is enabled by default as it is an important check for both T-GM and T-BC scenarios. The GM time traceable check is controlled in configuration by using the ha_gm_timeTraceable setting, and it can be disabled using the value 0 (ha_gm_timeTraceable 0). Test plan: default value PASS Verify the check is performed by default. PASS Verify the user can disable the check by configuration. Bonus: Fixed the behavior when none clock is matching the requirements and the active clock source is disabled using the 'disable source <interface>' command. The interface is must be disabled and a new clock source is selected. Test plan: none clock is matching the requirements PASS: Verify that the active source can be disabled and a new one is selected. PASS: Verify that an attempt to disable the last active interface fails and an appopriated message is given as response. PASS: Verify that the interface with higher priority is selected after re-enabling it. PASS: Verify the active clock source doesn't change if another interface is disabled. PASS: Verify the active clock source doesn't change if another interface is re-enabled. Story: 2010723 Task: 48702 Change-Id: I64193575a995e520d36460c0ebb8dd452fa8c2b8 Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
213 lines
6.9 KiB
Diff
213 lines
6.9 KiB
Diff
From 82258917b8de7110545f3d4f99d3ac88a609f019 Mon Sep 17 00:00:00 2001
|
|
From: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
Date: Mon, 12 Jun 2023 14:47:36 -0300
|
|
Subject: [PATCH 15/54] pmc_agent: Rename pmc_node to something more
|
|
descriptive.
|
|
|
|
Signed-off-by: Richard Cochran <richardcochran@gmail.com>
|
|
|
|
[commit bb6865cdf59572fcb09c11d549828269281c6841 upstream]
|
|
Signed-off-by: Andre Mauricio Zelak <andre.zelak@windriver.com>
|
|
---
|
|
phc2sys.c | 4 ++--
|
|
pmc_agent.c | 26 +++++++++++++-------------
|
|
pmc_agent.h | 26 +++++++++++++-------------
|
|
3 files changed, 28 insertions(+), 28 deletions(-)
|
|
|
|
diff --git a/phc2sys.c b/phc2sys.c
|
|
index 648ba61..74ee9d1 100644
|
|
--- a/phc2sys.c
|
|
+++ b/phc2sys.c
|
|
@@ -103,7 +103,7 @@ struct phc2sys_private {
|
|
int forced_sync_offset;
|
|
int kernel_leap;
|
|
int state_changed;
|
|
- struct pmc_node node;
|
|
+ struct pmc_agent node;
|
|
LIST_HEAD(port_head, port) ports;
|
|
LIST_HEAD(clock_head, clock) clocks;
|
|
LIST_HEAD(dst_clock_head, clock) dst_clocks;
|
|
@@ -813,7 +813,7 @@ static int clock_compute_state(struct phc2sys_private *priv,
|
|
#define node_to_phc2sys(node) \
|
|
container_of(node, struct phc2sys_private, node)
|
|
|
|
-static int phc2sys_recv_subscribed(struct pmc_node *node,
|
|
+static int phc2sys_recv_subscribed(struct pmc_agent *node,
|
|
struct ptp_message *msg, int excluded)
|
|
{
|
|
struct phc2sys_private *priv = node_to_phc2sys(node);
|
|
diff --git a/pmc_agent.c b/pmc_agent.c
|
|
index 774e94d..e83895c 100644
|
|
--- a/pmc_agent.c
|
|
+++ b/pmc_agent.c
|
|
@@ -32,7 +32,7 @@
|
|
* renewed.
|
|
*/
|
|
|
|
-static void send_subscription(struct pmc_node *node)
|
|
+static void send_subscription(struct pmc_agent *node)
|
|
{
|
|
struct subscribe_events_np sen;
|
|
|
|
@@ -42,7 +42,7 @@ static void send_subscription(struct pmc_node *node)
|
|
pmc_send_set_action(node->pmc, TLV_SUBSCRIBE_EVENTS_NP, &sen, sizeof(sen));
|
|
}
|
|
|
|
-static int check_clock_identity(struct pmc_node *node, struct ptp_message *msg)
|
|
+static int check_clock_identity(struct pmc_agent *node, struct ptp_message *msg)
|
|
{
|
|
if (!node->clock_identity_set)
|
|
return 1;
|
|
@@ -98,7 +98,7 @@ static int get_mgt_err_id(struct ptp_message *msg)
|
|
* -1: error reported by the other side
|
|
* -2: local error, fatal
|
|
*/
|
|
-static int run_pmc(struct pmc_node *node, int timeout, int ds_id,
|
|
+static int run_pmc(struct pmc_agent *node, int timeout, int ds_id,
|
|
struct ptp_message **msg)
|
|
{
|
|
#define N_FD 1
|
|
@@ -166,7 +166,7 @@ static int run_pmc(struct pmc_node *node, int timeout, int ds_id,
|
|
}
|
|
}
|
|
|
|
-int run_pmc_wait_sync(struct pmc_node *node, int timeout)
|
|
+int run_pmc_wait_sync(struct pmc_agent *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
Enumeration8 portState;
|
|
@@ -192,7 +192,7 @@ int run_pmc_wait_sync(struct pmc_node *node, int timeout)
|
|
}
|
|
}
|
|
|
|
-int run_pmc_get_utc_offset(struct pmc_node *node, int timeout)
|
|
+int run_pmc_get_utc_offset(struct pmc_agent *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
int res;
|
|
@@ -222,7 +222,7 @@ int run_pmc_get_utc_offset(struct pmc_node *node, int timeout)
|
|
return 1;
|
|
}
|
|
|
|
-int run_pmc_get_number_ports(struct pmc_node *node, int timeout)
|
|
+int run_pmc_get_number_ports(struct pmc_agent *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
int res;
|
|
@@ -238,7 +238,7 @@ int run_pmc_get_number_ports(struct pmc_node *node, int timeout)
|
|
return res;
|
|
}
|
|
|
|
-int run_pmc_subscribe(struct pmc_node *node, int timeout)
|
|
+int run_pmc_subscribe(struct pmc_agent *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
int res;
|
|
@@ -250,14 +250,14 @@ int run_pmc_subscribe(struct pmc_node *node, int timeout)
|
|
return 1;
|
|
}
|
|
|
|
-void run_pmc_events(struct pmc_node *node)
|
|
+void run_pmc_events(struct pmc_agent *node)
|
|
{
|
|
struct ptp_message *msg;
|
|
|
|
run_pmc(node, 0, -1, &msg);
|
|
}
|
|
|
|
-int run_pmc_port_properties(struct pmc_node *node, int timeout,
|
|
+int run_pmc_port_properties(struct pmc_agent *node, int timeout,
|
|
unsigned int port, int *state,
|
|
int *tstamping, char *iface)
|
|
{
|
|
@@ -294,7 +294,7 @@ out:
|
|
return res;
|
|
}
|
|
|
|
-int run_pmc_clock_identity(struct pmc_node *node, int timeout)
|
|
+int run_pmc_clock_identity(struct pmc_agent *node, int timeout)
|
|
{
|
|
struct ptp_message *msg;
|
|
struct defaultDS *dds;
|
|
@@ -313,7 +313,7 @@ int run_pmc_clock_identity(struct pmc_node *node, int timeout)
|
|
}
|
|
|
|
/* Returns: -1 in case of error, 0 otherwise */
|
|
-int update_pmc_node(struct pmc_node *node, int subscribe)
|
|
+int update_pmc_node(struct pmc_agent *node, int subscribe)
|
|
{
|
|
struct timespec tp;
|
|
uint64_t ts;
|
|
@@ -336,7 +336,7 @@ int update_pmc_node(struct pmc_node *node, int subscribe)
|
|
return 0;
|
|
}
|
|
|
|
-int init_pmc_node(struct config *cfg, struct pmc_node *node, const char *uds,
|
|
+int init_pmc_node(struct config *cfg, struct pmc_agent *node, const char *uds,
|
|
pmc_node_recv_subscribed_t *recv_subscribed)
|
|
{
|
|
node->pmc = pmc_create(cfg, TRANS_UDS, uds, 0,
|
|
@@ -351,7 +351,7 @@ int init_pmc_node(struct config *cfg, struct pmc_node *node, const char *uds,
|
|
return 0;
|
|
}
|
|
|
|
-void close_pmc_node(struct pmc_node *node)
|
|
+void close_pmc_node(struct pmc_agent *node)
|
|
{
|
|
if (!node->pmc)
|
|
return;
|
|
diff --git a/pmc_agent.h b/pmc_agent.h
|
|
index 90245b1..10ef4b5 100644
|
|
--- a/pmc_agent.h
|
|
+++ b/pmc_agent.h
|
|
@@ -24,13 +24,13 @@
|
|
|
|
#include "pmc_common.h"
|
|
|
|
-struct pmc_node;
|
|
+struct pmc_agent;
|
|
|
|
-typedef int pmc_node_recv_subscribed_t(struct pmc_node *node,
|
|
+typedef int pmc_node_recv_subscribed_t(struct pmc_agent *agent,
|
|
struct ptp_message *msg,
|
|
int excluded);
|
|
|
|
-struct pmc_node {
|
|
+struct pmc_agent {
|
|
struct pmc *pmc;
|
|
int pmc_ds_requested;
|
|
uint64_t pmc_last_update;
|
|
@@ -42,19 +42,19 @@ struct pmc_node {
|
|
pmc_node_recv_subscribed_t *recv_subscribed;
|
|
};
|
|
|
|
-int init_pmc_node(struct config *cfg, struct pmc_node *node, const char *uds,
|
|
+int init_pmc_node(struct config *cfg, struct pmc_agent *agent, const char *uds,
|
|
pmc_node_recv_subscribed_t *recv_subscribed);
|
|
-void close_pmc_node(struct pmc_node *node);
|
|
-int update_pmc_node(struct pmc_node *node, int subscribe);
|
|
-int run_pmc_subscribe(struct pmc_node *node, int timeout);
|
|
-int run_pmc_clock_identity(struct pmc_node *node, int timeout);
|
|
-int run_pmc_wait_sync(struct pmc_node *node, int timeout);
|
|
-int run_pmc_get_number_ports(struct pmc_node *node, int timeout);
|
|
-void run_pmc_events(struct pmc_node *node);
|
|
-int run_pmc_port_properties(struct pmc_node *node, int timeout,
|
|
+void close_pmc_node(struct pmc_agent *agent);
|
|
+int update_pmc_node(struct pmc_agent *agent, int subscribe);
|
|
+int run_pmc_subscribe(struct pmc_agent *agent, int timeout);
|
|
+int run_pmc_clock_identity(struct pmc_agent *agent, int timeout);
|
|
+int run_pmc_wait_sync(struct pmc_agent *agent, int timeout);
|
|
+int run_pmc_get_number_ports(struct pmc_agent *agent, int timeout);
|
|
+void run_pmc_events(struct pmc_agent *agent);
|
|
+int run_pmc_port_properties(struct pmc_agent *agent, int timeout,
|
|
unsigned int port, int *state,
|
|
int *tstamping, char *iface);
|
|
-int run_pmc_get_utc_offset(struct pmc_node *node, int timeout);
|
|
+int run_pmc_get_utc_offset(struct pmc_agent *agent, int timeout);
|
|
int get_mgt_id(struct ptp_message *msg);
|
|
void *get_mgt_data(struct ptp_message *msg);
|
|
|
|
--
|
|
2.25.1
|
|
|