• Arnd Bergmann's avatar
    net: mellanox: add DEVLINK dependencies · 3d1cbe83
    Arnd Bergmann authored
    The new NET_DEVLINK infrastructure can be a loadable module, but the drivers
    using it might be built-in, which causes link errors like:
    
    drivers/net/built-in.o: In function `mlx4_load_one':
    :(.text+0x2fbfda): undefined reference to `devlink_port_register'
    :(.text+0x2fc084): undefined reference to `devlink_port_unregister'
    drivers/net/built-in.o: In function `mlxsw_sx_port_remove':
    :(.text+0x33a03a): undefined reference to `devlink_port_type_clear'
    :(.text+0x33a04e): undefined reference to `devlink_port_unregister'
    
    There are multiple ways to avoid this:
    
    a) add 'depends on NET_DEVLINK || !NET_DEVLINK' dependencies
       for each user
    b) use 'select NET_DEVLINK' from each driver that uses it
       and hide the symbol in Kconfig.
    c) make NET_DEVLINK a 'bool' option so we don't have to
       list it as a dependency, and rely on the APIs to be
       stubbed out when it is disabled
    d) use IS_REACHABLE() rather than IS_ENABLED() to check for
       NET_DEVLINK in include/net/devlink.h
    
    This implements a variation of approach a) by adding an
    intermediate symbol that drivers can depend on, and changes
    the three drivers using it.
    Signed-off-by: default avatarArnd Bergmann <arnd@arndb.de>
    Fixes: 09d4d087 ("mlx4: Implement devlink interface")
    Fixes: c4745500 ("mlxsw: Implement devlink interface")
    Acked-by: default avatarJiri Pirko <jiri@mellanox.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    3d1cbe83
Kconfig 1.52 KB