mlxsw: spectrum_fid: Add an "any" packet type
authorPetr Machata <petrm@nvidia.com>
Thu, 14 Dec 2023 13:19:06 +0000 (14:19 +0100)
committerDavid S. Miller <davem@davemloft.net>
Fri, 15 Dec 2023 10:58:00 +0000 (10:58 +0000)
Flood profiles have been used prior to CFF support for NVE underlay. Like
is the case with FID flooding, an NVE profile describes at which offset a
datum is located given traffic type. mlxsw currently only ever uses one KVD
entry for NVE lookup, i.e. regardless of traffic type, the offset is always
zero. To be able to describe this, add a traffic type enumerator describing
"any traffic type".

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Amit Cohen <amcohen@nvidia.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlxsw/spectrum.h
drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c

index 61612c413310233df4511426b5a67d1c8af3393d..a0c9775fa9552c70fb0c11f6056f4b692146ba70 100644 (file)
@@ -515,6 +515,8 @@ enum mlxsw_sp_flood_type {
        MLXSW_SP_FLOOD_TYPE_MC,
        /* For RSP FIDs in CFF mode. */
        MLXSW_SP_FLOOD_TYPE_NOT_UC,
+       /* For NVE traffic. */
+       MLXSW_SP_FLOOD_TYPE_ANY,
 };
 
 int mlxsw_sp_port_get_stats_raw(struct net_device *dev, int grp,
index 4011170862354d17828d421316b1fff43eb0836d..379a911f463f9ed1823bedf4ef6e6b66a73b978e 100644 (file)
@@ -167,11 +167,22 @@ static const int mlxsw_sp_sfgc_not_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = {
        [MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_IPV4]       = 1,
 };
 
+static const int mlxsw_sp_sfgc_any_packet_types[MLXSW_REG_SFGC_TYPE_MAX] = {
+       [MLXSW_REG_SFGC_TYPE_UNKNOWN_UNICAST]                   = 1,
+       [MLXSW_REG_SFGC_TYPE_BROADCAST]                         = 1,
+       [MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_NON_IP]     = 1,
+       [MLXSW_REG_SFGC_TYPE_IPV4_LINK_LOCAL]                   = 1,
+       [MLXSW_REG_SFGC_TYPE_IPV6_ALL_HOST]                     = 1,
+       [MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_IPV6]       = 1,
+       [MLXSW_REG_SFGC_TYPE_UNREGISTERED_MULTICAST_IPV4]       = 1,
+};
+
 static const int *mlxsw_sp_packet_type_sfgc_types[] = {
        [MLXSW_SP_FLOOD_TYPE_UC]        = mlxsw_sp_sfgc_uc_packet_types,
        [MLXSW_SP_FLOOD_TYPE_BC]        = mlxsw_sp_sfgc_bc_packet_types,
        [MLXSW_SP_FLOOD_TYPE_MC]        = mlxsw_sp_sfgc_mc_packet_types,
        [MLXSW_SP_FLOOD_TYPE_NOT_UC]    = mlxsw_sp_sfgc_not_uc_packet_types,
+       [MLXSW_SP_FLOOD_TYPE_ANY]       = mlxsw_sp_sfgc_any_packet_types,
 };
 
 struct mlxsw_sp_fid *mlxsw_sp_fid_lookup_by_index(struct mlxsw_sp *mlxsw_sp,