OSDN Git Service

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 18f5ed0..19982a4 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 d1de328..4e99367 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 6210757..5e4ca08 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 c1d3ee9..716bfbb 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 05f4a3b..6650e2a 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 f200b8c..ff8057e 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 37a5514..6debffb 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 b9a25ae..9c195df 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 66f15b0..549898d 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 a2da49d..f9f7fe9 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 62da614..1efe1f9 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 4f31ddc..05e04ea 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 91e5297..fab4913 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