mirror of
https://github.com/torvalds/linux.git
synced 2026-08-02 05:12:01 +02:00
mlxsw: Trap ARP packets at layer 2 instead of layer 3
Next patch will set the same hardware domain for all bridge ports, including VXLAN, to prevent packets from being forwarded by software when they were already forwarded by hardware. ARP packets are not flooded by hardware to VXLAN, so software should handle such flooding. When hardware domain of VXLAN device will be changed, ARP packets which are trapped and marked with offload_fwd_mark will not be flooded to VXLAN also in software, which will break VXLAN traffic. To prevent such breaking, trap ARP packets at layer 2 and don't mark them as L2-forwarded in hardware, then flooding ARP packets will be done only in software, and VXLAN will send ARP packets. Remove NVE_ENCAP_ARP which is no longer needed, as now ARP packets are trapped when they enter the device. Signed-off-by: Amit Cohen <amcohen@nvidia.com> Reviewed-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Simon Horman <horms@kernel.org> Link: https://patch.msgid.link/b2a2cc607a1f4cb96c10bd3b0b0244ba3117fd2e.1742224300.git.petrm@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c353e8983e
commit
6d627a29aa
|
|
@ -2409,8 +2409,6 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
|
|||
/* Multicast Router Traps */
|
||||
MLXSW_SP_RXL_MARK(ACL1, TRAP_TO_CPU, MULTICAST, false),
|
||||
MLXSW_SP_RXL_L3_MARK(ACL2, TRAP_TO_CPU, MULTICAST, false),
|
||||
/* NVE traps */
|
||||
MLXSW_SP_RXL_MARK(NVE_ENCAP_ARP, TRAP_TO_CPU, NEIGH_DISCOVERY, false),
|
||||
};
|
||||
|
||||
static const struct mlxsw_listener mlxsw_sp1_listener[] = {
|
||||
|
|
|
|||
|
|
@ -959,18 +959,18 @@ static const struct mlxsw_sp_trap_item mlxsw_sp_trap_items_arr[] = {
|
|||
},
|
||||
{
|
||||
.trap = MLXSW_SP_TRAP_CONTROL(ARP_REQUEST, NEIGH_DISCOVERY,
|
||||
MIRROR),
|
||||
TRAP),
|
||||
.listeners_arr = {
|
||||
MLXSW_SP_RXL_MARK(ROUTER_ARPBC, NEIGH_DISCOVERY,
|
||||
TRAP_TO_CPU, false),
|
||||
MLXSW_SP_RXL_NO_MARK(ARPBC, NEIGH_DISCOVERY,
|
||||
TRAP_TO_CPU, false),
|
||||
},
|
||||
},
|
||||
{
|
||||
.trap = MLXSW_SP_TRAP_CONTROL(ARP_RESPONSE, NEIGH_DISCOVERY,
|
||||
MIRROR),
|
||||
TRAP),
|
||||
.listeners_arr = {
|
||||
MLXSW_SP_RXL_MARK(ROUTER_ARPUC, NEIGH_DISCOVERY,
|
||||
TRAP_TO_CPU, false),
|
||||
MLXSW_SP_RXL_NO_MARK(ARPUC, NEIGH_DISCOVERY,
|
||||
TRAP_TO_CPU, false),
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -29,6 +29,8 @@ enum {
|
|||
MLXSW_TRAP_ID_FDB_MISMATCH = 0x3B,
|
||||
MLXSW_TRAP_ID_FID_MISS = 0x3D,
|
||||
MLXSW_TRAP_ID_DECAP_ECN0 = 0x40,
|
||||
MLXSW_TRAP_ID_ARPBC = 0x50,
|
||||
MLXSW_TRAP_ID_ARPUC = 0x51,
|
||||
MLXSW_TRAP_ID_MTUERROR = 0x52,
|
||||
MLXSW_TRAP_ID_TTLERROR = 0x53,
|
||||
MLXSW_TRAP_ID_LBERROR = 0x54,
|
||||
|
|
@ -66,13 +68,10 @@ enum {
|
|||
MLXSW_TRAP_ID_HOST_MISS_IPV6 = 0x92,
|
||||
MLXSW_TRAP_ID_IPIP_DECAP_ERROR = 0xB1,
|
||||
MLXSW_TRAP_ID_NVE_DECAP_ARP = 0xB8,
|
||||
MLXSW_TRAP_ID_NVE_ENCAP_ARP = 0xBD,
|
||||
MLXSW_TRAP_ID_IPV4_BFD = 0xD0,
|
||||
MLXSW_TRAP_ID_IPV6_BFD = 0xD1,
|
||||
MLXSW_TRAP_ID_ROUTER_ALERT_IPV4 = 0xD6,
|
||||
MLXSW_TRAP_ID_ROUTER_ALERT_IPV6 = 0xD7,
|
||||
MLXSW_TRAP_ID_ROUTER_ARPBC = 0xE0,
|
||||
MLXSW_TRAP_ID_ROUTER_ARPUC = 0xE1,
|
||||
MLXSW_TRAP_ID_DISCARD_NON_ROUTABLE = 0x11A,
|
||||
MLXSW_TRAP_ID_DISCARD_ROUTER2 = 0x130,
|
||||
MLXSW_TRAP_ID_DISCARD_ROUTER3 = 0x131,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user