mirror of https://gitee.com/openkylin/linux.git
mlxsw: spectrum: Add packet traps for BFD packets
Bidirectional Forwarding Detection (BFD) provides "low-overhead, short-duration detection of failures in the path between adjacent forwarding engines" (RFC 5880). This is accomplished by exchanging BFD packets between the two forwarding engines. Up until now these packets were trapped via the general local delivery (i.e., IP2ME) trap which also traps a lot of other packets that are not as time-sensitive as BFD packets. Expose dedicated traps for BFD packets so that user space could configure a dedicated policer for them. Signed-off-by: Ido Schimmel <idosch@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
dacc4e3acf
commit
9785b92b44
|
@ -5548,6 +5548,7 @@ enum mlxsw_reg_htgt_trap_group {
|
||||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_PKT_SAMPLE,
|
MLXSW_REG_HTGT_TRAP_GROUP_SP_PKT_SAMPLE,
|
||||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_FLOW_LOGGING,
|
MLXSW_REG_HTGT_TRAP_GROUP_SP_FLOW_LOGGING,
|
||||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_FID_MISS,
|
MLXSW_REG_HTGT_TRAP_GROUP_SP_FID_MISS,
|
||||||
|
MLXSW_REG_HTGT_TRAP_GROUP_SP_BFD,
|
||||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_DUMMY,
|
MLXSW_REG_HTGT_TRAP_GROUP_SP_DUMMY,
|
||||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_L2_DISCARDS,
|
MLXSW_REG_HTGT_TRAP_GROUP_SP_L2_DISCARDS,
|
||||||
MLXSW_REG_HTGT_TRAP_GROUP_SP_L3_DISCARDS,
|
MLXSW_REG_HTGT_TRAP_GROUP_SP_L3_DISCARDS,
|
||||||
|
|
|
@ -4093,6 +4093,8 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
|
||||||
MLXSW_SP_RXL_MARK(ROUTER_ALERT_IPV6, TRAP_TO_CPU, IP2ME, false),
|
MLXSW_SP_RXL_MARK(ROUTER_ALERT_IPV6, TRAP_TO_CPU, IP2ME, false),
|
||||||
MLXSW_SP_RXL_MARK(IPV4_VRRP, TRAP_TO_CPU, VRRP, false),
|
MLXSW_SP_RXL_MARK(IPV4_VRRP, TRAP_TO_CPU, VRRP, false),
|
||||||
MLXSW_SP_RXL_MARK(IPV6_VRRP, TRAP_TO_CPU, VRRP, false),
|
MLXSW_SP_RXL_MARK(IPV6_VRRP, TRAP_TO_CPU, VRRP, false),
|
||||||
|
MLXSW_SP_RXL_MARK(IPV4_BFD, TRAP_TO_CPU, BFD, false),
|
||||||
|
MLXSW_SP_RXL_MARK(IPV6_BFD, TRAP_TO_CPU, BFD, false),
|
||||||
MLXSW_SP_RXL_NO_MARK(DISCARD_ING_ROUTER_SIP_CLASS_E, FORWARD,
|
MLXSW_SP_RXL_NO_MARK(DISCARD_ING_ROUTER_SIP_CLASS_E, FORWARD,
|
||||||
ROUTER_EXP, false),
|
ROUTER_EXP, false),
|
||||||
MLXSW_SP_RXL_NO_MARK(DISCARD_ING_ROUTER_MC_DMAC, FORWARD,
|
MLXSW_SP_RXL_NO_MARK(DISCARD_ING_ROUTER_MC_DMAC, FORWARD,
|
||||||
|
@ -4185,6 +4187,10 @@ static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
|
||||||
rate = 360;
|
rate = 360;
|
||||||
burst_size = 7;
|
burst_size = 7;
|
||||||
break;
|
break;
|
||||||
|
case MLXSW_REG_HTGT_TRAP_GROUP_SP_BFD:
|
||||||
|
rate = 20 * 1024;
|
||||||
|
burst_size = 10;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -4226,6 +4232,7 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
|
||||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM:
|
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM:
|
||||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PTP0:
|
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PTP0:
|
||||||
case MLXSW_REG_HTGT_TRAP_GROUP_SP_VRRP:
|
case MLXSW_REG_HTGT_TRAP_GROUP_SP_VRRP:
|
||||||
|
case MLXSW_REG_HTGT_TRAP_GROUP_SP_BFD:
|
||||||
priority = 5;
|
priority = 5;
|
||||||
tc = 5;
|
tc = 5;
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -66,6 +66,8 @@ enum {
|
||||||
MLXSW_TRAP_ID_IPIP_DECAP_ERROR = 0xB1,
|
MLXSW_TRAP_ID_IPIP_DECAP_ERROR = 0xB1,
|
||||||
MLXSW_TRAP_ID_NVE_DECAP_ARP = 0xB8,
|
MLXSW_TRAP_ID_NVE_DECAP_ARP = 0xB8,
|
||||||
MLXSW_TRAP_ID_NVE_ENCAP_ARP = 0xBD,
|
MLXSW_TRAP_ID_NVE_ENCAP_ARP = 0xBD,
|
||||||
|
MLXSW_TRAP_ID_IPV4_BFD = 0xD0,
|
||||||
|
MLXSW_TRAP_ID_IPV6_BFD = 0xD1,
|
||||||
MLXSW_TRAP_ID_ROUTER_ALERT_IPV4 = 0xD6,
|
MLXSW_TRAP_ID_ROUTER_ALERT_IPV4 = 0xD6,
|
||||||
MLXSW_TRAP_ID_ROUTER_ALERT_IPV6 = 0xD7,
|
MLXSW_TRAP_ID_ROUTER_ALERT_IPV6 = 0xD7,
|
||||||
MLXSW_TRAP_ID_DISCARD_NON_ROUTABLE = 0x11A,
|
MLXSW_TRAP_ID_DISCARD_NON_ROUTABLE = 0x11A,
|
||||||
|
|
Loading…
Reference in New Issue