[next] batman-adv: Fix Kconfig dependencies regarding multicast optimizations

Message ID 1467274165-2866-1-git-send-email-linus.luessing@c0d3.blue (mailing list archive)
State Accepted, archived
Commit e917bb46159e3005e47d2d6bcd9a288ffe264160
Delegated to: Marek Lindner
Headers

Commit Message

Linus Lüssing June 30, 2016, 8:09 a.m. UTC
  Since recently the multicast optimizations are using functions from the
bridge module. If batman-adv is a kernel built-in, then these bridge
functions need to be accessible immediately. Thus adding a Kconfig
dependency for the multicast optimizations to depend on batman-adv being
built as a module if the bridge is built as a module, too.

This fixes build errors like the following:

~~~
   net/built-in.o: In function `batadv_mcast_mla_update':
>> (.text+0x19b7eb): undefined reference to `br_multicast_has_querier_anywhere'
   net/built-in.o: In function `batadv_mcast_mla_update':
>> (.text+0x19b7fa): undefined reference to `br_multicast_has_querier_adjacent'
   net/built-in.o: In function `batadv_mcast_mla_update':
   (.text+0x19b809): undefined reference to `br_multicast_has_querier_anywhere'
   net/built-in.o: In function `batadv_mcast_mla_update':
   (.text+0x19b818): undefined reference to `br_multicast_has_querier_adjacent'
   net/built-in.o: In function `batadv_mcast_mla_update':
>> (.text+0x19b8cf): undefined reference to `br_multicast_list_adjacent'
~~~

Fixes: 391b59cdb111 ("batman-adv: Add multicast optimization support for bridged setups")
Reported-by: kbuild test robot <fengguang.wu@intel.com>
Signed-off-by: Linus Lüssing <linus.luessing@c0d3.blue>
---
 net/batman-adv/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
  

Comments

Linus Lüssing June 30, 2016, 8:58 a.m. UTC | #1
https://lists.01.org/pipermail/kbuild-all/2016-June/021435.html

----- Forwarded message from kbuild test robot <fengguang.wu@intel.com> -----

Date: Thu, 30 Jun 2016 01:00:47 +0800
From: kbuild test robot <fengguang.wu@intel.com>
Cc: kbuild-all@01.org, Simon Wunderlich <sw@simonwunderlich.de>, Linus Lüssing <linus.luessing@c0d3.blue>, Marek Lindner <mareklindner@neomailbox.ch>
Subject: [batman:batman-adv/next 15/28] undefined reference to `br_multicast_has_querier_anywhere'

tree:   git://git.open-mesh.org/linux-merge batman-adv/next
head:   a43fbc01d3f5ef77cab5625f26fa3740229ecf63
commit: 339339cb691ce0318b236cb245a0fdbface88b39 [15/28] batman-adv: Add multicast optimization support for bridged setups
config: i386-randconfig-h0-06292136 (attached as .config)
compiler: gcc-6 (Debian 6.1.1-1) 6.1.1 20160430
reproduce:
        git checkout 339339cb691ce0318b236cb245a0fdbface88b39
        # save the attached .config to linux build tree
        make ARCH=i386 

All errors (new ones prefixed by >>):

   net/built-in.o: In function `batadv_mcast_mla_update':
>> (.text+0x19b7eb): undefined reference to `br_multicast_has_querier_anywhere'
   net/built-in.o: In function `batadv_mcast_mla_update':
>> (.text+0x19b7fa): undefined reference to `br_multicast_has_querier_adjacent'
   net/built-in.o: In function `batadv_mcast_mla_update':
   (.text+0x19b809): undefined reference to `br_multicast_has_querier_anywhere'
   net/built-in.o: In function `batadv_mcast_mla_update':
   (.text+0x19b818): undefined reference to `br_multicast_has_querier_adjacent'
   net/built-in.o: In function `batadv_mcast_mla_update':
>> (.text+0x19b8cf): undefined reference to `br_multicast_list_adjacent'

---
0-DAY kernel test infrastructure                Open Source Technology Center
https://lists.01.org/pipermail/kbuild-all                   Intel Corporation



----- End forwarded message -----
  
Sven Eckelmann June 30, 2016, 2 p.m. UTC | #2
On Thursday 30 June 2016 10:09:25 Linus Lüssing wrote:
> Since recently the multicast optimizations are using functions from the
> bridge module. If batman-adv is a kernel built-in, then these bridge
> functions need to be accessible immediately. Thus adding a Kconfig
> dependency for the multicast optimizations to depend on batman-adv being
> built as a module if the bridge is built as a module, too.
[...]
>  config BATMAN_ADV_MCAST
>  	bool "Multicast optimisation"
> -	depends on BATMAN_ADV && INET
> +	depends on BATMAN_ADV && INET && !(BRIDGE=m && BATMAN_ADV=y)
>  	default n
>  	help
>  	  This option enables the multicast optimisation which aims to

The used functions are provided via stubs in include/linux/if_bridge.h when
bridge is disabled. So the symbols are only missing when the batman-adv code
is compiled as part of the kernel but the bridge code is compiled as modules.
So this change seems to make sense.

Reviewed-by: Sven Eckelmann <sven@narfation.org>

It is now part of the linux-merge.git.

Kind regards,
	Sven
  
Marek Lindner July 5, 2016, 8:05 a.m. UTC | #3
On Thursday, June 30, 2016 16:00:10 Sven Eckelmann wrote:
> On Thursday 30 June 2016 10:09:25 Linus Lüssing wrote:
> > Since recently the multicast optimizations are using functions from the
> > bridge module. If batman-adv is a kernel built-in, then these bridge
> > functions need to be accessible immediately. Thus adding a Kconfig
> > dependency for the multicast optimizations to depend on batman-adv being
> > built as a module if the bridge is built as a module, too.
> 
> [...]
> 
> >  config BATMAN_ADV_MCAST
> >       bool "Multicast optimisation"
> >
> > -     depends on BATMAN_ADV && INET
> > +     depends on BATMAN_ADV && INET && !(BRIDGE=m && BATMAN_ADV=y)
> >
> >       default n
> >       help
> >         This option enables the multicast optimisation which aims to
> 
> The used functions are provided via stubs in include/linux/if_bridge.h when
> bridge is disabled. So the symbols are only missing when the batman-adv code
> is compiled as part of the kernel but the bridge code is compiled as
> modules. So this change seems to make sense.
> 
> Reviewed-by: Sven Eckelmann <sven@narfation.org>

Applied in revision e917bb4.

Thanks,
Marek
  

Patch

diff --git a/net/batman-adv/Kconfig b/net/batman-adv/Kconfig
index b7ba97d..833bb14 100644
--- a/net/batman-adv/Kconfig
+++ b/net/batman-adv/Kconfig
@@ -66,7 +66,7 @@  config BATMAN_ADV_NC
 
 config BATMAN_ADV_MCAST
 	bool "Multicast optimisation"
-	depends on BATMAN_ADV && INET
+	depends on BATMAN_ADV && INET && !(BRIDGE=m && BATMAN_ADV=y)
 	default n
 	help
 	  This option enables the multicast optimisation which aims to