From 7acbb86b5d95709a6d87b898df5783c25fbb2d26 Mon Sep 17 00:00:00 2001 From: Andre Mauricio Zelak Date: Mon, 12 Jun 2023 17:30:57 -0300 Subject: [PATCH 30/57] pmc_agent: Simplify the method that gets of the number of local ports. The number of ports is already available in the cached default data set. Use it directly. Signed-off-by: Richard Cochran [commit 6bc9eb81dd254d90b5fe059684271b9beebf6b9b upstream] Signed-off-by: Andre Mauricio Zelak --- phc2sys.c | 2 +- pmc_agent.c | 24 ++++++++---------------- pmc_agent.h | 11 ++++++++++- 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/phc2sys.c b/phc2sys.c index 0f33630..569544e 100644 --- a/phc2sys.c +++ b/phc2sys.c @@ -875,7 +875,7 @@ static int auto_init_ports(struct phc2sys_private *priv, int add_rt) } } - number_ports = run_pmc_get_number_ports(priv->node, 1000); + number_ports = pmc_agent_get_number_ports(priv->node); if (number_ports <= 0) { pr_err("failed to get number of ports"); return -1; diff --git a/pmc_agent.c b/pmc_agent.c index 51023d1..aa2347d 100644 --- a/pmc_agent.c +++ b/pmc_agent.c @@ -229,22 +229,6 @@ int run_pmc_wait_sync(struct pmc_agent *node, int timeout) } } -int run_pmc_get_number_ports(struct pmc_agent *node, int timeout) -{ - struct ptp_message *msg; - int res; - struct defaultDS *dds; - - res = run_pmc(node, timeout, TLV_DEFAULT_DATA_SET, &msg); - if (res <= 0) - return res; - - dds = (struct defaultDS *) management_tlv_data(msg); - res = dds->numberPorts; - msg_put(msg); - return res; -} - void run_pmc_events(struct pmc_agent *node) { struct ptp_message *msg; @@ -300,6 +284,14 @@ int pmc_agent_get_sync_offset(struct pmc_agent *agent) return agent->sync_offset; } +int pmc_agent_get_number_ports(struct pmc_agent *node) +{ + if (!node->dds_valid) { + return -1; + } + return node->dds.numberPorts; +} + int pmc_agent_query_dds(struct pmc_agent *node, int timeout) { struct ptp_message *msg; diff --git a/pmc_agent.h b/pmc_agent.h index 9d8bd1c..f0e2c7a 100644 --- a/pmc_agent.h +++ b/pmc_agent.h @@ -34,7 +34,6 @@ typedef int pmc_node_recv_subscribed_t(void *context, struct ptp_message *msg, int init_pmc_node(struct config *cfg, struct pmc_agent *agent, const char *uds, pmc_node_recv_subscribed_t *recv_subscribed, void *context); 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); /** @@ -62,6 +61,16 @@ void pmc_agent_disable(struct pmc_agent *agent); */ int pmc_agent_get_leap(struct pmc_agent *agent); +/** + * Gets the number of local ports from the default data set. Users + * should first call pmc_agent_query_dds() before invoking this + * function. + * + * @param agent Pointer to a PMC instance obtained via @ref pmc_agent_create(). + * @return The non-negative number of ports, or -1 if unknown. + */ +int pmc_agent_get_number_ports(struct pmc_agent *agent); + /** * Gets the TAI-UTC offset. * @param agent Pointer to a PMC instance obtained via @ref pmc_agent_create(). -- 2.30.2