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

Reply via email to