linux/drivers/net/ethernet/mellanox/mlxsw/spectrum_fid.c

// SPDX-License-Identifier: BSD-3-Clause OR GPL-2.0
/* Copyright (c) 2017-2018 Mellanox Technologies. All rights reserved */

#include <linux/kernel.h>
#include <linux/bitops.h>
#include <linux/if_vlan.h>
#include <linux/if_bridge.h>
#include <linux/netdevice.h>
#include <linux/rhashtable.h>
#include <linux/rtnetlink.h>
#include <linux/refcount.h>

#include "spectrum.h"
#include "spectrum_router.h"
#include "reg.h"

struct mlxsw_sp_fid_family;

struct mlxsw_sp_fid_core {};

struct mlxsw_sp_fid_port_vid {};

struct mlxsw_sp_fid {};

struct mlxsw_sp_fid_8021q {};

struct mlxsw_sp_fid_8021d {};

static const struct rhashtable_params mlxsw_sp_fid_ht_params =;

static const struct rhashtable_params mlxsw_sp_fid_vni_ht_params =;

struct mlxsw_sp_flood_table {};

struct mlxsw_sp_fid_ops {};

enum mlxsw_sp_fid_flood_profile_id {};

struct mlxsw_sp_fid_flood_profile {};

struct mlxsw_sp_fid_family {};

static const int mlxsw_sp_sfgc_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] =;

static const int mlxsw_sp_sfgc_bc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] =;

static const int mlxsw_sp_sfgc_mc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] =;

static const int mlxsw_sp_sfgc_not_uc_packet_types[MLXSW_REG_SFGC_TYPE_MAX] =;

static const int mlxsw_sp_sfgc_any_packet_types[MLXSW_REG_SFGC_TYPE_MAX] =;

static const int *mlxsw_sp_packet_type_sfgc_types[] =;

struct mlxsw_sp_fid *mlxsw_sp_fid_lookup_by_index(struct mlxsw_sp *mlxsw_sp,
						  u16 fid_index)
{}

int mlxsw_sp_fid_nve_ifindex(const struct mlxsw_sp_fid *fid, int *nve_ifindex)
{}

int mlxsw_sp_fid_nve_type(const struct mlxsw_sp_fid *fid,
			  enum mlxsw_sp_nve_type *p_type)
{}

struct mlxsw_sp_fid *mlxsw_sp_fid_lookup_by_vni(struct mlxsw_sp *mlxsw_sp,
						__be32 vni)
{}

int mlxsw_sp_fid_vni(const struct mlxsw_sp_fid *fid, __be32 *vni)
{}

int mlxsw_sp_fid_nve_flood_index_set(struct mlxsw_sp_fid *fid,
				     u32 nve_flood_index)
{}

void mlxsw_sp_fid_nve_flood_index_clear(struct mlxsw_sp_fid *fid)
{}

bool mlxsw_sp_fid_nve_flood_index_is_set(const struct mlxsw_sp_fid *fid)
{}

int mlxsw_sp_fid_vni_set(struct mlxsw_sp_fid *fid, enum mlxsw_sp_nve_type type,
			 __be32 vni, int nve_ifindex)
{}

void mlxsw_sp_fid_vni_clear(struct mlxsw_sp_fid *fid)
{}

bool mlxsw_sp_fid_vni_is_set(const struct mlxsw_sp_fid *fid)
{}

void mlxsw_sp_fid_fdb_clear_offload(const struct mlxsw_sp_fid *fid,
				    const struct net_device *nve_dev)
{}

static const struct mlxsw_sp_flood_table *
mlxsw_sp_fid_flood_table_lookup(const struct mlxsw_sp_fid *fid,
				enum mlxsw_sp_flood_type packet_type)
{}

static u16
mlxsw_sp_fid_family_num_fids(const struct mlxsw_sp_fid_family *fid_family)
{}

static int
mlxsw_sp_fid_8021d_pgt_size(const struct mlxsw_sp_fid_family *fid_family,
			    u16 *p_pgt_size)
{}

static unsigned int mlxsw_sp_fid_rfid_port_offset_cff(unsigned int local_port)
{}

