• Petr Machata's avatar
    mlxsw: spectrum_ptp: Increase parsing depth when PTP is enabled · c6b36bdd
    Petr Machata authored
    Spectrum systems have a configurable limit on how far into the packet they
    parse. By default, the limit is 96 bytes.
    
    An IPv6 PTP packet is layered as Ethernet/IPv6/UDP (14+40+8 bytes), and
    sequence ID of a PTP event is only available 32 bytes into payload, for a
    total of 94 bytes. When an additional 802.1q header is present as
    well (such as when ptp4l is running on a VLAN port), the parsing limit is
    exceeded. Such packets are not recognized as PTP, and are not timestamped.
    
    Therefore generalize the current VXLAN-specific parsing depth setting to
    allow reference-counted requests from other modules as well. Keep it in the
    VXLAN module, because the MPRS register also configures UDP destination
    port number used for VXLAN, and is thus closely tied to the VXLAN code
    anyway.
    
    Then invoke the new interfaces from both VXLAN (in obvious places), as well
    as from PTP code, when the (global) timestamping configuration changes from
    disabled to enabled or vice versa.
    
    Fixes: 87486427 ("mlxsw: spectrum: PTP: Support SIOCGHWTSTAMP, SIOCSHWTSTAMP ioctls")
    Signed-off-by: default avatarPetr Machata <petrm@mellanox.com>
    Reviewed-by: default avatarIdo Schimmel <idosch@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c6b36bdd
spectrum.h 33.5 KB