On Fri, 19 Jun 2020 at 15:15, Richard Cochran <richardcoch...@gmail.com> wrote:
>
> On Fri, Jun 19, 2020 at 03:12:57PM +0300, Vladimir Oltean wrote:
> > Perhaps the most frustrating thing to me, after debugging that system
> > issue, is that ptp4l had all means necessary to detect a system issue,
> > but it preferred to remain oblivious to it.
>
> This is a production PTP stack and not an operating system validation
> tool.
>
> Thanks,
> Richard

So that's how you want to play it.
Why does it contain this code then?

    if (flags == MSG_ERRQUEUE) {
        struct pollfd pfd = { fd, sk_events, 0 };
        res = poll(&pfd, 1, sk_tx_timeout);
        if (res < 1) {
            pr_err(res ? "poll for tx timestamp failed: %m" :
                         "timed out while polling for tx timestamp");
            pr_err("increasing tx_timestamp_timeout may correct "
                   "this issue, but it is likely caused by a driver bug");
            return -errno;

What business has ptp4l to say that TX timestamps not being delivered
within 1 ms to the application are indicative of a driver bug? You and
I know full well that there's a lot of hardware which simply can't
deliver timestamps that fast, and that there's nothing wrong with it.
No need to shame here, really.

Or this check, right below:

        } else if (!(pfd.revents & sk_revents)) {
            pr_err("poll for tx timestamp woke up on non ERR event");
            return -1;
        }
    }

I mean, shouldn't happen, and if it does, it's not ptp4l's fault, right?

And what is with this hack?

check_fup_sync
              Because  of packet reordering that can occur in the network, in
              the hardware, or in the networking stack, a follow up
message can appear to
              arrive in the application before the matching sync message. As
              this is a normal occurrence, and the sequenceID message field
              ensures proper matching, the ptp4l program accepts out of order
              packets. This option  adds  an  additional check  using  the
              software time stamps from the networking stack to verify that the
              sync message did arrive first. This option is only useful if you
              do not trust the sequence IDs generated by the master.
               The default is 0 (disabled).

Why would the network stack need additional validation via software
timestamps? I mean, it's not ptp4l's fault that timestamps were not
delivered in the right order. I thought the linuxptp suite is trying
to be helpful instead of pedantic, I'm starting to change my opinion.

Thanks,
-Vladimir


_______________________________________________
Linuxptp-devel mailing list
Linuxptp-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linuxptp-devel

Reply via email to