static int
mlxsw_sp_fid_rfid_pgt_size_cff(const struct mlxsw_sp_fid_family *fid_family,
			       u16 *p_pgt_size)
{}

static u16
mlxsw_sp_fid_pgt_base_ctl(const struct mlxsw_sp_fid_family *fid_family,
			  const struct mlxsw_sp_flood_table *flood_table)
{}

static u16
mlxsw_sp_fid_fid_mid_ctl(const struct mlxsw_sp_fid *fid,
			 const struct mlxsw_sp_flood_table *flood_table)
{}

int mlxsw_sp_fid_flood_set(struct mlxsw_sp_fid *fid,
			   enum mlxsw_sp_flood_type packet_type, u16 local_port,
			   bool member)
{}

int mlxsw_sp_fid_port_vid_map(struct mlxsw_sp_fid *fid,
			      struct mlxsw_sp_port *mlxsw_sp_port, u16 vid)
{}

void mlxsw_sp_fid_port_vid_unmap(struct mlxsw_sp_fid *fid,
				 struct mlxsw_sp_port *mlxsw_sp_port, u16 vid)
{}

u16 mlxsw_sp_fid_index(const struct mlxsw_sp_fid *fid)
{}

enum mlxsw_sp_fid_type mlxsw_sp_fid_type(const struct mlxsw_sp_fid *fid)
{}

struct mlxsw_sp_rif *mlxsw_sp_fid_rif(const struct mlxsw_sp_fid *fid)
{}

enum mlxsw_sp_rif_type
mlxsw_sp_fid_type_rif_type(const struct mlxsw_sp *mlxsw_sp,
			   enum mlxsw_sp_fid_type type)
{}

static struct mlxsw_sp_fid_8021q *
mlxsw_sp_fid_8021q_fid(const struct mlxsw_sp_fid *fid)
{}

