conf: add minpoll option to hwtimestamp directive
This commit is contained in:
parent
9800e397fb
commit
510784077f
4 changed files with 16 additions and 2 deletions
6
conf.c
6
conf.c
|
@ -1259,6 +1259,7 @@ parse_hwtimestamp(char *line)
|
||||||
|
|
||||||
iface = ARR_GetNewElement(hwts_interfaces);
|
iface = ARR_GetNewElement(hwts_interfaces);
|
||||||
iface->name = Strdup(p);
|
iface->name = Strdup(p);
|
||||||
|
iface->minpoll = 0;
|
||||||
iface->precision = 100.0e-9;
|
iface->precision = 100.0e-9;
|
||||||
iface->tx_comp = 0.0;
|
iface->tx_comp = 0.0;
|
||||||
iface->rx_comp = 0.0;
|
iface->rx_comp = 0.0;
|
||||||
|
@ -1266,7 +1267,10 @@ parse_hwtimestamp(char *line)
|
||||||
for (p = line; *p; line += n, p = line) {
|
for (p = line; *p; line += n, p = line) {
|
||||||
line = CPS_SplitWord(line);
|
line = CPS_SplitWord(line);
|
||||||
|
|
||||||
if (!strcasecmp(p, "precision")) {
|
if (!strcasecmp(p, "minpoll")) {
|
||||||
|
if (sscanf(line, "%d%n", &iface->minpoll, &n) != 1)
|
||||||
|
break;
|
||||||
|
} else if (!strcasecmp(p, "precision")) {
|
||||||
if (sscanf(line, "%lf%n", &iface->precision, &n) != 1)
|
if (sscanf(line, "%lf%n", &iface->precision, &n) != 1)
|
||||||
break;
|
break;
|
||||||
} else if (!strcasecmp(p, "rxcomp")) {
|
} else if (!strcasecmp(p, "rxcomp")) {
|
||||||
|
|
1
conf.h
1
conf.h
|
@ -121,6 +121,7 @@ extern double CNF_GetInitStepThreshold(void);
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
char *name;
|
char *name;
|
||||||
|
int minpoll;
|
||||||
double precision;
|
double precision;
|
||||||
double tx_comp;
|
double tx_comp;
|
||||||
double rx_comp;
|
double rx_comp;
|
||||||
|
|
|
@ -1818,6 +1818,12 @@ on all available interfaces.
|
||||||
+
|
+
|
||||||
The *hwtimestamp* directive has the following options:
|
The *hwtimestamp* directive has the following options:
|
||||||
+
|
+
|
||||||
|
*minpoll* _poll_:::
|
||||||
|
This option specifies the minimum interval between readings of the NIC clock.
|
||||||
|
It's defined as a power of two. It should correspond to the minimum polling
|
||||||
|
interval of all NTP sources and the minimum expected polling interval of NTP
|
||||||
|
clients. The default value is 0 (1 second) and the minimum value is -6 (1/64th
|
||||||
|
of a second).
|
||||||
*precision* _precision_:::
|
*precision* _precision_:::
|
||||||
This option specifies the assumed precision of reading of the NIC clock. The
|
This option specifies the assumed precision of reading of the NIC clock. The
|
||||||
default value is 100e-9 (100 nanoseconds).
|
default value is 100e-9 (100 nanoseconds).
|
||||||
|
|
|
@ -77,6 +77,9 @@ struct Interface {
|
||||||
/* Number of PHC readings per HW clock sample */
|
/* Number of PHC readings per HW clock sample */
|
||||||
#define PHC_READINGS 10
|
#define PHC_READINGS 10
|
||||||
|
|
||||||
|
/* Minimum interval between PHC readings */
|
||||||
|
#define MIN_PHC_POLL -6
|
||||||
|
|
||||||
/* Maximum acceptable offset between HW and daemon/kernel timestamp */
|
/* Maximum acceptable offset between HW and daemon/kernel timestamp */
|
||||||
#define MAX_TS_DELAY 1.0
|
#define MAX_TS_DELAY 1.0
|
||||||
|
|
||||||
|
@ -179,7 +182,7 @@ add_interface(CNF_HwTsInterface *conf_iface)
|
||||||
iface->tx_comp = conf_iface->tx_comp;
|
iface->tx_comp = conf_iface->tx_comp;
|
||||||
iface->rx_comp = conf_iface->rx_comp;
|
iface->rx_comp = conf_iface->rx_comp;
|
||||||
|
|
||||||
iface->clock = HCL_CreateInstance(1.0);
|
iface->clock = HCL_CreateInstance(UTI_Log2ToDouble(MAX(conf_iface->minpoll, MIN_PHC_POLL)));
|
||||||
|
|
||||||
DEBUG_LOG(LOGF_NtpIOLinux, "Enabled HW timestamping on %s", iface->name);
|
DEBUG_LOG(LOGF_NtpIOLinux, "Enabled HW timestamping on %s", iface->name);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue