The rtl8192e driver had a natural split between the more generic
rtllib code and the more specific rtl8192e code. This patch splits the
driver into two parts and six drivers: rtllib, rtllib_crypt,
rtllib_crypt_ccmp, rtllib_crypt_tkip, rtllib_crypt_wep and r8192e.

Most of the code changes where either infrastructure (get it building),
or the exporting of symbols from rtllib to the r8192e driver.

Signed-off-by: Sean MacLennan <[email protected]>
---
This patch assumes Stefan's patches were already merged:
[PATCH 1/3] rtl8192e: remove stale defines from ccflags-y
[PATCH 2/3] rtl8192e: use HAVE_NET_DEVICE_OPS unconditionally
[PATCH 3/3] rtl8192e: drop alternate code paths for CONFIG_PM_RTL

 drivers/staging/rtl8192e/Kconfig                   |   58 +++++++++++++++++---
 drivers/staging/rtl8192e/Makefile                  |   41 +++++---------
 drivers/staging/rtl8192e/dot11d.c                  |    4 ++
 drivers/staging/rtl8192e/rtl8192e/Kconfig          |    8 +++
 drivers/staging/rtl8192e/rtl8192e/Makefile         |   21 +++++++
 .../staging/rtl8192e/{ => }/rtl8192e/r8190P_def.h  |    0
 .../rtl8192e/{ => }/rtl8192e/r8190P_rtl8256.c      |    0
 .../rtl8192e/{ => }/rtl8192e/r8190P_rtl8256.h      |    0
 .../rtl8192e/{ => }/rtl8192e/r8192E_cmdpkt.c       |    0
 .../rtl8192e/{ => }/rtl8192e/r8192E_cmdpkt.h       |    0
 .../staging/rtl8192e/{ => }/rtl8192e/r8192E_dev.c  |    0
 .../staging/rtl8192e/{ => }/rtl8192e/r8192E_dev.h  |    0
 .../rtl8192e/{ => }/rtl8192e/r8192E_firmware.c     |    0
 .../rtl8192e/{ => }/rtl8192e/r8192E_firmware.h     |    0
 .../staging/rtl8192e/{ => }/rtl8192e/r8192E_hw.h   |    0
 .../rtl8192e/{ => }/rtl8192e/r8192E_hwimg.c        |    0
 .../rtl8192e/{ => }/rtl8192e/r8192E_hwimg.h        |    0
 .../staging/rtl8192e/{ => }/rtl8192e/r8192E_phy.c  |    2 +-
 .../staging/rtl8192e/{ => }/rtl8192e/r8192E_phy.h  |    0
 .../rtl8192e/{ => }/rtl8192e/r8192E_phyreg.h       |    0
 .../rtl8192e/{ => }/rtl8192e/r819xE_phyreg.h       |    0
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_cam.c |    4 --
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_cam.h |    0
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_core.c    |   35 +-----------
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_core.h    |   39 +-------------
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_crypto.h  |    0
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_debug.c   |    3 -
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_debug.h   |    2 +
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_dm.c  |    0
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_dm.h  |    0
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_eeprom.c  |    0
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_eeprom.h  |    0
 .../staging/rtl8192e/{ => }/rtl8192e/rtl_ethtool.c |    0
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_pci.c |    0
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_pci.h |    2 +-
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_pm.c  |    2 -
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_pm.h  |    0
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_ps.c  |    4 --
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_ps.h  |    2 +-
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_wx.c  |    6 +-
 drivers/staging/rtl8192e/{ => }/rtl8192e/rtl_wx.h  |    0
 drivers/staging/rtl8192e/rtl819x_BAProc.c          |   20 ++++----
 drivers/staging/rtl8192e/rtl819x_HTProc.c          |    9 ++--
 drivers/staging/rtl8192e/rtl819x_TSProc.c          |    2 +
 drivers/staging/rtl8192e/rtllib.h                  |   23 +++------
 drivers/staging/rtl8192e/rtllib_crypt.c            |   17 ++++++
 drivers/staging/rtl8192e/rtllib_crypt_ccmp.c       |    8 +++-
 drivers/staging/rtl8192e/rtllib_crypt_tkip.c       |   16 ++++--
 drivers/staging/rtl8192e/rtllib_crypt_wep.c        |   15 ++++--
 drivers/staging/rtl8192e/rtllib_debug.h            |   48 ++++++++++++++++
 drivers/staging/rtl8192e/rtllib_module.c           |   30 ++++++++--
 drivers/staging/rtl8192e/rtllib_rx.c               |    3 +
 drivers/staging/rtl8192e/rtllib_softmac.c          |   49 +++++++++++++----
 drivers/staging/rtl8192e/rtllib_softmac_wx.c       |   47 ++++++++++++++--
 drivers/staging/rtl8192e/rtllib_tx.c               |    2 +
 drivers/staging/rtl8192e/rtllib_wx.c               |   16 ++++++
 56 files changed, 352 insertions(+), 186 deletions(-)

diff --git a/drivers/staging/rtl8192e/Kconfig b/drivers/staging/rtl8192e/Kconfig
index 750c347..e7dc7c2 100644
--- a/drivers/staging/rtl8192e/Kconfig
+++ b/drivers/staging/rtl8192e/Kconfig
@@ -1,9 +1,51 @@
-config RTL8192E
-       tristate "RealTek RTL8192E Wireless LAN NIC driver"
-       depends on PCI && WLAN
-       depends on m
-       select WIRELESS_EXT
-       select WEXT_PRIV
-       select CRYPTO
-       default N
+config RTLLIB
+       tristate "Support for rtllib wireless devices"
+       depends on WLAN
+       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.
+
+if RTLLIB
+
+source "drivers/staging/rtl8192e/rtl8192e/Kconfig"
+
+endif
diff --git a/drivers/staging/rtl8192e/Makefile 
b/drivers/staging/rtl8192e/Makefile
index 04714c4..729cb7b 100644
--- a/drivers/staging/rtl8192e/Makefile
+++ b/drivers/staging/rtl8192e/Makefile
@@ -1,35 +1,22 @@
-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-objs :=                 \
+       dot11d.o                \
+       rtllib_module.o         \
        rtllib_rx.o             \
-       rtllib_softmac.o        \
        rtllib_tx.o             \
        rtllib_wx.o             \
-       rtllib_module.o         \
+       rtllib_softmac.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
+       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
 
-obj-$(CONFIG_RTL8192E) += r8192e_pci.o
+obj-$(CONFIG_RTL8192E) += rtl8192e/
 
 ccflags-y += -D__CHECK_ENDIAN__
diff --git a/drivers/staging/rtl8192e/dot11d.c 
b/drivers/staging/rtl8192e/dot11d.c
index ee0381e..f9ba015 100644
--- a/drivers/staging/rtl8192e/dot11d.c
+++ b/drivers/staging/rtl8192e/dot11d.c
@@ -58,6 +58,8 @@ void Dot11d_Init(struct rtllib_device *ieee)
        RESET_CIE_WATCHDOG(ieee);
 
 }
+EXPORT_SYMBOL(Dot11d_Init);
+
 
 void Dot11d_Channelmap(u8 channel_plan, struct rtllib_device *ieee)
 {
@@ -99,6 +101,8 @@ void Dot11d_Channelmap(u8 channel_plan, struct rtllib_device 
*ieee)
                break;
        }
 }
+EXPORT_SYMBOL(Dot11d_Channelmap);
+
 
 
 void Dot11d_Reset(struct rtllib_device *ieee)
