Merge branch 'mlxsw-Various-trap-changes-part-1'
Ido Schimmel says: ==================== mlxsw: Various trap changes - part 1 This patch set contains various changes in mlxsw trap configuration. Another set will perform similar changes before exposing control traps (e.g., IGMP query, ARP request) via devlink-trap. Tested with existing devlink-trap selftests. Please see individual patches for a detailed changelog. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Коммит
f36221e866
|
@ -5531,23 +5531,23 @@ enum mlxsw_reg_htgt_trap_group {
|
|||
MLXSW_REG_HTGT_TRAP_GROUP_SP_STP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_LACP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_LLDP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_IGMP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_MC_SNOOPING,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_BGP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_OSPF,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_MULTICAST,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_ARP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_NEIGH_DISCOVERY,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_ROUTER_EXP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_REMOTE_ROUTE,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_IP2ME,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_DHCP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_EVENT,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_MLD,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_ND,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_LBERROR,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_PTP0,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_PTP1,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_VRRP,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_PKT_SAMPLE,
|
||||
|
||||
__MLXSW_REG_HTGT_TRAP_GROUP_MAX,
|
||||
MLXSW_REG_HTGT_TRAP_GROUP_MAX = __MLXSW_REG_HTGT_TRAP_GROUP_MAX - 1
|
||||
|
|
|
@ -4045,23 +4045,22 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
|
|||
MLXSW_SP_RXL_NO_MARK(LACP, TRAP_TO_CPU, LACP, true),
|
||||
MLXSW_RXL(mlxsw_sp_rx_listener_ptp, LLDP, TRAP_TO_CPU,
|
||||
false, SP_LLDP, DISCARD),
|
||||
MLXSW_SP_RXL_MARK(DHCP, MIRROR_TO_CPU, DHCP, false),
|
||||
MLXSW_SP_RXL_MARK(IGMP_QUERY, MIRROR_TO_CPU, IGMP, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V1_REPORT, TRAP_TO_CPU, IGMP, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V2_REPORT, TRAP_TO_CPU, IGMP, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V2_LEAVE, TRAP_TO_CPU, IGMP, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V3_REPORT, TRAP_TO_CPU, IGMP, false),
|
||||
MLXSW_SP_RXL_MARK(ARPBC, MIRROR_TO_CPU, ARP, false),
|
||||
MLXSW_SP_RXL_MARK(ARPUC, MIRROR_TO_CPU, ARP, false),
|
||||
MLXSW_SP_RXL_MARK(IGMP_QUERY, MIRROR_TO_CPU, MC_SNOOPING, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V1_REPORT, TRAP_TO_CPU, MC_SNOOPING, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V2_REPORT, TRAP_TO_CPU, MC_SNOOPING, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V2_LEAVE, TRAP_TO_CPU, MC_SNOOPING, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IGMP_V3_REPORT, TRAP_TO_CPU, MC_SNOOPING, false),
|
||||
MLXSW_SP_RXL_MARK(ARPBC, MIRROR_TO_CPU, NEIGH_DISCOVERY, false),
|
||||
MLXSW_SP_RXL_MARK(ARPUC, MIRROR_TO_CPU, NEIGH_DISCOVERY, false),
|
||||
MLXSW_SP_RXL_NO_MARK(FID_MISS, TRAP_TO_CPU, IP2ME, false),
|
||||
MLXSW_SP_RXL_MARK(IPV6_MLDV12_LISTENER_QUERY, MIRROR_TO_CPU, IPV6_MLD,
|
||||
false),
|
||||
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV1_LISTENER_REPORT, TRAP_TO_CPU, IPV6_MLD,
|
||||
false),
|
||||
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV1_LISTENER_DONE, TRAP_TO_CPU, IPV6_MLD,
|
||||
false),
|
||||
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV2_LISTENER_REPORT, TRAP_TO_CPU, IPV6_MLD,
|
||||
MLXSW_SP_RXL_MARK(IPV6_MLDV12_LISTENER_QUERY, MIRROR_TO_CPU,
|
||||
MC_SNOOPING, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV1_LISTENER_REPORT, TRAP_TO_CPU,
|
||||
MC_SNOOPING, false),
|
||||
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV1_LISTENER_DONE, TRAP_TO_CPU, MC_SNOOPING,
|
||||
false),
|
||||
MLXSW_SP_RXL_NO_MARK(IPV6_MLDV2_LISTENER_REPORT, TRAP_TO_CPU,
|
||||
MC_SNOOPING, false),
|
||||
/* L3 traps */
|
||||
MLXSW_SP_RXL_L3_MARK(LBERROR, MIRROR_TO_CPU, LBERROR, false),
|
||||
MLXSW_SP_RXL_MARK(IP2ME, TRAP_TO_CPU, IP2ME, false),
|
||||
|
@ -4074,18 +4073,19 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
|
|||
false),
|
||||
MLXSW_SP_RXL_MARK(IPV4_OSPF, TRAP_TO_CPU, OSPF, false),
|
||||
MLXSW_SP_RXL_MARK(IPV6_OSPF, TRAP_TO_CPU, OSPF, false),
|
||||
MLXSW_SP_RXL_MARK(IPV4_DHCP, TRAP_TO_CPU, DHCP, false),
|
||||
MLXSW_SP_RXL_MARK(IPV6_DHCP, TRAP_TO_CPU, DHCP, false),
|
||||
MLXSW_SP_RXL_MARK(RTR_INGRESS0, TRAP_TO_CPU, REMOTE_ROUTE, false),
|
||||
MLXSW_SP_RXL_MARK(IPV4_BGP, TRAP_TO_CPU, BGP, false),
|
||||
MLXSW_SP_RXL_MARK(IPV6_BGP, TRAP_TO_CPU, BGP, false),
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_ROUTER_SOLICITATION, TRAP_TO_CPU, IPV6_ND,
|
||||
false),
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_ROUTER_ADVERTISMENT, TRAP_TO_CPU, IPV6_ND,
|
||||
false),
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_NEIGHBOR_SOLICITATION, TRAP_TO_CPU, IPV6_ND,
|
||||
false),
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_NEIGHBOR_ADVERTISMENT, TRAP_TO_CPU, IPV6_ND,
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_ROUTER_ADVERTISEMENT, TRAP_TO_CPU, IPV6_ND,
|
||||
false),
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_NEIGHBOR_SOLICITATION, TRAP_TO_CPU,
|
||||
NEIGH_DISCOVERY, false),
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_NEIGHBOR_ADVERTISEMENT, TRAP_TO_CPU,
|
||||
NEIGH_DISCOVERY, false),
|
||||
MLXSW_SP_RXL_MARK(L3_IPV6_REDIRECTION, TRAP_TO_CPU, IPV6_ND, false),
|
||||
MLXSW_SP_RXL_MARK(IPV6_MC_LINK_LOCAL_DEST, TRAP_TO_CPU, ROUTER_EXP,
|
||||
false),
|
||||
|
@ -4103,7 +4103,7 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
|
|||
ROUTER_EXP, false),
|
||||
/* PKT Sample trap */
|
||||
MLXSW_RXL(mlxsw_sp_rx_listener_sample_func, PKT_SAMPLE, MIRROR_TO_CPU,
|
||||
false, SP_IP2ME, DISCARD),
|
||||
false, SP_PKT_SAMPLE, DISCARD),
|
||||
/* ACL trap */
|
||||
MLXSW_SP_RXL_NO_MARK(ACL0, TRAP_TO_CPU, IP2ME, false),
|
||||
/* Multicast Router Traps */
|
||||
|
@ -4112,8 +4112,9 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
|
|||
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, ARP, false),
|
||||
MLXSW_SP_RXL_NO_MARK(NVE_DECAP_ARP, TRAP_TO_CPU, ARP, false),
|
||||
MLXSW_SP_RXL_MARK(NVE_ENCAP_ARP, TRAP_TO_CPU, NEIGH_DISCOVERY, false),
|
||||
MLXSW_SP_RXL_NO_MARK(NVE_DECAP_ARP, TRAP_TO_CPU, NEIGH_DISCOVERY,
|
||||
false),
|
||||
/* PTP traps */
|
||||
MLXSW_RXL(mlxsw_sp_rx_listener_ptp, PTP0, TRAP_TO_CPU,
|
||||
false, SP_PTP0, DISCARD),
|
||||
|
@ -4152,17 +4153,16 @@ static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
|
|||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_OSPF:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_LBERROR:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_DHCP:
|
||||
rate = 128;
|
||||
burst_size = 7;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IGMP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_MLD:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_MC_SNOOPING:
|
||||
rate = 16 * 1024;
|
||||
burst_size = 10;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_BGP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_ARP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_DHCP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_NEIGH_DISCOVERY:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_ROUTER_EXP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_REMOTE_ROUTE:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_ND:
|
||||
|
@ -4231,19 +4231,18 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
|
|||
tc = 5;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_BGP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_DHCP:
|
||||
priority = 4;
|
||||
tc = 4;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IGMP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_MC_SNOOPING:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IP2ME:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_MLD:
|
||||
priority = 3;
|
||||
tc = 3;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_ARP:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_NEIGH_DISCOVERY:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_IPV6_ND:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PTP1:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_DHCP:
|
||||
priority = 2;
|
||||
tc = 2;
|
||||
break;
|
||||
|
@ -4253,9 +4252,10 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
|
|||
priority = 1;
|
||||
tc = 1;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PKT_SAMPLE:
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_LBERROR:
|
||||
priority = 0;
|
||||
tc = 1;
|
||||
tc = 0;
|
||||
break;
|
||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_EVENT:
|
||||
priority = MLXSW_REG_HTGT_DEFAULT_PRIORITY;
|
||||
|
|
|
@ -614,7 +614,7 @@ static const struct mlxsw_sp_sb_cm mlxsw_sp2_sb_cms_egress[] = {
|
|||
#define MLXSW_SP_CPU_PORT_SB_CM MLXSW_SP_SB_CM(0, 0, MLXSW_SP_SB_POOL_EGR_CPU)
|
||||
|
||||
static const struct mlxsw_sp_sb_cm mlxsw_sp_cpu_port_sb_cms[] = {
|
||||
MLXSW_SP_CPU_PORT_SB_CM,
|
||||
MLXSW_SP_SB_CM(1000, 8, MLXSW_SP_SB_POOL_EGR_CPU),
|
||||
MLXSW_SP_SB_CM(1000, 8, MLXSW_SP_SB_POOL_EGR_CPU),
|
||||
MLXSW_SP_SB_CM(1000, 8, MLXSW_SP_SB_POOL_EGR_CPU),
|
||||
MLXSW_SP_SB_CM(1000, 8, MLXSW_SP_SB_POOL_EGR_CPU),
|
||||
|
|
|
@ -21,7 +21,6 @@ struct mlxsw_sp_trap_group_item {
|
|||
struct devlink_trap_group group;
|
||||
u16 hw_group_id;
|
||||
u8 priority;
|
||||
u8 tc;
|
||||
};
|
||||
|
||||
#define MLXSW_SP_TRAP_LISTENERS_MAX 3
|
||||
|
@ -207,25 +206,21 @@ static const struct mlxsw_sp_trap_group_item mlxsw_sp_trap_group_items_arr[] = {
|
|||
.group = DEVLINK_TRAP_GROUP_GENERIC(L2_DROPS, 1),
|
||||
.hw_group_id = MLXSW_REG_HTGT_TRAP_GROUP_SP_L2_DISCARDS,
|
||||
.priority = 0,
|
||||
.tc = 1,
|
||||
},
|
||||
{
|
||||
.group = DEVLINK_TRAP_GROUP_GENERIC(L3_DROPS, 1),
|
||||
.hw_group_id = MLXSW_REG_HTGT_TRAP_GROUP_SP_L3_DISCARDS,
|
||||
.priority = 0,
|
||||
.tc = 1,
|
||||
},
|
||||
{
|
||||
.group = DEVLINK_TRAP_GROUP_GENERIC(TUNNEL_DROPS, 1),
|
||||
.hw_group_id = MLXSW_REG_HTGT_TRAP_GROUP_SP_TUNNEL_DISCARDS,
|
||||
.priority = 0,
|
||||
.tc = 1,
|
||||
},
|
||||
{
|
||||
.group = DEVLINK_TRAP_GROUP_GENERIC(ACL_DROPS, 1),
|
||||
.hw_group_id = MLXSW_REG_HTGT_TRAP_GROUP_SP_ACL_DISCARDS,
|
||||
.priority = 0,
|
||||
.tc = 1,
|
||||
},
|
||||
};
|
||||
|
||||
|
@ -865,7 +860,7 @@ __mlxsw_sp_trap_group_init(struct mlxsw_core *mlxsw_core,
|
|||
}
|
||||
|
||||
mlxsw_reg_htgt_pack(htgt_pl, group_item->hw_group_id, hw_policer_id,
|
||||
group_item->priority, group_item->tc);
|
||||
group_item->priority, group_item->priority);
|
||||
return mlxsw_reg_write(mlxsw_core, MLXSW_REG(htgt), htgt_pl);
|
||||
}
|
||||
|
||||
|
|
|
@ -55,10 +55,11 @@ enum {
|
|||
MLXSW_TRAP_ID_IPV4_BGP = 0x88,
|
||||
MLXSW_TRAP_ID_IPV6_BGP = 0x89,
|
||||
MLXSW_TRAP_ID_L3_IPV6_ROUTER_SOLICITATION = 0x8A,
|
||||
MLXSW_TRAP_ID_L3_IPV6_ROUTER_ADVERTISMENT = 0x8B,
|
||||
MLXSW_TRAP_ID_L3_IPV6_ROUTER_ADVERTISEMENT = 0x8B,
|
||||
MLXSW_TRAP_ID_L3_IPV6_NEIGHBOR_SOLICITATION = 0x8C,
|
||||
MLXSW_TRAP_ID_L3_IPV6_NEIGHBOR_ADVERTISMENT = 0x8D,
|
||||
MLXSW_TRAP_ID_L3_IPV6_NEIGHBOR_ADVERTISEMENT = 0x8D,
|
||||
MLXSW_TRAP_ID_L3_IPV6_REDIRECTION = 0x8E,
|
||||
MLXSW_TRAP_ID_IPV4_DHCP = 0x8F,
|
||||
MLXSW_TRAP_ID_HOST_MISS_IPV4 = 0x90,
|
||||
MLXSW_TRAP_ID_IPV6_MC_LINK_LOCAL_DEST = 0x91,
|
||||
MLXSW_TRAP_ID_HOST_MISS_IPV6 = 0x92,
|
||||
|
|
Загрузка…
Ссылка в новой задаче