mac80211: fold the rtlwifi patch into 300-pending_work.patch (upstream patch)
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 37714
This commit is contained in:
		@@ -1036,3 +1036,369 @@
 | 
			
		||||
 		cfg80211_stop_ap(rdev, dev);
 | 
			
		||||
 		break;
 | 
			
		||||
 	default:
 | 
			
		||||
--- 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 +924,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
 | 
			
		||||
 
 | 
			
		||||
@@ -1,408 +0,0 @@
 | 
			
		||||
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
 | 
			
		||||
		Reference in New Issue
	
	Block a user