rtl8192e: Split the driver up
authorSean MacLennan <seanm@seanm.ca>
Tue, 29 Nov 2011 01:21:27 +0000 (20:21 -0500)
committerGreg Kroah-Hartman <gregkh@suse.de>
Wed, 30 Nov 2011 10:48:56 +0000 (19:48 +0900)
This patch splits the current r8192e_pci driver up into six different
drivers: rtllib, rtllib_crypt, rtllib_crypt_ccmp, rtllib_crypt_tkip,
rtllib_crypt_wep, and r8192e_pci.

Now that they are proper modules, the init and exit functions do not
need to be called directly. Also, the rtllib_*_null functions are not
needed since they will be loaded on demand.

Signed-off-by: Sean MacLennan <seanm@seanm.ca>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/rtl8192e/Kconfig
drivers/staging/rtl8192e/Makefile
drivers/staging/rtl8192e/rtl_core.c
drivers/staging/rtl8192e/rtl_debug.c
drivers/staging/rtl8192e/rtllib_crypt.c
drivers/staging/rtl8192e/rtllib_crypt_ccmp.c
drivers/staging/rtl8192e/rtllib_crypt_tkip.c
drivers/staging/rtl8192e/rtllib_crypt_wep.c
drivers/staging/rtl8192e/rtllib_module.c

index 750c347..44425ce 100644 (file)
@@ -1,6 +1,52 @@
+config RTLLIB
+       tristate "Support for rtllib wireless devices"
+       depends on WLAN && m
+       default n
+       ---help---
+         If you have a wireless card that uses rtllib, say
+         Y. Currently the only card is the rtl8192e.
+
+         If unsure, say N.
+
+config RTLLIB_CRYPTO
+       tristate "Support for rtllib crypto support"
+       depends on RTLLIB
+       default y
+       ---help---
+         CCMP crypto driver for rtllib.
+
+         If you enabled RTLLIB, you want this.
+
+config RTLLIB_CRYPTO_CCMP
+       tristate "Support for rtllib CCMP crypto"
+       depends on RTLLIB && RTLLIB_CRYPTO
+       default y
+       ---help---
+         CCMP crypto driver for rtllib.
+
+         If you enabled RTLLIB, you want this.
+
+config RTLLIB_CRYPTO_TKIP
+       tristate "Support for rtllib TKIP crypto"
+       depends on RTLLIB && RTLLIB_CRYPTO
+       default y
+       ---help---
+         TKIP crypto driver for rtllib.
+
+         If you enabled RTLLIB, you want this.
+
+config RTLLIB_CRYPTO_WEP
+       tristate "Support for rtllib WEP crypto"
+       depends on RTLLIB && RTLLIB_CRYPTO
+       default y
+       ---help---
+         TKIP crypto driver for rtllib.
+
+         If you enabled RTLLIB, you want this.
+
 config RTL8192E
        tristate "RealTek RTL8192E Wireless LAN NIC driver"
-       depends on PCI && WLAN
+       depends on PCI && WLAN && RTLLIB
        depends on m
        select WIRELESS_EXT
        select WEXT_PRIV
index 04714c4..d16f2ff 100644 (file)
@@ -1,34 +1,39 @@
+rtllib-objs :=                 \
+       dot11d.o                \
+       rtllib_module.o         \
+       rtllib_rx.o             \
+       rtllib_tx.o             \
+       rtllib_wx.o             \
+       rtllib_softmac.o        \
+       rtllib_softmac_wx.o     \
+       rtl819x_BAProc.o        \
+       rtl819x_HTProc.o        \
+       rtl819x_TSProc.o
+
+obj-$(CONFIG_RTLLIB) += rtllib.o
+
+obj-$(CONFIG_RTLLIB_CRYPTO) += rtllib_crypt.o
+obj-$(CONFIG_RTLLIB_CRYPTO_CCMP) += rtllib_crypt_ccmp.o
+obj-$(CONFIG_RTLLIB_CRYPTO_TKIP) += rtllib_crypt_tkip.o
+obj-$(CONFIG_RTLLIB_CRYPTO_WEP) += rtllib_crypt_wep.o
+
 r8192e_pci-objs :=             \
-       rtl_core.o              \
-       rtl_eeprom.o            \
-       rtl_ps.o                \
-       rtl_wx.o                \
-       rtl_cam.o               \
-       rtl_dm.o                \
-       rtl_pm.o                \
-       rtl_pci.o               \
-       rtl_debug.o             \
-       rtl_ethtool.o           \
        r8192E_dev.o            \
        r8192E_phy.o            \
        r8192E_firmware.o       \
        r8192E_cmdpkt.o         \
        r8192E_hwimg.o          \
        r8190P_rtl8256.o        \
-       rtllib_rx.o             \
-       rtllib_softmac.o        \
-       rtllib_tx.o             \
-       rtllib_wx.o             \
-       rtllib_module.o         \
-       rtllib_softmac_wx.o     \
-       rtl819x_HTProc.o        \
-       rtl819x_TSProc.o        \
-       rtl819x_BAProc.o        \
-       dot11d.o                \
-       rtllib_crypt.o          \
-       rtllib_crypt_tkip.o     \
-       rtllib_crypt_ccmp.o     \
-       rtllib_crypt_wep.o
+       rtl_cam.o               \
+       rtl_core.o              \
+       rtl_debug.o             \
+       rtl_dm.o                \
+       rtl_eeprom.o            \
+       rtl_ethtool.o           \
+       rtl_pci.o               \
+       rtl_pm.o                \
+       rtl_ps.o                \
+       rtl_wx.o                \
 
 obj-$(CONFIG_RTL8192E) += r8192e_pci.o
 
index ba15422..351504f 100644 (file)
@@ -3084,33 +3084,6 @@ bool NicIFDisableNIC(struct net_device *dev)
 
 static int __init rtl8192_pci_module_init(void)
 {
-       int ret;
-
-       ret = rtllib_init();
-       if (ret) {
-               printk(KERN_ERR "rtllib_init() failed %d\n", ret);
-               return ret;
-       }
-       ret = rtllib_crypto_init();
-       if (ret) {
-               printk(KERN_ERR "rtllib_crypto_init() failed %d\n", ret);
-               return ret;
-       }
-       ret = rtllib_crypto_tkip_init();
-       if (ret) {
-               printk(KERN_ERR "rtllib_crypto_tkip_init() failed %d\n", ret);
-               return ret;
-       }
-       ret = rtllib_crypto_ccmp_init();
-       if (ret) {
-               printk(KERN_ERR "rtllib_crypto_ccmp_init() failed %d\n", ret);
-               return ret;
-       }
-       ret = rtllib_crypto_wep_init();
-       if (ret) {
-               printk(KERN_ERR "rtllib_crypto_wep_init() failed %d\n", ret);
-               return ret;
-       }
        printk(KERN_INFO "\nLinux kernel driver for RTL8192E WLAN cards\n");
        printk(KERN_INFO "Copyright (c) 2007-2008, Realsil Wlan Driver\n");
 
@@ -3129,11 +3102,6 @@ static void __exit rtl8192_pci_module_exit(void)
 
        RT_TRACE(COMP_DOWN, "Exiting");
        rtl8192_proc_module_remove();
-       rtllib_crypto_tkip_exit();
-       rtllib_crypto_ccmp_exit();
-       rtllib_crypto_wep_exit();
-       rtllib_crypto_deinit();
-       rtllib_exit();
 }
 
 void check_rfctrl_gpio_timer(unsigned long data)
index a876568..c19b14c 100644 (file)
 #include "r8190P_rtl8256.h" /* RTL8225 Radio frontend */
 #include "r8192E_cmdpkt.h"
 
-u32 rt_global_debug_component = \
-                               COMP_ERR ;
-EXPORT_SYMBOL(rt_global_debug_component);
-
 /****************************************************************************
    -----------------------------PROCFS STUFF-------------------------
 *****************************************************************************/
index c268030..4665712 100644 (file)
@@ -243,3 +243,8 @@ void __exit rtllib_crypto_deinit(void)
 
        kfree(hcrypt);
 }
+
+module_init(rtllib_crypto_init);
+module_exit(rtllib_crypto_deinit);
+
+MODULE_LICENSE("GPL");
index 63b7504..7b62ab2 100644 (file)
@@ -428,11 +428,6 @@ static char *rtllib_ccmp_print_stats(char *p, void *priv)
        return p;
 }
 
-void rtllib_ccmp_null(void)
-{
-       return;
-}
-
 static struct rtllib_crypto_ops rtllib_crypt_ccmp = {
        .name                   = "CCMP",
        .init                   = rtllib_ccmp_init,
@@ -460,3 +455,8 @@ void __exit rtllib_crypto_ccmp_exit(void)
 {
        rtllib_unregister_crypto_ops(&rtllib_crypt_ccmp);
 }
+
+module_init(rtllib_crypto_ccmp_init);
+module_exit(rtllib_crypto_ccmp_exit);
+
+MODULE_LICENSE("GPL");
index 70d5001..9dd4029 100644 (file)
@@ -739,7 +739,6 @@ static char *rtllib_tkip_print_stats(char *p, void *priv)
        return p;
 }
 
-
 static struct rtllib_crypto_ops rtllib_crypt_tkip = {
        .name                   = "TKIP",
        .init                   = rtllib_tkip_init,
@@ -768,7 +767,7 @@ void __exit rtllib_crypto_tkip_exit(void)
        rtllib_unregister_crypto_ops(&rtllib_crypt_tkip);
 }
 
-void rtllib_tkip_null(void)
-{
-       return;
-}
+module_init(rtllib_crypto_tkip_init);
+module_exit(rtllib_crypto_tkip_exit);
+
+MODULE_LICENSE("GPL");
index 1f1ffb8..d06d15d 100644 (file)
@@ -256,7 +256,6 @@ static char *prism2_wep_print_stats(char *p, void *priv)
        return p;
 }
 
-
 static struct rtllib_crypto_ops rtllib_crypt_wep = {
        .name                   = "WEP",
        .init                   = prism2_wep_init,
@@ -285,7 +284,7 @@ void __exit rtllib_crypto_wep_exit(void)
        rtllib_unregister_crypto_ops(&rtllib_crypt_wep);
 }
 
-void rtllib_wep_null(void)
-{
-       return;
-}
+module_init(rtllib_crypto_wep_init);
+module_exit(rtllib_crypto_wep_exit);
+
+MODULE_LICENSE("GPL");
index e306fab..d5515df 100644 (file)
 #include "rtllib.h"
 
 
+u32 rt_global_debug_component = COMP_ERR;
+EXPORT_SYMBOL(rt_global_debug_component);
+
+
 void _setup_timer(struct timer_list *ptimer, void *fun, unsigned long data)
 {
        ptimer->function = fun;
@@ -175,10 +179,6 @@ struct net_device *alloc_rtllib(int sizeof_priv)
                ieee->last_packet_time[i] = 0;
        }
 
-       rtllib_tkip_null();
-       rtllib_wep_null();
-       rtllib_ccmp_null();
-
        return dev;
 
  failed:
@@ -287,3 +287,8 @@ void __exit rtllib_exit(void)
                rtllib_proc = NULL;
        }
 }
+
+module_init(rtllib_init);
+module_exit(rtllib_exit);
+
+MODULE_LICENSE("GPL");