On Thu, Jun 25, 2015 at 04:42:57PM -0700, Christopher Hall wrote:
> @@ -196,19 +196,31 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int
> cmd, unsigned long arg)
> break;
> }
> pct = &sysoff->ts[0];
> - for (i = 0; i < sysoff->n_samples; i++) {
> - getnstimeofday64(&ts);
> + if (ptp->info->getsynctime64 && sysoff->n_samples == 1) {
> + ptp->info->getsynctime64(ptp->info, &ts, &systs);
> + pct->sec = systs.tv_sec;
> + pct->nsec = systs.tv_nsec;
> + ++pct;
Please use pct++ for the sake of consistency.
> pct->sec = ts.tv_sec;
> pct->nsec = ts.tv_nsec;
> - pct++;
> - ptp->info->gettime64(ptp->info, &ts);
> + ++pct;
> + pct->sec = systs.tv_sec;
> + pct->nsec = systs.tv_nsec;
> + } else {
> + for (i = 0; i < sysoff->n_samples; i++) {
> + getnstimeofday64(&ts);
> + pct->sec = ts.tv_sec;
> + pct->nsec = ts.tv_nsec;
> + pct++;
> + ptp->info->gettime64(ptp->info, &ts);
> + pct->sec = ts.tv_sec;
> + pct->nsec = ts.tv_nsec;
> + pct++;
> + }
> + getnstimeofday64(&ts);
> pct->sec = ts.tv_sec;
> pct->nsec = ts.tv_nsec;
> - pct++;
> }
> - getnstimeofday64(&ts);
> - pct->sec = ts.tv_sec;
> - pct->nsec = ts.tv_nsec;
> if (copy_to_user((void __user *)arg, sysoff, sizeof(*sysoff)))
> err = -EFAULT;
> break;
> diff --git a/include/linux/ptp_clock_kernel.h
> b/include/linux/ptp_clock_kernel.h
> index b8b7306..edff9a5 100644
> --- a/include/linux/ptp_clock_kernel.h
> +++ b/include/linux/ptp_clock_kernel.h
> @@ -105,6 +105,9 @@ struct ptp_clock_info {
> int (*adjfreq)(struct ptp_clock_info *ptp, s32 delta);
> int (*adjtime)(struct ptp_clock_info *ptp, s64 delta);
> int (*gettime64)(struct ptp_clock_info *ptp, struct timespec64 *ts);
> + int (*getsynctime64)
> + (struct ptp_clock_info *ptp, struct timespec64 *dev,
> + struct timespec64 *sys);
The struct's KernelDoc also needs updating.
> int (*settime64)(struct ptp_clock_info *p, const struct timespec64 *ts);
> int (*enable)(struct ptp_clock_info *ptp,
> struct ptp_clock_request *request, int on);
> --
> 1.9.1
Thanks,
Richard
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html