]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/mellanox/mlxsw/spectrum.h
mlxsw: Adding layer 2 multicast support
[karo-tx-linux.git] / drivers / net / ethernet / mellanox / mlxsw / spectrum.h
index 7601789dd5226eec3831ce19ee5f3184deb0e0c2..199f91a6296201efa0869773c315eba27c9cf800 100644 (file)
@@ -44,6 +44,7 @@
 #include <linux/list.h>
 #include <net/switchdev.h>
 
+#include "port.h"
 #include "core.h"
 
 #define MLXSW_SP_VFID_BASE VLAN_N_VID
@@ -54,6 +55,8 @@
 #define MLXSW_SP_LAG_MAX 64
 #define MLXSW_SP_PORT_PER_LAG_MAX 16
 
+#define MLXSW_SP_MID_MAX 7000
+
 struct mlxsw_sp_port;
 
 struct mlxsw_sp_upper {
@@ -69,6 +72,14 @@ struct mlxsw_sp_vfid {
        u16 vid;
 };
 
+struct mlxsw_sp_mid {
+       struct list_head list;
+       unsigned char addr[ETH_ALEN];
+       u16 vid;
+       u16 mid;
+       unsigned int ref_count;
+};
+
 static inline u16 mlxsw_sp_vfid_to_fid(u16 vfid)
 {
        return MLXSW_SP_VFID_BASE + vfid;
@@ -93,6 +104,10 @@ struct mlxsw_sp {
                struct list_head list;
                unsigned long mapped[BITS_TO_LONGS(MLXSW_SP_VFID_BR_MAX)];
        } br_vfids;
+       struct {
+               struct list_head list;
+               unsigned long mapped[BITS_TO_LONGS(MLXSW_SP_MID_MAX)];
+       } br_mids;
        unsigned long active_fids[BITS_TO_LONGS(VLAN_N_VID)];
        struct mlxsw_sp_port **ports;
        struct mlxsw_core *core;