summaryrefslogtreecommitdiff
path: root/package
diff options
context:
space:
mode:
authorjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-08-04 15:32:36 +0000
committerjogo <jogo@3c298f89-4303-0410-b956-a3cf2f4a3e73>2013-08-04 15:32:36 +0000
commit7961633ce266224318c99b58a28dd3fa21fb6c51 (patch)
tree08bbfa894c066253e48f692225f87995b5026211 /package
parentaa5aba5e67d64a22c3093986aad290b4f1b88f5b (diff)
mac80211: add rtlwifi drivers
Signed-off-by: Viktar Palstsiuk <viktar.palstsiuk@promwad.com> [jogo@openwrt.org: add missing DRIVER_11N_SUPPORT select, add missing usb dependencies, backport upstream fixes for Kconfig issues] Signed-off-by: Jonas Gorski <jogo@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37687 3c298f89-4303-0410-b956-a3cf2f4a3e73
Diffstat (limited to 'package')
-rw-r--r--package/kernel/mac80211/Makefile123
-rw-r--r--package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch408
2 files changed, 530 insertions, 1 deletions
diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
index ddf2237ebd..5bc62a988d 100644
--- a/package/kernel/mac80211/Makefile
+++ b/package/kernel/mac80211/Makefile
@@ -29,7 +29,9 @@ PKG_DRIVERS = \
rtl8180 rtl8187 zd1211rw mac80211-hwsim carl9170 b43 b43legacy \
ath9k-common ath9k ath9k-htc ath net-libipw net-ipw2100 net-ipw2200 \
mwl8k net-hermes net-hermes-pci net-hermes-plx net-hermes-pcmcia \
- iwl-legacy iwl3945 iwl4965 iwlagn wl12xx lib80211
+ iwl-legacy iwl3945 iwl4965 iwlagn wl12xx lib80211 \
+ rtlwifi rtlwifi-pci rtlwifi-usb rtl8192c-common rtl8192ce rtl8192se \
+ rtl8192de rtl8192cu
PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_kmod-mac80211 \
@@ -40,6 +42,7 @@ PKG_CONFIG_DEPENDS:= \
CONFIG_PACKAGE_B43_DEBUG \
CONFIG_PACKAGE_B43_PIO \
CONFIG_PACKAGE_B43_N_PHY \
+ CONFIG_PACKAGE_RTLWIFI_DEBUG \
CONFIG_ATH_USER_REGD \
CARL9170_FW_VERSION:=1.9.6
@@ -349,6 +352,106 @@ $(call KernelPackage/rtl818x/Default)
AUTOLOAD:=$(call AutoLoad,27,rtl8187)
endef
+define KernelPackage/rtlwifi/config
+ menu "Configuration"
+ depends on PACKAGE_kmod-rtlwifi
+
+ config PACKAGE_RTLWIFI_DEBUG
+ bool "Realtek wireless debugging"
+ help
+ Say Y, if you want to debug realtek wireless drivers.
+
+ endmenu
+endef
+
+define KernelPackage/rtlwifi
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek common driver part
+ DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtlwifi.ko
+ AUTOLOAD:=$(call AutoLoad,26,rtlwifi)
+ MENU:=1
+endef
+
+define KernelPackage/rtlwifi-pci
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek common driver part (PCI support)
+ DEPENDS+= @PCI_SUPPORT +kmod-rtlwifi
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl_pci.ko
+ AUTOLOAD:=$(call AutoLoad,27,rtl_pci)
+ HIDDEN:=1
+endef
+
+define KernelPackage/rtlwifi-usb
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek common driver part (USB support)
+ DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-rtlwifi
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl_usb.ko
+ AUTOLOAD:=$(call AutoLoad,27,rtl_usb)
+ HIDDEN:=1
+endef
+
+define KernelPackage/rtl8192c-common
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek RTL8192CE/RTL8192CU common support module
+ DEPENDS+= +kmod-rtlwifi
+ FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192c/rtl8192c-common.ko
+ AUTOLOAD:=$(call AutoLoad,27,rtl8192c-common)
+ HIDDEN:=1
+endef
+
+define KernelPackage/rtl8192ce
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek RTL8192CE/RTL8188CE support
+ DEPENDS+= +kmod-rtlwifi-pci +kmod-rtl8192c-common
+ FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192ce/rtl8192ce.ko
+ AUTOLOAD:=$(call AutoLoad,28,rtl8192ce)
+endef
+
+define KernelPackage/rtl8192ce/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192cfw.bin $(1)/lib/firmware/rtlwifi
+endef
+
+define KernelPackage/rtl8192se
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek RTL8192SE/RTL8191SE support
+ DEPENDS+= +kmod-rtlwifi-pci
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192se/rtl8192se.ko
+ AUTOLOAD:=$(call AutoLoad,28,rtl8192se)
+endef
+
+define KernelPackage/rtl8192se/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192sefw.bin $(1)/lib/firmware/rtlwifi
+endef
+
+define KernelPackage/rtl8192de
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek RTL8192DE/RTL8188DE support
+ DEPENDS+= +kmod-rtlwifi-pci
+ FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192de/rtl8192de.ko
+ AUTOLOAD:=$(call AutoLoad,28,rtl8192de)
+endef
+
+define KernelPackage/rtl8192de/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192defw.bin $(1)/lib/firmware/rtlwifi
+endef
+
+define KernelPackage/rtl8192cu
+ $(call KernelPackage/mac80211/Default)
+ TITLE:=Realtek RTL8192CU/RTL8188CU support
+ DEPENDS+= +kmod-rtlwifi-usb +kmod-rtl8192c-common
+ FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rtlwifi/rtl8192cu/rtl8192cu.ko
+ AUTOLOAD:=$(call AutoLoad,28,rtl8192cu)
+endef
+
+define KernelPackage/rtl8192cu/install
+ $(INSTALL_DIR) $(1)/lib/firmware/rtlwifi
+ $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rtlwifi/rtl8192cufw.bin $(1)/lib/firmware/rtlwifi
+endef
+
ZD1211FW_NAME:=zd1211-firmware
ZD1211FW_VERSION:=1.4
define Download/zd1211rw
@@ -1287,6 +1390,16 @@ config-$(call config_package,rtl8187) += RTL8187
config-$(call config_package,wl12xx) += WL_TI WLCORE WLCORE_SDIO WL12XX
config-$(call config_package,zd1211rw) += ZD1211RW
+config-$(call config_package,rtlwifi) += RTL_CARDS RTLWIFI
+config-$(call config_package,rtlwifi-pci) += RTLWIFI_PCI
+config-$(call config_package,rtlwifi-usb) += RTLWIFI_USB
+config-$(call config_package,rtl8192c-common) += RTL8192C_COMMON
+config-$(call config_package,rtl8192ce) += RTL8192CE
+config-$(call config_package,rtl8192se) += RTL8192SE
+config-$(call config_package,rtl8192de) += RTL8192DE
+config-$(call config_package,rtl8192cu) += RTL8192CU
+config-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG
+
config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS
MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
@@ -1608,6 +1721,14 @@ $(eval $(call KernelPackage,rt2800-pci))
$(eval $(call KernelPackage,rt2800-usb))
$(eval $(call KernelPackage,rtl8180))
$(eval $(call KernelPackage,rtl8187))
+$(eval $(call KernelPackage,rtlwifi))
+$(eval $(call KernelPackage,rtlwifi-pci))
+$(eval $(call KernelPackage,rtlwifi-usb))
+$(eval $(call KernelPackage,rtl8192c-common))
+$(eval $(call KernelPackage,rtl8192ce))
+$(eval $(call KernelPackage,rtl8192se))
+$(eval $(call KernelPackage,rtl8192de))
+$(eval $(call KernelPackage,rtl8192cu))
$(eval $(call KernelPackage,zd1211rw))
$(eval $(call KernelPackage,mac80211-hwsim))
$(eval $(call KernelPackage,ath9k-common))
diff --git a/package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch b/package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch
new file mode 100644
index 0000000000..b1e943e15e
--- /dev/null
+++ b/package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch
@@ -0,0 +1,408 @@
+From 6f334c2b3966f10cbd089bb124ec0e114d8d8c77 Mon Sep 17 00:00:00 2001
+From: Larry Finger <Larry.Finger@lwfinger.net>
+Date: Fri, 12 Jul 2013 15:32:15 -0500
+Subject: [PATCH] rtlwifi: Fix build errors for unusual cases
+
+The present build configuration for the rtlwifi family of drivers will
+fail under two known conditions:
+
+(1) If rtlwifi is selected without selecting any of the dependent drivers,
+ there are errors in the build.
+(2) If the PCI drivers are built into the kernel and the USB drivers are modules,
+ or vice versa, there are missing globals.
+
+The first condition is fixed by never building rtlwifi unless at least one
+of the device drivers is selected. The second failure is fixed by splitting
+the PCI and USB codes out of rtlwifi, and creating their own mini drivers.
+If the drivers that use them are modules, they will also be modules.
+
+Although a number of files are touched by this patch, only Makefile and Kconfig
+have undergone significant changes. The only modifications to the other files
+were to export entry points needed by the new rtl_pci and rtl_usb units, or to
+rename two variables that had names that were likely to cause namespace collisions.
+
+Reported-by: Fengguang Wu <fengguang.wu@intel.com> [Condition 1]
+Reported-by: Ben Hutchings <bhutchings@solarflare.com> [Condition 2]
+Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
+Cc: Ben Hutchings <bhutchings@solarflare.com>
+Cc: Fengguang Wu <fengguang.wu@intel.com>
+Signed-off-by: John W. Linville <linville@tuxdriver.com>
+---
+ drivers/net/wireless/rtlwifi/Kconfig | 72 +++++++++++++++++++++++------------
+ drivers/net/wireless/rtlwifi/Makefile | 10 ++---
+ drivers/net/wireless/rtlwifi/base.c | 19 +++++++--
+ drivers/net/wireless/rtlwifi/base.h | 2 +-
+ drivers/net/wireless/rtlwifi/core.c | 1 +
+ drivers/net/wireless/rtlwifi/debug.c | 1 +
+ drivers/net/wireless/rtlwifi/efuse.c | 1 +
+ drivers/net/wireless/rtlwifi/pci.c | 9 ++++-
+ drivers/net/wireless/rtlwifi/ps.c | 4 ++
+ drivers/net/wireless/rtlwifi/usb.c | 7 ++++
+ 10 files changed, 91 insertions(+), 35 deletions(-)
+
+--- a/drivers/net/wireless/rtlwifi/Kconfig
++++ b/drivers/net/wireless/rtlwifi/Kconfig
+@@ -1,29 +1,22 @@
+-config RTLWIFI
+- tristate "Realtek wireless card support"
++menuconfig RTL_CARDS
++ tristate "Realtek rtlwifi family of devices"
+ depends on m
+- depends on MAC80211
+- select BACKPORT_FW_LOADER
+- ---help---
+- This is common code for RTL8192CE/RTL8192CU/RTL8192SE/RTL8723AE
+- drivers. This module does nothing by itself - the various front-end
+- drivers need to be enabled to support any desired devices.
+-
+- If you choose to build as a module, it'll be called rtlwifi.
+-
+-config RTLWIFI_DEBUG
+- bool "Debugging output for rtlwifi driver family"
+- depends on RTLWIFI
++ depends on MAC80211 && (PCI || USB)
+ default y
+ ---help---
+- To use the module option that sets the dynamic-debugging level for,
+- the front-end driver, this parameter must be "Y". For memory-limited
+- systems, choose "N". If in doubt, choose "Y".
++ This option will enable support for the Realtek mac80211-based
++ wireless drivers. Drivers rtl8192ce, rtl8192cu, rtl8192se, rtl8192de,
++ rtl8723eu, and rtl8188eu share some common code.
++
++if RTL_CARDS
+
+ config RTL8192CE
+ tristate "Realtek RTL8192CE/RTL8188CE Wireless Network Adapter"
+ depends on m
+- depends on RTLWIFI && PCI
++ depends on PCI
+ select RTL8192C_COMMON
++ select RTLWIFI
++ select RTLWIFI_PCI
+ ---help---
+ This is the driver for Realtek RTL8192CE/RTL8188CE 802.11n PCIe
+ wireless network adapters.
+@@ -33,7 +26,9 @@ config RTL8192CE
+ config RTL8192SE
+ tristate "Realtek RTL8192SE/RTL8191SE PCIe Wireless Network Adapter"
+ depends on m
+- depends on RTLWIFI && PCI
++ depends on PCI
++ select RTLWIFI
++ select RTLWIFI_PCI
+ ---help---
+ This is the driver for Realtek RTL8192SE/RTL8191SE 802.11n PCIe
+ wireless network adapters.
+@@ -43,7 +38,9 @@ config RTL8192SE
+ config RTL8192DE
+ tristate "Realtek RTL8192DE/RTL8188DE PCIe Wireless Network Adapter"
+ depends on m
+- depends on RTLWIFI && PCI
++ depends on PCI
++ select RTLWIFI
++ select RTLWIFI_PCI
+ ---help---
+ This is the driver for Realtek RTL8192DE/RTL8188DE 802.11n PCIe
+ wireless network adapters.
+@@ -53,7 +50,9 @@ config RTL8192DE
+ config RTL8723AE
+ tristate "Realtek RTL8723AE PCIe Wireless Network Adapter"
+ depends on m
+- depends on RTLWIFI && PCI
++ depends on PCI
++ select RTLWIFI
++ select RTLWIFI_PCI
+ ---help---
+ This is the driver for Realtek RTL8723AE 802.11n PCIe
+ wireless network adapters.
+@@ -63,7 +62,9 @@ config RTL8723AE
+ config RTL8188EE
+ tristate "Realtek RTL8188EE Wireless Network Adapter"
+ depends on m
+- depends on RTLWIFI && PCI
++ depends on PCI
++ select RTLWIFI
++ select RTLWIFI_PCI
+ ---help---
+ This is the driver for Realtek RTL8188EE 802.11n PCIe
+ wireless network adapters.
+@@ -73,7 +74,9 @@ config RTL8188EE
+ config RTL8192CU
+ tristate "Realtek RTL8192CU/RTL8188CU USB Wireless Network Adapter"
+ depends on m
+- depends on RTLWIFI && USB
++ depends on USB
++ select RTLWIFI
++ select RTLWIFI_USB
+ select RTL8192C_COMMON
+ ---help---
+ This is the driver for Realtek RTL8192CU/RTL8188CU 802.11n USB
+@@ -81,8 +84,32 @@ config RTL8192CU
+
+ If you choose to build it as a module, it will be called rtl8192cu
+
++config RTLWIFI
++ tristate "Realtek common driver part"
++ depends on m
++ select BACKPORT_FW_LOADER
++
++config RTLWIFI_PCI
++ depends on m
++ tristate
++
++config RTLWIFI_USB
++ depends on m
++ tristate
++
++config RTLWIFI_DEBUG
++ bool "Debugging output for rtlwifi driver family"
++ depends on RTLWIFI
++ default y
++ ---help---
++ To use the module option that sets the dynamic-debugging level for,
++ the front-end driver, this parameter must be "Y". For memory-limited
++ systems, choose "N". If in doubt, choose "Y".
++
+ config RTL8192C_COMMON
+ tristate
+ depends on m
+ depends on RTL8192CE || RTL8192CU
+ default m
++
++endif
+--- a/drivers/net/wireless/rtlwifi/Makefile
++++ b/drivers/net/wireless/rtlwifi/Makefile
+@@ -12,13 +12,11 @@ rtlwifi-objs := \
+
+ rtl8192c_common-objs += \
+
+-ifneq ($(CONFIG_PCI),)
+-rtlwifi-objs += pci.o
+-endif
++obj-$(CPTCFG_RTLWIFI_PCI) += rtl_pci.o
++rtl_pci-objs := pci.o
+
+-ifneq ($(CONFIG_USB),)
+-rtlwifi-objs += usb.o
+-endif
++obj-$(CPTCFG_RTLWIFI_USB) += rtl_usb.o
++rtl_usb-objs := usb.o
+
+ obj-$(CPTCFG_RTL8192C_COMMON) += rtl8192c/
+ obj-$(CPTCFG_RTL8192CE) += rtl8192ce/
+--- a/drivers/net/wireless/rtlwifi/base.c
++++ b/drivers/net/wireless/rtlwifi/base.c
+@@ -173,6 +173,7 @@ u8 rtl_tid_to_ac(u8 tid)
+ {
+ return tid_to_ac[tid];
+ }
++EXPORT_SYMBOL_GPL(rtl_tid_to_ac);
+
+ static void _rtl_init_hw_ht_capab(struct ieee80211_hw *hw,
+ struct ieee80211_sta_ht_cap *ht_cap)
+@@ -407,6 +408,7 @@ void rtl_deinit_deferred_work(struct iee
+ cancel_delayed_work(&rtlpriv->works.ps_rfon_wq);
+ cancel_delayed_work(&rtlpriv->works.fwevt_wq);
+ }
++EXPORT_SYMBOL_GPL(rtl_deinit_deferred_work);
+
+ void rtl_init_rfkill(struct ieee80211_hw *hw)
+ {
+@@ -440,6 +442,7 @@ void rtl_deinit_rfkill(struct ieee80211_
+ {
+ wiphy_rfkill_stop_polling(hw->wiphy);
+ }
++EXPORT_SYMBOL_GPL(rtl_deinit_rfkill);
+
+ int rtl_init_core(struct ieee80211_hw *hw)
+ {
+@@ -490,10 +493,12 @@ int rtl_init_core(struct ieee80211_hw *h
+
+ return 0;
+ }
++EXPORT_SYMBOL_GPL(rtl_init_core);
+
+ void rtl_deinit_core(struct ieee80211_hw *hw)
+ {
+ }
++EXPORT_SYMBOL_GPL(rtl_deinit_core);
+
+ void rtl_init_rx_config(struct ieee80211_hw *hw)
+ {
+@@ -502,6 +507,7 @@ void rtl_init_rx_config(struct ieee80211
+
+ rtlpriv->cfg->ops->get_hw_reg(hw, HW_VAR_RCR, (u8 *) (&mac->rx_conf));
+ }
++EXPORT_SYMBOL_GPL(rtl_init_rx_config);
+
+ /*********************************************************
+ *
+@@ -880,6 +886,7 @@ bool rtl_tx_mgmt_proc(struct ieee80211_h
+
+ return true;
+ }
++EXPORT_SYMBOL_GPL(rtl_tx_mgmt_proc);
+
+ void rtl_get_tcb_desc(struct ieee80211_hw *hw,
+ struct ieee80211_tx_info *info,
+@@ -1053,6 +1060,7 @@ bool rtl_action_proc(struct ieee80211_hw
+
+ return true;
+ }
++EXPORT_SYMBOL_GPL(rtl_action_proc);
+
+ /*should call before software enc*/
+ u8 rtl_is_special_data(struct ieee80211_hw *hw, struct sk_buff *skb, u8 is_tx)
+@@ -1126,6 +1134,7 @@ u8 rtl_is_special_data(struct ieee80211_
+
+ return false;
+ }
++EXPORT_SYMBOL_GPL(rtl_is_special_data);
+
+ /*********************************************************
+ *
+@@ -1301,6 +1310,7 @@ void rtl_beacon_statistic(struct ieee802
+
+ rtlpriv->link_info.bcn_rx_inperiod++;
+ }
++EXPORT_SYMBOL_GPL(rtl_beacon_statistic);
+
+ void rtl_watchdog_wq_callback(void *data)
+ {
+@@ -1794,6 +1804,7 @@ void rtl_recognize_peer(struct ieee80211
+
+ mac->vendor = vendor;
+ }
++EXPORT_SYMBOL_GPL(rtl_recognize_peer);
+
+ /*********************************************************
+ *
+@@ -1850,6 +1861,7 @@ struct attribute_group rtl_attribute_gro
+ .name = "rtlsysfs",
+ .attrs = rtl_sysfs_entries,
+ };
++EXPORT_SYMBOL_GPL(rtl_attribute_group);
+
+ MODULE_AUTHOR("lizhaoming <chaoming_li@realsil.com.cn>");
+ MODULE_AUTHOR("Realtek WlanFAE <wlanfae@realtek.com>");
+@@ -1857,7 +1869,8 @@ MODULE_AUTHOR("Larry Finger <Larry.FInge
+ MODULE_LICENSE("GPL");
+ MODULE_DESCRIPTION("Realtek 802.11n PCI wireless core");
+
+-struct rtl_global_var global_var = {};
++struct rtl_global_var rtl_global_var = {};
++EXPORT_SYMBOL_GPL(rtl_global_var);
+
+ static int __init rtl_core_module_init(void)
+ {
+@@ -1865,8 +1878,8 @@ static int __init rtl_core_module_init(v
+ pr_err("Unable to register rtl_rc, use default RC !!\n");
+
+ /* init some global vars */
+- INIT_LIST_HEAD(&global_var.glb_priv_list);
+- spin_lock_init(&global_var.glb_list_lock);
++ INIT_LIST_HEAD(&rtl_global_var.glb_priv_list);
++ spin_lock_init(&rtl_global_var.glb_list_lock);
+
+ return 0;
+ }
+--- a/drivers/net/wireless/rtlwifi/base.h
++++ b/drivers/net/wireless/rtlwifi/base.h
+@@ -147,7 +147,7 @@ void rtl_recognize_peer(struct ieee80211
+ u8 rtl_tid_to_ac(u8 tid);
+ extern struct attribute_group rtl_attribute_group;
+ void rtl_easy_concurrent_retrytimer_callback(unsigned long data);
+-extern struct rtl_global_var global_var;
++extern struct rtl_global_var rtl_global_var;
+ int rtlwifi_rate_mapping(struct ieee80211_hw *hw,
+ bool isht, u8 desc_rate, bool first_ampdu);
+ bool rtl_tx_mgmt_proc(struct ieee80211_hw *hw, struct sk_buff *skb);
+--- a/drivers/net/wireless/rtlwifi/core.c
++++ b/drivers/net/wireless/rtlwifi/core.c
+@@ -1330,3 +1330,4 @@ const struct ieee80211_ops rtl_ops = {
+ .rfkill_poll = rtl_op_rfkill_poll,
+ .flush = rtl_op_flush,
+ };
++EXPORT_SYMBOL_GPL(rtl_ops);
+--- a/drivers/net/wireless/rtlwifi/debug.c
++++ b/drivers/net/wireless/rtlwifi/debug.c
+@@ -51,3 +51,4 @@ void rtl_dbgp_flag_init(struct ieee80211
+
+ /*Init Debug flag enable condition */
+ }
++EXPORT_SYMBOL_GPL(rtl_dbgp_flag_init);
+--- a/drivers/net/wireless/rtlwifi/efuse.c
++++ b/drivers/net/wireless/rtlwifi/efuse.c
+@@ -229,6 +229,7 @@ void read_efuse_byte(struct ieee80211_hw
+
+ *pbuf = (u8) (value32 & 0xff);
+ }
++EXPORT_SYMBOL_GPL(read_efuse_byte);
+
+ void read_efuse(struct ieee80211_hw *hw, u16 _offset, u16 _size_byte, u8 *pbuf)
+ {
+--- a/drivers/net/wireless/rtlwifi/pci.c
++++ b/drivers/net/wireless/rtlwifi/pci.c
+@@ -35,6 +35,13 @@
+ #include "efuse.h"
+ #include <linux/export.h>
+ #include <linux/kmemleak.h>
++#include <linux/module.h>
++
++MODULE_AUTHOR("lizhaoming <chaoming_li@realsil.com.cn>");
++MODULE_AUTHOR("Realtek WlanFAE <wlanfae@realtek.com>");
++MODULE_AUTHOR("Larry Finger <Larry.FInger@lwfinger.net>");
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("PCI basic driver for rtlwifi");
+
+ static const u16 pcibridge_vendors[PCI_BRIDGE_VENDOR_MAX] = {
+ PCI_VENDOR_ID_INTEL,
+@@ -1899,7 +1906,7 @@ int rtl_pci_probe(struct pci_dev *pdev,
+ rtlpriv->rtlhal.interface = INTF_PCI;
+ rtlpriv->cfg = (struct rtl_hal_cfg *)(id->driver_data);
+ rtlpriv->intf_ops = &rtl_pci_ops;
+- rtlpriv->glb_var = &global_var;
++ rtlpriv->glb_var = &rtl_global_var;
+
+ /*
+ *init dbgp flags before all
+--- a/drivers/net/wireless/rtlwifi/ps.c
++++ b/drivers/net/wireless/rtlwifi/ps.c
+@@ -269,6 +269,7 @@ void rtl_ips_nic_on(struct ieee80211_hw
+
+ spin_unlock_irqrestore(&rtlpriv->locks.ips_lock, flags);
+ }
++EXPORT_SYMBOL_GPL(rtl_ips_nic_on);
+
+ /*for FW LPS*/
+
+@@ -518,6 +519,7 @@ void rtl_swlps_beacon(struct ieee80211_h
+ "u_bufferd: %x, m_buffered: %x\n", u_buffed, m_buffed);
+ }
+ }
++EXPORT_SYMBOL_GPL(rtl_swlps_beacon);
+
+ void rtl_swlps_rf_awake(struct ieee80211_hw *hw)
+ {
+@@ -922,3 +925,4 @@ void rtl_p2p_info(struct ieee80211_hw *h
+ else
+ rtl_p2p_noa_ie(hw, data, len - FCS_LEN);
+ }
++EXPORT_SYMBOL_GPL(rtl_p2p_info);
+--- a/drivers/net/wireless/rtlwifi/usb.c
++++ b/drivers/net/wireless/rtlwifi/usb.c
+@@ -32,6 +32,13 @@
+ #include "ps.h"
+ #include "rtl8192c/fw_common.h"
+ #include <linux/export.h>
++#include <linux/module.h>
++
++MODULE_AUTHOR("lizhaoming <chaoming_li@realsil.com.cn>");
++MODULE_AUTHOR("Realtek WlanFAE <wlanfae@realtek.com>");
++MODULE_AUTHOR("Larry Finger <Larry.FInger@lwfinger.net>");
++MODULE_LICENSE("GPL");
++MODULE_DESCRIPTION("USB basic driver for rtlwifi");
+
+ #define REALTEK_USB_VENQT_READ 0xC0
+ #define REALTEK_USB_VENQT_WRITE 0x40