Skip to content

Commit b48cfc8

Browse files
yotamgidavem330
authored andcommitted
mlxsw: spectrum: Add multicast router traps and trap groups
Add three new traps needed for multicast routing: - PIM: Trap for PIM protocol control packets. - RPF: Trap for packets that fail the RPF check on a specific hardware route entry. - MULTICAST: Generic trap for multicast. It is used for routes that trap the packets to the CPU. The RPF and MULTICAST traps have rate limiters as these traps may have line-rate of packets trapped. The PIM trap has a rate limiter similarly to other L3 control protocols. The rate limiters are implemented by adding three new trap groups for the newly introduced traps. Signed-off-by: Yotam Gigi <yotamg@mellanox.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
1 parent 91e4d59 commit b48cfc8

File tree

3 files changed

+17
-0
lines changed

3 files changed

+17
-0
lines changed

drivers/net/ethernet/mellanox/mlxsw/reg.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3681,12 +3681,15 @@ enum mlxsw_reg_htgt_trap_group {
36813681
MLXSW_REG_HTGT_TRAP_GROUP_SP_IGMP,
36823682
MLXSW_REG_HTGT_TRAP_GROUP_SP_BGP,
36833683
MLXSW_REG_HTGT_TRAP_GROUP_SP_OSPF,
3684+
MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM,
3685+
MLXSW_REG_HTGT_TRAP_GROUP_SP_MULTICAST,
36843686
MLXSW_REG_HTGT_TRAP_GROUP_SP_ARP,
36853687
MLXSW_REG_HTGT_TRAP_GROUP_SP_HOST_MISS,
36863688
MLXSW_REG_HTGT_TRAP_GROUP_SP_ROUTER_EXP,
36873689
MLXSW_REG_HTGT_TRAP_GROUP_SP_REMOTE_ROUTE,
36883690
MLXSW_REG_HTGT_TRAP_GROUP_SP_IP2ME,
36893691
MLXSW_REG_HTGT_TRAP_GROUP_SP_DHCP,
3692+
MLXSW_REG_HTGT_TRAP_GROUP_SP_RPF,
36903693
MLXSW_REG_HTGT_TRAP_GROUP_SP_EVENT,
36913694
MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_MLD,
36923695
MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_ND,

drivers/net/ethernet/mellanox/mlxsw/spectrum.c

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3421,6 +3421,10 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
34213421
false, SP_IP2ME, DISCARD),
34223422
/* ACL trap */
34233423
MLXSW_SP_RXL_NO_MARK(ACL0, TRAP_TO_CPU, IP2ME, false),
3424+
/* Multicast Router Traps */
3425+
MLXSW_SP_RXL_MARK(IPV4_PIM, TRAP_TO_CPU, PIM, false),
3426+
MLXSW_SP_RXL_MARK(RPF, TRAP_TO_CPU, RPF, false),
3427+
MLXSW_SP_RXL_MARK(ACL1, TRAP_TO_CPU, MULTICAST, false),
34243428
};
34253429

34263430
static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
@@ -3446,6 +3450,8 @@ static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
34463450
case MLXSW_REG_HTGT_TRAP_GROUP_SP_LACP:
34473451
case MLXSW_REG_HTGT_TRAP_GROUP_SP_LLDP:
34483452
case MLXSW_REG_HTGT_TRAP_GROUP_SP_OSPF:
3453+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM:
3454+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_RPF:
34493455
rate = 128;
34503456
burst_size = 7;
34513457
break;
@@ -3461,6 +3467,7 @@ static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
34613467
case MLXSW_REG_HTGT_TRAP_GROUP_SP_ROUTER_EXP:
34623468
case MLXSW_REG_HTGT_TRAP_GROUP_SP_REMOTE_ROUTE:
34633469
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_ND:
3470+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_MULTICAST:
34643471
rate = 1024;
34653472
burst_size = 7;
34663473
break;
@@ -3506,6 +3513,7 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
35063513
case MLXSW_REG_HTGT_TRAP_GROUP_SP_LACP:
35073514
case MLXSW_REG_HTGT_TRAP_GROUP_SP_LLDP:
35083515
case MLXSW_REG_HTGT_TRAP_GROUP_SP_OSPF:
3516+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM:
35093517
priority = 5;
35103518
tc = 5;
35113519
break;
@@ -3522,12 +3530,14 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
35223530
break;
35233531
case MLXSW_REG_HTGT_TRAP_GROUP_SP_ARP:
35243532
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_ND:
3533+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_RPF:
35253534
priority = 2;
35263535
tc = 2;
35273536
break;
35283537
case MLXSW_REG_HTGT_TRAP_GROUP_SP_HOST_MISS:
35293538
case MLXSW_REG_HTGT_TRAP_GROUP_SP_ROUTER_EXP:
35303539
case MLXSW_REG_HTGT_TRAP_GROUP_SP_REMOTE_ROUTE:
3540+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_MULTICAST:
35313541
priority = 1;
35323542
tc = 1;
35333543
break;

drivers/net/ethernet/mellanox/mlxsw/trap.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ enum {
6262
MLXSW_TRAP_ID_TTLERROR = 0x53,
6363
MLXSW_TRAP_ID_LBERROR = 0x54,
6464
MLXSW_TRAP_ID_IPV4_OSPF = 0x55,
65+
MLXSW_TRAP_ID_IPV4_PIM = 0x58,
66+
MLXSW_TRAP_ID_RPF = 0x5C,
6567
MLXSW_TRAP_ID_IP2ME = 0x5F,
6668
MLXSW_TRAP_ID_IPV6_UNSPECIFIED_ADDRESS = 0x60,
6769
MLXSW_TRAP_ID_IPV6_LINK_LOCAL_DEST = 0x61,
@@ -89,6 +91,8 @@ enum {
8991
MLXSW_TRAP_ID_ROUTER_ALERT_IPV4 = 0xD6,
9092
MLXSW_TRAP_ID_ROUTER_ALERT_IPV6 = 0xD7,
9193
MLXSW_TRAP_ID_ACL0 = 0x1C0,
94+
/* Multicast trap used for routes with trap action */
95+
MLXSW_TRAP_ID_ACL1 = 0x1C1,
9296

9397
MLXSW_TRAP_ID_MAX = 0x1FF
9498
};

0 commit comments

Comments
 (0)