]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
mlxsw: spectrum: Forward packets with an IPv4 link-local source IP
authorIdo Schimmel <idosch@nvidia.com>
Thu, 14 Aug 2025 13:06:40 +0000 (15:06 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Aug 2025 14:22:59 +0000 (16:22 +0200)
[ Upstream commit f604d3aaf64ff0d90cc875295474d3abf4155629 ]

By default, the device does not forward IPv4 packets with a link-local
source IP (i.e., 169.254.0.0/16). This behavior does not align with the
kernel which does forward them.

Fix by instructing the device to forward such packets instead of
dropping them.

Fixes: ca360db4b825 ("mlxsw: spectrum: Disable DIP_LINK_LOCAL check in hardware pipeline")
Reported-by: Zoey Mertes <zoey@cloudflare.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Link: https://patch.msgid.link/6721e6b2c96feb80269e72ce8d0b426e2f32d99c.1755174341.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlxsw/spectrum.c
drivers/net/ethernet/mellanox/mlxsw/trap.h

index 4110e15c22c7995dd8121b2a5458786f42548f8d..8ab7e591b66af9c096b0501b480af5380e146040 100644 (file)
@@ -2222,6 +2222,8 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
                             ROUTER_EXP, false),
        MLXSW_SP_RXL_NO_MARK(DISCARD_ING_ROUTER_DIP_LINK_LOCAL, FORWARD,
                             ROUTER_EXP, false),
+       MLXSW_SP_RXL_NO_MARK(DISCARD_ING_ROUTER_SIP_LINK_LOCAL, FORWARD,
+                            ROUTER_EXP, false),
        /* Multicast Router Traps */
        MLXSW_SP_RXL_MARK(ACL1, TRAP_TO_CPU, MULTICAST, false),
        MLXSW_SP_RXL_L3_MARK(ACL2, TRAP_TO_CPU, MULTICAST, false),
index 57f9e24602d04c0bf1b514bc9f0f873e107df658..93ca6f90f3203bbe3b6e68b77bb5d965a2a94b14 100644 (file)
@@ -92,6 +92,7 @@ enum {
        MLXSW_TRAP_ID_DISCARD_ING_ROUTER_IPV4_SIP_BC = 0x16A,
        MLXSW_TRAP_ID_DISCARD_ING_ROUTER_IPV4_DIP_LOCAL_NET = 0x16B,
        MLXSW_TRAP_ID_DISCARD_ING_ROUTER_DIP_LINK_LOCAL = 0x16C,
+       MLXSW_TRAP_ID_DISCARD_ING_ROUTER_SIP_LINK_LOCAL = 0x16D,
        MLXSW_TRAP_ID_DISCARD_ROUTER_IRIF_EN = 0x178,
        MLXSW_TRAP_ID_DISCARD_ROUTER_ERIF_EN = 0x179,
        MLXSW_TRAP_ID_DISCARD_ROUTER_LPM4 = 0x17B,