Skip to content

Commit ff65fa6

Browse files
committed
Merge branch 'mlxsw-traps'
Jiri Pirko says: ==================== mlxsw: Traps enhancements Ido says: The first patch makes sure the driver marks packets that were trapped in the router and might have already been flooded by the bridge, so that the bridge driver won't flood them again. This isn't critical at this time point, but will be when Neighbour Discovery traps are introduced as these are multicast packets that are trapped in the router. The second and third patches add new traps - for MLD and Router Alert packets. The last patch takes advantage of that and floods IPv6 unregistered multicast packets only to mrouter ports instead of all ports. ==================== Signed-off-by: David S. Miller <[email protected]>
2 parents ef210ec + 9df552e commit ff65fa6

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3688,6 +3688,7 @@ enum mlxsw_reg_htgt_trap_group {
36883688
MLXSW_REG_HTGT_TRAP_GROUP_SP_IP2ME,
36893689
MLXSW_REG_HTGT_TRAP_GROUP_SP_DHCP,
36903690
MLXSW_REG_HTGT_TRAP_GROUP_SP_EVENT,
3691+
MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_MLD,
36913692
};
36923693

36933694
/* reg_htgt_trap_group

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

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3333,15 +3333,24 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
33333333
MLXSW_SP_RXL_MARK(ARPBC, MIRROR_TO_CPU, ARP, false),
33343334
MLXSW_SP_RXL_MARK(ARPUC, MIRROR_TO_CPU, ARP, false),
33353335
MLXSW_SP_RXL_NO_MARK(FID_MISS, TRAP_TO_CPU, IP2ME, false),
3336+
MLXSW_SP_RXL_MARK(IPV6_MLDV12_LISTENER_QUERY, MIRROR_TO_CPU, IPV6_MLD,
3337+
false),
3338+
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV1_LISTENER_REPORT, TRAP_TO_CPU, IPV6_MLD,
3339+
false),
3340+
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV1_LISTENER_DONE, TRAP_TO_CPU, IPV6_MLD,
3341+
false),
3342+
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV2_LISTENER_REPORT, TRAP_TO_CPU, IPV6_MLD,
3343+
false),
33363344
/* L3 traps */
3337-
MLXSW_SP_RXL_NO_MARK(MTUERROR, TRAP_TO_CPU, ROUTER_EXP, false),
3338-
MLXSW_SP_RXL_NO_MARK(TTLERROR, TRAP_TO_CPU, ROUTER_EXP, false),
3339-
MLXSW_SP_RXL_NO_MARK(LBERROR, TRAP_TO_CPU, ROUTER_EXP, false),
3345+
MLXSW_SP_RXL_MARK(MTUERROR, TRAP_TO_CPU, ROUTER_EXP, false),
3346+
MLXSW_SP_RXL_MARK(TTLERROR, TRAP_TO_CPU, ROUTER_EXP, false),
3347+
MLXSW_SP_RXL_MARK(LBERROR, TRAP_TO_CPU, ROUTER_EXP, false),
33403348
MLXSW_SP_RXL_MARK(OSPF, TRAP_TO_CPU, OSPF, false),
3341-
MLXSW_SP_RXL_NO_MARK(IP2ME, TRAP_TO_CPU, IP2ME, false),
3342-
MLXSW_SP_RXL_NO_MARK(RTR_INGRESS0, TRAP_TO_CPU, REMOTE_ROUTE, false),
3343-
MLXSW_SP_RXL_NO_MARK(HOST_MISS_IPV4, TRAP_TO_CPU, ARP_MISS, false),
3344-
MLXSW_SP_RXL_NO_MARK(BGP_IPV4, TRAP_TO_CPU, BGP_IPV4, false),
3349+
MLXSW_SP_RXL_MARK(IP2ME, TRAP_TO_CPU, IP2ME, false),
3350+
MLXSW_SP_RXL_MARK(RTR_INGRESS0, TRAP_TO_CPU, REMOTE_ROUTE, false),
3351+
MLXSW_SP_RXL_MARK(HOST_MISS_IPV4, TRAP_TO_CPU, ARP_MISS, false),
3352+
MLXSW_SP_RXL_MARK(BGP_IPV4, TRAP_TO_CPU, BGP_IPV4, false),
3353+
MLXSW_SP_RXL_MARK(ROUTER_ALERT_IPV4, TRAP_TO_CPU, ROUTER_EXP, false),
33453354
/* PKT Sample trap */
33463355
MLXSW_RXL(mlxsw_sp_rx_listener_sample_func, PKT_SAMPLE, MIRROR_TO_CPU,
33473356
false, SP_IP2ME, DISCARD),
@@ -3376,6 +3385,7 @@ static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
33763385
burst_size = 7;
33773386
break;
33783387
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IGMP:
3388+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_MLD:
33793389
rate = 16 * 1024;
33803390
burst_size = 10;
33813391
break;
@@ -3440,6 +3450,7 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
34403450
break;
34413451
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IGMP:
34423452
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IP2ME:
3453+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_MLD:
34433454
priority = 3;
34443455
tc = 3;
34453456
break;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -109,14 +109,14 @@ static const int mlxsw_sp_sfgc_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = {
109109

110110
static const int mlxsw_sp_sfgc_bc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = {
111111
[MLXSW_REG_SFGC_TYPE_BROADCAST] = 1,
112-
[MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_IPV6] = 1,
113112
[MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_NON_IP] = 1,
114113
[MLXSW_REG_SFGC_TYPE_IPV4_LINK_LOCAL] = 1,
115114
[MLXSW_REG_SFGC_TYPE_IPV6_ALL_HOST] = 1,
116115
};
117116

118117
static const int mlxsw_sp_sfgc_mc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = {
119118
[MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_IPV4] = 1,
119+
[MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_IPV6] = 1,
120120
};
121121

122122
static const int *mlxsw_sp_packet_type_sfgc_types[] = {

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,14 @@ enum {
6363
MLXSW_TRAP_ID_LBERROR = 0x54,
6464
MLXSW_TRAP_ID_OSPF = 0x55,
6565
MLXSW_TRAP_ID_IP2ME = 0x5F,
66+
MLXSW_TRAP_ID_IPV6_MLDV12_LISTENER_QUERY = 0x65,
67+
MLXSW_TRAP_ID_IPV6_MLDV1_LISTENER_REPORT = 0x66,
68+
MLXSW_TRAP_ID_IPV6_MLDV1_LISTENER_DONE = 0x67,
69+
MLXSW_TRAP_ID_IPV6_MLDV2_LISTENER_REPORT = 0x68,
6670
MLXSW_TRAP_ID_RTR_INGRESS0 = 0x70,
6771
MLXSW_TRAP_ID_BGP_IPV4 = 0x88,
6872
MLXSW_TRAP_ID_HOST_MISS_IPV4 = 0x90,
73+
MLXSW_TRAP_ID_ROUTER_ALERT_IPV4 = 0xD6,
6974
MLXSW_TRAP_ID_ACL0 = 0x1C0,
7075

7176
MLXSW_TRAP_ID_MAX = 0x1FF

0 commit comments

Comments
 (0)