net: dsa: Allow compiling out legacy support
authorFlorian Fainelli <f.fainelli@gmail.com>
Wed, 6 Dec 2017 23:03:33 +0000 (15:03 -0800)
committerDavid S. Miller <davem@davemloft.net>
Thu, 7 Dec 2017 19:14:54 +0000 (14:14 -0500)
Introduce a configuration option: CONFIG_NET_DSA_LEGACY allowing to compile out
support for the old platform device and Device Tree binding registration.
Support for these configurations is scheduled to be removed in 4.17.

Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/dsa/Kconfig
drivers/net/dsa/mv88e6xxx/chip.c
include/net/dsa.h
net/dsa/Kconfig
net/dsa/Makefile
net/dsa/dsa_priv.h
net/dsa/legacy.c
net/dsa/slave.c

index 83a9bc892a3be4ded43532bad2b51bad3760d785..2b81b97e994f1743c67ad1aff565542a1321a07c 100644 (file)
@@ -33,7 +33,7 @@ config NET_DSA_MT7530
 
 config NET_DSA_MV88E6060
        tristate "Marvell 88E6060 ethernet switch chip support"
-       depends on NET_DSA
+       depends on NET_DSA && NET_DSA_LEGACY
        select NET_DSA_TAG_TRAILER
        ---help---
          This enables support for the Marvell 88E6060 ethernet switch
index 29b79d6d29258ce29a93205fc154406cab31b6ab..24e5d98f15a1c8f190a300a3dc3860566ee3f3ed 100644 (file)
@@ -3755,6 +3755,7 @@ static enum dsa_tag_protocol mv88e6xxx_get_tag_protocol(struct dsa_switch *ds,
        return chip->info->tag_protocol;
 }
 
+#if IS_ENABLED(CONFIG_NET_DSA_LEGACY)
 static const char *mv88e6xxx_drv_probe(struct device *dsa_dev,
                                       struct device *host_dev, int sw_addr,
                                       void **priv)
@@ -3802,6 +3803,7 @@ free:
 
        return NULL;
 }
+#endif
 
 static int mv88e6xxx_port_mdb_prepare(struct dsa_switch *ds, int port,
                                      const struct switchdev_obj_port_mdb *mdb)
