The number of ports is already available in the cached default data set. Use it directly.
Signed-off-by: Richard Cochran <richardcoch...@gmail.com> --- 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 5386cf4..16daa66 100644 --- a/phc2sys.c +++ b/phc2sys.c @@ -864,7 +864,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 4c5b18a..d3db975 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; @@ -292,6 +276,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 2bb3101..abe62f5 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); /** @@ -56,6 +55,16 @@ void pmc_agent_destroy(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.20.1 _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel