net: dsa: move definitions from dsa_priv.h to slave.c
[linux-2.6-microblaze.git] / net / dsa / slave.c
index d4c4369..337cbd8 100644 (file)
 #include "slave.h"
 #include "tag.h"
 
+struct dsa_switchdev_event_work {
+       struct net_device *dev;
+       struct net_device *orig_dev;
+       struct work_struct work;
+       unsigned long event;
+       /* Specific for SWITCHDEV_FDB_ADD_TO_DEVICE and
+        * SWITCHDEV_FDB_DEL_TO_DEVICE
+        */
+       unsigned char addr[ETH_ALEN];
+       u16 vid;
+       bool host_addr;
+};
+
+enum dsa_standalone_event {
+       DSA_UC_ADD,
+       DSA_UC_DEL,
+       DSA_MC_ADD,
+       DSA_MC_DEL,
+};
+
+struct dsa_standalone_event_work {
+       struct work_struct work;
+       struct net_device *dev;
+       enum dsa_standalone_event event;
+       unsigned char addr[ETH_ALEN];
+       u16 vid;
+};
+
+static bool dsa_switch_supports_uc_filtering(struct dsa_switch *ds)
+{
+       return ds->ops->port_fdb_add && ds->ops->port_fdb_del &&
+              ds->fdb_isolation && !ds->vlan_filtering_is_global &&
+              !ds->needs_standalone_vlan_filtering;
+}
+
+static bool dsa_switch_supports_mc_filtering(struct dsa_switch *ds)
+{
+       return ds->ops->port_mdb_add && ds->ops->port_mdb_del &&
+              ds->fdb_isolation && !ds->vlan_filtering_is_global &&
+              !ds->needs_standalone_vlan_filtering;
+}
+
 static void dsa_slave_standalone_event_work(struct work_struct *work)
 {
        struct dsa_standalone_event_work *standalone_work =