@@ -3841,7 +3843,9 @@ static int mv88e6xxx_port_mdb_del(struct dsa_switch *ds, int port,
 }
 
 static const struct dsa_switch_ops mv88e6xxx_switch_ops = {
+#if IS_ENABLED(CONFIG_NET_DSA_LEGACY)
        .probe                  = mv88e6xxx_drv_probe,
+#endif
        .get_tag_protocol       = mv88e6xxx_get_tag_protocol,
        .setup                  = mv88e6xxx_setup,
        .adjust_link            = mv88e6xxx_adjust_link,
index d29feccaefabf073fe20197ac710ce96d6e250d2..6cb602dd970c458042da6bf0199f8beed0d5c6c9 100644 (file)
@@ -321,12 +321,14 @@ static inline unsigned int dsa_upstream_port(struct dsa_switch *ds, int port)
 typedef int dsa_fdb_dump_cb_t(const unsigned char *addr, u16 vid,
                              bool is_static, void *data);
 struct dsa_switch_ops {
+#if IS_ENABLED(CONFIG_NET_DSA_LEGACY)
        /*
         * Legacy probing.
         */
        const char      *(*probe)(struct device *dsa_dev,
                                  struct device *host_dev, int sw_addr,
                                  void **priv);
+#endif
 
        enum dsa_tag_protocol (*get_tag_protocol)(struct dsa_switch *ds,
                                                  int port);
@@ -474,11 +476,20 @@ struct dsa_switch_driver {
        const struct dsa_switch_ops *ops;
 };
 
+#if IS_ENABLED(CONFIG_NET_DSA_LEGACY)
 /* Legacy driver registration */
 void register_switch_driver(struct dsa_switch_driver *type);
 void unregister_switch_driver(struct dsa_switch_driver *type);
 struct mii_bus *dsa_host_dev_to_mii_bus(struct device *dev);
 
+#else
+static inline void register_switch_driver(struct dsa_switch_driver *type) { }
+static inline void unregister_switch_driver(struct dsa_switch_driver *type) { }
+static inline struct mii_bus *dsa_host_dev_to_mii_bus(struct device *dev)
+{
+       return NULL;
+}
+#endif
 struct net_device *dsa_dev_to_net_device(struct device *dev);
 
 /* Keep inline for faster access in hot path */
index 03c3bdf25468e754248d577d1604304606e6c87c..bbf2c82cf7b29a2fdc727b0304208f5271486d9e 100644 (file)
@@ -16,6 +16,15 @@ config NET_DSA
 
 if NET_DSA
 
+config NET_DSA_LEGACY
+       bool "Support for older platform device and Device Tree registration"
+       default y
+       ---help---
+         Say Y if you want to enable support for the older platform device and
+         deprecated Device Tree binding registration.
+
+         This feature is scheduled for removal in 4.17.
+
 # tagging formats
 config NET_DSA_TAG_BRCM
        bool
index 0e13c1f95d13b8f5a70d5f1303afaad100d29cf5..9e4d3536f977e2a2f4c95219274b5e49ae93865d 100644 (file)
@@ -1,7 +1,8 @@
 # SPDX-License-Identifier: GPL-2.0
 # the core
 obj-$(CONFIG_NET_DSA) += dsa_core.o
-dsa_core-y += dsa.o dsa2.o legacy.o master.o port.o slave.o switch.o
+dsa_core-y += dsa.o dsa2.o master.o port.o slave.o switch.o
+dsa_core-$(CONFIG_NET_DSA_LEGACY) += legacy.o
 
 # tagging formats
 dsa_core-$(CONFIG_NET_DSA_TAG_BRCM) += tag_brcm.o
index 7d036696e8c47bde0c6a8e5827a451acb376ccb9..b03665e8fb4eecc8533129741b264202370f3893 100644 (file)
@@ -97,8 +97,17 @@ const struct dsa_device_ops *dsa_resolve_tag_protocol(int tag_protocol);
 bool dsa_schedule_work(struct work_struct *work);
 
 /* legacy.c */
+#if IS_ENABLED(CONFIG_NET_DSA_LEGACY)
 int dsa_legacy_register(void);
 void dsa_legacy_unregister(void);
+#else
+static inline int dsa_legacy_register(void)
+{
+       return -ENODEV;
+}
+
+static inline void dsa_legacy_unregister(void) { }
+#endif
 int dsa_legacy_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
                       struct net_device *dev,
                       const unsigned char *addr, u16 vid,
index 84611d7fcfa2c973c02b08b55e048d69ca4837c1..aa56d3fb5da4e855b025e32889eeb8a4c5827431 100644 (file)
@@ -718,26 +718,6 @@ static int dsa_resume(struct device *d)
 }
 #endif
 
-/* legacy way, bypassing the bridge *****************************************/
-int dsa_legacy_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
-                      struct net_device *dev,
-                      const unsigned char *addr, u16 vid,
-                      u16 flags)
-{
-       struct dsa_port *dp = dsa_slave_to_port(dev);
-
-       return dsa_port_fdb_add(dp, addr, vid);
-}
-
-int dsa_legacy_fdb_del(struct ndmsg *ndm, struct nlattr *tb[],
-                      struct net_device *dev,
-                      const unsigned char *addr, u16 vid)
-{
-       struct dsa_port *dp = dsa_slave_to_port(dev);
-
-       return dsa_port_fdb_del(dp, addr, vid);
-}
-
 static SIMPLE_DEV_PM_OPS(dsa_pm_ops, dsa_suspend, dsa_resume);
 
 static const struct of_device_id dsa_of_match_table[] = {
index 895db05d8c8299a20817ae63f1a34da52468c8f8..5d6475a6cc5d3c5915aa7323fdb9df865eb65548 100644 (file)
@@ -941,6 +941,26 @@ static const struct ethtool_ops dsa_slave_ethtool_ops = {
        .set_rxnfc              = dsa_slave_set_rxnfc,
 };
 
+/* legacy way, bypassing the bridge *****************************************/
+int dsa_legacy_fdb_add(struct ndmsg *ndm, struct nlattr *tb[],
+                      struct net_device *dev,
+                      const unsigned char *addr, u16 vid,
+                      u16 flags)
+{
+       struct dsa_port *dp = dsa_slave_to_port(dev);
+
+       return dsa_port_fdb_add(dp, addr, vid);
+}
+
+int dsa_legacy_fdb_del(struct ndmsg *ndm, struct nlattr *tb[],
+                      struct net_device *dev,
+                      const unsigned char *addr, u16 vid)
+{
+       struct dsa_port *dp = dsa_slave_to_port(dev);
+
+       return dsa_port_fdb_del(dp, addr, vid);
+}
+
 static const struct net_device_ops dsa_slave_netdev_ops = {
        .ndo_open               = dsa_slave_open,
        .ndo_stop               = dsa_slave_close,