• Amit Cohen's avatar
    mlxsw: spectrum_ptp: Forbid PTP enablement only in RX or in TX · e01885c3
    Amit Cohen authored
    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: 08ef8bc8 ("mlxsw: spectrum_ptp: Support SIOCGHWTSTAMP, SIOCSHWTSTAMP ioctls")
    Signed-off-by: default avatarAmit Cohen <amcohen@nvidia.com>
    Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    e01885c3
spectrum_ptp.c 45.5 KB