diff --git a/drivers/staging/rtl8192e/rtl8192e/Kconfig 
b/drivers/staging/rtl8192e/rtl8192e/Kconfig
new file mode 100644
index 0000000..2aee84a
--- /dev/null
+++ b/drivers/staging/rtl8192e/rtl8192e/Kconfig
@@ -0,0 +1,8 @@
+config RTL8192E
+       tristate "RealTek RTL8192E Wireless LAN NIC driver"
+       depends on PCI && WLAN && RTLLIB
+       select WIRELESS_EXT
+       select WEXT_PRIV
+       select CRYPTO
+       default N
+       ---help---
diff --git a/drivers/staging/rtl8192e/rtl8192e/Makefile 
b/drivers/staging/rtl8192e/rtl8192e/Makefile
new file mode 100644
index 0000000..313a92e
--- /dev/null
+++ b/drivers/staging/rtl8192e/rtl8192e/Makefile
@@ -0,0 +1,21 @@
+r8192e_pci-objs :=             \
+       r8192E_dev.o            \
+       r8192E_phy.o            \
+       r8192E_firmware.o       \
+       r8192E_cmdpkt.o         \
+       r8192E_hwimg.o          \
+       r8190P_rtl8256.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
+
+ccflags-y += -D__CHECK_ENDIAN__
diff --git a/drivers/staging/rtl8192e/r8190P_def.h 
b/drivers/staging/rtl8192e/rtl8192e/r8190P_def.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8190P_def.h
rename to drivers/staging/rtl8192e/rtl8192e/r8190P_def.h
diff --git a/drivers/staging/rtl8192e/r8190P_rtl8256.c 
b/drivers/staging/rtl8192e/rtl8192e/r8190P_rtl8256.c
similarity index 100%
rename from drivers/staging/rtl8192e/r8190P_rtl8256.c
rename to drivers/staging/rtl8192e/rtl8192e/r8190P_rtl8256.c
diff --git a/drivers/staging/rtl8192e/r8190P_rtl8256.h 
b/drivers/staging/rtl8192e/rtl8192e/r8190P_rtl8256.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8190P_rtl8256.h
rename to drivers/staging/rtl8192e/rtl8192e/r8190P_rtl8256.h
diff --git a/drivers/staging/rtl8192e/r8192E_cmdpkt.c 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_cmdpkt.c
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_cmdpkt.c
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_cmdpkt.c
diff --git a/drivers/staging/rtl8192e/r8192E_cmdpkt.h 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_cmdpkt.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_cmdpkt.h
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_cmdpkt.h
diff --git a/drivers/staging/rtl8192e/r8192E_dev.c 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_dev.c
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_dev.c
diff --git a/drivers/staging/rtl8192e/r8192E_dev.h 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_dev.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_dev.h
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_dev.h
diff --git a/drivers/staging/rtl8192e/r8192E_firmware.c 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_firmware.c
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.c
diff --git a/drivers/staging/rtl8192e/r8192E_firmware.h 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_firmware.h
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_firmware.h
diff --git a/drivers/staging/rtl8192e/r8192E_hw.h 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_hw.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_hw.h
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_hw.h
diff --git a/drivers/staging/rtl8192e/r8192E_hwimg.c 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_hwimg.c
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.c
diff --git a/drivers/staging/rtl8192e/r8192E_hwimg.h 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_hwimg.h
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_hwimg.h
diff --git a/drivers/staging/rtl8192e/r8192E_phy.c 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_phy.c
similarity index 99%
rename from drivers/staging/rtl8192e/r8192E_phy.c
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_phy.c
index 7fe69a3..784a9aa 100644
--- a/drivers/staging/rtl8192e/r8192E_phy.c
+++ b/drivers/staging/rtl8192e/rtl8192e/r8192E_phy.c
@@ -23,7 +23,7 @@
 #include "r8190P_rtl8256.h"
 #include "r8192E_phy.h"
 #include "rtl_dm.h"
-#include "dot11d.h"
+#include "../dot11d.h"
 
 #include "r8192E_hwimg.h"
 
diff --git a/drivers/staging/rtl8192e/r8192E_phy.h 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_phy.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_phy.h
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_phy.h
diff --git a/drivers/staging/rtl8192e/r8192E_phyreg.h 
b/drivers/staging/rtl8192e/rtl8192e/r8192E_phyreg.h
similarity index 100%
rename from drivers/staging/rtl8192e/r8192E_phyreg.h
rename to drivers/staging/rtl8192e/rtl8192e/r8192E_phyreg.h
diff --git a/drivers/staging/rtl8192e/r819xE_phyreg.h 
b/drivers/staging/rtl8192e/rtl8192e/r819xE_phyreg.h
similarity index 100%
rename from drivers/staging/rtl8192e/r819xE_phyreg.h
rename to drivers/staging/rtl8192e/rtl8192e/r819xE_phyreg.h
diff --git a/drivers/staging/rtl8192e/rtl_cam.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_cam.c
similarity index 98%
rename from drivers/staging/rtl8192e/rtl_cam.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_cam.c
index baf3b63..6fd3d76 100644
--- a/drivers/staging/rtl8192e/rtl_cam.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_cam.c
@@ -23,10 +23,6 @@
  * wlanfae <[email protected]>
 ******************************************************************************/
 #include "rtl_core.h"
-#include "r8192E_phy.h"
-#include "r8192E_phyreg.h"
-#include "r8190P_rtl8256.h" /* RTL8225 Radio frontend */
-#include "r8192E_cmdpkt.h"
 
 extern int hwwep;
 void CamResetAllEntry(struct net_device *dev)
