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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to