Re: [PATCH 7/7] net: dsa: b53: Expose PTP timestamping ioctls to userspace

From: Vladimir Oltean
Date: Fri Nov 05 2021 - 13:25:46 EST


On Fri, Nov 05, 2021 at 08:09:39AM -0700, Jakub Kicinski wrote:
> On Fri, 5 Nov 2021 16:28:33 +0200 Vladimir Oltean wrote:
> > On Fri, Nov 05, 2021 at 07:13:19AM -0700, Richard Cochran wrote:
> > > On Fri, Nov 05, 2021 at 02:38:01PM +0100, Martin Kaistra wrote:
> > > > Ok, then I will remove HWTSTAMP_FILTER_PTP_V2_(EVENT|SYNC|DELAY_REQ) from
> > > > this list, what about HWTSTAMP_FILTER_ALL?
> > >
> > > AKK means time stamp every received frame, so your driver should
> > > return an error in this case as well.
> >
> > What is the expected convention exactly? There are other drivers that
> > downgrade the user application's request to what they support, and at
> > least ptp4l does not error out, it just prints a warning.
>
> Which is sad because that's one of the best documented parts of our API:
>
> Desired behavior is passed into the kernel and to a specific device by
> calling ioctl(SIOCSHWTSTAMP) with a pointer to a struct ifreq whose
> ifr_data points to a struct hwtstamp_config. The tx_type and
> rx_filter are hints to the driver what it is expected to do. If
> the requested fine-grained filtering for incoming packets is not
> supported, the driver may time stamp more than just the requested types
> of packets.
>
> Drivers are free to use a more permissive configuration than the requested
> configuration. It is expected that drivers should only implement directly the
> most generic mode that can be supported. For example if the hardware can
> support HWTSTAMP_FILTER_V2_EVENT, then it should generally always upscale
> HWTSTAMP_FILTER_V2_L2_SYNC_MESSAGE, and so forth, as HWTSTAMP_FILTER_V2_EVENT
> is more generic (and more useful to applications).
>
> A driver which supports hardware time stamping shall update the struct
> with the actual, possibly more permissive configuration. If the
> requested packets cannot be time stamped, then nothing should be
> changed and ERANGE shall be returned (in contrast to EINVAL, which
> indicates that SIOCSHWTSTAMP is not supported at all).
>
> https://www.kernel.org/doc/html/latest/networking/timestamping.html#hardware-timestamping-configuration-siocshwtstamp-and-siocghwtstamp

Yeah, sorry, I've been all over that documentation file for the past few
days, but I missed that section. "that's one of the best documented
parts of our API" is a nice euphemism for all the SO_TIMESTAMPING flags :)