ptp clock: Wait for ANNOUNCE before selecting a master
authorJan Schmidt <jan@centricular.com>
Thu, 11 Oct 2018 03:34:40 +0000 (14:34 +1100)
committerJan Schmidt <jan@centricular.com>
Thu, 11 Oct 2018 11:11:51 +0000 (22:11 +1100)
Previously, with opportunistic sync we'd track a master
clock as soon as we see a SYNC message, and hence sync up
faster, but then we'd announce we're synched before seeing
the ANNOUNCE, leaving the clock details like grandmaster-clock
empty.

A better way is to start tracking the clock opportunistically,
but not announce we're synched until we've also seen the ANNOUNCE.

libs/gst/net/gstptpclock.c

index 2db4175..c2d0915 100644 (file)
@@ -2405,8 +2405,9 @@ gst_ptp_clock_ensure_domain_clock (GstPtpClock * self)
       for (l = domain_clocks; l; l = l->next) {
         PtpDomainData *clock_data = l->data;
 
-        if (clock_data->domain == self->priv->domain
-            && clock_data->last_ptp_time != 0) {
+        if (clock_data->domain == self->priv->domain &&
+            clock_data->have_master_clock && clock_data->last_ptp_time != 0) {
+          GST_DEBUG ("Switching domain clock on domain %d", clock_data->domain);
           self->priv->domain_clock = clock_data->domain_clock;
           got_clock = TRUE;
           break;