On Thu, Mar 30, 2023 at 11:16:44AM +0800, Hangbin Liu wrote:
> Richard, what do you think?

This code in hwts_init is wrong:

        cfg.flags = HWTSTAMP_FLAG_BONDED_PHC_INDEX;
        /* Fall back without flag if user run new build on old kernel */
        if (ioctl(fd, SIOCGHWTSTAMP, &ifreq) == -EINVAL)
                init_ifreq(&ifreq, &cfg, device);

As `man ioctl` says:

 RETURN VALUE
       Usually, on success zero is returned.  A few ioctl() requests  use  the
       return  value  as an output parameter and return a nonnegative value on
       success.  On error, -1 is returned, and errno is set appropriately.

So I think what you meant to write is this:

        cfg.flags = HWTSTAMP_FLAG_BONDED_PHC_INDEX;
        err = ioctl(fd, SIOCGHWTSTAMP, &ifreq);
        if (err < 0) {
                /* Fall back without flag if user run new build on old kernel */
                if (errno == EINVAL) {
                        init_ifreq(&ifreq, &cfg, device);
                } else {
                        pr_err("ioctl SIOCGHWTSTAMP failed: %m");
                        return err;
                }
        }

@Martin would that also fix your issue?

Thanks,
Richard


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

Reply via email to