RE: [PATCH v4 2/2] PTP: add support for one-shot output

From: Keller, Jacob E
Date: Tue Sep 24 2019 - 17:53:41 EST




> -----Original Message-----
> From: Hall, Christopher S
> Sent: Tuesday, September 24, 2019 1:24 PM
> To: Keller, Jacob E <jacob.e.keller@xxxxxxxxx>; Felipe Balbi
> <felipe.balbi@xxxxxxxxxxxxxxx>; Richard Cochran <richardcochran@xxxxxxxxx>
> Cc: netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> Subject: RE: [PATCH v4 2/2] PTP: add support for one-shot output
>
> > -----Original Message-----
> > From: Keller, Jacob E
> > Sent: Tuesday, September 24, 2019 12:23 PM
> > To: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx>; Richard Cochran
> > <richardcochran@xxxxxxxxx>
> > Cc: Hall, Christopher S <christopher.s.hall@xxxxxxxxx>;
> > netdev@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx
> > Subject: RE: [PATCH v4 2/2] PTP: add support for one-shot output
> >
> >
> >
> > > -----Original Message-----
> > > From: netdev-owner@xxxxxxxxxxxxxxx [mailto:netdev-owner@xxxxxxxxxxxxxxx]
> > On
> > > Behalf Of Felipe Balbi
> > > Sent: Tuesday, September 10, 2019 11:16 PM
> > > To: Richard Cochran <richardcochran@xxxxxxxxx>
> > > Cc: Hall, Christopher S <christopher.s.hall@xxxxxxxxx>;
> > netdev@xxxxxxxxxxxxxxx;
> > > linux-kernel@xxxxxxxxxxxxxxx; Felipe Balbi
> > <felipe.balbi@xxxxxxxxxxxxxxx>
> > > Subject: [PATCH v4 2/2] PTP: add support for one-shot output
> > >
> > > Some controllers allow for a one-shot output pulse, in contrast to
> > > periodic output. Now that we have extensible versions of our IOCTLs, we
> > > can finally make use of the 'flags' field to pass a bit telling driver
> > > that if we want one-shot pulse output.
> > >
> > > Signed-off-by: Felipe Balbi <felipe.balbi@xxxxxxxxxxxxxxx>
> > > ---
> > >
> > > Changes since v3:
> > > - Remove bogus bitwise negation
> > >
> > > Changes since v2:
> > > - Add _PEROUT_ to bit macro
> > >
> > > Changes since v1:
> > > - remove comment from .flags field
> > >
> > > include/uapi/linux/ptp_clock.h | 6 +++---
> > > 1 file changed, 3 insertions(+), 3 deletions(-)
> > >
> > > diff --git a/include/uapi/linux/ptp_clock.h
> > b/include/uapi/linux/ptp_clock.h
> > > index 9a0af3511b68..f16301015949 100644
> > > --- a/include/uapi/linux/ptp_clock.h
> > > +++ b/include/uapi/linux/ptp_clock.h
> > > @@ -38,8 +38,8 @@
> > > /*
> > > * Bits of the ptp_perout_request.flags field:
> > > */
> > > -#define PTP_PEROUT_VALID_FLAGS (0)
> > > -
> > > +#define PTP_PEROUT_ONE_SHOT (1<<0)
> > > +#define PTP_PEROUT_VALID_FLAGS (PTP_PEROUT_ONE_SHOT)
> > > /*
> > > * struct ptp_clock_time - represents a time value
> > > *
> > > @@ -77,7 +77,7 @@ struct ptp_perout_request {
> > > struct ptp_clock_time start; /* Absolute start time. */
> > > struct ptp_clock_time period; /* Desired period, zero means disable.
> > */
> > > unsigned int index; /* Which channel to configure. */
> > > - unsigned int flags; /* Reserved for future use. */
> > > + unsigned int flags;
> > > unsigned int rsv[4]; /* Reserved for future use. */
> > > };
> > >
> > > --
> > > 2.23.0
> >
> > Hi Felipe,
> >
> > Do you have any examples for how you envision using this? I don't see any
> > drivers or other code on the list for doing so.
> >
> > Additionally, it seems weird because we do not have support for specifying
> > the pulse width. I guess you leave that up to driver choice?
> >
> > Thanks,
> > Jake
>

Also a quick note/question:

Is there a spot where flags are explicitly checked and rejected? I don't see any driver which would reject this as "not an acceptable configuration".

I.e. if a function calls the PEROUT_REQUEST2 ioctl, they will pass the flag through, and drivers today don't seem to bother checking flags at all.

I think we also need a patch so that all drivers are updated to reject non-zero flags, ensuring that they do not attempt to configure a request incorrectly.

Thanks,
Jake