diff options
author | Nogah Frankel <nogahf@mellanox.com> | 2016-11-25 10:33:38 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-11-25 21:22:14 -0500 |
commit | d570b7ee4e47721099fc6309fd3ff9b637261357 (patch) | |
tree | 6cc027835a266425d4721de250402892a7b85505 /drivers/net/ethernet/mellanox/mlxsw/spectrum.c | |
parent | 85d5c9cd90d2b271d8498ee6362ad57e00a2af16 (diff) |
mlxsw: Change trap set function
Change trap setting function so instead of determining the trap group by
trap id, it gets it as a parameter (so later we can have different trap
groups for Spectrum and Switchx2).
Add "is_ctrl" parameter to the trap setting function. It control whether
the trapped packets wait in a designated control buffer or in their
default one. This parameter is ignored by Switchx2 and Switchib.
Add these parameters to the traps array in Spectrum, Switchx2 and
Switchib.
Signed-off-by: Nogah Frankel <nogahf@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlxsw/spectrum.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c index d758ce6228f4..3582e3f2901b 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c @@ -2730,37 +2730,37 @@ static void mlxsw_sp_rx_listener_mark_func(struct sk_buff *skb, u8 local_port, return mlxsw_sp_rx_listener_no_mark_func(skb, local_port, priv); } -#define MLXSW_SP_RXL_NO_MARK(_trap_id, _action) \ - MLXSW_RXL(mlxsw_sp_rx_listener_no_mark_func, _trap_id, _action, \ - DISCARD) +#define MLXSW_SP_RXL_NO_MARK(_trap_id, _action, _is_ctrl) \ + MLXSW_RXL(mlxsw_sp_rx_listener_no_mark_func, _trap_id, _action, \ + _is_ctrl, DISCARD) -#define MLXSW_SP_RXL_MARK(_trap_id, _action) \ +#define MLXSW_SP_RXL_MARK(_trap_id, _action, _is_ctrl) \ MLXSW_RXL(mlxsw_sp_rx_listener_mark_func, _trap_id, _action, \ - DISCARD) + _is_ctrl, DISCARD) static const struct mlxsw_listener mlxsw_sp_listener[] = { /* Events */ MLXSW_EVENTL(mlxsw_sp_pude_event_func, PUDE), /* L2 traps */ - MLXSW_SP_RXL_NO_MARK(STP, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(LACP, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(LLDP, TRAP_TO_CPU), - MLXSW_SP_RXL_MARK(DHCP, MIRROR_TO_CPU), - MLXSW_SP_RXL_MARK(IGMP_QUERY, MIRROR_TO_CPU), - MLXSW_SP_RXL_NO_MARK(IGMP_V1_REPORT, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(IGMP_V2_REPORT, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(IGMP_V2_LEAVE, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(IGMP_V3_REPORT, TRAP_TO_CPU), - MLXSW_SP_RXL_MARK(ARPBC, MIRROR_TO_CPU), - MLXSW_SP_RXL_MARK(ARPUC, MIRROR_TO_CPU), + MLXSW_SP_RXL_NO_MARK(STP, TRAP_TO_CPU, true), + MLXSW_SP_RXL_NO_MARK(LACP, TRAP_TO_CPU, true), + MLXSW_SP_RXL_NO_MARK(LLDP, TRAP_TO_CPU, true), + MLXSW_SP_RXL_MARK(DHCP, MIRROR_TO_CPU, false), + MLXSW_SP_RXL_MARK(IGMP_QUERY, MIRROR_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(IGMP_V1_REPORT, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(IGMP_V2_REPORT, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(IGMP_V2_LEAVE, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(IGMP_V3_REPORT, TRAP_TO_CPU, false), + MLXSW_SP_RXL_MARK(ARPBC, MIRROR_TO_CPU, false), + MLXSW_SP_RXL_MARK(ARPUC, MIRROR_TO_CPU, false), /* L3 traps */ - MLXSW_SP_RXL_NO_MARK(MTUERROR, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(TTLERROR, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(LBERROR, TRAP_TO_CPU), - MLXSW_SP_RXL_MARK(OSPF, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(IP2ME, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(RTR_INGRESS0, TRAP_TO_CPU), - MLXSW_SP_RXL_NO_MARK(HOST_MISS_IPV4, TRAP_TO_CPU), + MLXSW_SP_RXL_NO_MARK(MTUERROR, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(TTLERROR, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(LBERROR, TRAP_TO_CPU, false), + MLXSW_SP_RXL_MARK(OSPF, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(IP2ME, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(RTR_INGRESS0, TRAP_TO_CPU, false), + MLXSW_SP_RXL_NO_MARK(HOST_MISS_IPV4, TRAP_TO_CPU, false), }; static int mlxsw_sp_traps_init(struct mlxsw_sp *mlxsw_sp) |