Re: [RFC v5 5/6] Add PTP_SYS_OFFSET_PRECISE for driver crosstimestamping

2016-01-06 Thread Christopher Hall

Hi Richard,

This all sounds fine.  Thanks for the feedback.  I'll roll this into the  
next patchset.


Chris

On Tue, 05 Jan 2016 07:27:32 -0800, Richard Cochran  
 wrote:

On Mon, Jan 04, 2016 at 04:45:22AM -0800, Christopher S. Hall wrote:

+   case PTP_SYS_OFFSET_PRECISE:
+   if (!ptp->info->getsynctime) {
+   err = -EINVAL;


-EOPNOTSUPP would be better here.


+   precise_offset.sys_real.sec =
+   div_u64_rem(ktime_to_ns(xtstamp.sys_realtime),
+   NSEC_PER_SEC, &rem);
+   precise_offset.sys_real.nsec = rem;


How about this instead:

ts = ktime_to_timespec64(xtstamp.sys_realtime);
precise_offset.sys_real.sec = ts.tv_sec;
precise_offset.sys_real.nsec = ts.tv_nsec;


+   precise_offset.sys_raw.sec =
+   div_u64_rem(ktime_to_ns(xtstamp.sys_monoraw),
+   NSEC_PER_SEC, &rem);
+   precise_offset.sys_raw.nsec = rem;
+   precise_offset.dev.sec =
+   div_u64_rem(ktime_to_ns(xtstamp.device), NSEC_PER_SEC,
+   &rem);
+   precise_offset.dev.nsec = rem;


And for these as well.

Thanks,
Richard

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [RFC v5 5/6] Add PTP_SYS_OFFSET_PRECISE for driver crosstimestamping

2016-01-05 Thread Richard Cochran
On Mon, Jan 04, 2016 at 04:45:22AM -0800, Christopher S. Hall wrote:
> @@ -138,6 +142,7 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, 
> unsigned long arg)
>   caps.n_per_out = ptp->info->n_per_out;
>   caps.pps = ptp->info->pps;
>   caps.n_pins = ptp->info->n_pins;
> + caps.cross_timestamping = ptp->info->getsynctime != NULL;
>   if (copy_to_user((void __user *)arg, &caps, sizeof(caps)))
>   err = -EFAULT;
>   break;
> @@ -180,6 +185,32 @@ long ptp_ioctl(struct posix_clock *pc, unsigned int cmd, 
> unsigned long arg)
>   err = ops->enable(ops, &req, enable);
>   break;
>  
> + case PTP_SYS_OFFSET_PRECISE:
> + if (!ptp->info->getsynctime) {
> + err = -EINVAL;

-EOPNOTSUPP would be better here.

> + break;
> + }
> + err = ptp->info->getsynctime(ptp->info, &xtstamp);
> + if (err)
> + break;
> +
> + precise_offset.sys_real.sec =
> + div_u64_rem(ktime_to_ns(xtstamp.sys_realtime),
> + NSEC_PER_SEC, &rem);
> + precise_offset.sys_real.nsec = rem;

How about this instead:

ts = ktime_to_timespec64(xtstamp.sys_realtime);
precise_offset.sys_real.sec = ts.tv_sec;
precise_offset.sys_real.nsec = ts.tv_nsec;

> + precise_offset.sys_raw.sec =
> + div_u64_rem(ktime_to_ns(xtstamp.sys_monoraw),
> + NSEC_PER_SEC, &rem);
> + precise_offset.sys_raw.nsec = rem;
> + precise_offset.dev.sec =
> + div_u64_rem(ktime_to_ns(xtstamp.device), NSEC_PER_SEC,
> + &rem);
> + precise_offset.dev.nsec = rem;

And for these as well.

Thanks,
Richard
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/