Signed-off-by: Richard Cochran <[email protected]>
---
 bmc.h       | 5 +++++
 clock.c     | 6 +++++-
 config.c    | 9 +++++++++
 default.cfg | 1 +
 gPTP.cfg    | 1 +
 ptp4l.8     | 5 +++++
 6 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/bmc.h b/bmc.h
index 3f4b5fa..2901cda 100644
--- a/bmc.h
+++ b/bmc.h
@@ -29,6 +29,11 @@
 #define B_BETTER      -1
 #define B_BETTER_TOPO -2
 
+enum {
+       DS_CMP_IEEE1588,
+       DS_CMP_G8275,
+};
+
 /**
  * BMC state decision algorithm.
  * @param c  The local clock.
diff --git a/clock.c b/clock.c
index 90f5b0f..08f0c42 100644
--- a/clock.c
+++ b/clock.c
@@ -1064,7 +1064,11 @@ struct clock *clock_create(enum clock_type type, struct 
config *config,
        }
        c->servo_state = SERVO_UNLOCKED;
        c->servo_type = servo;
-       c->dscmp = dscmp;
+       if (config_get_int(config, NULL, "dataset_comparison") == DS_CMP_G8275) 
{
+               c->dscmp = telecom_dscmp;
+       } else {
+               c->dscmp = dscmp;
+       }
        c->tsproc = tsproc_create(config_get_int(config, NULL, "tsproc_mode"),
                                  config_get_int(config, NULL, "delay_filter"),
                                  config_get_int(config, NULL, 
"delay_filter_length"));
diff --git a/config.c b/config.c
index f75092e..0b656b7 100644
--- a/config.c
+++ b/config.c
@@ -22,6 +22,8 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+
+#include "bmc.h"
 #include "config.h"
 #include "ether.h"
 #include "hash.h"
@@ -133,6 +135,12 @@ static struct config_enum clock_servo_enu[] = {
        { NULL, 0 },
 };
 
+static struct config_enum dataset_comp_enu[] = {
+       { "ieee1588", DS_CMP_IEEE1588 },
+       { "G.8275.x", DS_CMP_G8275    },
+       { NULL, 0 },
+};
+
 static struct config_enum delay_filter_enu[] = {
        { "moving_average", FILTER_MOVING_AVERAGE },
        { "moving_median",  FILTER_MOVING_MEDIAN  },
@@ -178,6 +186,7 @@ struct config_item config_tab[] = {
        GLOB_ITEM_INT("clockAccuracy", 0xfe, 0, UINT8_MAX),
        GLOB_ITEM_INT("clockClass", 248, 0, UINT8_MAX),
        GLOB_ITEM_ENU("clock_servo", CLOCK_SERVO_PI, clock_servo_enu),
+       GLOB_ITEM_ENU("dataset_comparison", DS_CMP_IEEE1588, dataset_comp_enu),
        PORT_ITEM_INT("delayAsymmetry", 0, INT_MIN, INT_MAX),
        PORT_ITEM_ENU("delay_filter", FILTER_MOVING_MEDIAN, delay_filter_enu),
        PORT_ITEM_INT("delay_filter_length", 10, 1, INT_MAX),
diff --git a/default.cfg b/default.cfg
index 24836dd..d7b78f2 100644
--- a/default.cfg
+++ b/default.cfg
@@ -15,6 +15,7 @@ free_running          0
 freq_est_interval      1
 dscp_event             0
 dscp_general           0
+dataset_comparison     ieee1588
 G.8275.defaultDS.localPriority 128
 #
 # Port Data Set
diff --git a/gPTP.cfg b/gPTP.cfg
index 095a444..14859e1 100644
--- a/gPTP.cfg
+++ b/gPTP.cfg
@@ -13,6 +13,7 @@ clockAccuracy         0xFE
 offsetScaledLogVariance        0xFFFF
 free_running           0
 freq_est_interval      1
+dataset_comparison     ieee1588
 G.8275.defaultDS.localPriority 128
 #
 # Port Data Set
diff --git a/ptp4l.8 b/ptp4l.8
index 11e3cc0..011bd02 100644
--- a/ptp4l.8
+++ b/ptp4l.8
@@ -534,6 +534,11 @@ streaming standards out there that recommend specific 
values for this option.
 For example 34 (AF41 PHB) in AES67 or 46 (EF PHB) in RAVENNA. The default
 is 0.
 .TP
+.B dataset_comparison
+Specifies the method to be used when comparing data sets during the
+Best Master Clock Algorithm.  The possible values are "ieee1588" and
+"G.8275.x".  The default is "ieee1588".
+.TP
 .B logging_level
 The maximum logging level of messages which should be printed.
 The default is 6 (LOG_INFO).
-- 
2.11.0


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to