On Tue, Feb 14, 2023 at 09:00:54PM -0800, Richard Cochran wrote:
> @@ -205,6 +206,24 @@ static void do_set_action(struct pmc *pmc, int action,
> int index, char *str)
> }
> pmc_send_set_action(pmc, code, &mtd, sizeof(mtd));
> break;
> + case MID_ALTERNATE_TIME_OFFSET_PROPERTIES:
> + memset(&atop, 0, sizeof(atop));
> + cnt = sscanf(str, " %*s %*s "
> + "keyField %hhu "
> + "currentOffset %d "
> + "jumpSeconds %d "
> + "timeOfNextJump %u ",
> + &atop.keyField,
> + &atop.currentOffset,
> + &atop.jumpSeconds,
> + &atop.timeOfNextJump.seconds_lsb);
Another instance of the Y2106 problem :).
With this patch it works for me (new test in the testsuite):
--- a/pmc_common.c
+++ b/pmc_common.c
@@ -179,6 +179,7 @@ static void do_set_action(struct pmc *pmc, int action, int
index, char *str)
char onoff_port_state[4] = "off";
char onoff_time_status[4] = "off";
char display_name[11] = {0};
+ uint64_t jump;
uint8_t key;
int enable;
@@ -239,16 +240,18 @@ static void do_set_action(struct pmc *pmc, int action,
int index, char *str)
"keyField %hhu "
"currentOffset %d "
"jumpSeconds %d "
- "timeOfNextJump %u ",
+ "timeOfNextJump %" SCNu64,
&atop.keyField,
&atop.currentOffset,
&atop.jumpSeconds,
- &atop.timeOfNextJump.seconds_lsb);
+ &jump);
if (cnt != 4) {
fprintf(stderr, "%s SET needs 4 values\n",
idtab[index].name);
break;
}
+ atop.timeOfNextJump.seconds_lsb = jump & 0xffffffff;
+ atop.timeOfNextJump.seconds_msb = jump >> 32;
pmc_send_set_action(pmc, code, &atop, sizeof(atop));
break;
case MID_GRANDMASTER_SETTINGS_NP:
The rest of the patchset looks good to me.
--
Miroslav Lichvar
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel