Skip to content

Commit 9785b92

Browse files
idoschdavem330
authored andcommitted
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 <[email protected]> Reviewed-by: Jiri Pirko <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent dacc4e3 commit 9785b92

File tree

3 files changed

+10
-0
lines changed

3 files changed

+10
-0
lines changed

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5548,6 +5548,7 @@ enum mlxsw_reg_htgt_trap_group {
55485548
MLXSW_REG_HTGT_TRAP_GROUP_SP_PKT_SAMPLE,
55495549
MLXSW_REG_HTGT_TRAP_GROUP_SP_FLOW_LOGGING,
55505550
MLXSW_REG_HTGT_TRAP_GROUP_SP_FID_MISS,
5551+
MLXSW_REG_HTGT_TRAP_GROUP_SP_BFD,
55515552
MLXSW_REG_HTGT_TRAP_GROUP_SP_DUMMY,
55525553
MLXSW_REG_HTGT_TRAP_GROUP_SP_L2_DISCARDS,
55535554
MLXSW_REG_HTGT_TRAP_GROUP_SP_L3_DISCARDS,

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4093,6 +4093,8 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
40934093
MLXSW_SP_RXL_MARK(ROUTER_ALERT_IPV6, TRAP_TO_CPU, IP2ME, false),
40944094
MLXSW_SP_RXL_MARK(IPV4_VRRP, TRAP_TO_CPU, VRRP, false),
40954095
MLXSW_SP_RXL_MARK(IPV6_VRRP, TRAP_TO_CPU, VRRP, false),
4096+
MLXSW_SP_RXL_MARK(IPV4_BFD, TRAP_TO_CPU, BFD, false),
4097+
MLXSW_SP_RXL_MARK(IPV6_BFD, TRAP_TO_CPU, BFD, false),
40964098
MLXSW_SP_RXL_NO_MARK(DISCARD_ING_ROUTER_SIP_CLASS_E, FORWARD,
40974099
ROUTER_EXP, false),
40984100
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)
41854187
rate = 360;
41864188
burst_size = 7;
41874189
break;
4190+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_BFD:
4191+
rate = 20 * 1024;
4192+
burst_size = 10;
4193+
break;
41884194
default:
41894195
continue;
41904196
}
@@ -4226,6 +4232,7 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
42264232
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PIM:
42274233
case MLXSW_REG_HTGT_TRAP_GROUP_SP_PTP0:
42284234
case MLXSW_REG_HTGT_TRAP_GROUP_SP_VRRP:
4235+
case MLXSW_REG_HTGT_TRAP_GROUP_SP_BFD:
42294236
priority = 5;
42304237
tc = 5;
42314238
break;

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ enum {
6666
MLXSW_TRAP_ID_IPIP_DECAP_ERROR = 0xB1,
6767
MLXSW_TRAP_ID_NVE_DECAP_ARP = 0xB8,
6868
MLXSW_TRAP_ID_NVE_ENCAP_ARP = 0xBD,
69+
MLXSW_TRAP_ID_IPV4_BFD = 0xD0,
70+
MLXSW_TRAP_ID_IPV6_BFD = 0xD1,
6971
MLXSW_TRAP_ID_ROUTER_ALERT_IPV4 = 0xD6,
7072
MLXSW_TRAP_ID_ROUTER_ALERT_IPV6 = 0xD7,
7173
MLXSW_TRAP_ID_DISCARD_NON_ROUTABLE = 0x11A,

0 commit comments

Comments
 (0)