Skip to contentSkip to conversation

batman-adv: Fix Kconfig dependencies regarding multicast optimizations

PATCH Applied Linus Lüssing 3 participants 4 messages Jun 30, 2016 – Jul 5, 2016 Batman advanced

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 batman-adv: Fix Kconfig dependencies regarding multicast optimizations

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':

Quoted 1 line
Quoted 1 line

(.text+0x19b7eb): undefined reference to `br_multicast_has_querier_anywhere'

net/built-in.o: In function `batadv_mcast_mla_update':

Quoted 1 line
Quoted 1 line

(.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':

Quoted 1 line
Quoted 1 line

(.text+0x19b8cf): undefined reference to `br_multicast_list_adjacent'

~~~

Fixes 391b59cdb111 ("batman-adv: Add multicast optimization support for bridged setups")
---
 net/batman-adv/Kconfig | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
net/batman-adv/Kconfig +1 -1
index b7ba97d..833bb14 100644
@@ -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
Signature · 1 line
2.1.4
#1 lore raw

PATCH 15/28 undefined reference to `br_multicast_has_querier_anywhere']

https://lists.01.org/pipermail/kbuild-all/2016-June/021435.html

----- Forwarded message from kbuild test robot <[email protected]> -----

Date: Thu, 30 Jun 2016 01:00:47 +0800
From: kbuild test robot <[email protected]>
Cc: [email protected], Simon Wunderlich <[email protected]>, Linus Lüssing <[email protected]>, Marek Lindner <[email protected]>
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':

Quoted 1 line
Quoted 1 line

(.text+0x19b7eb): undefined reference to `br_multicast_has_querier_anywhere'

net/built-in.o: In function `batadv_mcast_mla_update':

Quoted 1 line
Quoted 1 line

(.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':

Quoted 1 line
Quoted 1 line

(.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 -----

maintainer Reviewed-by on v1 1/1
#2 lore raw
In reply to Linus Lüssing
Quoted 5 lines · 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.

[...]

net/batman-adv/Kconfig config BATMAN_ADV_NC · line 72

Quoted 7 lines

config BATMAN_ADV_MCAST

net/batman-adv/Kconfig +1 -1
 	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.

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

Kind regards,
Sven

#3 lore raw
Quoted 19 lines · On Thursday, June 30, 2016 16:00:10 Sven Eckelmann wrote:
Quoted 5 lines · 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.

[...]

net/batman-adv/Kconfig config BATMAN_ADV_NC · line 72

Quoted 9 lines

config BATMAN_ADV_MCAST
bool "Multicast optimisation"

net/batman-adv/Kconfig +1 -1
-     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
Quoted 6 lines

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.

Applied in revision e917bb4.

Thanks,
Marek