From 95a629624f61cfc04b6d86e4dabbbee2b17fafe9 Mon Sep 17 00:00:00 2001 From: Richard Cochran Date: Sat, 15 Aug 2015 10:46:05 +0200 Subject: [PATCH] config: port: convert 'delayAsymmetry' to the new scheme. Signed-off-by: Richard Cochran --- config.c | 9 ++------- ds.h | 1 - port.c | 11 +++++++---- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/config.c b/config.c index c1d5aeb..678471a 100644 --- a/config.c +++ b/config.c @@ -93,6 +93,7 @@ struct config_item { struct config_item config_tab[] = { GLOB_ITEM_INT("assume_two_step", 0, 0, 1), GLOB_ITEM_INT("check_fup_sync", 0, 0, 1), + PORT_ITEM_INT("delayAsymmetry", 0, INT_MIN, INT_MAX), GLOB_ITEM_DBL("first_step_threshold", 0.00002, 0.0, DBL_MAX), GLOB_ITEM_INT("logging_level", LOG_INFO, PRINT_LEVEL_MIN, PRINT_LEVEL_MAX), GLOB_ITEM_INT("max_frequency", 900000000, 0, INT_MAX), @@ -262,13 +263,7 @@ static enum parser_result parse_pod_setting(const char *option, enum parser_result r; - if (!strcmp(option, "delayAsymmetry")) { - r = get_ranged_int(value, &val, INT_MIN, INT_MAX); - if (r != PARSED_OK) - return r; - pod->asymmetry = (Integer64) val << 16; - - } else if (!strcmp(option, "logAnnounceInterval")) { + if (!strcmp(option, "logAnnounceInterval")) { r = get_ranged_int(value, &val, INT8_MIN, INT8_MAX); if (r != PARSED_OK) return r; diff --git a/ds.h b/ds.h index 162687a..fc3487d 100644 --- a/ds.h +++ b/ds.h @@ -125,7 +125,6 @@ struct portDS { #define FRI_ASAP (-128) struct port_defaults { - Integer64 asymmetry; Integer8 logAnnounceInterval; Integer8 logSyncInterval; Integer8 logMinDelayReqInterval; diff --git a/port.c b/port.c index 028df32..bad7acc 100644 --- a/port.c +++ b/port.c @@ -97,6 +97,7 @@ struct port { struct port_defaults pod; struct PortIdentity portIdentity; enum port_state state; /*portState*/ + Integer64 asymmetry; int asCapable; Integer8 logMinDelayReqInterval; TimeInterval peerMeanPathDelay; @@ -1148,7 +1149,7 @@ static int port_pdelay_request(struct port *p) msg->header.ver = PTP_VERSION; msg->header.messageLength = sizeof(struct pdelay_req_msg); msg->header.domainNumber = clock_domain_number(p->clock); - msg->header.correction = -p->pod.asymmetry; + msg->header.correction = -p->asymmetry; msg->header.sourcePortIdentity = p->portIdentity; msg->header.sequenceId = p->seqnum.delayreq++; msg->header.control = CTL_OTHER; @@ -1205,7 +1206,7 @@ static int port_delay_request(struct port *p) msg->header.ver = PTP_VERSION; msg->header.messageLength = sizeof(struct delay_req_msg); msg->header.domainNumber = clock_domain_number(p->clock); - msg->header.correction = -p->pod.asymmetry; + msg->header.correction = -p->asymmetry; msg->header.sourcePortIdentity = p->portIdentity; msg->header.sequenceId = p->seqnum.delayreq++; msg->header.control = CTL_DELAY_REQ; @@ -1817,7 +1818,7 @@ static void port_peer_delay(struct port *p) t1 = timespec_to_tmv(req->hwts.ts); t4 = timespec_to_tmv(rsp->hwts.ts); - c1 = correction_to_tmv(rsp->header.correction + p->pod.asymmetry); + c1 = correction_to_tmv(rsp->header.correction + p->asymmetry); /* Process one-step response immediately. */ if (one_step(rsp)) { @@ -1953,7 +1954,7 @@ static void process_sync(struct port *p, struct ptp_message *m) clock_sync_interval(p->clock, p->log_sync_interval); } - m->header.correction += p->pod.asymmetry; + m->header.correction += p->asymmetry; if (one_step(m)) { port_synchronize(p, m->hwts.ts, m->ts.pdu, @@ -2524,6 +2525,8 @@ struct port *port_open(int phc_index, p->pod = interface->pod; p->name = interface->name; + p->asymmetry = config_get_int(cfg, p->name, "delayAsymmetry"); + p->asymmetry <<= 16; p->clock = clock; p->trp = transport_create(cfg, interface->transport); if (!p->trp)