Introduce the maxStepsRemoved attribute
Add attribute maxStepsRemoved which is included in IEEE1588-2017 (v2.1) It is an optional attribute which can decide if an Announce message is considered in the operation of the BMCA or not. Signed-off-by: Anders Selhammer <anders.selhammer@est.tech>master
parent
399907db7f
commit
1173e774dd
7
clock.c
7
clock.c
|
@ -106,6 +106,7 @@ struct clock {
|
|||
int utc_offset;
|
||||
int time_flags; /* grand master role */
|
||||
int time_source; /* grand master role */
|
||||
UInteger8 max_steps_removed;
|
||||
enum servo_state servo_state;
|
||||
enum timestamp_type timestamping;
|
||||
tmv_t master_offset;
|
||||
|
@ -930,6 +931,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");
|
||||
|
||||
/* Harmonize the twoStepFlag with the time_stamping option. */
|
||||
if (config_harmonize_onestep(config)) {
|
||||
|
@ -1564,6 +1566,11 @@ int clock_slave_only(struct clock *c)
|
|||
return c->dds.flags & DDS_SLAVE_ONLY;
|
||||
}
|
||||
|
||||
UInteger8 clock_max_steps_removed(struct clock *c)
|
||||
{
|
||||
return c->max_steps_removed;
|
||||
}
|
||||
|
||||
UInteger16 clock_steps_removed(struct clock *c)
|
||||
{
|
||||
return c->cur.stepsRemoved;
|
||||
|
|
7
clock.h
7
clock.h
|
@ -260,6 +260,13 @@ int clock_poll(struct clock *c);
|
|||
*/
|
||||
int clock_slave_only(struct clock *c);
|
||||
|
||||
/**
|
||||
* Obtain the max steps removed field from a clock's default data set.
|
||||
* @param c The clock instance.
|
||||
* @return The value of the clock's max steps removed field.
|
||||
*/
|
||||
UInteger8 clock_max_steps_removed(struct clock *c);
|
||||
|
||||
/**
|
||||
* Obtain the steps removed field from a clock's current data set.
|
||||
* @param c The clock instance.
|
||||
|
|
1
config.c
1
config.c
|
@ -235,6 +235,7 @@ struct config_item config_tab[] = {
|
|||
PORT_ITEM_INT("logSyncInterval", 0, INT8_MIN, INT8_MAX),
|
||||
GLOB_ITEM_INT("logging_level", LOG_INFO, PRINT_LEVEL_MIN, PRINT_LEVEL_MAX),
|
||||
PORT_ITEM_INT("masterOnly", 0, 0, 1),
|
||||
GLOB_ITEM_INT("maxStepsRemoved", 255, 2, UINT8_MAX),
|
||||
GLOB_ITEM_STR("message_tag", NULL),
|
||||
GLOB_ITEM_STR("manufacturerIdentity", "00:00:00"),
|
||||
GLOB_ITEM_INT("max_frequency", 900000000, 0, INT_MAX),
|
||||
|
|
|
@ -7,5 +7,6 @@
|
|||
[global]
|
||||
dataset_comparison G.8275.x
|
||||
G.8275.defaultDS.localPriority 128
|
||||
maxStepsRemoved 255
|
||||
masterOnly 0
|
||||
G.8275.portDS.localPriority 128
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
[global]
|
||||
dataset_comparison G.8275.x
|
||||
G.8275.defaultDS.localPriority 128
|
||||
maxStepsRemoved 255
|
||||
masterOnly 0
|
||||
G.8275.portDS.localPriority 128
|
||||
hybrid_e2e 1
|
||||
|
|
|
@ -17,6 +17,7 @@ dscp_event 0
|
|||
dscp_general 0
|
||||
dataset_comparison ieee1588
|
||||
G.8275.defaultDS.localPriority 128
|
||||
maxStepsRemoved 255
|
||||
#
|
||||
# Port Data Set
|
||||
#
|
||||
|
|
5
port.c
5
port.c
|
@ -1711,10 +1711,7 @@ int process_announce(struct port *p, struct ptp_message *m)
|
|||
{
|
||||
int result = 0;
|
||||
|
||||
/* Do not qualify announce messages with stepsRemoved >= 255, see
|
||||
* IEEE1588-2008 section 9.3.2.5 (d)
|
||||
*/
|
||||
if (m->announce.stepsRemoved >= 255) {
|
||||
if (m->announce.stepsRemoved >= clock_max_steps_removed(p->clock)) {
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
7
ptp4l.8
7
ptp4l.8
|
@ -414,6 +414,13 @@ timing network without loops) only when using the default values of
|
|||
G.8275.defaultDS.localPriority and G.8275.portDS.localPriority.
|
||||
Careful network engineering is needed when using non-default values.
|
||||
.TP
|
||||
.B maxStepsRemoved
|
||||
When using this option, if the value of stepsRemoved of an Announce
|
||||
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 domainNumber
|
||||
The domain attribute of the local clock.
|
||||
The default is 0.
|
||||
|
|
Loading…
Reference in New Issue