Implemented code review comments.
This code changes brings in the ability to program the acceptable
clockClass threshold beyond which device will move to holdover/free-run.
Default clockClass threshold is 248.
Example Use-Case
This is needed in the cases where T-SC/T-BC Slave might want to listen
only on PRC clockCLass and anything beyond that might not be acceptible
and would want to go to holdover (with SyncE backup or internal
oscillator).

Signed-off-by: Karthikkumar V <kval...@altiostar.com>
Signed-off-by: Ramana Reddy <rre...@altiostar.com>
---
 clock.c             | 4 ++--
 config.c            | 2 +-
 configs/default.cfg | 2 +-
 port.c              | 7 +++++--
 ptp4l.8             | 5 +++++
 5 files changed, 14 insertions(+), 6 deletions(-)

diff --git a/clock.c b/clock.c
index 542f409..c40476f 100644
--- a/clock.c
+++ b/clock.c
@@ -969,7 +969,7 @@ struct clock *clock_create(enum clock_type type, struct 
config *config,
        c->default_dataset.localPriority =
                config_get_int(config, NULL, "G.8275.defaultDS.localPriority");
        c->max_steps_removed = config_get_int(config, NULL,"maxStepsRemoved");
-       c->clock_class_threshold = config_get_int(config, NULL, 
"clockClassThreshold");
+       c->clock_class_threshold = config_get_int(config, NULL, 
"clock_class_threshold");
 
        /* Harmonize the twoStepFlag with the time_stamping option. */
        if (config_harmonize_onestep(config)) {
@@ -1660,7 +1660,7 @@ UInteger8 clock_max_steps_removed(struct clock *c)
 
 UInteger8 clock_get_clock_class_threshold(struct clock *c)
 {
-       if(c != NULL){
+       if (c != NULL) {
                return c->clock_class_threshold;
        }
        return CLOCK_CLASS_THRESHOLD_DEFAULT; /* Return Default Value  */
diff --git a/config.c b/config.c
index 41735d3..c840d98 100644
--- a/config.c
+++ b/config.c
@@ -231,6 +231,7 @@ struct config_item config_tab[] = {
        GLOB_ITEM_INT("clockAccuracy", 0xfe, 0, UINT8_MAX),
        GLOB_ITEM_INT("clockClass", 248, 0, UINT8_MAX),
        GLOB_ITEM_STR("clockIdentity", "000000.0000.000000"),
+       GLOB_ITEM_INT("clock_class_threshold", CLOCK_CLASS_THRESHOLD_DEFAULT, 
6, CLOCK_CLASS_THRESHOLD_DEFAULT),
        GLOB_ITEM_ENU("clock_servo", CLOCK_SERVO_PI, clock_servo_enu),
        GLOB_ITEM_ENU("clock_type", CLOCK_TYPE_ORDINARY, clock_type_enu),
        GLOB_ITEM_ENU("dataset_comparison", DS_CMP_IEEE1588, dataset_comp_enu),
@@ -332,7 +333,6 @@ struct config_item config_tab[] = {
        GLOB_ITEM_INT("utc_offset", CURRENT_UTC_OFFSET, 0, INT_MAX),
        GLOB_ITEM_INT("verbose", 0, 0, 1),
        GLOB_ITEM_INT("write_phase_mode", 0, 0, 1),
-       GLOB_ITEM_INT("clockClassThreshold", CLOCK_CLASS_THRESHOLD_DEFAULT, 6, 
CLOCK_CLASS_THRESHOLD_DEFAULT),
 };
 
 static struct unicast_master_table *current_uc_mtab;
diff --git a/configs/default.cfg b/configs/default.cfg
index 473bbb9..e863239 100644
--- a/configs/default.cfg
+++ b/configs/default.cfg
@@ -29,7 +29,7 @@ logMinDelayReqInterval        0
 logMinPdelayReqInterval        0
 operLogPdelayReqInterval 0
 announceReceiptTimeout 3
-clockClassThreshold    248
+clock_class_threshold  248
 syncReceiptTimeout     0
 delayAsymmetry         0
 fault_reset_interval   4
diff --git a/port.c b/port.c
index ae2a00e..024370f 100644
--- a/port.c
+++ b/port.c
@@ -1861,8 +1861,11 @@ int process_announce(struct port *p, struct ptp_message 
*m)
                return result;
        }
 
-       /* If the clock class is greater than clock_class_threshold , ignore 
this master */
-       if(m->announce.grandmasterClockQuality.clockClass > 
clock_get_clock_class_threshold(p->clock)){
+       if (m->announce.grandmasterClockQuality.clockClass >
+     clock_get_clock_class_threshold(p->clock)) {
+               pl_err(60, "%s: Master clock quality received is "
+      "greater than configured, ignoring master!",
+      p->log_name);
                return result;
        }
 
diff --git a/ptp4l.8 b/ptp4l.8
index 260aae3..b13471b 100644
--- a/ptp4l.8
+++ b/ptp4l.8
@@ -455,6 +455,11 @@ message is greater than or equal to the value of 
maxStepsRemoved the
 Announce message is not considered in the operation of the BMCA.
 The default value is 255.
 .TP
+.B clock_class_threshold
+The maximum clock class value from master, acceptible to sub-ordinate
+clock beyond which it moves out of lock state.
+The default value is 248.
+.TP
 
 .B domainNumber
 The domain attribute of the local clock.
-- 
1.8.3.1



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

Reply via email to