|
|
@@ -1,408 +0,0 @@
|
|
|
-From 6f334c2b3966f10cbd089bb124ec0e114d8d8c77 Mon Sep 17 00:00:00 2001
|
|
|
-From: Larry Finger <[email protected]>
|
|
|
-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 <[email protected]> [Condition 1]
|
|
|
-Reported-by: Ben Hutchings <[email protected]> [Condition 2]
|
|
|
-Signed-off-by: Larry Finger <[email protected]>
|
|
|
-Cc: Ben Hutchings <[email protected]>
|
|
|
-Cc: Fengguang Wu <[email protected]>
|
|
|
-Signed-off-by: John W. Linville <[email protected]>
|
|
|
----
|
|
|
- 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 <[email protected]>");
|
|
|
- MODULE_AUTHOR("Realtek WlanFAE <[email protected]>");
|
|
|
-@@ -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 <[email protected]>");
|
|
|
-+MODULE_AUTHOR("Realtek WlanFAE <[email protected]>");
|
|
|
-+MODULE_AUTHOR("Larry Finger <[email protected]>");
|
|
|
-+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 <[email protected]>");
|
|
|
-+MODULE_AUTHOR("Realtek WlanFAE <[email protected]>");
|
|
|
-+MODULE_AUTHOR("Larry Finger <[email protected]>");
|
|
|
-+MODULE_LICENSE("GPL");
|
|
|
-+MODULE_DESCRIPTION("USB basic driver for rtlwifi");
|
|
|
-
|
|
|
- #define REALTEK_USB_VENQT_READ 0xC0
|
|
|
- #define REALTEK_USB_VENQT_WRITE 0x40
|