Re: [Linuxptp-devel] [PATCH] clock: Split update of leap status from clock_time_properties().

2021-10-10 Thread Richard Cochran
On Wed, Oct 06, 2021 at 10:36:28AM +0200, Miroslav Lichvar wrote:
> Add a separate function for the update of the grandmaster's state after
> a leap second to avoid making modifications in clock_time_properties()
> and call it on each master announce tx timeout.
> 
> Suggested-by: Richard Cochran 
> Signed-off-by: Miroslav Lichvar 

Thanks for following up on this!

Applied.

Thanks,
Richard


___
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel


[Linuxptp-devel] [PATCH] clock: Split update of leap status from clock_time_properties().

2021-10-06 Thread Miroslav Lichvar
Add a separate function for the update of the grandmaster's state after
a leap second to avoid making modifications in clock_time_properties()
and call it on each master announce tx timeout.

Suggested-by: Richard Cochran 
Signed-off-by: Miroslav Lichvar 
---
 clock.c | 8 ++--
 clock.h | 7 +++
 port.c  | 1 +
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/clock.c b/clock.c
index 61c9563..bbfd1a8 100644
--- a/clock.c
+++ b/clock.c
@@ -1897,7 +1897,7 @@ void clock_sync_interval(struct clock *c, int n)
servo_sync_interval(c->servo, n < 0 ? 1.0 / (1 << -n) : 1 << n);
 }
 
-static void clock_update_utc_offset(struct clock *c)
+void clock_update_leap_status(struct clock *c)
 {
struct timespec ts;
int leap;
@@ -1932,11 +1932,7 @@ static void clock_update_utc_offset(struct clock *c)
 
 struct timePropertiesDS clock_time_properties(struct clock *c)
 {
-   struct timePropertiesDS tds;
-
-   clock_update_utc_offset(c);
-
-   tds = c->tds;
+   struct timePropertiesDS tds = c->tds;
 
switch (c->local_sync_uncertain) {
case SYNC_UNCERTAIN_DONTCARE:
diff --git a/clock.h b/clock.h
index e2a3e36..0534f21 100644
--- a/clock.h
+++ b/clock.h
@@ -339,6 +339,13 @@ enum servo_state clock_synchronize(struct clock *c, tmv_t 
ingress,
  */
 void clock_sync_interval(struct clock *c, int n);
 
+/**
+ * Update the clock leap bits and UTC offset after a leap second
+ * if operating as a grandmaster.
+ * @param c  The clock instance.
+ */
+void clock_update_leap_status(struct clock *c);
+
 /**
  * Obtain a clock's time properties data set.
  * @param c  The clock instance.
diff --git a/port.c b/port.c
index d5119b7..6e6b0aa 100644
--- a/port.c
+++ b/port.c
@@ -2705,6 +2705,7 @@ static enum fsm_event bc_event(struct port *p, int 
fd_index)
case FD_MANNO_TIMER:
pr_debug("%s: master tx announce timeout", p->log_name);
port_set_manno_tmo(p);
+   clock_update_leap_status(p->clock);
return port_tx_announce(p, NULL) ? EV_FAULT_DETECTED : EV_NONE;
 
case FD_SYNC_TX_TIMER:
-- 
2.26.3



___
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel