diff options
author | Elad Raz <eladr@mellanox.com> | 2016-08-17 10:39:32 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-08-17 19:18:27 -0400 |
commit | c20b80187a93b4fcc1c5c46fc8a436df1f17636d (patch) | |
tree | 5fb71afcb57f698bfbe4289d0e979856ffb513e7 | |
parent | 2f25844c233650b2abb92b66b3d0af7d73b5f88f (diff) |
mlxsw: spectrum: Add missing packet traps
Add the following traps:
1) MTU Error: Trap packets whose size is bigger than the egress RIF's
MTU. If DF bit isn't set, traffic will continue to be routed in slow
path.
2) TTL Error: Trap packets whose TTL expired. This allows traceroute to
work properly.
3) OSPF packets.
Fixes: 7b27ce7bb9cd ("mlxsw: spectrum: Add traps needed for router implementation")
Signed-off-by: Elad Raz <eladr@mellanox.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 15 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/trap.h | 3 |
2 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index 12681db79a68..6b69c8ac7b88 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c | |||
@@ -2651,6 +2651,21 @@ static const struct mlxsw_rx_listener mlxsw_sp_rx_listener[] = { | |||
2651 | { | 2651 | { |
2652 | .func = mlxsw_sp_rx_listener_func, | 2652 | .func = mlxsw_sp_rx_listener_func, |
2653 | .local_port = MLXSW_PORT_DONT_CARE, | 2653 | .local_port = MLXSW_PORT_DONT_CARE, |
2654 | .trap_id = MLXSW_TRAP_ID_MTUERROR, | ||
2655 | }, | ||
2656 | { | ||
2657 | .func = mlxsw_sp_rx_listener_func, | ||
2658 | .local_port = MLXSW_PORT_DONT_CARE, | ||
2659 | .trap_id = MLXSW_TRAP_ID_TTLERROR, | ||
2660 | }, | ||
2661 | { | ||
2662 | .func = mlxsw_sp_rx_listener_func, | ||
2663 | .local_port = MLXSW_PORT_DONT_CARE, | ||
2664 | .trap_id = MLXSW_TRAP_ID_OSPF, | ||
2665 | }, | ||
2666 | { | ||
2667 | .func = mlxsw_sp_rx_listener_func, | ||
2668 | .local_port = MLXSW_PORT_DONT_CARE, | ||
2654 | .trap_id = MLXSW_TRAP_ID_IP2ME, | 2669 | .trap_id = MLXSW_TRAP_ID_IP2ME, |
2655 | }, | 2670 | }, |
2656 | { | 2671 | { |
diff --git a/drivers/net/ethernet/mellanox/mlxsw/trap.h b/drivers/net/ethernet/mellanox/mlxsw/trap.h index 470d7696e9fe..9508e0a49e88 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/trap.h +++ b/drivers/net/ethernet/mellanox/mlxsw/trap.h | |||
@@ -56,6 +56,9 @@ enum { | |||
56 | MLXSW_TRAP_ID_IGMP_V3_REPORT = 0x34, | 56 | MLXSW_TRAP_ID_IGMP_V3_REPORT = 0x34, |
57 | MLXSW_TRAP_ID_ARPBC = 0x50, | 57 | MLXSW_TRAP_ID_ARPBC = 0x50, |
58 | MLXSW_TRAP_ID_ARPUC = 0x51, | 58 | MLXSW_TRAP_ID_ARPUC = 0x51, |
59 | MLXSW_TRAP_ID_MTUERROR = 0x52, | ||
60 | MLXSW_TRAP_ID_TTLERROR = 0x53, | ||
61 | MLXSW_TRAP_ID_OSPF = 0x55, | ||
59 | MLXSW_TRAP_ID_IP2ME = 0x5F, | 62 | MLXSW_TRAP_ID_IP2ME = 0x5F, |
60 | MLXSW_TRAP_ID_RTR_INGRESS0 = 0x70, | 63 | MLXSW_TRAP_ID_RTR_INGRESS0 = 0x70, |
61 | MLXSW_TRAP_ID_HOST_MISS_IPV4 = 0x90, | 64 | MLXSW_TRAP_ID_HOST_MISS_IPV4 = 0x90, |