Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 clock.c | 31 +++++++++++++++++++++++++++++++
 ptp4l.c | 34 +---------------------------------
 2 files changed, 32 insertions(+), 33 deletions(-)

diff --git a/clock.c b/clock.c
index ab238fb..d18cab0 100644
--- a/clock.c
+++ b/clock.c
@@ -17,6 +17,7 @@
  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
  */
 #include <errno.h>
+#include <linux/net_tstamp.h>
 #include <poll.h>
 #include <stdlib.h>
 #include <string.h>
@@ -805,6 +806,7 @@ struct clock *clock_create(struct config *config, int 
phc_index)
        int fadj = 0, max_adj = 0, sw_ts = timestamping == TS_SOFTWARE ? 1 : 0;
        enum servo_type servo = config_get_int(config, NULL, "clock_servo");
        struct clock *c = &the_clock;
+       int required_modes = 0;
        struct port *p;
        unsigned char oui[OUI_LEN];
        char phc[32], *tmp;
@@ -892,6 +894,35 @@ struct clock *clock_create(struct config *config, int 
phc_index)
                }
        }
 
+       /* Check the time stamping mode on each interface. */
+       switch (config_get_int(config, NULL, "time_stamping")) {
+       case TS_SOFTWARE:
+               required_modes |= SOF_TIMESTAMPING_TX_SOFTWARE |
+                       SOF_TIMESTAMPING_RX_SOFTWARE |
+                       SOF_TIMESTAMPING_SOFTWARE;
+               break;
+       case TS_LEGACY_HW:
+               required_modes |= SOF_TIMESTAMPING_TX_HARDWARE |
+                       SOF_TIMESTAMPING_RX_HARDWARE |
+                       SOF_TIMESTAMPING_SYS_HARDWARE;
+               break;
+       case TS_HARDWARE:
+       case TS_ONESTEP:
+               required_modes |= SOF_TIMESTAMPING_TX_HARDWARE |
+                       SOF_TIMESTAMPING_RX_HARDWARE |
+                       SOF_TIMESTAMPING_RAW_HARDWARE;
+               break;
+       }
+       STAILQ_FOREACH(iface, &config->interfaces, list) {
+               if (iface->ts_info.valid &&
+                   ((iface->ts_info.so_timestamping & required_modes) != 
required_modes)) {
+                       pr_err("interface '%s' does not support "
+                              "requested timestamping mode", iface->name);
+                       return NULL;
+               }
+       }
+
+       iface = STAILQ_FIRST(&config->interfaces);
        if (generate_clock_identity(&c->dds.clockIdentity, iface->name)) {
                pr_err("failed to generate a clock identity");
                return NULL;
diff --git a/ptp4l.c b/ptp4l.c
index 0eb2490..d48324b 100644
--- a/ptp4l.c
+++ b/ptp4l.c
@@ -22,7 +22,6 @@
 #include <stdlib.h>
 #include <string.h>
 #include <unistd.h>
-#include <linux/net_tstamp.h>
 
 #include "clock.h"
 #include "config.h"
@@ -78,7 +77,7 @@ int main(int argc, char *argv[])
        struct interface *iface;
        struct clock *clock = NULL;
        struct config *cfg;
-       int phc_index = -1, print_level, required_modes = 0;
+       int phc_index = -1, print_level;
 
        if (handle_term_signals())
                return -1;
@@ -198,37 +197,6 @@ int main(int argc, char *argv[])
                goto out;
        }
 
-       switch (config_get_int(cfg, NULL, "time_stamping")) {
-       case TS_SOFTWARE:
-               required_modes |= SOF_TIMESTAMPING_TX_SOFTWARE |
-                       SOF_TIMESTAMPING_RX_SOFTWARE |
-                       SOF_TIMESTAMPING_SOFTWARE;
-               break;
-       case TS_LEGACY_HW:
-               required_modes |= SOF_TIMESTAMPING_TX_HARDWARE |
-                       SOF_TIMESTAMPING_RX_HARDWARE |
-                       SOF_TIMESTAMPING_SYS_HARDWARE;
-               break;
-       case TS_HARDWARE:
-       case TS_ONESTEP:
-               required_modes |= SOF_TIMESTAMPING_TX_HARDWARE |
-                       SOF_TIMESTAMPING_RX_HARDWARE |
-                       SOF_TIMESTAMPING_RAW_HARDWARE;
-               break;
-       }
-
-       /* Init interface configs and check whether timestamping mode is
-        * supported. */
-       STAILQ_FOREACH(iface, &cfg->interfaces, list) {
-               if (iface->ts_info.valid &&
-                   ((iface->ts_info.so_timestamping & required_modes) != 
required_modes)) {
-                       fprintf(stderr, "interface '%s' does not support "
-                                       "requested timestamping mode.\n",
-                               iface->name);
-                       goto out;
-               }
-       }
-
        /* determine PHC Clock index */
        iface = STAILQ_FIRST(&cfg->interfaces);
        if (config_get_int(cfg, NULL, "free_running")) {
-- 
2.1.4


------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial! http://pubads.g.doubleclick.net/
gampad/clk?id=1444514301&iu=/ca-pub-7940484522588532
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to