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

Reply via email to