]> git.baikalelectronics.ru Git - kernel.git/commit
mlxsw: spectrum_ptp: Forbid PTP enablement only in RX or in TX
authorAmit Cohen <amcohen@nvidia.com>
Fri, 12 Aug 2022 15:32:03 +0000 (17:32 +0200)
committerDavid S. Miller <davem@davemloft.net>
Mon, 15 Aug 2022 10:49:58 +0000 (11:49 +0100)
commit0e311a4867f3c596dd8c076dc77c9cdef71037f4
treebd366ebc9d5f48f4b72b6d16754b4dad7367e18e
parent3d61193816862a0151443ebdb30dc3de75de995d
mlxsw: spectrum_ptp: Forbid PTP enablement only in RX or in TX

Currently mlxsw driver configures one global PTP configuration for all
ports. The reason is that the switch behaves like a transparent clock
between CPU port and front-panel ports. When time stamp is enabled in
any port, the hardware is configured to update the correction field. The
fact that the configuration of CPU port affects all the ports, makes the
correction field update to be global for all ports. Otherwise, user will
see odd values in the correction field, as the switch will update the
correction field in the CPU port, but not in all the front-panel ports.

The CPU port is relevant in both RX and TX, so to avoid problematic
configuration, forbid PTP enablement only in one direction, i.e., only in
RX or TX.

Without the change:
$ hwstamp_ctl -i swp1 -r 12 -t 0
current settings:
tx_type 0
rx_filter 0
new settings:
tx_type 0
rx_filter 2
$ echo $?
0

With the change:
$ hwstamp_ctl -i swp1 -r 12 -t 0
current settings:
tx_type 1
rx_filter 2
SIOCSHWTSTAMP failed: Invalid argument

Fixes: b7979f48c9b8a ("mlxsw: spectrum_ptp: Support SIOCGHWTSTAMP, SIOCSHWTSTAMP ioctls")
Signed-off-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum_ptp.c