diff --git a/package/kernel/mac80211/patches/300-pending_work.patch b/package/kernel/mac80211/patches/300-pending_work.patch index 2fa1e1b004..0e5ceb8b92 100644 --- a/package/kernel/mac80211/patches/300-pending_work.patch +++ b/package/kernel/mac80211/patches/300-pending_work.patch @@ -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 "); + MODULE_AUTHOR("Realtek WlanFAE "); +@@ -1857,7 +1869,8 @@ MODULE_AUTHOR("Larry Finger + #include ++#include ++ ++MODULE_AUTHOR("lizhaoming "); ++MODULE_AUTHOR("Realtek WlanFAE "); ++MODULE_AUTHOR("Larry Finger "); ++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 ++#include ++ ++MODULE_AUTHOR("lizhaoming "); ++MODULE_AUTHOR("Realtek WlanFAE "); ++MODULE_AUTHOR("Larry Finger "); ++MODULE_LICENSE("GPL"); ++MODULE_DESCRIPTION("USB basic driver for rtlwifi"); + + #define REALTEK_USB_VENQT_READ 0xC0 + #define REALTEK_USB_VENQT_WRITE 0x40 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 deleted file mode 100644 index b1e943e15e..0000000000 --- a/package/kernel/mac80211/patches/900-rtlwifi-Fix-build-errors-for-unusual-cases.patch +++ /dev/null @@ -1,408 +0,0 @@ -From 6f334c2b3966f10cbd089bb124ec0e114d8d8c77 Mon Sep 17 00:00:00 2001 -From: Larry Finger -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 [Condition 1] -Reported-by: Ben Hutchings [Condition 2] -Signed-off-by: Larry Finger -Cc: Ben Hutchings -Cc: Fengguang Wu -Signed-off-by: John W. Linville ---- - 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 "); - MODULE_AUTHOR("Realtek WlanFAE "); -@@ -1857,7 +1869,8 @@ MODULE_AUTHOR("Larry Finger - #include -+#include -+ -+MODULE_AUTHOR("lizhaoming "); -+MODULE_AUTHOR("Realtek WlanFAE "); -+MODULE_AUTHOR("Larry Finger "); -+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 -+#include -+ -+MODULE_AUTHOR("lizhaoming "); -+MODULE_AUTHOR("Realtek WlanFAE "); -+MODULE_AUTHOR("Larry Finger "); -+MODULE_LICENSE("GPL"); -+MODULE_DESCRIPTION("USB basic driver for rtlwifi"); - - #define REALTEK_USB_VENQT_READ 0xC0 - #define REALTEK_USB_VENQT_WRITE 0x40