]> git.baikalelectronics.ru Git - kernel.git/commitdiff
mlxsw: spectrum: Use separate trap group for FID miss
authorIdo Schimmel <idosch@mellanox.com>
Mon, 25 May 2020 23:05:47 +0000 (02:05 +0300)
committerDavid S. Miller <davem@davemloft.net>
Wed, 27 May 2020 03:33:57 +0000 (20:33 -0700)
When a packet enters the device it is classified to a filtering
identifier (FID) based on the ingress port and VLAN. The FID miss trap
is used to trap packets for which a FID could not be found.

In mlxsw this trap should only be triggered when a port is enslaved to
an OVS bridge and a matching ACL rule could not be found, so as to
trigger learning.

These packets are therefore completely unrelated to packets hitting
local routes and should be in a different group. Move 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>
drivers/net/ethernet/mellanox/mlxsw/reg.h
drivers/net/ethernet/mellanox/mlxsw/spectrum.c

index 6df7cc8a69f1b15e9f4b8ab0df9eb249767cfb86..b55a833a5d179fab00b9d026addf228868ab8d8e 100644 (file)
@@ -5549,6 +5549,7 @@ enum mlxsw_reg_htgt_trap_group {
        MLXSW_REG_HTGT_TRAP_GROUP_SP_VRRP,
        MLXSW_REG_HTGT_TRAP_GROUP_SP_PKT_SAMPLE,
        MLXSW_REG_HTGT_TRAP_GROUP_SP_FLOW_LOGGING,
+       MLXSW_REG_HTGT_TRAP_GROUP_SP_FID_MISS,
 
        __MLXSW_REG_HTGT_TRAP_GROUP_MAX,
        MLXSW_REG_HTGT_TRAP_GROUP_MAX = __MLXSW_REG_HTGT_TRAP_GROUP_MAX - 1
index 141a605582c6c3d39f3a193b0110f14f2fff432a..ac71d67457aa9baaa5c6e74ca04fd40bb1ba1c19 100644 (file)
@@ -4052,7 +4052,7 @@ static const struct mlxsw_listener mlxsw_sp_listener[] = {
        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_NO_MARK(FID_MISS, TRAP_TO_CPU, FID_MISS, false),
        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,
@@ -4169,6 +4169,7 @@ static int mlxsw_sp_cpu_policers_set(struct mlxsw_core *mlxsw_core)
                case MLXSW_REG_HTGT_TRAP_GROUP_SP_MULTICAST:
                case MLXSW_REG_HTGT_TRAP_GROUP_SP_FLOW_LOGGING:
                case MLXSW_REG_HTGT_TRAP_GROUP_SP_IP2ME:
+               case MLXSW_REG_HTGT_TRAP_GROUP_SP_FID_MISS:
                        rate = 1024;
                        burst_size = 7;
                        break;
@@ -4248,6 +4249,7 @@ static int mlxsw_sp_trap_groups_set(struct mlxsw_core *mlxsw_core)
                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_MULTICAST:
+               case MLXSW_REG_HTGT_TRAP_GROUP_SP_FID_MISS:
                        priority = 1;
                        tc = 1;
                        break;