phc2sys: automatic mode: synchronize all non-slave ports.
When running a "jbod" Boundary Clock, as long as we have one slaved port, we always want the clocks on the other ports to be synchronized, regardless of their port state. Signed-off-by: Richard Cochran <richardcochran@gmail.com> Acked-by: Jiri Benc <jbenc@redhat.com>master
parent
e706f48981
commit
e1ea4ea810
40
phc2sys.c
40
phc2sys.c
|
@ -313,14 +313,23 @@ static void reconfigure(struct node *node)
|
||||||
c->new_state = 0;
|
c->new_state = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->state == PS_SLAVE) {
|
switch (c->state) {
|
||||||
src = c;
|
case PS_FAULTY:
|
||||||
src_cnt++;
|
case PS_DISABLED:
|
||||||
} else if (c->state == PS_UNCALIBRATED) {
|
case PS_LISTENING:
|
||||||
src_cnt++;
|
case PS_PRE_MASTER:
|
||||||
} else if (c->state == PS_MASTER) {
|
case PS_MASTER:
|
||||||
|
case PS_PASSIVE:
|
||||||
pr_info("selecting %s for synchronization", c->device);
|
pr_info("selecting %s for synchronization", c->device);
|
||||||
dst_cnt++;
|
dst_cnt++;
|
||||||
|
break;
|
||||||
|
case PS_UNCALIBRATED:
|
||||||
|
src_cnt++;
|
||||||
|
break;
|
||||||
|
case PS_SLAVE:
|
||||||
|
src = c;
|
||||||
|
src_cnt++;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (src_cnt > 1) {
|
if (src_cnt > 1) {
|
||||||
|
@ -562,6 +571,23 @@ static int do_pps_loop(struct node *node, struct clock *clock, int fd)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int update_needed(struct clock *c)
|
||||||
|
{
|
||||||
|
switch (c->state) {
|
||||||
|
case PS_FAULTY:
|
||||||
|
case PS_DISABLED:
|
||||||
|
case PS_LISTENING:
|
||||||
|
case PS_PRE_MASTER:
|
||||||
|
case PS_MASTER:
|
||||||
|
case PS_PASSIVE:
|
||||||
|
return 1;
|
||||||
|
case PS_UNCALIBRATED:
|
||||||
|
case PS_SLAVE:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
static int do_loop(struct node *node, int subscriptions)
|
static int do_loop(struct node *node, int subscriptions)
|
||||||
{
|
{
|
||||||
struct timespec interval;
|
struct timespec interval;
|
||||||
|
@ -593,7 +619,7 @@ static int do_loop(struct node *node, int subscriptions)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
LIST_FOREACH(clock, &node->clocks, list) {
|
LIST_FOREACH(clock, &node->clocks, list) {
|
||||||
if (clock->state != PS_MASTER)
|
if (!update_needed(clock))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (clock->clkid == CLOCK_REALTIME &&
|
if (clock->clkid == CLOCK_REALTIME &&
|
||||||
|
|
Loading…
Reference in New Issue