• Ido Schimmel's avatar
    mlxsw: spectrum: Fix ECN marking in tunnel decapsulation · 66167c31
    Ido Schimmel authored
    Cited commit changed the behavior of the software data path with regards
    to the ECN marking of decapsulated packets. However, the commit did not
    change other callers of __INET_ECN_decapsulate(), namely mlxsw. The
    driver is using the function in order to ensure that the hardware and
    software data paths act the same with regards to the ECN marking of
    decapsulated packets.
    
    The discrepancy was uncovered by commit 5aa3c334 ("selftests:
    forwarding: vxlan_bridge_1d: Fix vxlan ecn decapsulate value") that
    aligned the selftest to the new behavior. Without this patch the
    selftest passes when used with veth pairs, but fails when used with
    mlxsw netdevs.
    
    Fix this by instructing the device to propagate the ECT(1) mark from the
    outer header to the inner header when the inner header is ECT(0), for
    both NVE and IP-in-IP tunnels.
    
    A helper is added in order not to duplicate the code between both tunnel
    types.
    
    Fixes: b7237487 ("tunnel: Propagate ECT(1) when decapsulating as recommended by RFC6040")
    Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
    Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
    Acked-by: default avatarToke Høiland-Jørgensen <toke@redhat.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    66167c31
spectrum.h 45.2 KB