diff --git a/drivers/staging/rtl8192e/rtl_cam.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_cam.h
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_cam.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_cam.h
diff --git a/drivers/staging/rtl8192e/rtl_core.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
similarity index 99%
rename from drivers/staging/rtl8192e/rtl_core.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_core.c
index b7c6d6b..e123c7b 100644
--- a/drivers/staging/rtl8192e/rtl_core.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.c
@@ -400,8 +400,8 @@ bool MgntActSet_RF_State(struct net_device *dev,
                                        priv->blinked_ingpio = true;
                                else
                                        priv->blinked_ingpio = false;
-                               rtllib_MgntDisconnect(priv->rtllib,
-                                                     disas_lv_ss);
+                               rtllib_mgnt_disconnect(priv->rtllib,
+                                                      disas_lv_ss);
                        }
                }
                if ((ChangeSource == RF_CHANGE_BY_HW) &&
@@ -3089,34 +3089,8 @@ bool NicIFDisableNIC(struct net_device *dev)
 
 static int __init rtl8192_pci_module_init(void)
 {
-       int ret;
        int error;
 
-       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");
 
@@ -3145,11 +3119,6 @@ static void __exit rtl8192_pci_module_exit(void)
        RT_TRACE(COMP_DOWN, "Exiting");
        rtl8192_proc_module_remove();
        rtl_remove_debugfs_root();
-       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)
diff --git a/drivers/staging/rtl8192e/rtl_core.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_core.h
similarity index 97%
rename from drivers/staging/rtl8192e/rtl_core.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_core.h
index f9af515..05f88a6 100644
--- a/drivers/staging/rtl8192e/rtl_core.h
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_core.h
@@ -46,9 +46,9 @@
 #include <linux/random.h>
 #include <linux/version.h>
 #include <linux/io.h>
-#include "rtllib.h"
 
-#include "dot11d.h"
+#include "../rtllib.h"
+#include "../dot11d.h"
 
 #include "r8192E_firmware.h"
 #include "r8192E_hw.h"
@@ -215,41 +215,6 @@ enum RTL819x_PHY_PARAM {
        RTL819X_EFUSE_MAP                       = 19,
 };
 
-enum RTL_DEBUG {
-       COMP_TRACE              = BIT0,
-       COMP_DBG                = BIT1,
-       COMP_INIT               = BIT2,
-       COMP_RECV               = BIT3,
-       COMP_SEND               = BIT4,
-       COMP_CMD                = BIT5,
-       COMP_POWER              = BIT6,
-       COMP_EPROM              = BIT7,
-       COMP_SWBW               = BIT8,
-       COMP_SEC                = BIT9,
-       COMP_LPS                = BIT10,
-       COMP_QOS                = BIT11,
-       COMP_RATE               = BIT12,
-       COMP_RXDESC             = BIT13,
-       COMP_PHY                = BIT14,
-       COMP_DIG                = BIT15,
-       COMP_TXAGC              = BIT16,
-       COMP_HALDM              = BIT17,
-       COMP_POWER_TRACKING     = BIT18,
-       COMP_CH                 = BIT19,
-       COMP_RF                 = BIT20,
-       COMP_FIRMWARE           = BIT21,
-       COMP_HT                 = BIT22,
-       COMP_RESET              = BIT23,
-       COMP_CMDPKT             = BIT24,
-       COMP_SCAN               = BIT25,
-       COMP_PS                 = BIT26,
-       COMP_DOWN               = BIT27,
-       COMP_INTR               = BIT28,
-       COMP_LED                = BIT29,
-       COMP_MLME               = BIT30,
-       COMP_ERR                = BIT31
-};
-
 enum nic_t {
        NIC_UNKNOWN     = 0,
        NIC_8192E       = 1,
diff --git a/drivers/staging/rtl8192e/rtl_crypto.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_crypto.h
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_crypto.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_crypto.h
diff --git a/drivers/staging/rtl8192e/rtl_debug.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_debug.c
similarity index 99%
rename from drivers/staging/rtl8192e/rtl_debug.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_debug.c
index 22bc2dd..c40c497 100644
--- a/drivers/staging/rtl8192e/rtl_debug.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_debug.c
@@ -29,9 +29,6 @@
 #include "r8190P_rtl8256.h" /* RTL8225 Radio frontend */
 #include "r8192E_cmdpkt.h"
 
-u32 rt_global_debug_component = \
-                               COMP_ERR ;
-
 /*------------------Declare variable-----------------------*/
 u32    DBGP_Type[DBGP_TYPE_MAX];
 
diff --git a/drivers/staging/rtl8192e/rtl_debug.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_debug.h
similarity index 99%
rename from drivers/staging/rtl8192e/rtl_debug.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_debug.h
index 50fb9a9..d3d535f 100644
--- a/drivers/staging/rtl8192e/rtl_debug.h
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_debug.h
@@ -29,6 +29,8 @@
 #include <linux/version.h>
 #include <linux/debugfs.h>
 
+#include "../rtllib_debug.h"
+
 struct r8192_priv;
 struct _tx_desc_8192se;
 struct _TX_DESC_8192CE;
diff --git a/drivers/staging/rtl8192e/rtl_dm.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_dm.c
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_dm.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_dm.c
diff --git a/drivers/staging/rtl8192e/rtl_dm.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_dm.h
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_dm.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_dm.h
diff --git a/drivers/staging/rtl8192e/rtl_eeprom.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_eeprom.c
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_eeprom.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_eeprom.c
diff --git a/drivers/staging/rtl8192e/rtl_eeprom.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_eeprom.h
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_eeprom.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_eeprom.h
diff --git a/drivers/staging/rtl8192e/rtl_ethtool.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_ethtool.c
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_ethtool.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_ethtool.c
diff --git a/drivers/staging/rtl8192e/rtl_pci.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_pci.c
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_pci.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_pci.c
diff --git a/drivers/staging/rtl8192e/rtl_pci.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_pci.h
similarity index 99%
rename from drivers/staging/rtl8192e/rtl_pci.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_pci.h
index 7ea5a47..c8021f3 100644
--- a/drivers/staging/rtl8192e/rtl_pci.h
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_pci.h
@@ -27,7 +27,7 @@
 
 #include <linux/types.h>
 #include <linux/pci.h>
-#include "rtllib.h"
+#include "../rtllib.h"
 
 static inline void NdisRawWritePortUlong(u32 port,  u32 val)
 {
diff --git a/drivers/staging/rtl8192e/rtl_pm.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_pm.c
similarity index 98%
rename from drivers/staging/rtl8192e/rtl_pm.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_pm.c
index 8e1a5d5..2b749d0 100644
--- a/drivers/staging/rtl8192e/rtl_pm.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_pm.c
@@ -18,8 +18,6 @@
 ******************************************************************************/
 
 #include "rtl_core.h"
-#include "r8192E_hw.h"
-#include "r8190P_rtl8256.h"
 #include "rtl_pm.h"
 
 int rtl8192E_save_state(struct pci_dev *dev, pm_message_t state)
diff --git a/drivers/staging/rtl8192e/rtl_pm.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_pm.h
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_pm.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_pm.h
diff --git a/drivers/staging/rtl8192e/rtl_ps.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_ps.c
similarity index 98%
rename from drivers/staging/rtl8192e/rtl_ps.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_ps.c
index c9a7c56..4f391d5 100644
--- a/drivers/staging/rtl8192e/rtl_ps.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_ps.c
@@ -24,10 +24,6 @@
  *****************************************************************************/
 #include "rtl_ps.h"
 #include "rtl_core.h"
-#include "r8192E_phy.h"
-#include "r8192E_phyreg.h"
-#include "r8190P_rtl8256.h" /* RTL8225 Radio frontend */
-#include "r8192E_cmdpkt.h"
 
 static void rtl8192_hw_sleep_down(struct net_device *dev)
 {
diff --git a/drivers/staging/rtl8192e/rtl_ps.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_ps.h
similarity index 98%
rename from drivers/staging/rtl8192e/rtl_ps.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_ps.h
index a9c2d79..575984d 100644
--- a/drivers/staging/rtl8192e/rtl_ps.h
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_ps.h
@@ -26,7 +26,7 @@
 #define _RTL_PS_H
 
 #include <linux/types.h>
-#include "rtllib.h"
+#include "../rtllib.h"
 struct net_device;
 
 #define RT_CHECK_FOR_HANG_PERIOD 2
diff --git a/drivers/staging/rtl8192e/rtl_wx.c 
b/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
similarity index 99%
rename from drivers/staging/rtl8192e/rtl_wx.c
rename to drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
index 93b1edb..5221693 100644
--- a/drivers/staging/rtl8192e/rtl_wx.c
+++ b/drivers/staging/rtl8192e/rtl8192e/rtl_wx.c
@@ -19,7 +19,7 @@
 
 #include <linux/string.h>
 #include "rtl_core.h"
-#include "dot11d.h"
+#include "../dot11d.h"
 
 #define RATE_COUNT 12
 static u32 rtl8192_rates[] = {
@@ -1143,8 +1143,8 @@ static int r8192_wx_set_PromiscuousMode(struct net_device 
*dev,
                ieee->IntelPromiscuousModeInfo.bFilterSourceStationFrame =
                        (bFilterSourceStationFrame) ? (true) : (false);
                        (bPromiscuousOn) ?
-                       (rtllib_EnableIntelPromiscuousMode(dev, false)) :
-                       (rtllib_DisableIntelPromiscuousMode(dev, false));
+                       (rtllib_enable_intel_promisc_mode(dev, false)) :
+                       (rtllib_disable_intel_promisc_mode(dev, false));
 
                printk(KERN_INFO "=======>%s(), on = %d, filter src sta = %d\n",
                       __func__, bPromiscuousOn, bFilterSourceStationFrame);
diff --git a/drivers/staging/rtl8192e/rtl_wx.h 
b/drivers/staging/rtl8192e/rtl8192e/rtl_wx.h
similarity index 100%
rename from drivers/staging/rtl8192e/rtl_wx.h
rename to drivers/staging/rtl8192e/rtl8192e/rtl_wx.h
diff --git a/drivers/staging/rtl8192e/rtl819x_BAProc.c 
b/drivers/staging/rtl8192e/rtl819x_BAProc.c
index 8b9d85c..a0e94f2 100644
--- a/drivers/staging/rtl8192e/rtl819x_BAProc.c
+++ b/drivers/staging/rtl8192e/rtl819x_BAProc.c
@@ -17,8 +17,8 @@
  * wlanfae <[email protected]>
 ******************************************************************************/
 #include "rtllib.h"
+#include "rtllib_debug.h"
 #include "rtl819x_BA.h"
-#include "rtl_core.h"
 
 static void ActivateBAEntry(struct rtllib_device *ieee, struct ba_record *pBA,
                            u16 Time)
@@ -110,12 +110,12 @@ static struct sk_buff *rtllib_ADDBA(struct rtllib_device 
*ieee, u8 *Dst,
        BAReq->frame_ctl = cpu_to_le16(RTLLIB_STYPE_MANAGE_ACT);
 
        tag = (u8 *)skb_put(skb, 9);
-       *tag ++= ACT_CAT_BA;
-       *tag ++= type;
-       *tag ++= pBA->DialogToken;
+       *tag++ = ACT_CAT_BA;
+       *tag++ = type;
+       *tag++ = pBA->DialogToken;
 
        if (ACT_ADDBARSP == type) {
-               RT_TRACE(COMP_DBG, "====>to send ADDBARSP\n");
+               RTLLIB_TRACE(COMP_DBG, "====>to send ADDBARSP\n");
                tmp = cpu_to_le16(StatusCode);
                memcpy(tag, (u8 *)&tmp, 2);
                tag += 2;
@@ -176,8 +176,8 @@ static struct sk_buff *rtllib_DELBA(struct rtllib_device 
*ieee, u8 *dst,
 
        tag = (u8 *)skb_put(skb, 6);
 
-       *tag ++= ACT_CAT_BA;
-       *tag ++= ACT_DELBA;
+       *tag++ = ACT_CAT_BA;
+       *tag++ = ACT_DELBA;
 
        tmp = cpu_to_le16(DelbaParamSet.shortData);
        memcpy(tag, (u8 *)&tmp, 2);
@@ -200,7 +200,7 @@ static void rtllib_send_ADDBAReq(struct rtllib_device 
*ieee, u8 *dst,
        skb = rtllib_ADDBA(ieee, dst, pBA, 0, ACT_ADDBAREQ);
 
        if (skb) {
-               RT_TRACE(COMP_DBG, "====>to send ADDBAREQ!!!!!\n");
+               RTLLIB_TRACE(COMP_DBG, "====>to send ADDBAREQ!!!!!\n");
                softmac_mgmt_xmit(skb, ieee);
        } else {
                RTLLIB_DEBUG(RTLLIB_DL_ERR, "alloc skb error in function"
@@ -265,7 +265,7 @@ int rtllib_rx_ADDBAReq(struct rtllib_device *ieee, struct 
sk_buff *skb)
        pBaTimeoutVal = (u16 *)(tag + 5);
        pBaStartSeqCtrl = (union sequence_control *)(req + 7);
 
-       RT_TRACE(COMP_DBG, "====>rx ADDBAREQ from : %pM\n", dst);
+       RTLLIB_TRACE(COMP_DBG, "====>rx ADDBAREQ from : %pM\n", dst);
        if (ieee->current_network.qos_data.active == 0  ||
            (ieee->pHTInfo->bCurrentHTSupport == false) ||
            (ieee->pHTInfo->IOTAction & HT_IOT_ACT_REJECT_ADDBA_REQ)) {
@@ -347,7 +347,7 @@ int rtllib_rx_ADDBARsp(struct rtllib_device *ieee, struct 
sk_buff *skb)
        pBaParamSet = (union ba_param_set *)(tag + 5);
        pBaTimeoutVal = (u16 *)(tag + 7);
 
-       RT_TRACE(COMP_DBG, "====>rx ADDBARSP from : %pM\n", dst);
+       RTLLIB_TRACE(COMP_DBG, "====>rx ADDBARSP from : %pM\n", dst);
        if (ieee->current_network.qos_data.active == 0  ||
            ieee->pHTInfo->bCurrentHTSupport == false ||
            ieee->pHTInfo->bCurrentAMPDUEnable == false) {
diff --git a/drivers/staging/rtl8192e/rtl819x_HTProc.c 
b/drivers/staging/rtl8192e/rtl819x_HTProc.c
index b1c0c56..3341aa8 100644
--- a/drivers/staging/rtl8192e/rtl819x_HTProc.c
+++ b/drivers/staging/rtl8192e/rtl819x_HTProc.c
@@ -396,7 +396,8 @@ static bool HTIOTActIsDisableMCSTwoSpatialStream(struct 
rtllib_device *ieee)
        return false;
 }
 
-static u8 HTIOTActIsDisableEDCATurbo(struct rtllib_device *ieee, u8 
*PeerMacAddr)
+static u8 HTIOTActIsDisableEDCATurbo(struct rtllib_device *ieee,
+                                    u8 *PeerMacAddr)
 {
        return false;
 }
@@ -680,10 +681,6 @@ u8 HTFilterMCSRate(struct rtllib_device *ieee, u8 
*pSupportMCS, u8 *pOperateMCS)
        return true;
 }
 
-void HTSetConnectBwMode(struct rtllib_device *ieee,
-                       enum ht_channel_width Bandwidth,
-                       enum ht_extchnl_offset Offset);
-
 void HTOnAssocRsp(struct rtllib_device *ieee)
 {
        struct rt_hi_throughput *pHTInfo = ieee->pHTInfo;
@@ -955,6 +952,8 @@ void HTUpdateSelfAndPeerSetting(struct rtllib_device *ieee,
                        pHTInfo->CurrentOpMode = pPeerHTInfo->OptMode;
        }
 }
+EXPORT_SYMBOL(HTUpdateSelfAndPeerSetting);
+
 
 void HTUseDefaultSetting(struct rtllib_device *ieee)
 {
diff --git a/drivers/staging/rtl8192e/rtl819x_TSProc.c 
b/drivers/staging/rtl8192e/rtl819x_TSProc.c
index 09a602f..8a72335 100644
--- a/drivers/staging/rtl8192e/rtl819x_TSProc.c
+++ b/drivers/staging/rtl8192e/rtl819x_TSProc.c
@@ -497,6 +497,8 @@ void RemovePeerTS(struct rtllib_device *ieee, u8 *Addr)
                }
        }
 }
+EXPORT_SYMBOL(RemovePeerTS);
+
 
 void RemoveAllTS(struct rtllib_device *ieee)
 {
diff --git a/drivers/staging/rtl8192e/rtllib.h 
b/drivers/staging/rtl8192e/rtllib.h
index de25975..a7bf904 100644
--- a/drivers/staging/rtl8192e/rtllib.h
+++ b/drivers/staging/rtl8192e/rtllib.h
@@ -65,19 +65,9 @@
 #define IW_CUSTOM_MAX  256     /* In bytes */
 #endif
 
-#ifndef container_of
-/**
- * container_of - cast a member of a structure out to the containing structure
- *
- * @ptr:       the pointer to the member.
- * @type:       the type of the container struct this is embedded in.
- * @member:     the name of the member within the struct.
- *
- */
-#define container_of(ptr, type, member) ({                   \
-       const typeof(((type *)0)->member)*__mptr = (ptr);    \
-       (type *)((char *)__mptr - offsetof(type, member)); })
-#endif
+
+#define RTLLIB_DRV_NAME "rtllib"
+
 
 #define skb_tail_pointer_rsl(skb) skb_tail_pointer(skb)
 
@@ -2844,9 +2834,9 @@ extern void rtllib_EnableNetMonitorMode(struct net_device 
*dev,
                                        bool bInitState);
 extern void rtllib_DisableNetMonitorMode(struct net_device *dev,
                                         bool bInitState);
-extern void rtllib_EnableIntelPromiscuousMode(struct net_device *dev,
+extern void rtllib_enable_intel_promisc_mode(struct net_device *dev,
                                              bool bInitState);
-extern void rtllib_DisableIntelPromiscuousMode(struct net_device *dev,
+extern void rtllib_disable_intel_promisc_mode(struct net_device *dev,
                                               bool bInitState);
 extern void rtllib_send_probe_requests(struct rtllib_device *ieee, u8 is_mesh);
 
@@ -3067,7 +3057,7 @@ void rtllib_MgntDisconnectIBSS(struct rtllib_device 
*rtllib);
 void rtllib_MlmeDisassociateRequest(struct rtllib_device *rtllib, u8 *asSta,
                                    u8 asRsn);
 void rtllib_MgntDisconnectAP(struct rtllib_device *rtllib, u8 asRsn);
-bool rtllib_MgntDisconnect(struct rtllib_device *rtllib, u8 asRsn);
+bool rtllib_mgnt_disconnect(struct rtllib_device *rtllib, u8 asRsn);
 
 
 /* For the function is more related to hardware setting, it's better to use the
@@ -3141,4 +3131,5 @@ static inline void dump_buf(u8 *buf, u32 len)
                printk("%2.2x-", *(buf+i));
        printk("\n");
 }
+
 #endif /* RTLLIB_H */
diff --git a/drivers/staging/rtl8192e/rtllib_crypt.c 
b/drivers/staging/rtl8192e/rtllib_crypt.c
index acda37b..5c8ef71 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt.c
@@ -53,6 +53,8 @@ void rtllib_crypt_deinit_entries(struct rtllib_device *ieee,
                kfree(entry);
        }
 }
+EXPORT_SYMBOL(rtllib_crypt_deinit_entries);
+
 
 void rtllib_crypt_deinit_handler(unsigned long data)
 {
@@ -70,6 +72,8 @@ void rtllib_crypt_deinit_handler(unsigned long data)
        spin_unlock_irqrestore(&ieee->lock, flags);
 
 }
+EXPORT_SYMBOL(rtllib_crypt_deinit_handler);
+
 
 void rtllib_crypt_delayed_deinit(struct rtllib_device *ieee,
                                    struct rtllib_crypt_data **crypt)
@@ -95,6 +99,8 @@ void rtllib_crypt_delayed_deinit(struct rtllib_device *ieee,
        }
        spin_unlock_irqrestore(&ieee->lock, flags);
 }
+EXPORT_SYMBOL(rtllib_crypt_delayed_deinit);
+
 
 int rtllib_register_crypto_ops(struct rtllib_crypto_ops *ops)
 {
@@ -120,6 +126,8 @@ int rtllib_register_crypto_ops(struct rtllib_crypto_ops 
*ops)
 
        return 0;
 }
+EXPORT_SYMBOL(rtllib_register_crypto_ops);
+
 
 int rtllib_unregister_crypto_ops(struct rtllib_crypto_ops *ops)
 {
@@ -150,6 +158,8 @@ int rtllib_unregister_crypto_ops(struct rtllib_crypto_ops 
*ops)
 
        return del_alg ? 0 : -1;
 }
+EXPORT_SYMBOL(rtllib_unregister_crypto_ops);
+
 
 
 struct rtllib_crypto_ops *rtllib_get_crypto_ops(const char *name)
@@ -177,6 +187,8 @@ struct rtllib_crypto_ops *rtllib_get_crypto_ops(const char 
*name)
        else
                return NULL;
 }
+EXPORT_SYMBOL(rtllib_get_crypto_ops);
+
 
 
 static void * rtllib_crypt_null_init(int keyidx) { return (void *) 1; }
@@ -239,3 +251,8 @@ void __exit rtllib_crypto_deinit(void)
 
        kfree(hcrypt);
 }
+
+module_init(rtllib_crypto_init);
+module_exit(rtllib_crypto_deinit);
+
+MODULE_LICENSE("GPL");
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c 
b/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c
index 6196b9a..4fc68e8 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt_ccmp.c
@@ -433,6 +433,8 @@ void rtllib_ccmp_null(void)
 {
        return;
 }
+EXPORT_SYMBOL(rtllib_ccmp_null);
+
 
 static struct rtllib_crypto_ops rtllib_crypt_ccmp = {
        .name                   = "CCMP",
@@ -456,8 +458,12 @@ int __init rtllib_crypto_ccmp_init(void)
        return rtllib_register_crypto_ops(&rtllib_crypt_ccmp);
 }
 
-
 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");
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_tkip.c 
b/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
index 6a0c878..cf3c391 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt_tkip.c
@@ -740,6 +740,12 @@ static char *rtllib_tkip_print_stats(char *p, void *priv)
        return p;
 }
 
+void rtllib_tkip_null(void)
+{
+       return;
+}
+EXPORT_SYMBOL(rtllib_tkip_null);
+
 
 static struct rtllib_crypto_ops rtllib_crypt_tkip = {
        .name                   = "TKIP",
@@ -757,7 +763,6 @@ static struct rtllib_crypto_ops rtllib_crypt_tkip = {
        .owner                  = THIS_MODULE,
 };
 
-
 int __init rtllib_crypto_tkip_init(void)
 {
        return rtllib_register_crypto_ops(&rtllib_crypt_tkip);
@@ -769,7 +774,8 @@ 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");
diff --git a/drivers/staging/rtl8192e/rtllib_crypt_wep.c 
b/drivers/staging/rtl8192e/rtllib_crypt_wep.c
index c59bf10..8d1ac28c 100644
--- a/drivers/staging/rtl8192e/rtllib_crypt_wep.c
+++ b/drivers/staging/rtl8192e/rtllib_crypt_wep.c
@@ -258,6 +258,13 @@ static char *prism2_wep_print_stats(char *p, void *priv)
 }
 
 
+void rtllib_wep_null(void)
+{
+       return;
+}
+EXPORT_SYMBOL(rtllib_wep_null);
+
+
 static struct rtllib_crypto_ops rtllib_crypt_wep = {
        .name                   = "WEP",
        .init                   = prism2_wep_init,
@@ -286,7 +293,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");
diff --git a/drivers/staging/rtl8192e/rtllib_debug.h 
b/drivers/staging/rtl8192e/rtllib_debug.h
new file mode 100644
index 0000000..b073998
--- /dev/null
+++ b/drivers/staging/rtl8192e/rtllib_debug.h
@@ -0,0 +1,48 @@
+#ifndef RTLLIB_DEBUG_H
+#define RTLLIB_DEBUG_H
+
+enum RTL_DEBUG {
+       COMP_TRACE              = (1 << 0),
+       COMP_DBG                = (1 << 1),
+       COMP_INIT               = (1 << 2),
+       COMP_RECV               = (1 << 3),
+       COMP_SEND               = (1 << 4),
+       COMP_CMD                = (1 << 5),
+       COMP_POWER              = (1 << 6),
+       COMP_EPROM              = (1 << 7),
+       COMP_SWBW               = (1 << 8),
+       COMP_SEC                = (1 << 9),
+       COMP_LPS                = (1 << 10),
+       COMP_QOS                = (1 << 11),
+       COMP_RATE               = (1 << 12),
+       COMP_RXDESC             = (1 << 13),
+       COMP_PHY                = (1 << 14),
+       COMP_DIG                = (1 << 15),
+       COMP_TXAGC              = (1 << 16),
+       COMP_HALDM              = (1 << 17),
+       COMP_POWER_TRACKING     = (1 << 18),
+       COMP_CH                 = (1 << 19),
+       COMP_RF                 = (1 << 20),
+       COMP_FIRMWARE           = (1 << 21),
+       COMP_HT                 = (1 << 22),
+       COMP_RESET              = (1 << 23),
+       COMP_CMDPKT             = (1 << 24),
+       COMP_SCAN               = (1 << 25),
+       COMP_PS                 = (1 << 26),
+       COMP_DOWN               = (1 << 27),
+       COMP_INTR               = (1 << 28),
+       COMP_LED                = (1 << 29),
+       COMP_MLME               = (1 << 30),
+       COMP_ERR                = (1 << 31)
+};
+
+extern u32 rt_global_debug_component;
+
+#define RTLLIB_TRACE(component, x, args...)    \
+do {                   \
+       if (rt_global_debug_component & component) \
+               printk(KERN_DEBUG RTLLIB_DRV_NAME ":" x "\n" , \
+                      ##args);\
+} while (0);
+
+#endif
diff --git a/drivers/staging/rtl8192e/rtllib_module.c 
b/drivers/staging/rtl8192e/rtllib_module.c
index c36a140..246cf74 100644
--- a/drivers/staging/rtl8192e/rtllib_module.c
+++ b/drivers/staging/rtl8192e/rtllib_module.c
@@ -52,9 +52,12 @@
 #include <net/arp.h>
 
 #include "rtllib.h"
+#include "rtllib_debug.h"
 
 
-#define DRV_NAME "rtllib_92e"
+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)
 {
@@ -177,9 +180,15 @@ struct net_device *alloc_rtllib(int sizeof_priv)
                ieee->last_packet_time[i] = 0;
        }
 
+#ifdef CONFIG_RTLLIB_CRYPTO_TKIP_MODULE
        rtllib_tkip_null();
+#endif
+#ifdef CONFIG_RTLLIB_CRYPTO_WEP_MODULE
        rtllib_wep_null();
+#endif
+#ifdef CONFIG_RTLLIB_CRYPTO_CCMP
        rtllib_ccmp_null();
+#endif
 
        return dev;
 
@@ -188,6 +197,8 @@ struct net_device *alloc_rtllib(int sizeof_priv)
                free_netdev(dev);
        return NULL;
 }
+EXPORT_SYMBOL(alloc_rtllib);
+
 
 void free_rtllib(struct net_device *dev)
 {
@@ -214,6 +225,8 @@ void free_rtllib(struct net_device *dev)
        rtllib_networks_free(ieee);
        free_netdev(dev);
 }
+EXPORT_SYMBOL(free_rtllib);
+
 
 u32 rtllib_debug_level;
 static int debug = \
@@ -246,7 +259,7 @@ static int store_debug_level(struct file *file, const char 
__user *buffer,
        } else
                val = simple_strtoul(p, &p, 10);
        if (p == buf)
-               printk(KERN_INFO DRV_NAME
+               printk(KERN_INFO RTLLIB_DRV_NAME
                       ": %s is not in hex or decimal form.\n", buf);
        else
                rtllib_debug_level = val;
@@ -259,16 +272,16 @@ int __init rtllib_init(void)
        struct proc_dir_entry *e;
 
        rtllib_debug_level = debug;
-       rtllib_proc = create_proc_entry(DRV_NAME, S_IFDIR, init_net.proc_net);
+       rtllib_proc = create_proc_entry(RTLLIB_DRV_NAME, S_IFDIR, 
init_net.proc_net);
        if (rtllib_proc == NULL) {
-               RTLLIB_ERROR("Unable to create " DRV_NAME
+               RTLLIB_ERROR("Unable to create " RTLLIB_DRV_NAME
                                " proc directory\n");
                return -EIO;
        }
        e = create_proc_entry("debug_level", S_IFREG | S_IRUGO | S_IWUSR,
                              rtllib_proc);
        if (!e) {
-               remove_proc_entry(DRV_NAME, init_net.proc_net);
+               remove_proc_entry(RTLLIB_DRV_NAME, init_net.proc_net);
                rtllib_proc = NULL;
                return -EIO;
        }
@@ -283,7 +296,12 @@ void __exit rtllib_exit(void)
 {
        if (rtllib_proc) {
                remove_proc_entry("debug_level", rtllib_proc);
-               remove_proc_entry(DRV_NAME, init_net.proc_net);
+               remove_proc_entry(RTLLIB_DRV_NAME, init_net.proc_net);
                rtllib_proc = NULL;
        }
 }
+
+module_init(rtllib_init);
+module_exit(rtllib_exit);
+
+MODULE_LICENSE("GPL");
diff --git a/drivers/staging/rtl8192e/rtllib_rx.c 
b/drivers/staging/rtl8192e/rtllib_rx.c
index 8d0af5e..878b2ac 100644
--- a/drivers/staging/rtl8192e/rtllib_rx.c
+++ b/drivers/staging/rtl8192e/rtllib_rx.c
@@ -1497,6 +1497,7 @@ int rtllib_rx(struct rtllib_device *ieee, struct sk_buff 
*skb,
        ieee->stats.rx_dropped++;
        return 0;
 }
+EXPORT_SYMBOL(rtllib_rx);
 
 static u8 qos_oui[QOS_OUI_LEN] = { 0x00, 0x50, 0xF2 };
 
@@ -2503,6 +2504,8 @@ int IsLegalChannel(struct rtllib_device *rtllib, u8 
channel)
 
        return 0;
 }
+EXPORT_SYMBOL(IsLegalChannel);
+
 
 static inline void rtllib_process_probe_response(
        struct rtllib_device *ieee,
diff --git a/drivers/staging/rtl8192e/rtllib_softmac.c 
b/drivers/staging/rtl8192e/rtllib_softmac.c
index b508685..fde42cf 100644
--- a/drivers/staging/rtl8192e/rtllib_softmac.c
+++ b/drivers/staging/rtl8192e/rtllib_softmac.c
@@ -15,7 +15,7 @@
 
 
 #include "rtllib.h"
-#include "rtl_core.h"
+#include "rtllib_debug.h"
 
 #include <linux/random.h>
 #include <linux/delay.h>
@@ -453,7 +453,7 @@ void rtllib_DisableNetMonitorMode(struct net_device *dev,
  * to allow all dest. BUT: if we enable checking BSSID then we can't recv
  * packets from other STA.
  */
-void rtllib_EnableIntelPromiscuousMode(struct net_device *dev,
+void rtllib_enable_intel_promisc_mode(struct net_device *dev,
                bool bInitState)
 {
        bool bFilterOutNonAssociatedBSSID = false;
@@ -468,14 +468,14 @@ void rtllib_EnableIntelPromiscuousMode(struct net_device 
*dev,
 
        ieee->bNetPromiscuousMode = true;
 }
-
+EXPORT_SYMBOL(rtllib_enable_intel_promisc_mode);
 
 /*
  * Description:
  *           This disables the specialized promiscuous mode required by Intel.
  *           See MgntEnableIntelPromiscuousMode for detail.
  */
-void rtllib_DisableIntelPromiscuousMode(struct net_device *dev,
+void rtllib_disable_intel_promisc_mode(struct net_device *dev,
                bool bInitState)
 {
        bool bFilterOutNonAssociatedBSSID = true;
@@ -490,6 +490,7 @@ void rtllib_DisableIntelPromiscuousMode(struct net_device 
*dev,
 
        ieee->bNetPromiscuousMode = false;
 }
+EXPORT_SYMBOL(rtllib_disable_intel_promisc_mode);
 
 static void rtllib_send_probe(struct rtllib_device *ieee, u8 is_mesh)
 {
@@ -685,6 +686,8 @@ void rtllib_stop_send_beacons(struct rtllib_device *ieee)
        if (ieee->softmac_features & IEEE_SOFTMAC_BEACONS)
                rtllib_beacons_stop(ieee);
 }
+EXPORT_SYMBOL(rtllib_stop_send_beacons);
+
 
 
 void rtllib_start_send_beacons(struct rtllib_device *ieee)
@@ -694,6 +697,8 @@ void rtllib_start_send_beacons(struct rtllib_device *ieee)
        if (ieee->softmac_features & IEEE_SOFTMAC_BEACONS)
                rtllib_beacons_start(ieee);
 }
+EXPORT_SYMBOL(rtllib_start_send_beacons);
+
 
 
 static void rtllib_softmac_stop_scan(struct rtllib_device *ieee)
@@ -719,6 +724,8 @@ void rtllib_stop_scan(struct rtllib_device *ieee)
                        ieee->rtllib_stop_hw_scan(ieee->dev);
        }
 }
+EXPORT_SYMBOL(rtllib_stop_scan);
+
 
 void rtllib_stop_scan_syncro(struct rtllib_device *ieee)
 {
@@ -729,6 +736,8 @@ void rtllib_stop_scan_syncro(struct rtllib_device *ieee)
                        ieee->rtllib_stop_hw_scan(ieee->dev);
        }
 }
+EXPORT_SYMBOL(rtllib_stop_scan_syncro);
+
 
 bool rtllib_act_scanning(struct rtllib_device *ieee, bool sync_scan)
 {
@@ -741,11 +750,12 @@ bool rtllib_act_scanning(struct rtllib_device *ieee, bool 
sync_scan)
                return test_bit(STATUS_SCANNING, &ieee->status);
        }
 }
+EXPORT_SYMBOL(rtllib_act_scanning);
 
 /* called with ieee->lock held */
 static void rtllib_start_scan(struct rtllib_device *ieee)
 {
-       RT_TRACE(COMP_DBG, "===>%s()\n", __func__);
+       RTLLIB_TRACE(COMP_DBG, "===>%s()\n", __func__);
        if (ieee->rtllib_ips_leave_wq != NULL)
                ieee->rtllib_ips_leave_wq(ieee->dev);
 
@@ -781,6 +791,8 @@ void rtllib_start_scan_syncro(struct rtllib_device *ieee, 
u8 is_mesh)
                        ieee->rtllib_start_hw_scan(ieee->dev);
        }
 }
+EXPORT_SYMBOL(rtllib_start_scan_syncro);
+
 
 inline struct sk_buff *rtllib_authentication_req(struct rtllib_network *beacon,
        struct rtllib_device *ieee, int challengelen, u8 *daddr)
@@ -1603,11 +1615,11 @@ static void rtllib_associate_procedure_wq(void *data)
                ieee->data_hard_stop(ieee->dev);
 
        rtllib_stop_scan(ieee);
-       RT_TRACE(COMP_DBG, "===>%s(), chan:%d\n", __func__,
+       RTLLIB_TRACE(COMP_DBG, "===>%s(), chan:%d\n", __func__,
                 ieee->current_network.channel);
        HTSetConnectBwMode(ieee, HT_CHANNEL_WIDTH_20, HT_EXTCHNL_OFFSET_NO_EXT);
        if (ieee->eRFPowerState == eRfOff) {
-               RT_TRACE(COMP_DBG, "=============>%s():Rf state is eRfOff,"
+               RTLLIB_TRACE(COMP_DBG, "=============>%s():Rf state is eRfOff,"
                         " schedule ipsleave wq again,return\n", __func__);
                if (ieee->rtllib_ips_leave_wq != NULL)
                        ieee->rtllib_ips_leave_wq(ieee->dev);
@@ -1956,6 +1968,8 @@ void rtllib_sta_ps_send_null_frame(struct rtllib_device 
*ieee, short pwr)
        if (buf)
                softmac_ps_mgmt_xmit(buf, ieee);
 }
+EXPORT_SYMBOL(rtllib_sta_ps_send_null_frame);
+
 
 void rtllib_sta_ps_send_pspoll_frame(struct rtllib_device *ieee)
 {
@@ -2059,7 +2073,7 @@ static inline void rtllib_sta_ps(struct rtllib_device 
*ieee)
        if ((ieee->ps == RTLLIB_PS_DISABLED ||
             ieee->iw_mode != IW_MODE_INFRA ||
             ieee->state != RTLLIB_LINKED)) {
-               RT_TRACE(COMP_DBG, "=====>%s(): no need to ps,wake up!! "
+               RTLLIB_TRACE(COMP_DBG, "=====>%s(): no need to ps,wake up!! "
                         "ieee->ps is %d, ieee->iw_mode is %d, ieee->state"
                         " is %d\n", __func__, ieee->ps, ieee->iw_mode,
                          ieee->state);
@@ -2168,6 +2182,8 @@ void rtllib_ps_tx_ack(struct rtllib_device *ieee, short 
success)
        }
        spin_unlock_irqrestore(&ieee->lock, flags);
 }
+EXPORT_SYMBOL(rtllib_ps_tx_ack);
+
 
 static void rtllib_process_action(struct rtllib_device *ieee, struct sk_buff 
*skb)
 {
@@ -2540,6 +2556,8 @@ void rtllib_reset_queue(struct rtllib_device *ieee)
        spin_unlock_irqrestore(&ieee->lock, flags);
 
 }
+EXPORT_SYMBOL(rtllib_reset_queue);
+
 
 void rtllib_wake_queue(struct rtllib_device *ieee)
 {
@@ -2928,6 +2946,8 @@ struct sk_buff *rtllib_get_beacon(struct rtllib_device 
*ieee)
 
        return skb;
 }
+EXPORT_SYMBOL(rtllib_get_beacon);
+
 
 void rtllib_softmac_stop_protocol(struct rtllib_device *ieee, u8 mesh_flag,
                                  u8 shutdown)
@@ -2937,6 +2957,8 @@ void rtllib_softmac_stop_protocol(struct rtllib_device 
*ieee, u8 mesh_flag,
        rtllib_stop_protocol(ieee, shutdown);
        up(&ieee->wx_sem);
 }
+EXPORT_SYMBOL(rtllib_softmac_stop_protocol);
+
 
 
 void rtllib_stop_protocol(struct rtllib_device *ieee, u8 shutdown)
@@ -2985,6 +3007,8 @@ void rtllib_softmac_start_protocol(struct rtllib_device 
*ieee, u8 mesh_flag)
        rtllib_start_protocol(ieee);
        up(&ieee->wx_sem);
 }
+EXPORT_SYMBOL(rtllib_softmac_start_protocol);
+
 
 void rtllib_start_protocol(struct rtllib_device *ieee)
 {
@@ -3104,7 +3128,7 @@ void rtllib_softmac_init(struct rtllib_device *ieee)
                    (unsigned long) ieee);
 
 
-       ieee->wq = create_workqueue(DRV_NAME);
+       ieee->wq = create_workqueue(RTLLIB_DRV_NAME);
 
        INIT_DELAYED_WORK_RSL(&ieee->link_change_wq,
                              (void *)rtllib_link_change_wq, ieee);
@@ -3634,6 +3658,8 @@ out:
 
        return ret;
 }
+EXPORT_SYMBOL(rtllib_wpa_supplicant_ioctl);
+
 
 void rtllib_MgntDisconnectIBSS(struct rtllib_device *rtllib)
 {
@@ -3704,7 +3730,7 @@ rtllib_MgntDisconnectAP(
        rtllib->state = RTLLIB_NOLINK;
 }
 
-bool rtllib_MgntDisconnect(struct rtllib_device *rtllib, u8 asRsn)
+bool rtllib_mgnt_disconnect(struct rtllib_device *rtllib, u8 asRsn)
 {
        if (rtllib->ps != RTLLIB_PS_DISABLED)
                rtllib->sta_wake_up(rtllib->dev);
@@ -3719,6 +3745,7 @@ bool rtllib_MgntDisconnect(struct rtllib_device *rtllib, 
u8 asRsn)
 
        return true;
 }
+EXPORT_SYMBOL(rtllib_mgnt_disconnect);
 
 void notify_wx_assoc_event(struct rtllib_device *ieee)
 {
@@ -3739,3 +3766,5 @@ void notify_wx_assoc_event(struct rtllib_device *ieee)
        }
        wireless_send_event(ieee->dev, SIOCGIWAP, &wrqu, NULL);
 }
+EXPORT_SYMBOL(notify_wx_assoc_event);
+
diff --git a/drivers/staging/rtl8192e/rtllib_softmac_wx.c 
b/drivers/staging/rtl8192e/rtllib_softmac_wx.c
index 22988fb..c599c3a 100644
--- a/drivers/staging/rtl8192e/rtllib_softmac_wx.c
+++ b/drivers/staging/rtl8192e/rtllib_softmac_wx.c
@@ -15,7 +15,7 @@
 
 
 #include "rtllib.h"
-#include "rtl_core.h"
+#include "rtllib_debug.h"
 #include "dot11d.h"
 /* FIXME: add A freqs */
 
@@ -25,6 +25,7 @@ const long rtllib_wlan_frequencies[] = {
        2452, 2457, 2462, 2467,
        2472, 2484
 };
+EXPORT_SYMBOL(rtllib_wlan_frequencies);
 
 
 int rtllib_wx_set_freq(struct rtllib_device *ieee, struct iw_request_info *a,
@@ -82,6 +83,8 @@ out:
        up(&ieee->wx_sem);
        return ret;
 }
+EXPORT_SYMBOL(rtllib_wx_set_freq);
+
 
 
 int rtllib_wx_get_freq(struct rtllib_device *ieee,
@@ -97,6 +100,8 @@ int rtllib_wx_get_freq(struct rtllib_device *ieee,
        fwrq->e = 1;
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_freq);
+
 
 int rtllib_wx_get_wap(struct rtllib_device *ieee,
                            struct iw_request_info *info,
@@ -125,6 +130,8 @@ int rtllib_wx_get_wap(struct rtllib_device *ieee,
 
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_wap);
+
 
 
 int rtllib_wx_set_wap(struct rtllib_device *ieee,
@@ -184,6 +191,8 @@ out:
        up(&ieee->wx_sem);
        return ret;
 }
+EXPORT_SYMBOL(rtllib_wx_set_wap);
+
 
 int rtllib_wx_get_essid(struct rtllib_device *ieee, struct iw_request_info *a,
                         union iwreq_data *wrqu, char *b)
@@ -220,6 +229,8 @@ out:
        return ret;
 
 }
+EXPORT_SYMBOL(rtllib_wx_get_essid);
+
 
 int rtllib_wx_set_rate(struct rtllib_device *ieee,
                             struct iw_request_info *info,
@@ -231,6 +242,8 @@ int rtllib_wx_set_rate(struct rtllib_device *ieee,
        ieee->rate = target_rate/100000;
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_set_rate);
+
 
 int rtllib_wx_get_rate(struct rtllib_device *ieee,
                             struct iw_request_info *info,
@@ -243,6 +256,8 @@ int rtllib_wx_get_rate(struct rtllib_device *ieee,
 
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_rate);
+
 
 
 int rtllib_wx_set_rts(struct rtllib_device *ieee,
@@ -259,6 +274,8 @@ int rtllib_wx_set_rts(struct rtllib_device *ieee,
        }
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_set_rts);
+
 
 int rtllib_wx_get_rts(struct rtllib_device *ieee,
                             struct iw_request_info *info,
@@ -269,6 +286,8 @@ int rtllib_wx_get_rts(struct rtllib_device *ieee,
        wrqu->rts.disabled = (wrqu->rts.value == DEFAULT_RTS_THRESHOLD);
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_rts);
+
 
 int rtllib_wx_set_mode(struct rtllib_device *ieee, struct iw_request_info *a,
                             union iwreq_data *wrqu, char *b)
@@ -314,6 +333,8 @@ out:
        up(&ieee->wx_sem);
        return set_mode_status;
 }
+EXPORT_SYMBOL(rtllib_wx_set_mode);
+
 
 void rtllib_wx_sync_scan_wq(void *data)
 {
@@ -356,7 +377,7 @@ void rtllib_wx_sync_scan_wq(void *data)
                b40M = 1;
                chan_offset = ieee->pHTInfo->CurSTAExtChnlOffset;
                bandwidth = (enum ht_channel_width)ieee->pHTInfo->bCurBW40MHz;
-               RT_TRACE(COMP_DBG, "Scan in 40M, force to 20M first:%d, %d\n",
+               RTLLIB_TRACE(COMP_DBG, "Scan in 40M, force to 20M first:%d, 
%d\n",
                         chan_offset, bandwidth);
                ieee->SetBWModeHandler(ieee->dev, HT_CHANNEL_WIDTH_20,
                                       HT_EXTCHNL_OFFSET_NO_EXT);
@@ -365,7 +386,7 @@ void rtllib_wx_sync_scan_wq(void *data)
        rtllib_start_scan_syncro(ieee, 0);
 
        if (b40M) {
-               RT_TRACE(COMP_DBG, "Scan in 20M, back to 40M\n");
+               RTLLIB_TRACE(COMP_DBG, "Scan in 20M, back to 40M\n");
                if (chan_offset == HT_EXTCHNL_OFFSET_UPPER)
                        ieee->set_chan(ieee->dev, chan + 2);
                else if (chan_offset == HT_EXTCHNL_OFFSET_LOWER)
@@ -405,6 +426,8 @@ out:
        up(&ieee->wx_sem);
 
 }
+EXPORT_SYMBOL(rtllib_wx_sync_scan_wq);
+
 
 int rtllib_wx_set_scan(struct rtllib_device *ieee, struct iw_request_info *a,
                             union iwreq_data *wrqu, char *b)
@@ -428,6 +451,8 @@ out:
        up(&ieee->wx_sem);
        return ret;
 }
+EXPORT_SYMBOL(rtllib_wx_set_scan);
+
 
 int rtllib_wx_set_essid(struct rtllib_device *ieee,
                        struct iw_request_info *a,
@@ -490,6 +515,8 @@ out:
        up(&ieee->wx_sem);
        return ret;
 }
+EXPORT_SYMBOL(rtllib_wx_set_essid);
+
 
 int rtllib_wx_get_mode(struct rtllib_device *ieee, struct iw_request_info *a,
                       union iwreq_data *wrqu, char *b)
@@ -497,6 +524,8 @@ int rtllib_wx_get_mode(struct rtllib_device *ieee, struct 
iw_request_info *a,
        wrqu->mode = ieee->iw_mode;
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_mode);
+
 
 int rtllib_wx_set_rawtx(struct rtllib_device *ieee,
                        struct iw_request_info *info,
@@ -533,6 +562,8 @@ int rtllib_wx_set_rawtx(struct rtllib_device *ieee,
 
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_set_rawtx);
+
 
 int rtllib_wx_get_name(struct rtllib_device *ieee,
                             struct iw_request_info *info,
@@ -548,6 +579,8 @@ int rtllib_wx_get_name(struct rtllib_device *ieee,
                strcat(wrqu->name, "n");
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_name);
+
 
 
 /* this is mostly stolen from hostap */
@@ -568,13 +601,13 @@ int rtllib_wx_set_power(struct rtllib_device *ieee,
        down(&ieee->wx_sem);
 
        if (wrqu->power.disabled) {
-               RT_TRACE(COMP_DBG, "===>%s(): power disable\n", __func__);
+               RTLLIB_TRACE(COMP_DBG, "===>%s(): power disable\n", __func__);
                ieee->ps = RTLLIB_PS_DISABLED;
                goto exit;
        }
        if (wrqu->power.flags & IW_POWER_TIMEOUT) {
                ieee->ps_timeout = wrqu->power.value / 1000;
-               RT_TRACE(COMP_DBG, "===>%s():ps_timeout is %d\n", __func__,
+               RTLLIB_TRACE(COMP_DBG, "===>%s():ps_timeout is %d\n", __func__,
                         ieee->ps_timeout);
        }
 
@@ -605,6 +638,8 @@ exit:
        return ret;
 
 }
+EXPORT_SYMBOL(rtllib_wx_set_power);
+
 
 /* this is stolen from hostap */
 int rtllib_wx_get_power(struct rtllib_device *ieee,
@@ -643,3 +678,5 @@ exit:
        return ret;
 
 }
+EXPORT_SYMBOL(rtllib_wx_get_power);
+
diff --git a/drivers/staging/rtl8192e/rtllib_tx.c 
b/drivers/staging/rtl8192e/rtllib_tx.c
index 44e8006..3bf3d4c 100644
--- a/drivers/staging/rtl8192e/rtllib_tx.c
+++ b/drivers/staging/rtl8192e/rtllib_tx.c
@@ -965,3 +965,5 @@ int rtllib_xmit(struct sk_buff *skb, struct net_device *dev)
        memset(skb->cb, 0, sizeof(skb->cb));
        return rtllib_xmit_inter(skb, dev);
 }
+EXPORT_SYMBOL(rtllib_xmit);
+
diff --git a/drivers/staging/rtl8192e/rtllib_wx.c 
b/drivers/staging/rtl8192e/rtllib_wx.c
index 8cea4a6..bdcf1ce 100644
--- a/drivers/staging/rtl8192e/rtllib_wx.c
+++ b/drivers/staging/rtl8192e/rtllib_wx.c
@@ -295,6 +295,8 @@ int rtllib_wx_get_scan(struct rtllib_device *ieee,
 
        return err;
 }
+EXPORT_SYMBOL(rtllib_wx_get_scan);
+
 
 int rtllib_wx_set_encode(struct rtllib_device *ieee,
                            struct iw_request_info *info,
@@ -470,6 +472,8 @@ int rtllib_wx_set_encode(struct rtllib_device *ieee,
        }
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_set_encode);
+
 
 int rtllib_wx_get_encode(struct rtllib_device *ieee,
                            struct iw_request_info *info,
@@ -513,6 +517,8 @@ int rtllib_wx_get_encode(struct rtllib_device *ieee,
 
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_encode);
+
 
 int rtllib_wx_set_encode_ext(struct rtllib_device *ieee,
                               struct iw_request_info *info,
@@ -674,6 +680,8 @@ done:
        }
        return ret;
 }
+EXPORT_SYMBOL(rtllib_wx_set_encode_ext);
+
 
 int rtllib_wx_get_encode_ext(struct rtllib_device *ieee,
                               struct iw_request_info *info,
@@ -731,6 +739,8 @@ int rtllib_wx_get_encode_ext(struct rtllib_device *ieee,
 
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_get_encode_ext);
+
 
 int rtllib_wx_set_mlme(struct rtllib_device *ieee,
                               struct iw_request_info *info,
@@ -778,6 +788,8 @@ int rtllib_wx_set_mlme(struct rtllib_device *ieee,
 
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_set_mlme);
+
 
 int rtllib_wx_set_auth(struct rtllib_device *ieee,
                               struct iw_request_info *info,
@@ -830,6 +842,8 @@ int rtllib_wx_set_auth(struct rtllib_device *ieee,
        }
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_set_auth);
+
 
 int rtllib_wx_set_gen_ie(struct rtllib_device *ieee, u8 *ie, size_t len)
 {
@@ -874,3 +888,5 @@ int rtllib_wx_set_gen_ie(struct rtllib_device *ieee, u8 
*ie, size_t len)
        }
        return 0;
 }
+EXPORT_SYMBOL(rtllib_wx_set_gen_ie);
+
_______________________________________________
devel mailing list
[email protected]
http://driverdev.linuxdriverproject.org/mailman/listinfo/devel

Reply via email to