On Mon, Apr 24, 2023 at 12:21:57PM -0700, Jacob Keller wrote:
> The power profile configuration options added in commit 7059a05a3fb2
> ("Introduce the power profile.") specify their maximum range as INT_MAX.
> The values are stored as UInteger32 values and the default value is
> 0xFFFFFFFF. On most platforms, a signed integer cannot hold 0xFFFFFFFF, and
> on these platforms ptp4l is unable to read the default configuration file:
>
> $ ./ptp4l -f configs/default.cfg -i eno0
> 0xFFFFFFFF is an out of range value for option
> power_profile.2011.grandmasterTimeInaccuracy at line 44
> failed to parse configuration file configs/default.cfg
Jacob,
Thanks for finding this. I'd like to fix it in a simpler way.
Do you agree?
Thanks,
Richard
---
>From 5cfba921f9bf1f97028c5f999c399e9bb554cfd7 Mon Sep 17 00:00:00 2001
From: Richard Cochran <[email protected]>
Date: Sun, 30 Apr 2023 13:32:06 -0700
Subject: [PATCH] power profile: Fix regression in the default configuration
file.
The recently added power profile introduced a regression when reading
the default configuration file:
$ ./ptp4l -f configs/default.cfg -m -q
0xFFFFFFFF is an out of range value for option
power_profile.2011.grandmasterTimeInaccuracy at line 44
failed to parse configuration file configs/default.cfg
Root cause is the fact that the value 0xffffffff exceeds the range of
the signed, four byte integer used in the configuration logic.
Considering that the power profile's "Inaccuracy" field uses
0xffffffff as a special value meaning "unknown", expand the range
of these options to include -1 as that special value.
Fixes: 7059a05a3fb2182e851217c8872cf47126ec4c4c ("Introduce the power profile.")
Reported-by: Jacob Keller <[email protected]>
Signed-off-by: Richard Cochran <[email protected]>
---
config.c | 6 +++---
configs/default.cfg | 6 +++---
ptp4l.8 | 7 +++----
3 files changed, 9 insertions(+), 10 deletions(-)
diff --git a/config.c b/config.c
index cb4421f..b104f1b 100644
--- a/config.c
+++ b/config.c
@@ -309,9 +309,9 @@ struct config_item config_tab[] = {
GLOB_ITEM_DBL("pi_proportional_norm_max", 0.7, DBL_MIN, 1.0),
GLOB_ITEM_DBL("pi_proportional_scale", 0.0, 0.0, DBL_MAX),
PORT_ITEM_ENU("power_profile.version", IEEE_C37_238_VERSION_NONE,
ieee_c37_238_enu),
- PORT_ITEM_INT("power_profile.2011.grandmasterTimeInaccuracy",
0xFFFFFFFF, 0, INT_MAX),
- PORT_ITEM_INT("power_profile.2011.networkTimeInaccuracy", 0, 0,
INT_MAX),
- PORT_ITEM_INT("power_profile.2017.totalTimeInaccuracy", 0xFFFFFFFF, 0,
INT_MAX),
+ PORT_ITEM_INT("power_profile.2011.grandmasterTimeInaccuracy",
0xFFFFFFFF, -1, INT_MAX),
+ PORT_ITEM_INT("power_profile.2011.networkTimeInaccuracy", 0xFFFFFFFF,
-1, INT_MAX),
+ PORT_ITEM_INT("power_profile.2017.totalTimeInaccuracy", 0xFFFFFFFF, -1,
INT_MAX),
PORT_ITEM_INT("power_profile.grandmasterID", 0, 0, 0xFFFF),
GLOB_ITEM_INT("priority1", 128, 0, UINT8_MAX),
GLOB_ITEM_INT("priority2", 128, 0, UINT8_MAX),
diff --git a/configs/default.cfg b/configs/default.cfg
index a21ec66..00429b9 100644
--- a/configs/default.cfg
+++ b/configs/default.cfg
@@ -41,9 +41,9 @@ BMCA ptp
inhibit_announce 0
inhibit_delay_req 0
ignore_source_id 0
-power_profile.2011.grandmasterTimeInaccuracy 0xFFFFFFFF
-power_profile.2011.networkTimeInaccuracy 0
-power_profile.2017.totalTimeInaccuracy 0xFFFFFFFF
+power_profile.2011.grandmasterTimeInaccuracy -1
+power_profile.2011.networkTimeInaccuracy -1
+power_profile.2017.totalTimeInaccuracy -1
power_profile.grandmasterID 0
power_profile.version none
#
diff --git a/ptp4l.8 b/ptp4l.8
index bb678c9..09ff108 100644
--- a/ptp4l.8
+++ b/ptp4l.8
@@ -365,22 +365,21 @@ the interface, or the device specified by the \fB-p\fP
option.
Specifies the time inaccuracy of the GM in nanoseconds. Relevant only
when power_profile.version is 2011. This value may be changed
dynamically using the POWER_PROFILE_SETTINGS_NP management message.
-The default is 0xFFFFFFFF.
+The default is -1 meaning unknown inaccuracy.
.TP
.B power_profile.2011.networkTimeInaccuracy
Specifies the time inaccuracy of the network in nanoseconds. Relevant
only when power_profile.version is 2011. This value may be changed
dynamically using the POWER_PROFILE_SETTINGS_NP management message.
-The default is 0xFFFFFFFF.
+The default is -1 meaning unknown inaccuracy.
.TP
.B power_profile.2017.totalTimeInaccuracy
Specifies the sum of the GM, network, and local node inaccuracies in
nanoseconds. Relevant only when power_profile.version is 2017. This
value may be changed dynamically using the POWER_PROFILE_SETTINGS_NP
-management message. The default is 0xFFFFFFFF meaning unknown
-inaccuracy.
+management message. The default is -1 meaning unknown inaccuracy.
.TP
.B power_profile.grandmasterID
--
2.30.2
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel