ptp4l: add support for using configured_pi_f_offset servo option

This patch adds support for using the configured_pi_f_offset servo option to ptp4l.
If "pi_f_offset_const 0.0" is specified in the config file, stepping on the first
update is prevented. If any other positive value is specified, stepping on the
first update occurs when the offset is larger than the specified value.

change since v1
 - add the new option to default.cfg and gPTP.cfg

Signed-off-by: Ken ICHIKAWA <ichikawa.ken@jp.fujitsu.com>
master
Ken ICHIKAWA 2013-06-25 09:46:16 +09:00 committed by Richard Cochran
parent 28b8dc9996
commit fa41be7e6e
6 changed files with 17 additions and 1 deletions

View File

@ -313,6 +313,12 @@ static enum parser_result parse_global_setting(const char *option,
return r; return r;
*cfg->pi_offset_const = df; *cfg->pi_offset_const = df;
} else if (!strcmp(option, "pi_f_offset_const")) {
r = get_ranged_double(value, &df, 0.0, DBL_MAX);
if (r != PARSED_OK)
return r;
*cfg->pi_f_offset_const = df;
} else if (!strcmp(option, "pi_max_frequency")) { } else if (!strcmp(option, "pi_max_frequency")) {
r = get_ranged_int(value, &val, 0, INT_MAX); r = get_ranged_int(value, &val, 0, INT_MAX);
if (r != PARSED_OK) if (r != PARSED_OK)

View File

@ -76,6 +76,7 @@ struct config {
double *pi_proportional_const; double *pi_proportional_const;
double *pi_integral_const; double *pi_integral_const;
double *pi_offset_const; double *pi_offset_const;
double *pi_f_offset_const;
int *pi_max_frequency; int *pi_max_frequency;
unsigned char *ptp_dst_mac; unsigned char *ptp_dst_mac;

View File

@ -41,6 +41,7 @@ kernel_leap 1
pi_proportional_const 0.0 pi_proportional_const 0.0
pi_integral_const 0.0 pi_integral_const 0.0
pi_offset_const 0.0 pi_offset_const 0.0
pi_f_offset_const 0.0000001
pi_max_frequency 900000000 pi_max_frequency 900000000
clock_servo pi clock_servo pi
# #

View File

@ -40,6 +40,7 @@ kernel_leap 1
pi_proportional_const 0.0 pi_proportional_const 0.0
pi_integral_const 0.0 pi_integral_const 0.0
pi_offset_const 0.0 pi_offset_const 0.0
pi_f_offset_const 0.0000001
pi_max_frequency 900000000 pi_max_frequency 900000000
clock_servo pi clock_servo pi
# #

View File

@ -268,9 +268,15 @@ The default is 0.0.
.B pi_offset_const .B pi_offset_const
The maximum offset the PI controller will correct by changing the clock The maximum offset the PI controller will correct by changing the clock
frequency instead of stepping the clock. When set to 0.0, the controller will frequency instead of stepping the clock. When set to 0.0, the controller will
never step the clock. never step the clock except on start.
The default is 0.0. The default is 0.0.
.TP .TP
.B pi_f_offset_const
The maximum offset the PI controller will correct by changing the clock
frequency instead of stepping the clock. This is only applied on the first
update. When set to 0.0, the controller won't step the clock on start.
The default is 0.0000001 (100 nanoseconds).
.TP
.B pi_max_frequency .B pi_max_frequency
The maximum allowed frequency adjustment of the clock in parts per billion The maximum allowed frequency adjustment of the clock in parts per billion
(ppb). This is an additional limit to the maximum allowed by the hardware. When (ppb). This is an additional limit to the maximum allowed by the hardware. When

View File

@ -96,6 +96,7 @@ static struct config cfg_settings = {
.pi_proportional_const = &configured_pi_kp, .pi_proportional_const = &configured_pi_kp,
.pi_integral_const = &configured_pi_ki, .pi_integral_const = &configured_pi_ki,
.pi_offset_const = &configured_pi_offset, .pi_offset_const = &configured_pi_offset,
.pi_f_offset_const = &configured_pi_f_offset,
.pi_max_frequency = &configured_pi_max_freq, .pi_max_frequency = &configured_pi_max_freq,
.ptp_dst_mac = ptp_dst_mac, .ptp_dst_mac = ptp_dst_mac,