Signed-off-by: Richard Cochran <richardcoch...@gmail.com>
---
 config.c | 33 +++++++++------------------------
 config.h |  4 ----
 port.c   |  2 +-
 ptp4l.c  | 14 ++++++--------
 4 files changed, 16 insertions(+), 37 deletions(-)

diff --git a/config.c b/config.c
index 66d6954..3fce7d2 100644
--- a/config.c
+++ b/config.c
@@ -110,6 +110,13 @@ struct config_item {
 #define PORT_ITEM_INT(label, _default, min, max) \
        CONFIG_ITEM_INT(label, 1, _default, min, max)
 
+static struct config_enum delay_mech_enu[] = {
+       { "Auto", DM_AUTO },
+       { "E2E",  DM_E2E },
+       { "P2P",  DM_P2P },
+       { NULL, 0 },
+};
+
 static struct config_enum nw_trans_enu[] = {
        { "L2",    TRANS_IEEE_802_3 },
        { "UDPv4", TRANS_UDP_IPV4   },
@@ -126,6 +133,7 @@ struct config_item config_tab[] = {
        GLOB_ITEM_INT("clockClass", 248, 0, UINT8_MAX),
        PORT_ITEM_INT("delayAsymmetry", 0, INT_MIN, INT_MAX),
        PORT_ITEM_INT("delay_filter_length", 10, 1, INT_MAX),
+       PORT_ITEM_ENU("delay_mechanism", DM_E2E, delay_mech_enu),
        GLOB_ITEM_INT("domainNumber", 0, 0, 127),
        PORT_ITEM_INT("egressLatency", 0, INT_MIN, INT_MAX),
        PORT_ITEM_INT("fault_badpeernet_interval", 16, INT32_MIN, INT32_MAX),
@@ -367,17 +375,7 @@ static enum parser_result parse_port_setting(struct config 
*cfg,
        if (r != NOT_PARSED)
                return r;
 
-       if (!strcmp(option, "delay_mechanism")) {
-               if (!strcasecmp("Auto", value))
-                       iface->dm = DM_AUTO;
-               else if (!strcasecmp("E2E", value))
-                       iface->dm = DM_E2E;
-               else if (!strcasecmp("P2P", value))
-                       iface->dm = DM_P2P;
-               else
-                       return BAD_VALUE;
-
-       } else if (!strcmp(option, "tsproc_mode")) {
+       if (!strcmp(option, "tsproc_mode")) {
                if (!strcasecmp("filter", value))
                        iface->tsproc_mode = TSPROC_FILTER;
                else if (!strcasecmp("raw", value))
@@ -458,18 +456,6 @@ static enum parser_result parse_global_setting(const char 
*option,
                                return BAD_VALUE;
                }
 
-       } else if (!strcmp(option, "delay_mechanism")) {
-               if (!(cfg_ignore & CFG_IGNORE_DM)) {
-                       if (0 == strcasecmp("E2E", value))
-                               cfg->dm = DM_E2E;
-                       else if (0 == strcasecmp("P2P", value))
-                               cfg->dm = DM_P2P;
-                       else if (0 == strcasecmp("Auto", value))
-                               cfg->dm = DM_AUTO;
-                       else
-                               return BAD_VALUE;
-               }
-
        } else if (!strcmp(option, "clock_servo")) {
                if (!strcasecmp("pi", value))
                        cfg->clock_servo = CLOCK_SERVO_PI;
@@ -705,7 +691,6 @@ struct interface *config_create_interface(char *name, 
struct config *cfg)
 
 void config_init_interface(struct interface *iface, struct config *cfg)
 {
-       iface->dm = cfg->dm;
        sk_get_ts_info(iface->name, &iface->ts_info);
        iface->delay_filter = cfg->dds.delay_filter;
 }
diff --git a/config.h b/config.h
index 3cfc6ac..e1c24e8 100644
--- a/config.h
+++ b/config.h
@@ -35,13 +35,11 @@
 struct interface {
        STAILQ_ENTRY(interface) list;
        char name[MAX_IFNAME_SIZE + 1];
-       enum delay_mechanism dm;
        struct sk_ts_info ts_info;
        enum tsproc_mode tsproc_mode;
        enum filter_type delay_filter;
 };
 
-#define CFG_IGNORE_DM           (1 << 0)
 #define CFG_IGNORE_TIMESTAMPING (1 << 2)
 
 struct config {
@@ -56,8 +54,6 @@ struct config {
 
        /* the rest are legacy fields */
        enum timestamp_type timestamping;
-       enum delay_mechanism dm;
-
        struct default_ds dds;
        enum servo_type clock_servo;
 
diff --git a/port.c b/port.c
index 706183f..8d48cf8 100644
--- a/port.c
+++ b/port.c
@@ -2550,7 +2550,7 @@ struct port *port_open(int phc_index,
        p->portIdentity.clockIdentity = clock_identity(clock);
        p->portIdentity.portNumber = number;
        p->state = PS_INITIALIZING;
-       p->delayMechanism = interface->dm;
+       p->delayMechanism = config_get_int(cfg, p->name, "delay_mechanism");
        p->versionNumber = PTP_VERSION;
 
        /* Set fault timeouts to a default value */
diff --git a/ptp4l.c b/ptp4l.c
index 52fff25..cd81944 100644
--- a/ptp4l.c
+++ b/ptp4l.c
@@ -62,7 +62,6 @@ static struct config cfg_settings = {
        },
 
        .timestamping = TS_HARDWARE,
-       .dm = DM_E2E,
        .clock_servo = CLOCK_SERVO_PI,
 
        .ptp_dst_mac = ptp_dst_mac,
@@ -110,7 +109,6 @@ int main(int argc, char *argv[])
        int c;
        struct interface *iface;
        int *cfg_ignore = &cfg_settings.cfg_ignore;
-       enum delay_mechanism *dm = &cfg_settings.dm;
        enum timestamp_type *timestamping = &cfg_settings.timestamping;
        struct clock *clock;
        struct config *cfg = &cfg_settings;
@@ -130,16 +128,16 @@ int main(int argc, char *argv[])
        while (EOF != (c = getopt(argc, argv, "AEP246HSLf:i:p:sl:mqvh"))) {
                switch (c) {
                case 'A':
-                       *dm = DM_AUTO;
-                       *cfg_ignore |= CFG_IGNORE_DM;
+                       if (config_set_int(cfg, "delay_mechanism", DM_AUTO))
+                               return -1;
                        break;
                case 'E':
-                       *dm = DM_E2E;
-                       *cfg_ignore |= CFG_IGNORE_DM;
+                       if (config_set_int(cfg, "delay_mechanism", DM_E2E))
+                               return -1;
                        break;
                case 'P':
-                       *dm = DM_P2P;
-                       *cfg_ignore |= CFG_IGNORE_DM;
+                       if (config_set_int(cfg, "delay_mechanism", DM_P2P))
+                               return -1;
                        break;
                case '2':
                        if (config_set_int(cfg, "network_transport",
-- 
2.1.4


------------------------------------------------------------------------------
_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to