u16 mlxsw_sp_fid_8021q_vid(const struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_8021q_setup(struct mlxsw_sp_fid *fid, const void *arg)
{}

static enum mlxsw_reg_sfmr_op mlxsw_sp_sfmr_op(bool valid)
{}

static void mlxsw_sp_fid_pack(char *sfmr_pl,
			      const struct mlxsw_sp_fid *fid,
			      enum mlxsw_reg_sfmr_op op)
{}

static void mlxsw_sp_fid_pack_ctl(char *sfmr_pl,
				  const struct mlxsw_sp_fid *fid,
				  enum mlxsw_reg_sfmr_op op)
{}

static u16
mlxsw_sp_fid_off_pgt_base_cff(const struct mlxsw_sp_fid_family *fid_family,
			      u16 fid_offset)
{}

static u16 mlxsw_sp_fid_pgt_base_cff(const struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_fid_pack_cff(char *sfmr_pl,
				      const struct mlxsw_sp_fid *fid,
				      enum mlxsw_reg_sfmr_op op)
{}

static u16 mlxsw_sp_fid_rfid_fid_offset_cff(struct mlxsw_sp *mlxsw_sp,
					    u16 port_lag_id, bool is_lag)
{}

static int mlxsw_sp_fid_op(const struct mlxsw_sp_fid *fid, bool valid)
{}

static int mlxsw_sp_fid_edit_op(const struct mlxsw_sp_fid *fid,
				const struct mlxsw_sp_rif *rif)
{}

static int mlxsw_sp_fid_vni_to_fid_map(const struct mlxsw_sp_fid *fid,
				       const struct mlxsw_sp_rif *rif,
				       bool valid)
{}

static int mlxsw_sp_fid_to_fid_rif_update(const struct mlxsw_sp_fid *fid,
					  const struct mlxsw_sp_rif *rif)
{}

static int mlxsw_sp_fid_vni_to_fid_rif_update(const struct mlxsw_sp_fid *fid,
					      const struct mlxsw_sp_rif *rif)
{}

static int
mlxsw_sp_fid_vid_to_fid_map(const struct mlxsw_sp_fid *fid, u16 vid, bool valid,
			    const struct mlxsw_sp_rif *rif)
{}

static int
mlxsw_sp_fid_8021q_vid_to_fid_rif_update(const struct mlxsw_sp_fid *fid,
					 const struct mlxsw_sp_rif *rif)
{}

static int
mlxsw_sp_fid_port_vid_to_fid_rif_update_one(const struct mlxsw_sp_fid *fid,
					    struct mlxsw_sp_fid_port_vid *pv,
					    bool irif_valid, u16 irif_index)
{}

static int mlxsw_sp_fid_vid_to_fid_rif_set(const struct mlxsw_sp_fid *fid,
					   const struct mlxsw_sp_rif *rif)
{}

static void mlxsw_sp_fid_vid_to_fid_rif_unset(const struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_reiv_handle(struct mlxsw_sp_fid *fid, u16 rif_index,
				    bool valid, u8 port_page)
{}

static int mlxsw_sp_fid_erif_eport_to_vid_map(struct mlxsw_sp_fid *fid,
					      u16 rif_index, bool valid)
{}

int mlxsw_sp_fid_rif_set(struct mlxsw_sp_fid *fid, struct mlxsw_sp_rif *rif)
{}

void mlxsw_sp_fid_rif_unset(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_vni_op(const struct mlxsw_sp_fid *fid)
{}

static int __mlxsw_sp_fid_port_vid_map(const struct mlxsw_sp_fid *fid,
				       u16 local_port, u16 vid, bool valid)
{}

static struct mlxsw_sp_fid_8021d *
mlxsw_sp_fid_8021d_fid(const struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_8021d_setup(struct mlxsw_sp_fid *fid, const void *arg)
{}

static int mlxsw_sp_fid_8021d_configure(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_8021d_deconfigure(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_8021d_index_alloc(struct mlxsw_sp_fid *fid,
					  const void *arg, u16 *p_fid_index)
{}

static bool
mlxsw_sp_fid_8021d_compare(const struct mlxsw_sp_fid *fid, const void *arg)
{}

static int mlxsw_sp_port_vp_mode_trans(struct mlxsw_sp_port *mlxsw_sp_port)
{}

static void mlxsw_sp_port_vlan_mode_trans(struct mlxsw_sp_port *mlxsw_sp_port)
{}

static int
mlxsw_sp_fid_port_vid_list_add(struct mlxsw_sp_fid *fid, u16 local_port,
			       u16 vid)
{}

static void
mlxsw_sp_fid_port_vid_list_del(struct mlxsw_sp_fid *fid, u16 local_port,
			       u16 vid)
{}

static int
mlxsw_sp_fid_mpe_table_map(const struct mlxsw_sp_fid *fid, u16 local_port,
			   u16 vid, bool valid)
{}

static int
mlxsw_sp_fid_erif_eport_to_vid_map_one(const struct mlxsw_sp_fid *fid,
				       u16 local_port, u16 vid, bool valid)
{}

static int mlxsw_sp_fid_evid_map(const struct mlxsw_sp_fid *fid, u16 local_port,
				 u16 vid, bool valid)
{}

static int mlxsw_sp_fid_8021d_port_vid_map(struct mlxsw_sp_fid *fid,
					   struct mlxsw_sp_port *mlxsw_sp_port,
					   u16 vid)
{}

static void
mlxsw_sp_fid_8021d_port_vid_unmap(struct mlxsw_sp_fid *fid,
				  struct mlxsw_sp_port *mlxsw_sp_port, u16 vid)
{}

static int mlxsw_sp_fid_8021d_vni_set(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_8021d_vni_clear(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_8021d_nve_flood_index_set(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_8021d_nve_flood_index_clear(struct mlxsw_sp_fid *fid)
{}

static void
mlxsw_sp_fid_8021d_fdb_clear_offload(const struct mlxsw_sp_fid *fid,
				     const struct net_device *nve_dev)
{}

static int
mlxsw_sp_fid_8021d_vid_to_fid_rif_update(const struct mlxsw_sp_fid *fid,
					 const struct mlxsw_sp_rif *rif)
{}

static int
mlxsw_sp_fid_flood_table_init_ctl(struct mlxsw_sp_fid_family *fid_family,
				  const struct mlxsw_sp_flood_table *flood_table)
{}

static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021d_ops_ctl =;

static u16
mlxsw_sp_fid_fid_mid_cff(const struct mlxsw_sp_fid *fid,
			 const struct mlxsw_sp_flood_table *flood_table)
{}

static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021d_ops_cff =;

#define MLXSW_SP_FID_8021Q_MAX
#define MLXSW_SP_FID_RFID_MAX

static const struct mlxsw_sp_flood_table mlxsw_sp_fid_8021d_flood_tables[] =;

static const
struct mlxsw_sp_fid_flood_profile mlxsw_sp_fid_8021d_flood_profile =;

static const struct mlxsw_sp_flood_table mlxsw_sp_fid_rsp_flood_tables_cff[] =;

static const
struct mlxsw_sp_fid_flood_profile mlxsw_sp_fid_rsp_flood_profile_cff =;

static const struct mlxsw_sp_flood_table mlxsw_sp_fid_nve_flood_tables_cff[] =;

static const
struct mlxsw_sp_fid_flood_profile mlxsw_sp_fid_nve_flood_profile_cff =;

static bool
mlxsw_sp_fid_8021q_compare(const struct mlxsw_sp_fid *fid, const void *arg)
{}

static void
mlxsw_sp_fid_8021q_fdb_clear_offload(const struct mlxsw_sp_fid *fid,
				     const struct net_device *nve_dev)
{}

static int mlxsw_sp_fid_rfid_setup_ctl(struct mlxsw_sp_fid *fid,
				       const void *arg)
{}

static int mlxsw_sp_fid_rfid_setup_cff(struct mlxsw_sp_fid *fid,
				       const void *arg)
{}

static int mlxsw_sp_fid_rfid_configure(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_rfid_deconfigure(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_rfid_index_alloc(struct mlxsw_sp_fid *fid,
					 const void *arg, u16 *p_fid_index)
{}

static bool mlxsw_sp_fid_rfid_compare(const struct mlxsw_sp_fid *fid,
				      const void *arg)
{}

static int mlxsw_sp_fid_rfid_port_vid_map(struct mlxsw_sp_fid *fid,
					  struct mlxsw_sp_port *mlxsw_sp_port,
					  u16 vid)
{}

static void
mlxsw_sp_fid_rfid_port_vid_unmap(struct mlxsw_sp_fid *fid,
				 struct mlxsw_sp_port *mlxsw_sp_port, u16 vid)
{}

static int mlxsw_sp_fid_rfid_vni_set(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_rfid_vni_clear(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_rfid_nve_flood_index_set(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_rfid_nve_flood_index_clear(struct mlxsw_sp_fid *fid)
{}

static int
mlxsw_sp_fid_rfid_vid_to_fid_rif_update(const struct mlxsw_sp_fid *fid,
					const struct mlxsw_sp_rif *rif)
{}

static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_rfid_ops_ctl =;

static int
mlxsw_sp_fid_rfid_port_add_cff(struct mlxsw_sp *mlxsw_sp,
			       const struct mlxsw_sp_flood_table *flood_table,
			       u16 pgt_addr, u16 smpe, unsigned int local_port)
{}

static void
mlxsw_sp_fid_rfid_port_del_cff(struct mlxsw_sp *mlxsw_sp,
			       const struct mlxsw_sp_flood_table *flood_table,
			       u16 pgt_addr, u16 smpe, u16 local_port)
{}

static int
mlxsw_sp_fid_rfid_port_memb_ft_cff(const struct mlxsw_sp_fid_family *fid_family,
				   const struct mlxsw_sp_flood_table *flood_table,
				   const struct mlxsw_sp_port *mlxsw_sp_port,
				   bool member)
{}

static int
mlxsw_sp_fid_rfid_port_memb_cff(const struct mlxsw_sp_fid_family *fid_family,
				const struct mlxsw_sp_port *mlxsw_sp_port,
				bool member)
{}

static int
mlxsw_sp_fid_rfid_port_init_cff(const struct mlxsw_sp_fid_family *fid_family,
				const struct mlxsw_sp_port *mlxsw_sp_port)
{}

static void
mlxsw_sp_fid_rfid_port_fini_cff(const struct mlxsw_sp_fid_family *fid_family,
				const struct mlxsw_sp_port *mlxsw_sp_port)
{}

static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_rfid_ops_cff =;

static int mlxsw_sp_fid_dummy_setup(struct mlxsw_sp_fid *fid, const void *arg)
{}

static int mlxsw_sp_fid_dummy_configure(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_dummy_deconfigure(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_dummy_index_alloc(struct mlxsw_sp_fid *fid,
					  const void *arg, u16 *p_fid_index)
{}

static bool mlxsw_sp_fid_dummy_compare(const struct mlxsw_sp_fid *fid,
				       const void *arg)
{}

static int mlxsw_sp_fid_dummy_vni_set(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_dummy_vni_clear(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_dummy_nve_flood_index_set(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_dummy_nve_flood_index_clear(struct mlxsw_sp_fid *fid)
{}

static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_dummy_ops =;

static int mlxsw_sp_fid_8021q_configure(struct mlxsw_sp_fid *fid)
{}

static void mlxsw_sp_fid_8021q_deconfigure(struct mlxsw_sp_fid *fid)
{}

static int mlxsw_sp_fid_8021q_port_vid_map(struct mlxsw_sp_fid *fid,
					   struct mlxsw_sp_port *mlxsw_sp_port,
					   u16 vid)
{}

static void
mlxsw_sp_fid_8021q_port_vid_unmap(struct mlxsw_sp_fid *fid,
				  struct mlxsw_sp_port *mlxsw_sp_port, u16 vid)
{}

static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021q_ops_ctl =;

static const struct mlxsw_sp_fid_ops mlxsw_sp_fid_8021q_ops_cff =;

/* There are 4K-2 802.1Q FIDs */
#define MLXSW_SP_FID_8021Q_START
#define MLXSW_SP_FID_8021Q_END

/* There are 1K 802.1D FIDs */
#define MLXSW_SP_FID_8021D_START
#define MLXSW_SP_FID_8021D_END

/* There is one dummy FID */
#define MLXSW_SP_FID_DUMMY

/* There are 11K rFIDs */
#define MLXSW_SP_RFID_START
#define MLXSW_SP_RFID_END

static const struct mlxsw_sp_fid_family mlxsw_sp1_fid_8021q_family =;

static const struct mlxsw_sp_fid_family mlxsw_sp1_fid_8021d_family =;

static const struct mlxsw_sp_fid_family mlxsw_sp1_fid_dummy_family =;

static const struct mlxsw_sp_fid_family mlxsw_sp_fid_rfid_family_ctl =;

static const struct mlxsw_sp_fid_family *mlxsw_sp1_fid_family_arr[] =;

static const struct mlxsw_sp_fid_family mlxsw_sp2_fid_8021q_family_ctl =;

static const struct mlxsw_sp_fid_family mlxsw_sp2_fid_8021d_family_ctl =;

static const struct mlxsw_sp_fid_family mlxsw_sp2_fid_dummy_family =;

static const struct mlxsw_sp_fid_family *mlxsw_sp2_fid_family_arr_ctl[] =;

static const struct mlxsw_sp_fid_family mlxsw_sp2_fid_8021q_family_cff =;

static const struct mlxsw_sp_fid_family mlxsw_sp2_fid_8021d_family_cff =;

static const struct mlxsw_sp_fid_family mlxsw_sp_fid_rfid_family_cff =;

static const struct mlxsw_sp_fid_family *mlxsw_sp2_fid_family_arr_cff[] =;

static struct mlxsw_sp_fid *mlxsw_sp_fid_lookup(struct mlxsw_sp *mlxsw_sp,
						enum mlxsw_sp_fid_type type,
						const void *arg)
{}

static struct mlxsw_sp_fid *mlxsw_sp_fid_get(struct mlxsw_sp *mlxsw_sp,
					     enum mlxsw_sp_fid_type type,
					     const void *arg)
{}

void mlxsw_sp_fid_put(struct mlxsw_sp_fid *fid)
{}

struct mlxsw_sp_fid *mlxsw_sp_fid_8021q_get(struct mlxsw_sp *mlxsw_sp, u16 vid)
{}

struct mlxsw_sp_fid *mlxsw_sp_fid_8021d_get(struct mlxsw_sp *mlxsw_sp,
					    int br_ifindex)
{}

struct mlxsw_sp_fid *mlxsw_sp_fid_8021q_lookup(struct mlxsw_sp *mlxsw_sp,
					       u16 vid)
{}

struct mlxsw_sp_fid *mlxsw_sp_fid_8021d_lookup(struct mlxsw_sp *mlxsw_sp,
					       int br_ifindex)
{}

struct mlxsw_sp_fid *mlxsw_sp_fid_rfid_get(struct mlxsw_sp *mlxsw_sp,
					   u16 rif_index)
{}

struct mlxsw_sp_fid *mlxsw_sp_fid_dummy_get(struct mlxsw_sp *mlxsw_sp)
{}

static int
mlxsw_sp_fid_flood_tables_init(struct mlxsw_sp_fid_family *fid_family)
{}

static void
mlxsw_sp_fid_flood_tables_fini(struct mlxsw_sp_fid_family *fid_family)
{}

static int mlxsw_sp_fid_family_register(struct mlxsw_sp *mlxsw_sp,
					const struct mlxsw_sp_fid_family *tmpl)
{}

static void
mlxsw_sp_fid_family_unregister(struct mlxsw_sp *mlxsw_sp,
			       struct mlxsw_sp_fid_family *fid_family)
{}

static int mlxsw_sp_fid_port_init(const struct mlxsw_sp_port *mlxsw_sp_port)
{}

static void mlxsw_sp_fid_port_fini(const struct mlxsw_sp_port *mlxsw_sp_port)
{}

int mlxsw_sp_port_fids_init(struct mlxsw_sp_port *mlxsw_sp_port)
{}

void mlxsw_sp_port_fids_fini(struct mlxsw_sp_port *mlxsw_sp_port)
{}

int mlxsw_sp_fid_port_join_lag(const struct mlxsw_sp_port *mlxsw_sp_port)
{}

void mlxsw_sp_fid_port_leave_lag(const struct mlxsw_sp_port *mlxsw_sp_port)
{}

static int
mlxsw_sp_fids_init(struct mlxsw_sp *mlxsw_sp,
		   const struct mlxsw_sp_fid_family *fid_family_arr[])
{}

static void mlxsw_sp_fids_fini(struct mlxsw_sp *mlxsw_sp)
{}

static int mlxsw_sp1_fids_init(struct mlxsw_sp *mlxsw_sp)
{}

const struct mlxsw_sp_fid_core_ops mlxsw_sp1_fid_core_ops =;

static int mlxsw_sp_fid_check_flood_profile_id(struct mlxsw_sp *mlxsw_sp,
					       int profile_id)
{}

static int
mlxsw_sp2_fids_init_flood_table(struct mlxsw_sp *mlxsw_sp,
				enum mlxsw_sp_fid_flood_profile_id profile_id,
				const struct mlxsw_sp_flood_table *flood_table)
{}

static int
mlxsw_sp2_fids_init_flood_profile(struct mlxsw_sp *mlxsw_sp,
				  const struct mlxsw_sp_fid_flood_profile *
					flood_profile)
{}

static const
struct mlxsw_sp_fid_flood_profile *mlxsw_sp_fid_flood_profiles[] =;

static int
mlxsw_sp2_fids_init_flood_profiles(struct mlxsw_sp *mlxsw_sp)
{}

static int mlxsw_sp2_fids_init_ctl(struct mlxsw_sp *mlxsw_sp)
{}

static int mlxsw_sp2_fids_init_cff(struct mlxsw_sp *mlxsw_sp)
{}

static int mlxsw_sp2_fids_init(struct mlxsw_sp *mlxsw_sp)
{}

const struct mlxsw_sp_fid_core_ops mlxsw_sp2_fid_core_ops =;