When the master clock changed its state and then changed it back to the
original state before phc2sys could process the first change, e.g. SLAVE
-> UNCALIBRATED -> SLAVE after a clockcheck failure, the second change
was ignored because the new value was the same as the original state,
which wasn't updated for the first change yet. This caused phc2sys to be
stuck with a wrong state.

Fix phc2sys to check both the state and new_state variables of the clock.

Signed-off-by: Miroslav Lichvar <[email protected]>
---
 phc2sys.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/phc2sys.c b/phc2sys.c
index b6f6719..e2b5c47 100644
--- a/phc2sys.c
+++ b/phc2sys.c
@@ -786,7 +786,7 @@ static int recv_subscribed(struct node *node, struct 
ptp_message *msg,
                        port->state = state;
                        clock = port->clock;
                        state = clock_compute_state(node, clock);
-                       if (clock->state != state) {
+                       if (clock->state != state || clock->new_state) {
                                clock->new_state = state;
                                node->state_changed = 1;
                        }
-- 
2.9.3


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Linuxptp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to