net: devlink: turn devlink into a built-in
authorJakub Kicinski <jakub.kicinski@netronome.com>
Tue, 26 Feb 2019 03:34:02 +0000 (19:34 -0800)
committerDavid S. Miller <davem@davemloft.net>
Tue, 26 Feb 2019 16:49:05 +0000 (08:49 -0800)
Being able to build devlink as a module causes growing pains.
First all drivers had to add a meta dependency to make sure
they are not built in when devlink is built as a module.  Now
we are struggling to invoke ethtool compat code reliably.

Make devlink code built-in, users can still not build it at
all but the dynamically loadable module option is removed.

Signed-off-by: Jakub Kicinski <jakub.kicinski@netronome.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Acked-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
13 files changed:
drivers/infiniband/hw/bnxt_re/Kconfig
drivers/infiniband/hw/mlx4/Kconfig
drivers/net/Kconfig
drivers/net/ethernet/broadcom/Kconfig
drivers/net/ethernet/cavium/Kconfig
drivers/net/ethernet/mellanox/mlx4/Kconfig
drivers/net/ethernet/mellanox/mlx5/core/Kconfig
drivers/net/ethernet/mellanox/mlxsw/Kconfig
drivers/net/ethernet/netronome/Kconfig
include/net/devlink.h
net/Kconfig
net/core/devlink.c
net/dsa/Kconfig

index 18f5ed082f41bad397ae727961cdf50ab0398daa..19982a4a9bbaeffba1a3a3f205976258f9adc4a0 100644 (file)
@@ -1,7 +1,6 @@
 config INFINIBAND_BNXT_RE
     tristate "Broadcom Netxtreme HCA support"
     depends on ETHERNET && NETDEVICES && PCI && INET && DCB
-    depends on MAY_USE_DEVLINK
     select NET_VENDOR_BROADCOM
     select BNXT
     ---help---
index d1de3285fd8856ddf255e44e82f6c556c67aad84..4e9936731867067f2da86bda2358708b68986f8a 100644 (file)
@@ -2,7 +2,6 @@ config MLX4_INFINIBAND
        tristate "Mellanox ConnectX HCA support"
        depends on NETDEVICES && ETHERNET && PCI && INET
        depends on INFINIBAND_USER_ACCESS || !INFINIBAND_USER_ACCESS
-       depends on MAY_USE_DEVLINK
        select NET_VENDOR_MELLANOX
        select MLX4_CORE
        ---help---
index 6210757772ed0c68b60092e3ecb0678a7ec8612b..5e4ca082cfcdb29845326adf3341d1dd3b461811 100644 (file)
@@ -505,7 +505,6 @@ source "drivers/net/hyperv/Kconfig"
 config NETDEVSIM
        tristate "Simulated networking device"
        depends on DEBUG_FS
-       depends on MAY_USE_DEVLINK
        help
          This driver is a developer testing tool and software model that can
          be used to test various control path networking APIs, especially
index c1d3ee9baf7eb9db1a420156735873f5fa91586f..716bfbba59cf0052a3ff462b216f980b929c6c9e 100644 (file)
@@ -194,7 +194,6 @@ config SYSTEMPORT
 config BNXT
        tristate "Broadcom NetXtreme-C/E support"
        depends on PCI
-       depends on MAY_USE_DEVLINK
        select FW_LOADER
        select LIBCRC32C
        ---help---
index 05f4a3b21e29ac79c367a4c770cef051b8d422fc..6650e2a5f171385036f761f008198724a2c99ba4 100644 (file)
@@ -64,7 +64,6 @@ config CAVIUM_PTP
 config LIQUIDIO
        tristate "Cavium LiquidIO support"
        depends on 64BIT && PCI
-       depends on MAY_USE_DEVLINK
        depends on PCI
        imply PTP_1588_CLOCK
        select FW_LOADER
index f200b8c420d5738e5bc5c67b124c71cc27f21fd6..ff8057ed97ee29ceb51b363e982878186e5d74d4 100644 (file)
@@ -4,7 +4,6 @@
 
 config MLX4_EN
        tristate "Mellanox Technologies 1/10/40Gbit Ethernet support"
-       depends on MAY_USE_DEVLINK
        depends on PCI && NETDEVICES && ETHERNET && INET
        select MLX4_CORE
        imply PTP_1588_CLOCK
index 37a551436e4ab7a5ac36752dd237ef9e6d931ad8..6debffb8336b6805d54fb1b59a86580de730a148 100644 (file)
@@ -4,7 +4,6 @@
 
 config MLX5_CORE
        tristate "Mellanox 5th generation network adapters (ConnectX series) core driver"
-       depends on MAY_USE_DEVLINK
        depends on PCI
        imply PTP_1588_CLOCK
        imply VXLAN
