Patchwork [net-next,6/8] dsa: Allow core and drivers to be built as modules

login
register
mail settings
Submitter Ben Hutchings
Date Nov. 26, 2011, 12:38 a.m.
Message ID <1322267918.2839.388.camel@deadeye>
Download mbox | patch
Permalink /patch/127767/
State Accepted
Delegated to: David Miller
Headers show

Comments

Ben Hutchings - Nov. 26, 2011, 12:38 a.m.
Change the kconfig types to tristate and adjust the condition for
declaring net_device::dsa_ptr to allow for this.

Adjust the makefile so that if NET_DSA_MV88E6123_61_65=y and
NET_DSA_MV88E6131=m or vice versa then both drivers are built-in.  We
could leave these options as bool and make NET_DSA_MV88E6XXX a
user-selected option, but that would break existing configurations.

Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
---
I've tested that the all-modules configuration works as far as building
and loading them, but no further.

Ben.

 include/linux/netdevice.h |    2 +-
 net/dsa/Kconfig           |   10 +++++-----
 net/dsa/Makefile          |    8 ++++++--
 3 files changed, 12 insertions(+), 8 deletions(-)
Lennert Buytenhek - Nov. 27, 2011, 7:19 p.m.
On Sat, Nov 26, 2011 at 12:38:38AM +0000, Ben Hutchings wrote:

> Change the kconfig types to tristate and adjust the condition for
> declaring net_device::dsa_ptr to allow for this.
> 
> Adjust the makefile so that if NET_DSA_MV88E6123_61_65=y and
> NET_DSA_MV88E6131=m or vice versa then both drivers are built-in.  We
> could leave these options as bool and make NET_DSA_MV88E6XXX a
> user-selected option, but that would break existing configurations.
> 
> Signed-off-by: Ben Hutchings <ben@decadent.org.uk>

Acked-by: Lennert Buytenhek <buytenh@wantstofly.org>

Thanks for the patches!

(While you're at it -- the switch chip drivers in net/dsa/ still
ought to be moved to drivers/net/dsa/ or so -- feel like whipping up
a patch for that?)
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Ben Hutchings - Nov. 27, 2011, 10:39 p.m.
On Sun, 2011-11-27 at 20:19 +0100, Lennert Buytenhek wrote:
> On Sat, Nov 26, 2011 at 12:38:38AM +0000, Ben Hutchings wrote:
> 
> > Change the kconfig types to tristate and adjust the condition for
> > declaring net_device::dsa_ptr to allow for this.
> > 
> > Adjust the makefile so that if NET_DSA_MV88E6123_61_65=y and
> > NET_DSA_MV88E6131=m or vice versa then both drivers are built-in.  We
> > could leave these options as bool and make NET_DSA_MV88E6XXX a
> > user-selected option, but that would break existing configurations.
> > 
> > Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
> 
> Acked-by: Lennert Buytenhek <buytenh@wantstofly.org>
> 
> Thanks for the patches!
> 
> (While you're at it -- the switch chip drivers in net/dsa/ still
> ought to be moved to drivers/net/dsa/ or so -- feel like whipping up
> a patch for that?)

I agree.  Maybe.

Ben.

Patch

diff --git a/include/linux/netdevice.h b/include/linux/netdevice.h
index 63721a6..87f7353 100644
--- a/include/linux/netdevice.h
+++ b/include/linux/netdevice.h
@@ -1079,7 +1079,7 @@  struct net_device {
 #if defined(CONFIG_VLAN_8021Q) || defined(CONFIG_VLAN_8021Q_MODULE)
 	struct vlan_group __rcu	*vlgrp;		/* VLAN group */
 #endif
-#ifdef CONFIG_NET_DSA
+#if IS_ENABLED(CONFIG_NET_DSA)
 	struct dsa_switch_tree	*dsa_ptr;	/* dsa specific data */
 #endif
 	void 			*atalk_ptr;	/* AppleTalk link 	*/
diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
index c53ded2..7e12303 100644
--- a/net/dsa/Kconfig
+++ b/net/dsa/Kconfig
@@ -1,5 +1,5 @@ 
 menuconfig NET_DSA
-	bool "Distributed Switch Architecture support"
+	tristate "Distributed Switch Architecture support"
 	default n
 	depends on EXPERIMENTAL && NETDEVICES && !S390
 	select PHYLIB
@@ -26,11 +26,11 @@  config NET_DSA_TAG_TRAILER
 
 # switch drivers
 config NET_DSA_MV88E6XXX
-	bool
+	tristate
 	default n
 
 config NET_DSA_MV88E6060
-	bool "Marvell 88E6060 ethernet switch chip support"
+	tristate "Marvell 88E6060 ethernet switch chip support"
 	select NET_DSA_TAG_TRAILER
 	---help---
 	  This enables support for the Marvell 88E6060 ethernet switch
@@ -41,7 +41,7 @@  config NET_DSA_MV88E6XXX_NEED_PPU
 	default n
 
 config NET_DSA_MV88E6131
-	bool "Marvell 88E6085/6095/6095F/6131 ethernet switch chip support"
+	tristate "Marvell 88E6085/6095/6095F/6131 ethernet switch chip support"
 	select NET_DSA_MV88E6XXX
 	select NET_DSA_MV88E6XXX_NEED_PPU
 	select NET_DSA_TAG_DSA
@@ -50,7 +50,7 @@  config NET_DSA_MV88E6131
 	  ethernet switch chips.
 
 config NET_DSA_MV88E6123_61_65
-	bool "Marvell 88E6123/6161/6165 ethernet switch chip support"
+	tristate "Marvell 88E6123/6161/6165 ethernet switch chip support"
 	select NET_DSA_MV88E6XXX
 	select NET_DSA_TAG_EDSA
 	---help---
diff --git a/net/dsa/Makefile b/net/dsa/Makefile
index 5c48ac5..191dd48 100644
--- a/net/dsa/Makefile
+++ b/net/dsa/Makefile
@@ -11,5 +11,9 @@  dsa_core-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o
 obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
 obj-$(CONFIG_NET_DSA_MV88E6XXX) += mv88e6xxx_drv.o
 mv88e6xxx_drv-y += mv88e6xxx.o
-mv88e6xxx_drv-$(CONFIG_NET_DSA_MV88E6123_61_65) += mv88e6123_61_65.o
-mv88e6xxx_drv-$(CONFIG_NET_DSA_MV88E6131) += mv88e6131.o
+ifdef CONFIG_NET_DSA_MV88E6123_61_65
+mv88e6xxx_drv-y += mv88e6123_61_65.o
+endif
+ifdef CONFIG_NET_DSA_MV88E6131
+mv88e6xxx_drv-y += mv88e6131.o
+endif