On Fri, 19 Jun 2020 at 21:20, Richard Cochran <richardcoch...@gmail.com> wrote: > > On Fri, Jun 19, 2020 at 07:33:03PM +0300, Vladimir Oltean wrote: > > Then it is not correct to "continue" the loop, since it will keep > > iterating through the pollfd array for sockets that were closed in the > > meantime. > > And don't we want to set up a fault timer, to clear it eventually? > > Ah! Right you are ... > > diff --git a/clock.c b/clock.c > index f43cc2a..a66d189 100644 > --- a/clock.c > +++ b/clock.c > @@ -1559,8 +1559,14 @@ int clock_poll(struct clock *c) > LIST_FOREACH(p, &c->ports, list) { > /* Let the ports handle their events. */ > for (i = 0; i < N_POLLFD; i++) { > - if (cur[i].revents & (POLLIN|POLLPRI)) { > - event = port_event(p, i); > + if (cur[i].revents & (POLLIN|POLLPRI|POLLERR)) { > + if (cur[i].revents & POLLERR) { > + pr_err("port %d: unexpected socket > error", > + port_number(p)); > + event = EV_FAULT_DETECTED; > + } else { > + event = port_event(p, i); > + } > if (EV_STATE_DECISION_EVENT == event) { > c->sde = 1; > }
Yes, much better. ptp4l[12509.967]: selected /dev/ptp3 as PTP clock transport_open: 37 ptp4l[12510.004]: port 1: INITIALIZING to LISTENING on INIT_COMPLETE transport_open: 37 ptp4l[12510.005]: port 0: INITIALIZING to LISTENING on INIT_COMPLETE ptp4l[12510.157]: port 1: unexpected socket error ptp4l[12510.157]: port 1: LISTENING to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED) transport_open: 37 ptp4l[12526.220]: port 1: FAULTY to LISTENING on INIT_COMPLETE ptp4l[12527.158]: port 1: unexpected socket error ptp4l[12527.158]: port 1: LISTENING to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED) transport_open: 37 ptp4l[12543.220]: port 1: FAULTY to LISTENING on INIT_COMPLETE ptp4l[12544.162]: port 1: unexpected socket error ptp4l[12544.162]: port 1: LISTENING to FAULTY on FAULT_DETECTED (FT_UNSPECIFIED) Thanks, -Vladimir _______________________________________________ Linuxptp-devel mailing list Linuxptp-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/linuxptp-devel