index b9a25aed5d116c246316b60e464de54a4626657c..9c195dfed0313f126659496d1593dc4b9d7704ae 100644 (file)
@@ -4,7 +4,6 @@
 
 config MLXSW_CORE
        tristate "Mellanox Technologies Switch ASICs support"
-       depends on MAY_USE_DEVLINK
        ---help---
          This driver supports Mellanox Technologies Switch ASICs family.
 
index 66f15b05b65e0606a04682757ac86c9eb082e76b..549898d5d450e328fe9308a96cae27daf5e9340b 100644 (file)
@@ -19,7 +19,6 @@ config NFP
        tristate "Netronome(R) NFP4000/NFP6000 NIC driver"
        depends on PCI && PCI_MSI
        depends on VXLAN || VXLAN=n
-       depends on MAY_USE_DEVLINK
        ---help---
          This driver supports the Netronome(R) NFP4000/NFP6000 based
          cards working as a advanced Ethernet NIC.  It works with both
index a2da49dd91475bf5db88d96bf5b51018e198bf01..f9f7fe974652b78c333b7899c53ce9ca9d754744 100644 (file)
@@ -707,6 +707,10 @@ devlink_health_reporter_priv(struct devlink_health_reporter *reporter);
 int devlink_health_report(struct devlink_health_reporter *reporter,
                          const char *msg, void *priv_ctx);
 
+void devlink_compat_running_version(struct net_device *dev,
+                                   char *buf, size_t len);
+int devlink_compat_flash_update(struct net_device *dev, const char *file_name);
+
 #else
 
 static inline struct devlink *devlink_alloc(const struct devlink_ops *ops,
@@ -1190,13 +1194,7 @@ devlink_health_report(struct devlink_health_reporter *reporter,
 {
        return 0;
 }
-#endif
 
-#if IS_REACHABLE(CONFIG_NET_DEVLINK)
-void devlink_compat_running_version(struct net_device *dev,
-                                   char *buf, size_t len);
-int devlink_compat_flash_update(struct net_device *dev, const char *file_name);
-#else
 static inline void
 devlink_compat_running_version(struct net_device *dev, char *buf, size_t len)
 {
index 62da6148e9f8347f97384f7cc26d98901b1ad9fa..1efe1f9ee492ea55f1227f2449f03883d318e810 100644 (file)
@@ -429,21 +429,12 @@ config NET_SOCK_MSG
          with the help of BPF programs.
 
 config NET_DEVLINK
-       tristate "Network physical/parent device Netlink interface"
+       bool "Network physical/parent device Netlink interface"
        help
          Network physical/parent device Netlink interface provides
          infrastructure to support access to physical chip-wide config and
          monitoring.
 
-config MAY_USE_DEVLINK
-       tristate
-       default m if NET_DEVLINK=m
-       default y if NET_DEVLINK=y || NET_DEVLINK=n
-       help
-         Drivers using the devlink infrastructure should have a dependency
-         on MAY_USE_DEVLINK to ensure they do not cause link errors when
-         devlink is a loadable module and the driver using it is built-in.
-
 config PAGE_POOL
        bool
 
index 4f31ddc883e7ae2fd30cb69c9232e1d86c807e2b..05e04ea0a5c796e94fba28a31da267666af283d4 100644 (file)
@@ -6482,20 +6482,9 @@ int devlink_compat_flash_update(struct net_device *dev, const char *file_name)
        return -EOPNOTSUPP;
 }
 
-static int __init devlink_module_init(void)
+static int __init devlink_init(void)
 {
        return genl_register_family(&devlink_nl_family);
 }
 
-static void __exit devlink_module_exit(void)
-{
-       genl_unregister_family(&devlink_nl_family);
-}
-
-module_init(devlink_module_init);
-module_exit(devlink_module_exit);
-
-MODULE_LICENSE("GPL v2");
-MODULE_AUTHOR("Jiri Pirko <jiri@mellanox.com>");
-MODULE_DESCRIPTION("Network physical device Netlink interface");
-MODULE_ALIAS_GENL_FAMILY(DEVLINK_GENL_NAME);
+subsys_initcall(devlink_init);
index 91e52973ee135573fc3230b7d85ac5741a9af342..fab49132345f1e7a57c76e18f356e83578d69871 100644 (file)
@@ -6,7 +6,7 @@ config HAVE_NET_DSA
 
 config NET_DSA
        tristate "Distributed Switch Architecture"
-       depends on HAVE_NET_DSA && MAY_USE_DEVLINK
+       depends on HAVE_NET_DSA
        depends on BRIDGE || BRIDGE=n
        select NET_SWITCHDEV
        select PHYLINK