Fix fault-clearing timer being erroneously re-armed
Arm the fault-clearing timer only when an event causes a port to change state to PS_FAULTY. Previously, if poll() returned because of an fd event other than the fault-clearing timeout, the fault clearing timer would re-arm for each port in PS_FAULTY state. Signed-off-by: Delio Brignoli <dbrignoli@audioscience.com>master
parent
b9aae07f87
commit
eec07ae240
9
clock.c
9
clock.c
|
@ -719,6 +719,10 @@ int clock_poll(struct clock *c)
|
|||
if (EV_ANNOUNCE_RECEIPT_TIMEOUT_EXPIRES == event)
|
||||
lost = 1;
|
||||
port_dispatch(c->port[i], event, 0);
|
||||
/* Clear any fault after a little while. */
|
||||
if (PS_FAULTY == port_state(c->port[i])) {
|
||||
clock_fault_timeout(c, i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -728,11 +732,6 @@ int clock_poll(struct clock *c)
|
|||
clock_fault_timeout(c, i, 0);
|
||||
port_dispatch(c->port[i], EV_FAULT_CLEARED, 0);
|
||||
}
|
||||
|
||||
/* Clear any fault after a little while. */
|
||||
if (PS_FAULTY == port_state(c->port[i])) {
|
||||
clock_fault_timeout(c, i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
/* Check the UDS port. */
|
||||
|
|
Loading…
Reference in New Issue