diff options
| -rw-r--r-- | net/dsa/Makefile | 13 | ||||
| -rw-r--r-- | net/dsa/dsa.c | 26 | ||||
| -rw-r--r-- | net/dsa/dsa_priv.h | 3 | ||||
| -rw-r--r-- | net/dsa/tag_dsa.c | 15 | ||||
| -rw-r--r-- | net/dsa/tag_edsa.c | 15 | ||||
| -rw-r--r-- | net/dsa/tag_trailer.c | 15 | 
6 files changed, 38 insertions, 49 deletions
diff --git a/net/dsa/Makefile b/net/dsa/Makefile index 2374faff4de..5431b4a43c1 100644 --- a/net/dsa/Makefile +++ b/net/dsa/Makefile @@ -1,13 +1,14 @@ +# the core +obj-$(CONFIG_NET_DSA) += dsa_core.o +dsa_core-y += dsa.o slave.o +  # tagging formats -obj-$(CONFIG_NET_DSA_TAG_DSA) += tag_dsa.o -obj-$(CONFIG_NET_DSA_TAG_EDSA) += tag_edsa.o -obj-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o +dsa_core-$(CONFIG_NET_DSA_TAG_DSA) += tag_dsa.o +dsa_core-$(CONFIG_NET_DSA_TAG_EDSA) += tag_edsa.o +dsa_core-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o  # switch drivers  obj-$(CONFIG_NET_DSA_MV88E6XXX) += mv88e6xxx.o  obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o  obj-$(CONFIG_NET_DSA_MV88E6123_61_65) += mv88e6123_61_65.o  obj-$(CONFIG_NET_DSA_MV88E6131) += mv88e6131.o - -# the core -obj-$(CONFIG_NET_DSA) += dsa.o slave.o diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c index fc93088cdc9..88e7c2f3fa0 100644 --- a/net/dsa/dsa.c +++ b/net/dsa/dsa.c @@ -398,12 +398,36 @@ static struct platform_driver dsa_driver = {  static int __init dsa_init_module(void)  { -	return platform_driver_register(&dsa_driver); +	int rc; + +	rc = platform_driver_register(&dsa_driver); +	if (rc) +		return rc; + +#ifdef CONFIG_NET_DSA_TAG_DSA +	dev_add_pack(&dsa_packet_type); +#endif +#ifdef CONFIG_NET_DSA_TAG_EDSA +	dev_add_pack(&edsa_packet_type); +#endif +#ifdef CONFIG_NET_DSA_TAG_TRAILER +	dev_add_pack(&trailer_packet_type); +#endif +	return 0;  }  module_init(dsa_init_module);  static void __exit dsa_cleanup_module(void)  { +#ifdef CONFIG_NET_DSA_TAG_TRAILER +	dev_remove_pack(&trailer_packet_type); +#endif +#ifdef CONFIG_NET_DSA_TAG_EDSA +	dev_remove_pack(&edsa_packet_type); +#endif +#ifdef CONFIG_NET_DSA_TAG_DSA +	dev_remove_pack(&dsa_packet_type); +#endif  	platform_driver_unregister(&dsa_driver);  }  module_exit(dsa_cleanup_module); diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h index a45186cb6da..89a2eb48232 100644 --- a/net/dsa/dsa_priv.h +++ b/net/dsa/dsa_priv.h @@ -137,12 +137,15 @@ struct net_device *dsa_slave_create(struct dsa_switch *ds,  /* tag_dsa.c */  netdev_tx_t dsa_xmit(struct sk_buff *skb, struct net_device *dev); +extern struct packet_type dsa_packet_type;  /* tag_edsa.c */  netdev_tx_t edsa_xmit(struct sk_buff *skb, struct net_device *dev); +extern struct packet_type edsa_packet_type;  /* tag_trailer.c */  netdev_tx_t trailer_xmit(struct sk_buff *skb, struct net_device *dev); +extern struct packet_type trailer_packet_type;  #endif diff --git a/net/dsa/tag_dsa.c b/net/dsa/tag_dsa.c index 98dfe80b453..cacce1e22f9 100644 --- a/net/dsa/tag_dsa.c +++ b/net/dsa/tag_dsa.c @@ -186,20 +186,7 @@ out:  	return 0;  } -static struct packet_type dsa_packet_type __read_mostly = { +struct packet_type dsa_packet_type __read_mostly = {  	.type	= cpu_to_be16(ETH_P_DSA),  	.func	= dsa_rcv,  }; - -static int __init dsa_init_module(void) -{ -	dev_add_pack(&dsa_packet_type); -	return 0; -} -module_init(dsa_init_module); - -static void __exit dsa_cleanup_module(void) -{ -	dev_remove_pack(&dsa_packet_type); -} -module_exit(dsa_cleanup_module); diff --git a/net/dsa/tag_edsa.c b/net/dsa/tag_edsa.c index 6f383322ad2..e70c43c25e6 100644 --- a/net/dsa/tag_edsa.c +++ b/net/dsa/tag_edsa.c @@ -205,20 +205,7 @@ out:  	return 0;  } -static struct packet_type edsa_packet_type __read_mostly = { +struct packet_type edsa_packet_type __read_mostly = {  	.type	= cpu_to_be16(ETH_P_EDSA),  	.func	= edsa_rcv,  }; - -static int __init edsa_init_module(void) -{ -	dev_add_pack(&edsa_packet_type); -	return 0; -} -module_init(edsa_init_module); - -static void __exit edsa_cleanup_module(void) -{ -	dev_remove_pack(&edsa_packet_type); -} -module_exit(edsa_cleanup_module); diff --git a/net/dsa/tag_trailer.c b/net/dsa/tag_trailer.c index d6d7d0add3c..94bc260d015 100644 --- a/net/dsa/tag_trailer.c +++ b/net/dsa/tag_trailer.c @@ -114,20 +114,7 @@ out:  	return 0;  } -static struct packet_type trailer_packet_type __read_mostly = { +struct packet_type trailer_packet_type __read_mostly = {  	.type	= cpu_to_be16(ETH_P_TRAILER),  	.func	= trailer_rcv,  }; - -static int __init trailer_init_module(void) -{ -	dev_add_pack(&trailer_packet_type); -	return 0; -} -module_init(trailer_init_module); - -static void __exit trailer_cleanup_module(void) -{ -	dev_remove_pack(&trailer_packet_type); -} -module_exit(trailer_cleanup_module);  |