net: mscc: ocelot: don't keep PTP configuration of all ports in single structure
authorVladimir Oltean <vladimir.oltean@nxp.com>
Tue, 27 Jun 2023 16:31:13 +0000 (19:31 +0300)
committerPaolo Abeni <pabeni@redhat.com>
Thu, 29 Jun 2023 10:40:27 +0000 (12:40 +0200)
commit45d0fcb5bc9558d0bf3d2fa7fabc5d8a88d35439
tree9ef82d3d511654f99545f8785cd5cf14318239cb
parent4fd44b82b7aceaa35c2901c6546d2c4198e0799d
net: mscc: ocelot: don't keep PTP configuration of all ports in single structure

In a future change, the driver will need to determine whether PTP RX
timestamping is enabled on a port (including whether traps were set up
on that port in particular) and that is currently not possible.

The driver supports different RX filters (L2, L4) and kinds of TX
timestamping (one-step, two-step) on its ports, but it saves all
configuration in a single struct hwtstamp_config that is global to the
switch. So, the latest timestamping configuration on one port
(including a request to disable timestamping) affects what gets reported
for all ports, even though the configuration itself is still individual
to each port.

The port timestamping configurations are only coupled because of the
common structure, so replace the hwtstamp_config with a mask of trapped
protocols saved per port. We also have the ptp_cmd to distinguish
between one-step and two-step PTP timestamping, so with those 2 bits of
information we can fully reconstruct a descriptive struct
hwtstamp_config for each port, during the SIOCGHWTSTAMP ioctl.

Fixes: 4e3b0468e6d7 ("net: mscc: PTP Hardware Clock (PHC) support")
Fixes: 96ca08c05838 ("net: mscc: ocelot: set up traps for PTP packets")
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
drivers/net/ethernet/mscc/ocelot.c
drivers/net/ethernet/mscc/ocelot_ptp.c
include/soc/mscc/ocelot.h