net: add struct kernel_hwtstamp_config and make net_hwtstamp_validate() use it
authorVladimir Oltean <vladimir.oltean@nxp.com>
Sun, 2 Apr 2023 12:37:53 +0000 (15:37 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 3 Apr 2023 09:04:27 +0000 (10:04 +0100)
commitc4bffeaa8d50b7279c5a76597efa4b06e709df63
tree736c2011829da6cd635fa1b7abe53508cc6dc77e
parentd5d5fd8f2552f6b9c50d3937c77b6783f99fbe83
net: add struct kernel_hwtstamp_config and make net_hwtstamp_validate() use it

Jakub Kicinski suggested that we may want to add new UAPI for
controlling hardware timestamping through netlink in the future, and in
that case, we will be limited to the struct hwtstamp_config that is
currently passed in fixed binary format through the SIOCGHWTSTAMP and
SIOCSHWTSTAMP ioctls. It would be good if new kernel code already
started operating on an extensible kernel variant of that structure,
similar in concept to struct kernel_ethtool_coalesce vs struct
ethtool_coalesce.

Since struct hwtstamp_config is in include/uapi/linux/net_tstamp.h, here
we introduce include/linux/net_tstamp.h which shadows that other header,
but also includes it, so that existing includers of this header work as
before. In addition to that, we add the definition for the kernel-only
structure, and a helper which translates all fields by manual copying.
I am doing a manual copy in order to not force the alignment (or type)
of the fields of struct kernel_hwtstamp_config to be the same as of
struct hwtstamp_config, even though now, they are the same.

Link: https://lore.kernel.org/netdev/20230330223519.36ce7d23@kernel.org/
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
include/linux/net_tstamp.h [new file with mode: 0644]
net/core/dev_ioctl.c