diff options
author | Jonas Gorski <jogo@openwrt.org> | 2013-08-04 15:32:36 +0000 |
---|---|---|
committer | Jonas Gorski <jogo@openwrt.org> | 2013-08-04 15:32:36 +0000 |
commit | 8a2b720565e10551cea19f64da483a1d1cff9da8 (patch) | |
tree | 08bbfa894c066253e48f692225f87995b5026211 /package/kernel/mac80211/patches | |
parent | f1a3926e2482c77dcb5c38d76f768a818fde5aac (diff) | |
download | upstream-8a2b720565e10551cea19f64da483a1d1cff9da8.tar.gz upstream-8a2b720565e10551cea19f64da483a1d1cff9da8.tar.bz2 upstream-8a2b720565e10551cea19f64da483a1d1cff9da8.zip |
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/kernel/mac80211/patches')
-rw-r--r-- | package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch | 408 |
1 files changed, 408 insertions, 0 deletions
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 |