mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-24 15:56:49 +00:00
mac80211: update to wireless-testing 2012-05-29
SVN-Revision: 32002
This commit is contained in:
parent
ce4aa59497
commit
478ae49618
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
||||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=2012-04-17
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=2012-05-29
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_MD5SUM:=2607092b22b5cb552dc3c79921c85369
|
||||
PKG_MD5SUM:=a98eedfcb1690405626217e040deec1a
|
||||
|
||||
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -29,9 +29,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) +=
|
||||
@@ -44,9 +44,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) +=
|
||||
|
||||
obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -362,8 +362,8 @@ export CONFIG_B43_BCMA_EXTRA=y
|
||||
@@ -370,8 +370,8 @@ export CONFIG_B43_BCMA_EXTRA=y
|
||||
|
||||
export CONFIG_P54_PCI=m
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
ifeq ($(CONFIG_MAC80211),y)
|
||||
$(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular")
|
||||
@@ -668,10 +668,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
@@ -675,10 +675,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
# We need the backported rfkill module on kernel < 2.6.31.
|
||||
# In more recent kernel versions use the in kernel rfkill module.
|
||||
ifdef CONFIG_COMPAT_KERNEL_2_6_31
|
||||
|
@ -1,13 +1,15 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -99,8 +99,8 @@ ifndef CONFIG_COMPAT_KERNEL_2_6_27
|
||||
@@ -99,9 +99,9 @@ ifndef CONFIG_COMPAT_KERNEL_2_6_27
|
||||
ifeq ($(CONFIG_BT),y)
|
||||
# we'll ignore compiling bluetooth
|
||||
else
|
||||
- export CONFIG_COMPAT_BLUETOOTH=y
|
||||
- export CONFIG_COMPAT_BLUETOOTH_MODULES=m
|
||||
- export CONFIG_HID_GENERIC=m
|
||||
+# export CONFIG_COMPAT_BLUETOOTH=y
|
||||
+# export CONFIG_COMPAT_BLUETOOTH_MODULES=m
|
||||
+# export CONFIG_HID_GENERIC=m
|
||||
endif
|
||||
endif #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -29,7 +29,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) +=
|
||||
@@ -44,7 +44,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) +=
|
||||
|
||||
obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/
|
||||
|
||||
@ -19,7 +19,7 @@
|
||||
else
|
||||
include $(KLIB_BUILD)/.config
|
||||
endif
|
||||
@@ -338,7 +338,8 @@ export CONFIG_IPW2200_QOS=y
|
||||
@@ -346,7 +346,8 @@ export CONFIG_IPW2200_QOS=y
|
||||
# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
|
||||
endif #CONFIG_WIRELESS_EXT
|
||||
|
||||
@ -29,7 +29,7 @@
|
||||
# Sonics Silicon Backplane
|
||||
export CONFIG_SSB_SPROM=y
|
||||
|
||||
@@ -351,7 +352,7 @@ endif #CONFIG_PCMCIA
|
||||
@@ -359,7 +360,7 @@ endif #CONFIG_PCMCIA
|
||||
# export CONFIG_SSB_DEBUG=y
|
||||
export CONFIG_SSB_DRIVER_PCICORE=y
|
||||
export CONFIG_B43_SSB=y
|
||||
@ -38,7 +38,7 @@
|
||||
|
||||
export CONFIG_BCMA=m
|
||||
export CONFIG_BCMA_BLOCKIO=y
|
||||
@@ -562,7 +563,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
@@ -574,7 +575,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
|
||||
ifdef CONFIG_MMC
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/Makefile
|
||||
+++ b/Makefile
|
||||
@@ -29,7 +29,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) +=
|
||||
@@ -44,7 +44,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) +=
|
||||
|
||||
obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),)
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -354,12 +354,12 @@ export CONFIG_SSB_DRIVER_PCICORE=y
|
||||
@@ -362,12 +362,12 @@ export CONFIG_SSB_DRIVER_PCICORE=y
|
||||
export CONFIG_B43_SSB=y
|
||||
endif #__CONFIG_SSB
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -237,7 +237,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT
|
||||
@@ -240,7 +240,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT
|
||||
endif #CONFIG_WIRELESS_EXT
|
||||
|
||||
ifdef CONFIG_STAGING
|
||||
@ -9,7 +9,7 @@
|
||||
endif #CONFIG_STAGING
|
||||
|
||||
# mac80211 test driver
|
||||
@@ -391,15 +391,15 @@ endif #CONFIG_CRC_ITU_T
|
||||
@@ -399,15 +399,15 @@ endif #CONFIG_CRC_ITU_T
|
||||
export CONFIG_MWL8K=m
|
||||
|
||||
# Ethernet drivers go here
|
||||
@ -19,20 +19,20 @@
|
||||
+# export CONFIG_ATL1=m
|
||||
+# export CONFIG_ATL2=m
|
||||
+# export CONFIG_ATL1E=m
|
||||
ifdef CONFIG_COMPAT_KERNEL_2_6_27
|
||||
ifdef CONFIG_COMPAT_KERNEL_2_6_28
|
||||
-export CONFIG_ATL1C=m
|
||||
-export CONFIG_ALX=n
|
||||
+# export CONFIG_ATL1C=m
|
||||
+# export CONFIG_ALX=n
|
||||
else #CONFIG_COMPAT_KERNEL_2_6_28
|
||||
-export CONFIG_ATL1C=n
|
||||
-export CONFIG_ALX=m
|
||||
+# export CONFIG_ATL1C=n
|
||||
+# export CONFIG_ALX=m
|
||||
else #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
-export CONFIG_ATL1C=n
|
||||
-export CONFIG_ALX=m
|
||||
+# export CONFIG_ATL1C=n
|
||||
+# export CONFIG_ALX=m
|
||||
endif #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
endif #CONFIG_COMPAT_KERNEL_2_6_28
|
||||
|
||||
ifdef CONFIG_WIRELESS_EXT
|
||||
@@ -460,21 +460,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
|
||||
@@ -468,21 +468,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
|
||||
# Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER
|
||||
# it also requires new RNDIS_HOST and CDC_ETHER modules which we add
|
||||
ifdef CONFIG_COMPAT_KERNEL_2_6_29
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -175,7 +175,7 @@ export CONFIG_MAC80211_LEDS=y
|
||||
@@ -176,7 +176,7 @@ export CONFIG_MAC80211_LEDS=y
|
||||
endif #CONFIG_LEDS_TRIGGERS
|
||||
|
||||
# enable mesh networking too
|
||||
|
@ -9,7 +9,7 @@
|
||||
# export CONFIG_SSB=m
|
||||
else
|
||||
include $(KLIB_BUILD)/.config
|
||||
@@ -289,7 +289,7 @@ export CONFIG_B43=m
|
||||
@@ -297,7 +297,7 @@ export CONFIG_B43=m
|
||||
export CONFIG_B43_HWRNG=y
|
||||
export CONFIG_B43_PCI_AUTOSELECT=y
|
||||
ifdef CONFIG_PCMCIA
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -564,7 +564,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
@@ -576,7 +576,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
ifdef CONFIG_MMC
|
||||
|
||||
# export CONFIG_SSB_SDIOHOST=y
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -295,8 +295,8 @@ ifdef CONFIG_MAC80211_LEDS
|
||||
@@ -303,8 +303,8 @@ ifdef CONFIG_MAC80211_LEDS
|
||||
export CONFIG_B43_LEDS=y
|
||||
endif #CONFIG_MAC80211_LEDS
|
||||
export CONFIG_B43_PHY_LP=y
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -370,7 +370,7 @@ export CONFIG_RTL8180=m
|
||||
@@ -378,7 +378,7 @@ export CONFIG_RTL8180=m
|
||||
|
||||
export CONFIG_ADM8211=m
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
export CONFIG_RT2400PCI=m
|
||||
export CONFIG_RT2500PCI=m
|
||||
ifdef CONFIG_CRC_CCITT
|
||||
@@ -512,7 +512,7 @@ export CONFIG_RT2800USB_RT35XX=y
|
||||
@@ -524,7 +524,7 @@ export CONFIG_RT2800USB_RT35XX=y
|
||||
export CONFIG_RT2800USB_RT53XX=y
|
||||
export CONFIG_RT2800USB_UNKNOWN=y
|
||||
endif #CONFIG_CRC_CCITT
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -167,7 +167,7 @@ export CONFIG_MAC80211_RC_DEFAULT_MINSTR
|
||||
@@ -168,7 +168,7 @@ export CONFIG_MAC80211_RC_DEFAULT_MINSTR
|
||||
# This is the one used by our compat-wireless net/mac80211/rate.c
|
||||
# in case you have and old kernel which is overriding this to pid.
|
||||
export CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel_ht
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -261,7 +261,7 @@ export CONFIG_ATH9K_COMMON=m
|
||||
@@ -264,7 +264,7 @@ export CONFIG_ATH9K_COMMON=m
|
||||
# as default once we get minstrel properly tested and blessed by
|
||||
# our systems engineering team. CCK rates also need to be used
|
||||
# for long range considerations.
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -268,7 +268,7 @@ export CONFIG_ATH9K_BTCOEX_SUPPORT=y
|
||||
@@ -276,7 +276,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
# PCI Drivers
|
||||
ifdef CONFIG_PCI
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/compat/Makefile
|
||||
+++ b/compat/Makefile
|
||||
@@ -38,8 +38,6 @@ compat-$(CONFIG_COMPAT_KERNEL_3_2) += co
|
||||
compat-$(CONFIG_COMPAT_KERNEL_3_3) += compat-3.3.o
|
||||
compat-$(CONFIG_COMPAT_KERNEL_3_5) += compat-3.5.o
|
||||
@@ -43,8 +43,6 @@ compat-$(CONFIG_COMPAT_KERNEL_3_3) += \
|
||||
flow_dissector.o
|
||||
compat-$(CONFIG_COMPAT_KERNEL_3_4) += compat-3.4.o
|
||||
|
||||
-compat-$(CONFIG_COMPAT_CORDIC) += cordic.o
|
||||
-compat-$(CONFIG_COMPAT_CRC8) += crc8.o
|
||||
|
@ -1,11 +1,11 @@
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -263,7 +263,7 @@ export CONFIG_ATH9K_COMMON=m
|
||||
@@ -266,7 +266,7 @@ export CONFIG_ATH9K_COMMON=m
|
||||
# for long range considerations.
|
||||
# export CONFIG_COMPAT_ATH9K_RATE_CONTROL=y
|
||||
|
||||
-export CONFIG_ATH9K_BTCOEX_SUPPORT=y
|
||||
+# export CONFIG_ATH9K_BTCOEX_SUPPORT=y
|
||||
|
||||
# PCI Drivers
|
||||
ifdef CONFIG_PCI
|
||||
ifndef CONFIG_COMPAT_KERNEL_2_6_27
|
||||
export CONFIG_ATH6KL=m
|
||||
|
@ -1,20 +1,17 @@
|
||||
--- a/compat/Makefile
|
||||
+++ b/compat/Makefile
|
||||
@@ -1,10 +1,13 @@
|
||||
@@ -1,7 +1,10 @@
|
||||
obj-m += compat.o
|
||||
#compat-objs :=
|
||||
|
||||
-obj-$(CONFIG_COMPAT_FIRMWARE_CLASS) += compat_firmware_class.o
|
||||
|
||||
compat-y += main.o
|
||||
|
||||
+ifdef CONFIG_COMPAT_FIRMWARE_CLASS
|
||||
+ compat-y += compat_firmware_class.o
|
||||
+endif
|
||||
+
|
||||
# Compat kernel compatibility code
|
||||
compat-$(CONFIG_COMPAT_KERNEL_2_6_14) += compat-2.6.14.o
|
||||
compat-$(CONFIG_COMPAT_KERNEL_2_6_18) += compat-2.6.18.o
|
||||
obj-$(CONFIG_COMPAT_NET_SCH_CODEL) += sch_codel.o
|
||||
obj-$(CONFIG_COMPAT_NET_SCH_FQ_CODEL) += sch_fq_codel.o
|
||||
|
||||
--- a/compat/compat_firmware_class.c
|
||||
+++ b/compat/compat_firmware_class.c
|
||||
@@ -741,19 +741,16 @@ compat_request_firmware_nowait(
|
||||
@ -41,10 +38,10 @@
|
||||
EXPORT_SYMBOL_GPL(request_firmware_nowait);
|
||||
--- a/compat/main.c
|
||||
+++ b/compat/main.c
|
||||
@@ -37,6 +37,17 @@ void compat_dependency_symbol(void)
|
||||
}
|
||||
@@ -47,6 +47,17 @@ void compat_dependency_symbol(void)
|
||||
EXPORT_SYMBOL_GPL(compat_dependency_symbol);
|
||||
|
||||
|
||||
+#if defined(CONFIG_FW_LOADER) && (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
|
||||
+int __init firmware_class_init(void);
|
||||
+void __exit firmware_class_exit(void);
|
||||
@ -58,10 +55,10 @@
|
||||
+
|
||||
static int __init compat_init(void)
|
||||
{
|
||||
/* pm-qos for kernels <= 2.6.24, this is a no-op on newer kernels */
|
||||
@@ -51,7 +62,8 @@ static int __init compat_init(void)
|
||||
COMPAT_BASE_TREE " " COMPAT_BASE_TREE_VERSION
|
||||
"\n");
|
||||
compat_pm_qos_power_init();
|
||||
@@ -63,7 +74,8 @@ static int __init compat_init(void)
|
||||
printk(KERN_INFO "compat.git: "
|
||||
COMPAT_BASE_TREE "\n");
|
||||
|
||||
- return 0;
|
||||
+ firmware_class_init();
|
||||
@ -69,7 +66,7 @@
|
||||
}
|
||||
module_init(compat_init);
|
||||
|
||||
@@ -60,7 +72,8 @@ static void __exit compat_exit(void)
|
||||
@@ -72,7 +84,8 @@ static void __exit compat_exit(void)
|
||||
compat_pm_qos_power_deinit();
|
||||
compat_system_workqueue_destroy();
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
--- a/include/linux/compat-3.4.h
|
||||
+++ b/include/linux/compat-3.4.h
|
||||
@@ -62,6 +62,19 @@ static inline void eth_hw_addr_random(st
|
||||
#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,31)) */
|
||||
#endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,12)) */
|
||||
@@ -77,6 +77,19 @@ static inline void eth_hw_addr_random(st
|
||||
module_driver(__pci_driver, pci_register_driver, \
|
||||
pci_unregister_driver)
|
||||
|
||||
+/* source include/linux/pci.h */
|
||||
+/**
|
||||
|
19
package/mac80211/patches/070-disable_codel.patch
Normal file
19
package/mac80211/patches/070-disable_codel.patch
Normal file
@ -0,0 +1,19 @@
|
||||
--- a/compat/scripts/gen-compat-config.sh
|
||||
+++ b/compat/scripts/gen-compat-config.sh
|
||||
@@ -62,16 +62,3 @@ fi
|
||||
if [[ ${CONFIG_COMPAT_KERNEL_2_6_36} = "y" ]]; then
|
||||
echo "export CONFIG_COMPAT_KFIFO=y"
|
||||
fi
|
||||
-
|
||||
-if [[ ${CONFIG_COMPAT_KERNEL_3_5} = "y" ]]; then
|
||||
- # We don't have 2.6.24 backport support yet for Codel / FQ CoDel
|
||||
- # For those who want to try this is what is required that I can tell
|
||||
- # so far:
|
||||
- # * struct Qdisc_ops
|
||||
- # - init and change callback ops use a different argument dataype
|
||||
- # - you need to parse data received from userspace differently
|
||||
- if [[ ${CONFIG_COMPAT_KERNEL_2_6_25} != "y" ]]; then
|
||||
- echo "export CONFIG_COMPAT_NET_SCH_CODEL=m"
|
||||
- echo "export CONFIG_COMPAT_NET_SCH_FQ_CODEL=m"
|
||||
- fi
|
||||
-fi
|
19
package/mac80211/patches/071-add_codel_ifdef.patch
Normal file
19
package/mac80211/patches/071-add_codel_ifdef.patch
Normal file
@ -0,0 +1,19 @@
|
||||
--- a/include/linux/compat-3.5.h
|
||||
+++ b/include/linux/compat-3.5.h
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
#include <linux/pkt_sched.h>
|
||||
|
||||
+#ifndef TCA_CODEL_MAX
|
||||
+
|
||||
/*
|
||||
* This backports:
|
||||
*
|
||||
@@ -107,6 +109,7 @@ struct tc_fq_codel_xstats {
|
||||
};
|
||||
};
|
||||
|
||||
+#endif /* TCA_CODEL_MAX */
|
||||
|
||||
/* Backports tty_lock: Localise the lock */
|
||||
#define tty_lock(__tty) tty_lock()
|
@ -33,7 +33,7 @@
|
||||
#endif
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -498,7 +498,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
|
||||
@@ -506,7 +506,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
|
||||
# This activates a threading fix for usb urb.
|
||||
# this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351
|
||||
# This fix will be included in some stable releases.
|
||||
|
@ -1,33 +1,3 @@
|
||||
--- a/drivers/net/wireless/ath/ath5k/ani.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/ani.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "ath5k.h"
|
||||
--- a/drivers/net/wireless/ath/ath5k/attach.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/attach.c
|
||||
@@ -20,6 +20,7 @@
|
||||
* Attach/Detach Functions and helpers *
|
||||
\*************************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/pci.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/base.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/base.c
|
||||
@@ -40,6 +40,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/debug.c
|
||||
@@ -58,6 +58,7 @@
|
||||
@ -38,230 +8,3 @@
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/export.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/desc.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/desc.c
|
||||
@@ -21,6 +21,7 @@
|
||||
Hardware Descriptor Functions
|
||||
\******************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "ath5k.h"
|
||||
--- a/drivers/net/wireless/ath/ath5k/dma.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/dma.c
|
||||
@@ -29,6 +29,7 @@
|
||||
* status registers (ISR).
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "ath5k.h"
|
||||
--- a/drivers/net/wireless/ath/ath5k/eeprom.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/eeprom.c
|
||||
@@ -21,6 +21,7 @@
|
||||
* EEPROM access functions and helpers *
|
||||
\*************************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/slab.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/initvals.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/initvals.c
|
||||
@@ -19,6 +19,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "ath5k.h"
|
||||
--- a/drivers/net/wireless/ath/ath5k/led.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/led.c
|
||||
@@ -39,6 +39,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/pci.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
|
||||
@@ -41,6 +41,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <net/mac80211.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/pci.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/nl80211.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/phy.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/phy.c
|
||||
@@ -22,6 +22,7 @@
|
||||
* PHY related functions *
|
||||
\***********************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/delay.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/qcu.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/qcu.c
|
||||
@@ -20,6 +20,7 @@
|
||||
Queue Control Unit, DCF Control Unit Functions
|
||||
\********************************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "ath5k.h"
|
||||
--- a/drivers/net/wireless/ath/ath5k/reset.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/reset.c
|
||||
@@ -23,6 +23,7 @@
|
||||
Reset function and helpers
|
||||
\****************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <asm/unaligned.h>
|
||||
--- a/drivers/net/wireless/ath/ath5k/sysfs.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/sysfs.c
|
||||
@@ -1,3 +1,4 @@
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/device.h>
|
||||
--- a/drivers/net/wireless/ath/ath6kl/cfg80211.c
|
||||
+++ b/drivers/net/wireless/ath/ath6kl/cfg80211.c
|
||||
@@ -15,6 +15,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/moduleparam.h>
|
||||
--- a/drivers/net/wireless/ath/ath6kl/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath6kl/init.c
|
||||
@@ -16,6 +16,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/moduleparam.h>
|
||||
--- a/drivers/net/wireless/ath/ath6kl/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath6kl/main.c
|
||||
@@ -15,6 +15,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "core.h"
|
||||
--- a/drivers/net/wireless/ath/ath6kl/txrx.c
|
||||
+++ b/drivers/net/wireless/ath/ath6kl/txrx.c
|
||||
@@ -15,6 +15,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "core.h"
|
||||
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "htc.h"
|
||||
--- a/drivers/net/wireless/ath/ath9k/htc_hst.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/htc_hst.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include "htc.h"
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/dma-mapping.h>
|
||||
--- a/drivers/net/wireless/ath/ath9k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/pci.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/nl80211.h>
|
||||
--- a/drivers/net/wireless/ath/main.c
|
||||
+++ b/drivers/net/wireless/ath/main.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
--- a/drivers/net/wireless/ath/regd.c
|
||||
+++ b/drivers/net/wireless/ath/regd.c
|
||||
@@ -14,6 +14,7 @@
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
|
||||
@@ -27,6 +27,7 @@
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-pci.c
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-pci.c
|
||||
@@ -61,6 +61,7 @@
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
+#undef pr_fmt
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath5k/initvals.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/initvals.c
|
||||
@@ -63,8 +63,14 @@ static const struct ath5k_ini ar5210_ini
|
||||
@@ -65,8 +65,14 @@ static const struct ath5k_ini ar5210_ini
|
||||
{ AR5K_IMR, 0 },
|
||||
{ AR5K_IER, AR5K_IER_DISABLE },
|
||||
{ AR5K_BSR, 0, AR5K_INI_READ },
|
||||
@ -17,7 +17,7 @@
|
||||
{ AR5K_RXNOFRM, 8 },
|
||||
--- a/drivers/net/wireless/ath/ath5k/dma.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/dma.c
|
||||
@@ -861,10 +861,18 @@ ath5k_hw_dma_init(struct ath5k_hw *ah)
|
||||
@@ -863,10 +863,18 @@ ath5k_hw_dma_init(struct ath5k_hw *ah)
|
||||
* guess we can tweak it and see how it goes ;-)
|
||||
*/
|
||||
if (ah->ah_version != AR5K_AR5210) {
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath5k/base.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/base.c
|
||||
@@ -2416,6 +2416,22 @@ ath5k_tx_complete_poll_work(struct work_
|
||||
@@ -2417,6 +2417,22 @@ ath5k_tx_complete_poll_work(struct work_
|
||||
* Initialization routines *
|
||||
\*************************/
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
int __devinit
|
||||
ath5k_init_ah(struct ath5k_hw *ah, const struct ath_bus_ops *bus_ops)
|
||||
{
|
||||
@@ -2437,6 +2453,9 @@ ath5k_init_ah(struct ath5k_hw *ah, const
|
||||
@@ -2438,6 +2454,9 @@ ath5k_init_ah(struct ath5k_hw *ah, const
|
||||
BIT(NL80211_IFTYPE_ADHOC) |
|
||||
BIT(NL80211_IFTYPE_MESH_POINT);
|
||||
|
||||
@ -33,531 +33,6 @@
|
||||
/* SW support for IBSS_RSN is provided by mac80211 */
|
||||
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
|
||||
@@ -618,19 +618,10 @@ static void ar5008_hw_init_bb(struct ath
|
||||
u32 synthDelay;
|
||||
|
||||
synthDelay = REG_READ(ah, AR_PHY_RX_DELAY) & AR_PHY_RX_DELAY_DELAY;
|
||||
- if (IS_CHAN_B(chan))
|
||||
- synthDelay = (4 * synthDelay) / 22;
|
||||
- else
|
||||
- synthDelay /= 10;
|
||||
-
|
||||
- if (IS_CHAN_HALF_RATE(chan))
|
||||
- synthDelay *= 2;
|
||||
- else if (IS_CHAN_QUARTER_RATE(chan))
|
||||
- synthDelay *= 4;
|
||||
|
||||
REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN);
|
||||
|
||||
- udelay(synthDelay + BASE_ACTIVATE_DELAY);
|
||||
+ ath9k_hw_synth_delay(ah, chan, synthDelay);
|
||||
}
|
||||
|
||||
static void ar5008_hw_init_chain_masks(struct ath_hw *ah)
|
||||
@@ -868,7 +859,7 @@ static int ar5008_hw_process_ini(struct
|
||||
ar5008_hw_set_channel_regs(ah, chan);
|
||||
ar5008_hw_init_chain_masks(ah);
|
||||
ath9k_olc_init(ah);
|
||||
- ath9k_hw_apply_txpower(ah, chan);
|
||||
+ ath9k_hw_apply_txpower(ah, chan, false);
|
||||
|
||||
/* Write analog registers */
|
||||
if (!ath9k_hw_set_rf_regs(ah, chan, freqIndex)) {
|
||||
@@ -948,12 +939,8 @@ static bool ar5008_hw_rfbus_req(struct a
|
||||
static void ar5008_hw_rfbus_done(struct ath_hw *ah)
|
||||
{
|
||||
u32 synthDelay = REG_READ(ah, AR_PHY_RX_DELAY) & AR_PHY_RX_DELAY_DELAY;
|
||||
- if (IS_CHAN_B(ah->curchan))
|
||||
- synthDelay = (4 * synthDelay) / 22;
|
||||
- else
|
||||
- synthDelay /= 10;
|
||||
|
||||
- udelay(synthDelay + BASE_ACTIVATE_DELAY);
|
||||
+ ath9k_hw_synth_delay(ah, ah->curchan, synthDelay);
|
||||
|
||||
REG_WRITE(ah, AR_PHY_RFBUS_REQ, 0);
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c
|
||||
@@ -1000,10 +1000,12 @@ static bool ar9003_hw_init_cal(struct at
|
||||
if (mci && IS_CHAN_2GHZ(chan) && run_agc_cal)
|
||||
ar9003_mci_init_cal_req(ah, &is_reusable);
|
||||
|
||||
- txiqcal_done = ar9003_hw_tx_iq_cal_run(ah);
|
||||
- REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS);
|
||||
- udelay(5);
|
||||
- REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN);
|
||||
+ if (!(IS_CHAN_HALF_RATE(chan) || IS_CHAN_QUARTER_RATE(chan))) {
|
||||
+ txiqcal_done = ar9003_hw_tx_iq_cal_run(ah);
|
||||
+ REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS);
|
||||
+ udelay(5);
|
||||
+ REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN);
|
||||
+ }
|
||||
|
||||
skip_tx_iqcal:
|
||||
if (run_agc_cal || !(ah->ah_flags & AH_FASTCC)) {
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
|
||||
@@ -4281,18 +4281,10 @@ static int ar9003_hw_tx_power_regwrite(s
|
||||
#undef POW_SM
|
||||
}
|
||||
|
||||
-static void ar9003_hw_set_target_power_eeprom(struct ath_hw *ah, u16 freq,
|
||||
- u8 *targetPowerValT2)
|
||||
+static void ar9003_hw_get_legacy_target_powers(struct ath_hw *ah, u16 freq,
|
||||
+ u8 *targetPowerValT2,
|
||||
+ bool is2GHz)
|
||||
{
|
||||
- /* XXX: hard code for now, need to get from eeprom struct */
|
||||
- u8 ht40PowerIncForPdadc = 0;
|
||||
- bool is2GHz = false;
|
||||
- unsigned int i = 0;
|
||||
- struct ath_common *common = ath9k_hw_common(ah);
|
||||
-
|
||||
- if (freq < 4000)
|
||||
- is2GHz = true;
|
||||
-
|
||||
targetPowerValT2[ALL_TARGET_LEGACY_6_24] =
|
||||
ar9003_hw_eeprom_get_tgt_pwr(ah, LEGACY_TARGET_RATE_6_24, freq,
|
||||
is2GHz);
|
||||
@@ -4305,6 +4297,11 @@ static void ar9003_hw_set_target_power_e
|
||||
targetPowerValT2[ALL_TARGET_LEGACY_54] =
|
||||
ar9003_hw_eeprom_get_tgt_pwr(ah, LEGACY_TARGET_RATE_54, freq,
|
||||
is2GHz);
|
||||
+}
|
||||
+
|
||||
+static void ar9003_hw_get_cck_target_powers(struct ath_hw *ah, u16 freq,
|
||||
+ u8 *targetPowerValT2)
|
||||
+{
|
||||
targetPowerValT2[ALL_TARGET_LEGACY_1L_5L] =
|
||||
ar9003_hw_eeprom_get_cck_tgt_pwr(ah, LEGACY_TARGET_RATE_1L_5L,
|
||||
freq);
|
||||
@@ -4314,6 +4311,11 @@ static void ar9003_hw_set_target_power_e
|
||||
ar9003_hw_eeprom_get_cck_tgt_pwr(ah, LEGACY_TARGET_RATE_11L, freq);
|
||||
targetPowerValT2[ALL_TARGET_LEGACY_11S] =
|
||||
ar9003_hw_eeprom_get_cck_tgt_pwr(ah, LEGACY_TARGET_RATE_11S, freq);
|
||||
+}
|
||||
+
|
||||
+static void ar9003_hw_get_ht20_target_powers(struct ath_hw *ah, u16 freq,
|
||||
+ u8 *targetPowerValT2, bool is2GHz)
|
||||
+{
|
||||
targetPowerValT2[ALL_TARGET_HT20_0_8_16] =
|
||||
ar9003_hw_eeprom_get_ht20_tgt_pwr(ah, HT_TARGET_RATE_0_8_16, freq,
|
||||
is2GHz);
|
||||
@@ -4356,6 +4358,16 @@ static void ar9003_hw_set_target_power_e
|
||||
targetPowerValT2[ALL_TARGET_HT20_23] =
|
||||
ar9003_hw_eeprom_get_ht20_tgt_pwr(ah, HT_TARGET_RATE_23, freq,
|
||||
is2GHz);
|
||||
+}
|
||||
+
|
||||
+static void ar9003_hw_get_ht40_target_powers(struct ath_hw *ah,
|
||||
+ u16 freq,
|
||||
+ u8 *targetPowerValT2,
|
||||
+ bool is2GHz)
|
||||
+{
|
||||
+ /* XXX: hard code for now, need to get from eeprom struct */
|
||||
+ u8 ht40PowerIncForPdadc = 0;
|
||||
+
|
||||
targetPowerValT2[ALL_TARGET_HT40_0_8_16] =
|
||||
ar9003_hw_eeprom_get_ht40_tgt_pwr(ah, HT_TARGET_RATE_0_8_16, freq,
|
||||
is2GHz) + ht40PowerIncForPdadc;
|
||||
@@ -4399,6 +4411,26 @@ static void ar9003_hw_set_target_power_e
|
||||
targetPowerValT2[ALL_TARGET_HT40_23] =
|
||||
ar9003_hw_eeprom_get_ht40_tgt_pwr(ah, HT_TARGET_RATE_23, freq,
|
||||
is2GHz) + ht40PowerIncForPdadc;
|
||||
+}
|
||||
+
|
||||
+static void ar9003_hw_get_target_power_eeprom(struct ath_hw *ah,
|
||||
+ struct ath9k_channel *chan,
|
||||
+ u8 *targetPowerValT2)
|
||||
+{
|
||||
+ bool is2GHz = IS_CHAN_2GHZ(chan);
|
||||
+ unsigned int i = 0;
|
||||
+ struct ath_common *common = ath9k_hw_common(ah);
|
||||
+ u16 freq = chan->channel;
|
||||
+
|
||||
+ if (is2GHz)
|
||||
+ ar9003_hw_get_cck_target_powers(ah, freq, targetPowerValT2);
|
||||
+
|
||||
+ ar9003_hw_get_legacy_target_powers(ah, freq, targetPowerValT2, is2GHz);
|
||||
+ ar9003_hw_get_ht20_target_powers(ah, freq, targetPowerValT2, is2GHz);
|
||||
+
|
||||
+ if (IS_CHAN_HT40(chan))
|
||||
+ ar9003_hw_get_ht40_target_powers(ah, freq, targetPowerValT2,
|
||||
+ is2GHz);
|
||||
|
||||
for (i = 0; i < ar9300RateSize; i++) {
|
||||
ath_dbg(common, EEPROM, "TPC[%02d] 0x%08x\n",
|
||||
@@ -4778,9 +4810,6 @@ static void ar9003_hw_set_power_per_rate
|
||||
scaledPower = ath9k_hw_get_scaled_power(ah, powerLimit,
|
||||
antenna_reduction);
|
||||
|
||||
- /*
|
||||
- * Get target powers from EEPROM - our baseline for TX Power
|
||||
- */
|
||||
if (is2ghz) {
|
||||
/* Setup for CTL modes */
|
||||
/* CTL_11B, CTL_11G, CTL_2GHT20 */
|
||||
@@ -4952,7 +4981,12 @@ static void ath9k_hw_ar9300_set_txpower(
|
||||
unsigned int i = 0, paprd_scale_factor = 0;
|
||||
u8 pwr_idx, min_pwridx = 0;
|
||||
|
||||
- ar9003_hw_set_target_power_eeprom(ah, chan->channel, targetPowerValT2);
|
||||
+ memset(targetPowerValT2, 0 , sizeof(targetPowerValT2));
|
||||
+
|
||||
+ /*
|
||||
+ * Get target powers from EEPROM - our baseline for TX Power
|
||||
+ */
|
||||
+ ar9003_hw_get_target_power_eeprom(ah, chan, targetPowerValT2);
|
||||
|
||||
if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD)) {
|
||||
if (IS_CHAN_2GHZ(chan))
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
||||
@@ -54,7 +54,7 @@ void ar9003_paprd_enable(struct ath_hw *
|
||||
|
||||
if (val) {
|
||||
ah->paprd_table_write_done = true;
|
||||
- ath9k_hw_apply_txpower(ah, chan);
|
||||
+ ath9k_hw_apply_txpower(ah, chan, false);
|
||||
}
|
||||
|
||||
REG_RMW_FIELD(ah, AR_PHY_PAPRD_CTRL0_B0,
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
|
||||
@@ -373,7 +373,7 @@ static void ar9003_hw_spur_ofdm_work(str
|
||||
else
|
||||
spur_subchannel_sd = 0;
|
||||
|
||||
- spur_freq_sd = (freq_offset << 9) / 11;
|
||||
+ spur_freq_sd = ((freq_offset + 10) << 9) / 11;
|
||||
|
||||
} else {
|
||||
if (REG_READ_FIELD(ah, AR_PHY_GEN_CTRL,
|
||||
@@ -382,7 +382,7 @@ static void ar9003_hw_spur_ofdm_work(str
|
||||
else
|
||||
spur_subchannel_sd = 1;
|
||||
|
||||
- spur_freq_sd = (freq_offset << 9) / 11;
|
||||
+ spur_freq_sd = ((freq_offset - 10) << 9) / 11;
|
||||
|
||||
}
|
||||
|
||||
@@ -526,22 +526,10 @@ static void ar9003_hw_init_bb(struct ath
|
||||
* Value is in 100ns increments.
|
||||
*/
|
||||
synthDelay = REG_READ(ah, AR_PHY_RX_DELAY) & AR_PHY_RX_DELAY_DELAY;
|
||||
- if (IS_CHAN_B(chan))
|
||||
- synthDelay = (4 * synthDelay) / 22;
|
||||
- else
|
||||
- synthDelay /= 10;
|
||||
|
||||
/* Activate the PHY (includes baseband activate + synthesizer on) */
|
||||
REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN);
|
||||
-
|
||||
- /*
|
||||
- * There is an issue if the AP starts the calibration before
|
||||
- * the base band timeout completes. This could result in the
|
||||
- * rx_clear false triggering. As a workaround we add delay an
|
||||
- * extra BASE_ACTIVATE_DELAY usecs to ensure this condition
|
||||
- * does not happen.
|
||||
- */
|
||||
- udelay(synthDelay + BASE_ACTIVATE_DELAY);
|
||||
+ ath9k_hw_synth_delay(ah, chan, synthDelay);
|
||||
}
|
||||
|
||||
static void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx)
|
||||
@@ -692,7 +680,7 @@ static int ar9003_hw_process_ini(struct
|
||||
ar9003_hw_override_ini(ah);
|
||||
ar9003_hw_set_channel_regs(ah, chan);
|
||||
ar9003_hw_set_chain_masks(ah, ah->rxchainmask, ah->txchainmask);
|
||||
- ath9k_hw_apply_txpower(ah, chan);
|
||||
+ ath9k_hw_apply_txpower(ah, chan, false);
|
||||
|
||||
if (AR_SREV_9462(ah)) {
|
||||
if (REG_READ_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_0,
|
||||
@@ -723,6 +711,14 @@ static void ar9003_hw_set_rfmode(struct
|
||||
|
||||
if (IS_CHAN_A_FAST_CLOCK(ah, chan))
|
||||
rfMode |= (AR_PHY_MODE_DYNAMIC | AR_PHY_MODE_DYN_CCK_DISABLE);
|
||||
+ if (IS_CHAN_QUARTER_RATE(chan))
|
||||
+ rfMode |= AR_PHY_MODE_QUARTER;
|
||||
+ if (IS_CHAN_HALF_RATE(chan))
|
||||
+ rfMode |= AR_PHY_MODE_HALF;
|
||||
+
|
||||
+ if (rfMode & (AR_PHY_MODE_QUARTER | AR_PHY_MODE_HALF))
|
||||
+ REG_RMW_FIELD(ah, AR_PHY_FRAME_CTL,
|
||||
+ AR_PHY_FRAME_CTL_CF_OVERLAP_WINDOW, 3);
|
||||
|
||||
REG_WRITE(ah, AR_PHY_MODE, rfMode);
|
||||
}
|
||||
@@ -793,12 +789,8 @@ static bool ar9003_hw_rfbus_req(struct a
|
||||
static void ar9003_hw_rfbus_done(struct ath_hw *ah)
|
||||
{
|
||||
u32 synthDelay = REG_READ(ah, AR_PHY_RX_DELAY) & AR_PHY_RX_DELAY_DELAY;
|
||||
- if (IS_CHAN_B(ah->curchan))
|
||||
- synthDelay = (4 * synthDelay) / 22;
|
||||
- else
|
||||
- synthDelay /= 10;
|
||||
|
||||
- udelay(synthDelay + BASE_ACTIVATE_DELAY);
|
||||
+ ath9k_hw_synth_delay(ah, ah->curchan, synthDelay);
|
||||
|
||||
REG_WRITE(ah, AR_PHY_RFBUS_REQ, 0);
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h
|
||||
@@ -468,6 +468,9 @@
|
||||
#define AR_PHY_ADDAC_PARA_CTL (AR_SM_BASE + 0x150)
|
||||
#define AR_PHY_XPA_CFG (AR_SM_BASE + 0x158)
|
||||
|
||||
+#define AR_PHY_FRAME_CTL_CF_OVERLAP_WINDOW 3
|
||||
+#define AR_PHY_FRAME_CTL_CF_OVERLAP_WINDOW_S 0
|
||||
+
|
||||
#define AR_PHY_SPUR_MASK_A_CF_PUNC_MASK_IDX_A 0x0001FC00
|
||||
#define AR_PHY_SPUR_MASK_A_CF_PUNC_MASK_IDX_A_S 10
|
||||
#define AR_PHY_SPUR_MASK_A_CF_PUNC_MASK_A 0x3FF
|
||||
--- a/drivers/net/wireless/ath/ath9k/eeprom_9287.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/eeprom_9287.c
|
||||
@@ -798,6 +798,8 @@ static void ath9k_hw_ar9287_set_txpower(
|
||||
regulatory->max_power_level = ratesArray[i];
|
||||
}
|
||||
|
||||
+ ath9k_hw_update_regulatory_maxpower(ah);
|
||||
+
|
||||
if (test)
|
||||
return;
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -191,6 +191,22 @@ bool ath9k_hw_wait(struct ath_hw *ah, u3
|
||||
}
|
||||
EXPORT_SYMBOL(ath9k_hw_wait);
|
||||
|
||||
+void ath9k_hw_synth_delay(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||
+ int hw_delay)
|
||||
+{
|
||||
+ if (IS_CHAN_B(chan))
|
||||
+ hw_delay = (4 * hw_delay) / 22;
|
||||
+ else
|
||||
+ hw_delay /= 10;
|
||||
+
|
||||
+ if (IS_CHAN_HALF_RATE(chan))
|
||||
+ hw_delay *= 2;
|
||||
+ else if (IS_CHAN_QUARTER_RATE(chan))
|
||||
+ hw_delay *= 4;
|
||||
+
|
||||
+ udelay(hw_delay + BASE_ACTIVATE_DELAY);
|
||||
+}
|
||||
+
|
||||
void ath9k_hw_write_array(struct ath_hw *ah, struct ar5416IniArray *array,
|
||||
int column, unsigned int *writecnt)
|
||||
{
|
||||
@@ -1020,7 +1036,7 @@ void ath9k_hw_init_global_settings(struc
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
struct ieee80211_conf *conf = &common->hw->conf;
|
||||
const struct ath9k_channel *chan = ah->curchan;
|
||||
- int acktimeout, ctstimeout;
|
||||
+ int acktimeout, ctstimeout, ack_offset = 0;
|
||||
int slottime;
|
||||
int sifstime;
|
||||
int rx_lat = 0, tx_lat = 0, eifs = 0;
|
||||
@@ -1041,6 +1057,11 @@ void ath9k_hw_init_global_settings(struc
|
||||
rx_lat = 37;
|
||||
tx_lat = 54;
|
||||
|
||||
+ if (IS_CHAN_5GHZ(chan))
|
||||
+ sifstime = 16;
|
||||
+ else
|
||||
+ sifstime = 10;
|
||||
+
|
||||
if (IS_CHAN_HALF_RATE(chan)) {
|
||||
eifs = 175;
|
||||
rx_lat *= 2;
|
||||
@@ -1048,8 +1069,9 @@ void ath9k_hw_init_global_settings(struc
|
||||
if (IS_CHAN_A_FAST_CLOCK(ah, chan))
|
||||
tx_lat += 11;
|
||||
|
||||
+ sifstime *= 2;
|
||||
+ ack_offset = 16;
|
||||
slottime = 13;
|
||||
- sifstime = 32;
|
||||
} else if (IS_CHAN_QUARTER_RATE(chan)) {
|
||||
eifs = 340;
|
||||
rx_lat = (rx_lat * 4) - 1;
|
||||
@@ -1057,8 +1079,9 @@ void ath9k_hw_init_global_settings(struc
|
||||
if (IS_CHAN_A_FAST_CLOCK(ah, chan))
|
||||
tx_lat += 22;
|
||||
|
||||
+ sifstime *= 4;
|
||||
+ ack_offset = 32;
|
||||
slottime = 21;
|
||||
- sifstime = 64;
|
||||
} else {
|
||||
if (AR_SREV_9287(ah) && AR_SREV_9287_13_OR_LATER(ah)) {
|
||||
eifs = AR_D_GBL_IFS_EIFS_ASYNC_FIFO;
|
||||
@@ -1072,14 +1095,10 @@ void ath9k_hw_init_global_settings(struc
|
||||
tx_lat = MS(reg, AR_USEC_TX_LAT);
|
||||
|
||||
slottime = ah->slottime;
|
||||
- if (IS_CHAN_5GHZ(chan))
|
||||
- sifstime = 16;
|
||||
- else
|
||||
- sifstime = 10;
|
||||
}
|
||||
|
||||
/* As defined by IEEE 802.11-2007 17.3.8.6 */
|
||||
- acktimeout = slottime + sifstime + 3 * ah->coverage_class;
|
||||
+ acktimeout = slottime + sifstime + 3 * ah->coverage_class + ack_offset;
|
||||
ctstimeout = acktimeout;
|
||||
|
||||
/*
|
||||
@@ -1089,7 +1108,8 @@ void ath9k_hw_init_global_settings(struc
|
||||
* BA frames in some implementations, but it has been found to fix ACK
|
||||
* timeout issues in other cases as well.
|
||||
*/
|
||||
- if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ) {
|
||||
+ if (conf->channel && conf->channel->band == IEEE80211_BAND_2GHZ &&
|
||||
+ !IS_CHAN_HALF_RATE(chan) && !IS_CHAN_QUARTER_RATE(chan)) {
|
||||
acktimeout += 64 - sifstime - ah->slottime;
|
||||
ctstimeout += 48 - sifstime - ah->slottime;
|
||||
}
|
||||
@@ -1469,6 +1489,10 @@ static bool ath9k_hw_channel_change(stru
|
||||
CHANNEL_5GHZ));
|
||||
mode_diff = (chan->chanmode != ah->curchan->chanmode);
|
||||
|
||||
+ if ((ah->curchan->channelFlags | chan->channelFlags) &
|
||||
+ (CHANNEL_HALF | CHANNEL_QUARTER))
|
||||
+ return false;
|
||||
+
|
||||
for (qnum = 0; qnum < AR_NUM_QCU; qnum++) {
|
||||
if (ath9k_hw_numtxpending(ah, qnum)) {
|
||||
ath_dbg(common, QUEUE,
|
||||
@@ -1502,7 +1526,7 @@ static bool ath9k_hw_channel_change(stru
|
||||
return false;
|
||||
}
|
||||
ath9k_hw_set_clockrate(ah);
|
||||
- ath9k_hw_apply_txpower(ah, chan);
|
||||
+ ath9k_hw_apply_txpower(ah, chan, false);
|
||||
ath9k_hw_rfbus_done(ah);
|
||||
|
||||
if (IS_CHAN_OFDM(chan) || IS_CHAN_HT(chan))
|
||||
@@ -2773,7 +2797,8 @@ static int get_antenna_gain(struct ath_h
|
||||
return ah->eep_ops->get_eeprom(ah, gain_param);
|
||||
}
|
||||
|
||||
-void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan)
|
||||
+void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||
+ bool test)
|
||||
{
|
||||
struct ath_regulatory *reg = ath9k_hw_regulatory(ah);
|
||||
struct ieee80211_channel *channel;
|
||||
@@ -2794,7 +2819,7 @@ void ath9k_hw_apply_txpower(struct ath_h
|
||||
|
||||
ah->eep_ops->set_txpower(ah, chan,
|
||||
ath9k_regd_get_ctl(reg, chan),
|
||||
- ant_reduction, new_pwr, false);
|
||||
+ ant_reduction, new_pwr, test);
|
||||
}
|
||||
|
||||
void ath9k_hw_set_txpowerlimit(struct ath_hw *ah, u32 limit, bool test)
|
||||
@@ -2807,7 +2832,7 @@ void ath9k_hw_set_txpowerlimit(struct at
|
||||
if (test)
|
||||
channel->max_power = MAX_RATE_POWER / 2;
|
||||
|
||||
- ath9k_hw_apply_txpower(ah, chan);
|
||||
+ ath9k_hw_apply_txpower(ah, chan, test);
|
||||
|
||||
if (test)
|
||||
channel->max_power = DIV_ROUND_UP(reg->max_power_level, 2);
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
@@ -923,6 +923,8 @@ void ath9k_hw_set_gpio(struct ath_hw *ah
|
||||
void ath9k_hw_setantenna(struct ath_hw *ah, u32 antenna);
|
||||
|
||||
/* General Operation */
|
||||
+void ath9k_hw_synth_delay(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||
+ int hw_delay);
|
||||
bool ath9k_hw_wait(struct ath_hw *ah, u32 reg, u32 mask, u32 val, u32 timeout);
|
||||
void ath9k_hw_write_array(struct ath_hw *ah, struct ar5416IniArray *array,
|
||||
int column, unsigned int *writecnt);
|
||||
@@ -982,7 +984,8 @@ void ath9k_hw_name(struct ath_hw *ah, ch
|
||||
/* PHY */
|
||||
void ath9k_hw_get_delta_slope_vals(struct ath_hw *ah, u32 coef_scaled,
|
||||
u32 *coef_mantissa, u32 *coef_exponent);
|
||||
-void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan);
|
||||
+void ath9k_hw_apply_txpower(struct ath_hw *ah, struct ath9k_channel *chan,
|
||||
+ bool test);
|
||||
|
||||
/*
|
||||
* Code Specific to AR5008, AR9001 or AR9002,
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -647,6 +647,24 @@ void ath9k_reload_chainmask_settings(str
|
||||
setup_ht_cap(sc, &sc->sbands[IEEE80211_BAND_5GHZ].ht_cap);
|
||||
}
|
||||
|
||||
+static const struct ieee80211_iface_limit if_limits[] = {
|
||||
+ { .max = 2048, .types = BIT(NL80211_IFTYPE_STATION) |
|
||||
+ BIT(NL80211_IFTYPE_P2P_CLIENT) |
|
||||
+ BIT(NL80211_IFTYPE_WDS) },
|
||||
+ { .max = 8, .types =
|
||||
+#ifdef CONFIG_MAC80211_MESH
|
||||
+ BIT(NL80211_IFTYPE_MESH_POINT) |
|
||||
+#endif
|
||||
+ BIT(NL80211_IFTYPE_AP) |
|
||||
+ BIT(NL80211_IFTYPE_P2P_GO) },
|
||||
+};
|
||||
+
|
||||
+static const struct ieee80211_iface_combination if_comb = {
|
||||
+ .limits = if_limits,
|
||||
+ .n_limits = ARRAY_SIZE(if_limits),
|
||||
+ .max_interfaces = 2048,
|
||||
+ .num_different_channels = 1,
|
||||
+};
|
||||
|
||||
void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw)
|
||||
{
|
||||
@@ -676,6 +694,9 @@ void ath9k_set_hw_capab(struct ath_softc
|
||||
BIT(NL80211_IFTYPE_ADHOC) |
|
||||
BIT(NL80211_IFTYPE_MESH_POINT);
|
||||
|
||||
+ hw->wiphy->iface_combinations = &if_comb;
|
||||
+ hw->wiphy->n_iface_combinations = 1;
|
||||
+
|
||||
if (AR_SREV_5416(sc->sc_ah))
|
||||
hw->wiphy->flags &= ~WIPHY_FLAG_PS_ON_BY_DEFAULT;
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/mac.c
|
||||
@@ -133,8 +133,16 @@ EXPORT_SYMBOL(ath9k_hw_updatetxtriglevel
|
||||
|
||||
void ath9k_hw_abort_tx_dma(struct ath_hw *ah)
|
||||
{
|
||||
+ int maxdelay = 1000;
|
||||
int i, q;
|
||||
|
||||
+ if (ah->curchan) {
|
||||
+ if (IS_CHAN_HALF_RATE(ah->curchan))
|
||||
+ maxdelay *= 2;
|
||||
+ else if (IS_CHAN_QUARTER_RATE(ah->curchan))
|
||||
+ maxdelay *= 4;
|
||||
+ }
|
||||
+
|
||||
REG_WRITE(ah, AR_Q_TXD, AR_Q_TXD_M);
|
||||
|
||||
REG_SET_BIT(ah, AR_PCU_MISC, AR_PCU_FORCE_QUIET_COLL | AR_PCU_CLEAR_VMF);
|
||||
@@ -142,7 +150,7 @@ void ath9k_hw_abort_tx_dma(struct ath_hw
|
||||
REG_SET_BIT(ah, AR_D_GBL_IFS_MISC, AR_D_GBL_IFS_MISC_IGNORE_BACKOFF);
|
||||
|
||||
for (q = 0; q < AR_NUM_QCU; q++) {
|
||||
- for (i = 0; i < 1000; i++) {
|
||||
+ for (i = 0; i < maxdelay; i++) {
|
||||
if (i)
|
||||
udelay(5);
|
||||
|
||||
--- a/net/mac80211/agg-rx.c
|
||||
+++ b/net/mac80211/agg-rx.c
|
||||
@@ -200,6 +200,8 @@ static void ieee80211_send_addba_resp(st
|
||||
@ -581,7 +56,7 @@
|
||||
memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN);
|
||||
else if (sdata->vif.type == NL80211_IFTYPE_STATION)
|
||||
memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN);
|
||||
@@ -484,6 +485,7 @@ int ieee80211_start_tx_ba_session(struct
|
||||
@@ -490,6 +491,7 @@ int ieee80211_start_tx_ba_session(struct
|
||||
sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
|
||||
sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
|
||||
sdata->vif.type != NL80211_IFTYPE_AP &&
|
||||
@ -607,19 +82,7 @@
|
||||
TEST(TDLS_PEER_AUTH), TEST(4ADDR_EVENT),
|
||||
--- a/net/mac80211/iface.c
|
||||
+++ b/net/mac80211/iface.c
|
||||
@@ -206,8 +206,10 @@ static void ieee80211_set_default_queues
|
||||
for (i = 0; i < IEEE80211_NUM_ACS; i++) {
|
||||
if (local->hw.flags & IEEE80211_HW_QUEUE_CONTROL)
|
||||
sdata->vif.hw_queue[i] = IEEE80211_INVAL_HW_QUEUE;
|
||||
- else
|
||||
+ else if (local->hw.queues >= IEEE80211_NUM_ACS)
|
||||
sdata->vif.hw_queue[i] = i;
|
||||
+ else
|
||||
+ sdata->vif.hw_queue[i] = 0;
|
||||
}
|
||||
sdata->vif.cab_queue = IEEE80211_INVAL_HW_QUEUE;
|
||||
}
|
||||
@@ -282,7 +284,6 @@ static int ieee80211_do_open(struct net_
|
||||
@@ -284,7 +284,6 @@ static int ieee80211_do_open(struct net_
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
@ -627,7 +90,7 @@
|
||||
u32 changed = 0;
|
||||
int res;
|
||||
u32 hw_reconf_flags = 0;
|
||||
@@ -428,28 +429,6 @@ static int ieee80211_do_open(struct net_
|
||||
@@ -430,28 +429,6 @@ static int ieee80211_do_open(struct net_
|
||||
|
||||
set_bit(SDATA_STATE_RUNNING, &sdata->state);
|
||||
|
||||
@ -656,7 +119,7 @@
|
||||
/*
|
||||
* set_multicast_list will be invoked by the networking core
|
||||
* which will check whether any increments here were done in
|
||||
@@ -846,6 +825,72 @@ static void ieee80211_if_setup(struct ne
|
||||
@@ -848,6 +825,72 @@ static void ieee80211_if_setup(struct ne
|
||||
dev->destructor = free_netdev;
|
||||
}
|
||||
|
||||
@ -729,7 +192,7 @@
|
||||
static void ieee80211_iface_work(struct work_struct *work)
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata =
|
||||
@@ -950,6 +995,9 @@ static void ieee80211_iface_work(struct
|
||||
@@ -952,6 +995,9 @@ static void ieee80211_iface_work(struct
|
||||
break;
|
||||
ieee80211_mesh_rx_queued_mgmt(sdata, skb);
|
||||
break;
|
||||
@ -741,7 +204,7 @@
|
||||
break;
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -2283,6 +2283,7 @@ ieee80211_rx_h_action(struct ieee80211_r
|
||||
@@ -2284,6 +2284,7 @@ ieee80211_rx_h_action(struct ieee80211_r
|
||||
sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
|
||||
sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
|
||||
sdata->vif.type != NL80211_IFTYPE_AP &&
|
||||
@ -749,7 +212,7 @@
|
||||
sdata->vif.type != NL80211_IFTYPE_ADHOC)
|
||||
break;
|
||||
|
||||
@@ -2497,14 +2498,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_
|
||||
@@ -2498,14 +2499,15 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_
|
||||
|
||||
if (!ieee80211_vif_is_mesh(&sdata->vif) &&
|
||||
sdata->vif.type != NL80211_IFTYPE_ADHOC &&
|
||||
@ -767,7 +230,7 @@
|
||||
break;
|
||||
case cpu_to_le16(IEEE80211_STYPE_ASSOC_RESP):
|
||||
case cpu_to_le16(IEEE80211_STYPE_REASSOC_RESP):
|
||||
@@ -2838,10 +2840,16 @@ static int prepare_for_handlers(struct i
|
||||
@@ -2839,10 +2841,16 @@ static int prepare_for_handlers(struct i
|
||||
}
|
||||
break;
|
||||
case NL80211_IFTYPE_WDS:
|
||||
@ -804,172 +267,3 @@
|
||||
WLAN_STA_CLEAR_PS_FILT,
|
||||
WLAN_STA_MFP,
|
||||
WLAN_STA_BLOCK_BA,
|
||||
--- a/drivers/net/wireless/iwlwifi/iwl-agn.h
|
||||
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.h
|
||||
@@ -425,6 +425,7 @@ void iwl_testmode_cleanup(struct iwl_pri
|
||||
#ifdef CONFIG_IWLWIFI_DEBUG
|
||||
void iwl_print_rx_config_cmd(struct iwl_priv *priv,
|
||||
enum iwl_rxon_context_id ctxid);
|
||||
+int iwl_alloc_traffic_mem(struct iwl_priv *priv);
|
||||
#else
|
||||
static inline void iwl_print_rx_config_cmd(struct iwl_priv *priv,
|
||||
enum iwl_rxon_context_id ctxid)
|
||||
@@ -510,7 +511,6 @@ void iwl_setup_deferred_work(struct iwl_
|
||||
int iwl_send_wimax_coex(struct iwl_priv *priv);
|
||||
int iwl_send_bt_env(struct iwl_priv *priv, u8 action, u8 type);
|
||||
void iwl_debug_config(struct iwl_priv *priv);
|
||||
-int iwl_alloc_traffic_mem(struct iwl_priv *priv);
|
||||
void iwl_set_hw_params(struct iwl_priv *priv);
|
||||
void iwl_init_context(struct iwl_priv *priv, u32 ucode_flags);
|
||||
int iwl_init_drv(struct iwl_priv *priv);
|
||||
--- a/drivers/net/wireless/libertas/firmware.c
|
||||
+++ b/drivers/net/wireless/libertas/firmware.c
|
||||
@@ -5,6 +5,7 @@
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/module.h>
|
||||
+#include <linux/sched.h>
|
||||
|
||||
#include "dev.h"
|
||||
#include "decl.h"
|
||||
--- a/drivers/net/wireless/ath/ath9k/recv.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/recv.c
|
||||
@@ -812,6 +812,7 @@ static bool ath9k_rx_accept(struct ath_c
|
||||
is_valid_tkip = rx_stats->rs_keyix != ATH9K_RXKEYIX_INVALID &&
|
||||
test_bit(rx_stats->rs_keyix, common->tkip_keymap);
|
||||
strip_mic = is_valid_tkip && ieee80211_is_data(fc) &&
|
||||
+ ieee80211_has_protected(fc) &&
|
||||
!(rx_stats->rs_status &
|
||||
(ATH9K_RXERR_DECRYPT | ATH9K_RXERR_CRC | ATH9K_RXERR_MIC |
|
||||
ATH9K_RXERR_KEYMISS));
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1005,6 +1005,9 @@ static int ieee80211_change_station(stru
|
||||
}
|
||||
|
||||
if (params->vlan && params->vlan != sta->sdata->dev) {
|
||||
+ bool prev_4addr = false;
|
||||
+ bool new_4addr = false;
|
||||
+
|
||||
vlansdata = IEEE80211_DEV_TO_SUB_IF(params->vlan);
|
||||
|
||||
if (vlansdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
|
||||
@@ -1020,9 +1023,25 @@ static int ieee80211_change_station(stru
|
||||
}
|
||||
|
||||
rcu_assign_pointer(vlansdata->u.vlan.sta, sta);
|
||||
+ new_4addr = true;
|
||||
+ }
|
||||
+
|
||||
+ if (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
|
||||
+ sta->sdata->u.vlan.sta) {
|
||||
+ rcu_assign_pointer(sta->sdata->u.vlan.sta, NULL);
|
||||
+ prev_4addr = true;
|
||||
}
|
||||
|
||||
sta->sdata = vlansdata;
|
||||
+
|
||||
+ if (sta->sta_state == IEEE80211_STA_AUTHORIZED &&
|
||||
+ prev_4addr != new_4addr) {
|
||||
+ if (new_4addr)
|
||||
+ atomic_dec(&sta->sdata->bss->num_mcast_sta);
|
||||
+ else
|
||||
+ atomic_inc(&sta->sdata->bss->num_mcast_sta);
|
||||
+ }
|
||||
+
|
||||
ieee80211_send_layer2_update(sta);
|
||||
}
|
||||
|
||||
--- a/net/mac80211/debugfs_netdev.c
|
||||
+++ b/net/mac80211/debugfs_netdev.c
|
||||
@@ -394,7 +394,7 @@ static ssize_t ieee80211_if_parse_uapsd_
|
||||
__IEEE80211_IF_FILE_W(uapsd_max_sp_len);
|
||||
|
||||
/* AP attributes */
|
||||
-IEEE80211_IF_FILE(num_sta_authorized, u.ap.num_sta_authorized, ATOMIC);
|
||||
+IEEE80211_IF_FILE(num_mcast_sta, u.ap.num_mcast_sta, ATOMIC);
|
||||
IEEE80211_IF_FILE(num_sta_ps, u.ap.num_sta_ps, ATOMIC);
|
||||
IEEE80211_IF_FILE(dtim_count, u.ap.dtim_count, DEC);
|
||||
|
||||
@@ -540,7 +540,7 @@ static void add_sta_files(struct ieee802
|
||||
|
||||
static void add_ap_files(struct ieee80211_sub_if_data *sdata)
|
||||
{
|
||||
- DEBUGFS_ADD(num_sta_authorized);
|
||||
+ DEBUGFS_ADD(num_mcast_sta);
|
||||
DEBUGFS_ADD(num_sta_ps);
|
||||
DEBUGFS_ADD(dtim_count);
|
||||
DEBUGFS_ADD(num_buffered_multicast);
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -282,7 +282,7 @@ struct ieee80211_if_ap {
|
||||
u8 tim[sizeof(unsigned long) * BITS_TO_LONGS(IEEE80211_MAX_AID + 1)];
|
||||
struct sk_buff_head ps_bc_buf;
|
||||
atomic_t num_sta_ps; /* number of stations in PS mode */
|
||||
- atomic_t num_sta_authorized; /* number of authorized stations */
|
||||
+ atomic_t num_mcast_sta; /* number of stations receiving multicast */
|
||||
int dtim_count;
|
||||
bool dtim_bc_mc;
|
||||
};
|
||||
--- a/net/mac80211/sta_info.c
|
||||
+++ b/net/mac80211/sta_info.c
|
||||
@@ -1417,15 +1417,19 @@ int sta_info_move_state(struct sta_info
|
||||
if (sta->sta_state == IEEE80211_STA_AUTH) {
|
||||
set_bit(WLAN_STA_ASSOC, &sta->_flags);
|
||||
} else if (sta->sta_state == IEEE80211_STA_AUTHORIZED) {
|
||||
- if (sta->sdata->vif.type == NL80211_IFTYPE_AP)
|
||||
- atomic_dec(&sta->sdata->u.ap.num_sta_authorized);
|
||||
+ if (sta->sdata->vif.type == NL80211_IFTYPE_AP ||
|
||||
+ (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
|
||||
+ !sta->sdata->u.vlan.sta))
|
||||
+ atomic_dec(&sta->sdata->bss->num_mcast_sta);
|
||||
clear_bit(WLAN_STA_AUTHORIZED, &sta->_flags);
|
||||
}
|
||||
break;
|
||||
case IEEE80211_STA_AUTHORIZED:
|
||||
if (sta->sta_state == IEEE80211_STA_ASSOC) {
|
||||
- if (sta->sdata->vif.type == NL80211_IFTYPE_AP)
|
||||
- atomic_inc(&sta->sdata->u.ap.num_sta_authorized);
|
||||
+ if (sta->sdata->vif.type == NL80211_IFTYPE_AP ||
|
||||
+ (sta->sdata->vif.type == NL80211_IFTYPE_AP_VLAN &&
|
||||
+ !sta->sdata->u.vlan.sta))
|
||||
+ atomic_inc(&sta->sdata->bss->num_mcast_sta);
|
||||
set_bit(WLAN_STA_AUTHORIZED, &sta->_flags);
|
||||
}
|
||||
break;
|
||||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -306,7 +306,7 @@ ieee80211_tx_h_check_assoc(struct ieee80
|
||||
}
|
||||
} else if (unlikely(tx->sdata->vif.type == NL80211_IFTYPE_AP &&
|
||||
ieee80211_is_data(hdr->frame_control) &&
|
||||
- !atomic_read(&tx->sdata->u.ap.num_sta_authorized))) {
|
||||
+ !atomic_read(&tx->sdata->u.ap.num_mcast_sta))) {
|
||||
/*
|
||||
* No associated STAs - no need to send multicast
|
||||
* frames.
|
||||
@@ -1159,7 +1159,8 @@ ieee80211_tx_prepare(struct ieee80211_su
|
||||
tx->sta = rcu_dereference(sdata->u.vlan.sta);
|
||||
if (!tx->sta && sdata->dev->ieee80211_ptr->use_4addr)
|
||||
return TX_DROP;
|
||||
- } else if (info->flags & IEEE80211_TX_CTL_INJECTED) {
|
||||
+ } else if (info->flags & IEEE80211_TX_CTL_INJECTED ||
|
||||
+ tx->sdata->control_port_protocol == tx->skb->protocol) {
|
||||
tx->sta = sta_info_get_bss(sdata, hdr->addr1);
|
||||
}
|
||||
if (!tx->sta)
|
||||
--- a/net/wireless/scan.c
|
||||
+++ b/net/wireless/scan.c
|
||||
@@ -378,7 +378,11 @@ static int cmp_bss_core(struct cfg80211_
|
||||
b->len_information_elements);
|
||||
}
|
||||
|
||||
- return compare_ether_addr(a->bssid, b->bssid);
|
||||
+ /*
|
||||
+ * we can't use compare_ether_addr here since we need a < > operator.
|
||||
+ * The binary return value of compare_ether_addr isn't enough
|
||||
+ */
|
||||
+ return memcmp(a->bssid, b->bssid, sizeof(a->bssid));
|
||||
}
|
||||
|
||||
static int cmp_bss(struct cfg80211_bss *a,
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -39,7 +39,7 @@ int ath9k_modparam_nohwcrypt;
|
||||
@@ -40,7 +40,7 @@ int ath9k_modparam_nohwcrypt;
|
||||
module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444);
|
||||
MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption");
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/regd.c
|
||||
+++ b/drivers/net/wireless/ath/regd.c
|
||||
@@ -199,6 +199,10 @@ ath_reg_apply_beaconing_flags(struct wip
|
||||
@@ -200,6 +200,10 @@ ath_reg_apply_beaconing_flags(struct wip
|
||||
u32 bandwidth = 0;
|
||||
int r;
|
||||
|
||||
@ -11,7 +11,7 @@
|
||||
for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
|
||||
|
||||
if (!wiphy->bands[band])
|
||||
@@ -258,6 +262,10 @@ ath_reg_apply_active_scan_flags(struct w
|
||||
@@ -259,6 +263,10 @@ ath_reg_apply_active_scan_flags(struct w
|
||||
u32 bandwidth = 0;
|
||||
int r;
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
sband = wiphy->bands[IEEE80211_BAND_2GHZ];
|
||||
if (!sband)
|
||||
return;
|
||||
@@ -307,6 +315,10 @@ static void ath_reg_apply_radar_flags(st
|
||||
@@ -308,6 +316,10 @@ static void ath_reg_apply_radar_flags(st
|
||||
struct ieee80211_channel *ch;
|
||||
unsigned int i;
|
||||
|
||||
@ -33,7 +33,7 @@
|
||||
if (!wiphy->bands[IEEE80211_BAND_5GHZ])
|
||||
return;
|
||||
|
||||
@@ -513,6 +525,10 @@ ath_regd_init_wiphy(struct ath_regulator
|
||||
@@ -514,6 +526,10 @@ ath_regd_init_wiphy(struct ath_regulator
|
||||
{
|
||||
const struct ieee80211_regdomain *regd;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/regd.c
|
||||
+++ b/drivers/net/wireless/ath/regd.c
|
||||
@@ -43,7 +43,8 @@ static int __ath_regd_init(struct ath_re
|
||||
@@ -44,7 +44,8 @@ static int __ath_regd_init(struct ath_re
|
||||
NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM)
|
||||
|
||||
/* We allow IBSS on these on a case by case basis by regulatory domain */
|
||||
@ -10,7 +10,7 @@
|
||||
NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS)
|
||||
#define ATH9K_5GHZ_5470_5850 REG_RULE(5470-10, 5850+10, 40, 0, 30,\
|
||||
NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS)
|
||||
@@ -61,57 +62,56 @@ static int __ath_regd_init(struct ath_re
|
||||
@@ -62,57 +63,56 @@ static int __ath_regd_init(struct ath_re
|
||||
#define ATH9K_5GHZ_NO_MIDBAND ATH9K_5GHZ_5150_5350, \
|
||||
ATH9K_5GHZ_5725_5850
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -1445,15 +1445,6 @@ static int ath9k_add_interface(struct ie
|
||||
@@ -1443,15 +1443,6 @@ static int ath9k_add_interface(struct ie
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
ath_dbg(common, CONFIG, "Attach a VIF of type: %d\n", vif->type);
|
||||
|
||||
sc->nvifs++;
|
||||
@@ -1478,15 +1469,6 @@ static int ath9k_change_interface(struct
|
||||
@@ -1476,15 +1467,6 @@ static int ath9k_change_interface(struct
|
||||
mutex_lock(&sc->mutex);
|
||||
ath9k_ps_wakeup(sc);
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
if (sc->nbcnvifs >= ATH_BCBUF) {
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -655,6 +655,7 @@ static const struct ieee80211_iface_limi
|
||||
@@ -656,6 +656,7 @@ static const struct ieee80211_iface_limi
|
||||
#ifdef CONFIG_MAC80211_MESH
|
||||
BIT(NL80211_IFTYPE_MESH_POINT) |
|
||||
#endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
|
||||
@@ -86,13 +86,8 @@ ath5k_add_interface(struct ieee80211_hw
|
||||
@@ -88,13 +88,8 @@ ath5k_add_interface(struct ieee80211_hw
|
||||
goto end;
|
||||
}
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
goto end;
|
||||
--- a/drivers/net/wireless/ath/ath5k/base.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/base.c
|
||||
@@ -1871,7 +1871,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
|
||||
@@ -1872,7 +1872,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
|
||||
}
|
||||
|
||||
if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs +
|
||||
@ -27,7 +27,7 @@
|
||||
ah->opmode == NL80211_IFTYPE_MESH_POINT) {
|
||||
u64 tsf = ath5k_hw_get_tsf64(ah);
|
||||
u32 tsftu = TSF_TO_TU(tsf);
|
||||
@@ -1957,7 +1957,7 @@ ath5k_beacon_update_timers(struct ath5k_
|
||||
@@ -1958,7 +1958,7 @@ ath5k_beacon_update_timers(struct ath5k_
|
||||
|
||||
intval = ah->bintval & AR5K_BEACON_PERIOD;
|
||||
if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs
|
||||
@ -36,7 +36,7 @@
|
||||
intval /= ATH_BCBUF; /* staggered multi-bss beacons */
|
||||
if (intval < 15)
|
||||
ATH5K_WARN(ah, "intval %u is too low, min 15\n",
|
||||
@@ -2422,6 +2422,7 @@ static const struct ieee80211_iface_limi
|
||||
@@ -2423,6 +2423,7 @@ static const struct ieee80211_iface_limi
|
||||
#ifdef CONFIG_MAC80211_MESH
|
||||
BIT(NL80211_IFTYPE_MESH_POINT) |
|
||||
#endif
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -766,17 +766,11 @@ int ieee80211_register_hw(struct ieee802
|
||||
@@ -771,17 +771,11 @@ int ieee80211_register_hw(struct ieee802
|
||||
*/
|
||||
for (i = 0; i < hw->wiphy->n_iface_combinations; i++) {
|
||||
const struct ieee80211_iface_combination *c;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath5k/reset.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/reset.c
|
||||
@@ -1155,6 +1155,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
|
||||
@@ -1156,6 +1156,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
|
||||
tsf_lo = 0;
|
||||
mode = 0;
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
/*
|
||||
* Sanity check for fast flag
|
||||
* Fast channel change only available
|
||||
@@ -1162,6 +1163,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
|
||||
@@ -1163,6 +1164,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
|
||||
*/
|
||||
if (fast && (ah->ah_radio != AR5K_RF2413) &&
|
||||
(ah->ah_radio != AR5K_RF5413))
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath5k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/pci.c
|
||||
@@ -22,6 +22,7 @@
|
||||
@@ -23,6 +23,7 @@
|
||||
#include <linux/pci-aspm.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/module.h>
|
||||
@ -8,7 +8,7 @@
|
||||
#include "../ath.h"
|
||||
#include "ath5k.h"
|
||||
#include "debug.h"
|
||||
@@ -73,7 +74,7 @@ static void ath5k_pci_read_cachesize(str
|
||||
@@ -74,7 +75,7 @@ static void ath5k_pci_read_cachesize(str
|
||||
}
|
||||
|
||||
/*
|
||||
@ -17,7 +17,7 @@
|
||||
*/
|
||||
static bool
|
||||
ath5k_pci_eeprom_read(struct ath_common *common, u32 offset, u16 *data)
|
||||
@@ -81,6 +82,19 @@ ath5k_pci_eeprom_read(struct ath_common
|
||||
@@ -82,6 +83,19 @@ ath5k_pci_eeprom_read(struct ath_common
|
||||
struct ath5k_hw *ah = (struct ath5k_hw *) common->ah;
|
||||
u32 status, timeout;
|
||||
|
||||
@ -37,7 +37,7 @@
|
||||
/*
|
||||
* Initialize EEPROM access
|
||||
*/
|
||||
@@ -124,6 +138,16 @@ static int ath5k_pci_eeprom_read_mac(str
|
||||
@@ -125,6 +139,16 @@ static int ath5k_pci_eeprom_read_mac(str
|
||||
u16 data;
|
||||
int octet;
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath5k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/pci.c
|
||||
@@ -49,6 +49,8 @@ static DEFINE_PCI_DEVICE_TABLE(ath5k_pci
|
||||
@@ -50,6 +50,8 @@ static DEFINE_PCI_DEVICE_TABLE(ath5k_pci
|
||||
{ PCI_VDEVICE(ATHEROS, 0x001b) }, /* 5413 Eagle */
|
||||
{ PCI_VDEVICE(ATHEROS, 0x001c) }, /* PCI-E cards */
|
||||
{ PCI_VDEVICE(ATHEROS, 0x001d) }, /* 2417 Nala */
|
||||
|
@ -71,7 +71,7 @@
|
||||
ath_err(common, "Reading Magic # failed\n");
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
@@ -662,6 +662,7 @@ enum ath_cal_list {
|
||||
@@ -657,6 +657,7 @@ enum ath_cal_list {
|
||||
#define AH_USE_EEPROM 0x1
|
||||
#define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
|
||||
#define AH_FASTCC 0x4
|
||||
@ -81,7 +81,7 @@
|
||||
struct ath_ops reg_ops;
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -534,6 +534,8 @@ static int ath9k_init_softc(u16 devid, s
|
||||
@@ -535,6 +535,8 @@ static int ath9k_init_softc(u16 devid, s
|
||||
ah->is_clk_25mhz = pdata->is_clk_25mhz;
|
||||
ah->get_mac_revision = pdata->get_mac_revision;
|
||||
ah->external_reset = pdata->external_reset;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -904,23 +904,23 @@ static int __init ath9k_init(void)
|
||||
@@ -905,23 +905,23 @@ static int __init ath9k_init(void)
|
||||
goto err_out;
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -1936,8 +1936,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
@@ -1939,8 +1939,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
REG_WRITE(ah, AR_OBS, 8);
|
||||
|
||||
if (ah->config.rx_intr_mitigation) {
|
||||
|
@ -80,8 +80,8 @@
|
||||
}
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -1550,7 +1550,7 @@ static void ath9k_disable_ps(struct ath_
|
||||
|
||||
@@ -1551,7 +1551,7 @@ static void ath9k_disable_ps(struct ath_
|
||||
ath_dbg(common, PS, "PowerSave disabled\n");
|
||||
}
|
||||
|
||||
-static int ath9k_config(struct ieee80211_hw *hw, u32 changed)
|
||||
@ -89,7 +89,7 @@
|
||||
{
|
||||
struct ath_softc *sc = hw->priv;
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
@@ -1601,9 +1601,11 @@ static int ath9k_config(struct ieee80211
|
||||
@@ -1602,9 +1602,11 @@ static int ath9k_config(struct ieee80211
|
||||
|
||||
if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) {
|
||||
struct ieee80211_channel *curchan = hw->conf.channel;
|
||||
@ -101,7 +101,7 @@
|
||||
|
||||
if (ah->curchan)
|
||||
old_pos = ah->curchan - &ah->channels[0];
|
||||
@@ -1651,7 +1653,23 @@ static int ath9k_config(struct ieee80211
|
||||
@@ -1652,7 +1654,23 @@ static int ath9k_config(struct ieee80211
|
||||
memset(&sc->survey[pos], 0, sizeof(struct survey_info));
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -825,7 +825,7 @@ enum ieee80211_smps_mode {
|
||||
@@ -829,7 +829,7 @@ enum ieee80211_smps_mode {
|
||||
*/
|
||||
struct ieee80211_conf {
|
||||
u32 flags;
|
||||
@ -11,7 +11,7 @@
|
||||
u16 listen_interval;
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1757,7 +1757,7 @@ static int ieee80211_get_tx_power(struct
|
||||
@@ -1936,7 +1936,7 @@ static int ieee80211_get_tx_power(struct
|
||||
{
|
||||
struct ieee80211_local *local = wiphy_priv(wiphy);
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
}
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -165,6 +165,7 @@ int ieee80211_hw_config(struct ieee80211
|
||||
@@ -167,6 +167,7 @@ int ieee80211_hw_config(struct ieee80211
|
||||
|
||||
if (local->hw.conf.power_level != power) {
|
||||
changed |= IEEE80211_CONF_CHANGE_POWER;
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -1675,6 +1675,8 @@ int ath9k_config(struct ieee80211_hw *hw
|
||||
@@ -1676,6 +1676,8 @@ int ath9k_config(struct ieee80211_hw *hw
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
/*
|
||||
* The most recent snapshot of channel->noisefloor for the old
|
||||
* channel is only available after the hardware reset. Copy it to
|
||||
@@ -1689,6 +1691,7 @@ int ath9k_config(struct ieee80211_hw *hw
|
||||
@@ -1690,6 +1692,7 @@ int ath9k_config(struct ieee80211_hw *hw
|
||||
sc->config.txpowlimit = 2 * conf->power_level;
|
||||
ath9k_cmn_update_txpow(ah, sc->curtxpow,
|
||||
sc->config.txpowlimit, &sc->curtxpow);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -693,6 +693,9 @@ enum mac80211_rx_flags {
|
||||
@@ -697,6 +697,9 @@ enum mac80211_rx_flags {
|
||||
* @mactime: value in microseconds of the 64-bit Time Synchronization Function
|
||||
* (TSF) timer when the first data symbol (MPDU) arrived at the hardware.
|
||||
* @band: the active band when this frame was received
|
||||
@ -10,7 +10,7 @@
|
||||
* @freq: frequency the radio was tuned to when receiving this frame, in MHz
|
||||
* @signal: signal strength when receiving this frame, either in dBm, in dB or
|
||||
* unspecified depending on the hardware capabilities flags
|
||||
@@ -706,6 +709,10 @@ enum mac80211_rx_flags {
|
||||
@@ -710,6 +713,10 @@ enum mac80211_rx_flags {
|
||||
struct ieee80211_rx_status {
|
||||
u64 mactime;
|
||||
enum ieee80211_band band;
|
||||
@ -37,7 +37,7 @@
|
||||
|
||||
--- a/net/mac80211/rx.c
|
||||
+++ b/net/mac80211/rx.c
|
||||
@@ -1262,6 +1262,7 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
@@ -1263,6 +1263,7 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
struct sk_buff *skb = rx->skb;
|
||||
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||
@ -45,7 +45,7 @@
|
||||
|
||||
if (!sta)
|
||||
return RX_CONTINUE;
|
||||
@@ -1306,6 +1307,19 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
@@ -1307,6 +1308,19 @@ ieee80211_rx_h_sta_process(struct ieee80
|
||||
ewma_add(&sta->avg_signal, -status->signal);
|
||||
}
|
||||
|
||||
@ -269,7 +269,7 @@
|
||||
RX_SAMP_DBG(rate) = rs->rs_rate;
|
||||
--- a/include/linux/nl80211.h
|
||||
+++ b/include/linux/nl80211.h
|
||||
@@ -1693,6 +1693,8 @@ enum nl80211_sta_bss_param {
|
||||
@@ -1695,6 +1695,8 @@ enum nl80211_sta_bss_param {
|
||||
* @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update.
|
||||
* @NL80211_STA_INFO_BEACON_LOSS: count of times beacon loss was detected (u32)
|
||||
* @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64)
|
||||
@ -278,7 +278,7 @@
|
||||
* @__NL80211_STA_INFO_AFTER_LAST: internal
|
||||
* @NL80211_STA_INFO_MAX: highest possible station info attribute
|
||||
*/
|
||||
@@ -1717,6 +1719,8 @@ enum nl80211_sta_info {
|
||||
@@ -1719,6 +1721,8 @@ enum nl80211_sta_info {
|
||||
NL80211_STA_INFO_STA_FLAGS,
|
||||
NL80211_STA_INFO_BEACON_LOSS,
|
||||
NL80211_STA_INFO_T_OFFSET,
|
||||
@ -289,7 +289,7 @@
|
||||
__NL80211_STA_INFO_AFTER_LAST,
|
||||
--- a/net/wireless/nl80211.c
|
||||
+++ b/net/wireless/nl80211.c
|
||||
@@ -2406,6 +2406,33 @@ nla_put_failure:
|
||||
@@ -2467,6 +2467,33 @@ nla_put_failure:
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -323,7 +323,7 @@
|
||||
static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
|
||||
int flags,
|
||||
struct cfg80211_registered_device *rdev,
|
||||
@@ -2460,6 +2487,18 @@ static int nl80211_send_station(struct s
|
||||
@@ -2528,6 +2555,18 @@ static int nl80211_send_station(struct s
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -33,7 +33,7 @@
|
||||
debugfs_create_file("misc", S_IRUSR, sc->debug.debugfs_phy, sc,
|
||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
@@ -392,6 +392,14 @@ static void ath_tx_count_frames(struct a
|
||||
@@ -393,6 +393,14 @@ static void ath_tx_count_frames(struct a
|
||||
}
|
||||
}
|
||||
|
||||
@ -48,7 +48,7 @@
|
||||
|
||||
static void ath_tx_complete_aggr(struct ath_softc *sc, struct ath_txq *txq,
|
||||
struct ath_buf *bf, struct list_head *bf_q,
|
||||
@@ -486,6 +494,8 @@ static void ath_tx_complete_aggr(struct
|
||||
@@ -487,6 +495,8 @@ static void ath_tx_complete_aggr(struct
|
||||
__skb_queue_head_init(&bf_pending);
|
||||
|
||||
ath_tx_count_frames(sc, bf, ts, txok, &nframes, &nbad);
|
||||
@ -57,7 +57,7 @@
|
||||
while (bf) {
|
||||
u16 seqno = bf->bf_state.seqno;
|
||||
|
||||
@@ -884,6 +894,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_
|
||||
@@ -885,6 +895,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_
|
||||
ath_tx_addto_baw(sc, tid, seqno);
|
||||
bf->bf_state.ndelim = ndelim;
|
||||
|
||||
@ -65,7 +65,7 @@
|
||||
__skb_unlink(skb, &tid->buf_q);
|
||||
list_add_tail(&bf->list, bf_q);
|
||||
if (bf_prev)
|
||||
@@ -1737,6 +1748,8 @@ static void ath_tx_send_ampdu(struct ath
|
||||
@@ -1738,6 +1749,8 @@ static void ath_tx_send_ampdu(struct ath
|
||||
/* Add sub-frame to BAW */
|
||||
ath_tx_addto_baw(sc, tid, bf->bf_state.seqno);
|
||||
|
||||
@ -74,7 +74,7 @@
|
||||
/* Queue to h/w without aggregation */
|
||||
TX_STAT_INC(txctl->txq->axq_qnum, a_queued_hw);
|
||||
bf->bf_lastbf = bf;
|
||||
@@ -1869,22 +1882,11 @@ error:
|
||||
@@ -1873,22 +1886,11 @@ error:
|
||||
|
||||
/* FIXME: tx power */
|
||||
static void ath_tx_start_dma(struct ath_softc *sc, struct sk_buff *skb,
|
||||
@ -99,7 +99,7 @@
|
||||
|
||||
if ((tx_info->flags & IEEE80211_TX_CTL_AMPDU) && tid) {
|
||||
/*
|
||||
@@ -1916,6 +1918,7 @@ int ath_tx_start(struct ieee80211_hw *hw
|
||||
@@ -1920,6 +1922,7 @@ int ath_tx_start(struct ieee80211_hw *hw
|
||||
struct ieee80211_vif *vif = info->control.vif;
|
||||
struct ath_softc *sc = hw->priv;
|
||||
struct ath_txq *txq = txctl->txq;
|
||||
@ -107,7 +107,7 @@
|
||||
int padpos, padsize;
|
||||
int frmlen = skb->len + FCS_LEN;
|
||||
int q;
|
||||
@@ -1958,6 +1961,24 @@ int ath_tx_start(struct ieee80211_hw *hw
|
||||
@@ -1962,6 +1965,24 @@ int ath_tx_start(struct ieee80211_hw *hw
|
||||
|
||||
setup_frame_info(hw, skb, frmlen);
|
||||
|
||||
@ -132,7 +132,7 @@
|
||||
/*
|
||||
* At this point, the vif, hw_key and sta pointers in the tx control
|
||||
* info are no longer valid (overwritten by the ath_frame_info data.
|
||||
@@ -1972,7 +1993,7 @@ int ath_tx_start(struct ieee80211_hw *hw
|
||||
@@ -1976,7 +1997,7 @@ int ath_tx_start(struct ieee80211_hw *hw
|
||||
txq->stopped = true;
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -781,7 +781,7 @@ int ath9k_init_device(u16 devid, struct
|
||||
@@ -782,7 +782,7 @@ int ath9k_init_device(u16 devid, struct
|
||||
|
||||
#ifdef CONFIG_MAC80211_LEDS
|
||||
/* must be initialized before ieee80211_register_hw */
|
||||
|
@ -11,7 +11,7 @@
|
||||
union {
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1933,9 +1933,20 @@ static int ieee80211_set_bitrate_mask(st
|
||||
@@ -2112,9 +2112,20 @@ static int ieee80211_set_bitrate_mask(st
|
||||
}
|
||||
|
||||
for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
|
||||
@ -34,7 +34,7 @@
|
||||
return 0;
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -3645,7 +3645,7 @@ void ieee80211_send_bar(struct ieee80211
|
||||
@@ -3672,7 +3672,7 @@ void ieee80211_send_bar(struct ieee80211
|
||||
* (deprecated; this will be removed once drivers get updated to use
|
||||
* rate_idx_mask)
|
||||
* @rate_idx_mask: user-requested (legacy) rate mask
|
||||
@ -43,7 +43,7 @@
|
||||
* @bss: whether this frame is sent out in AP or IBSS mode
|
||||
*/
|
||||
struct ieee80211_tx_rate_control {
|
||||
@@ -3657,7 +3657,7 @@ struct ieee80211_tx_rate_control {
|
||||
@@ -3684,7 +3684,7 @@ struct ieee80211_tx_rate_control {
|
||||
bool rts, short_preamble;
|
||||
u8 max_rate_idx;
|
||||
u32 rate_idx_mask;
|
||||
|
@ -1,26 +0,0 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -235,7 +235,7 @@ static bool ath_prepare_reset(struct ath
|
||||
{
|
||||
struct ath_hw *ah = sc->sc_ah;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
- bool ret;
|
||||
+ bool ret = true;
|
||||
|
||||
ieee80211_stop_queues(sc->hw);
|
||||
|
||||
@@ -246,11 +246,12 @@ static bool ath_prepare_reset(struct ath
|
||||
ath9k_debug_samp_bb_mac(sc);
|
||||
ath9k_hw_disable_interrupts(ah);
|
||||
|
||||
- ret = ath_drain_all_txq(sc, retry_tx);
|
||||
-
|
||||
if (!ath_stoprecv(sc))
|
||||
ret = false;
|
||||
|
||||
+ if (!ath_drain_all_txq(sc, retry_tx))
|
||||
+ ret = false;
|
||||
+
|
||||
if (!flush) {
|
||||
if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)
|
||||
ath_rx_tasklet(sc, 1, true);
|
@ -1,67 +0,0 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
@@ -64,7 +64,8 @@ static void ath_tx_update_baw(struct ath
|
||||
static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
|
||||
struct ath_txq *txq,
|
||||
struct ath_atx_tid *tid,
|
||||
- struct sk_buff *skb);
|
||||
+ struct sk_buff *skb,
|
||||
+ bool dequeue);
|
||||
|
||||
enum {
|
||||
MCS_HT20,
|
||||
@@ -821,7 +822,7 @@ static enum ATH_AGGR_STATUS ath_tx_form_
|
||||
fi = get_frame_info(skb);
|
||||
bf = fi->bf;
|
||||
if (!fi->bf)
|
||||
- bf = ath_tx_setup_buffer(sc, txq, tid, skb);
|
||||
+ bf = ath_tx_setup_buffer(sc, txq, tid, skb, true);
|
||||
|
||||
if (!bf)
|
||||
continue;
|
||||
@@ -1737,7 +1738,7 @@ static void ath_tx_send_ampdu(struct ath
|
||||
return;
|
||||
}
|
||||
|
||||
- bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
|
||||
+ bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);
|
||||
if (!bf)
|
||||
return;
|
||||
|
||||
@@ -1766,7 +1767,7 @@ static void ath_tx_send_normal(struct at
|
||||
|
||||
bf = fi->bf;
|
||||
if (!bf)
|
||||
- bf = ath_tx_setup_buffer(sc, txq, tid, skb);
|
||||
+ bf = ath_tx_setup_buffer(sc, txq, tid, skb, false);
|
||||
|
||||
if (!bf)
|
||||
return;
|
||||
@@ -1827,7 +1828,8 @@ u8 ath_txchainmask_reduction(struct ath_
|
||||
static struct ath_buf *ath_tx_setup_buffer(struct ath_softc *sc,
|
||||
struct ath_txq *txq,
|
||||
struct ath_atx_tid *tid,
|
||||
- struct sk_buff *skb)
|
||||
+ struct sk_buff *skb,
|
||||
+ bool dequeue)
|
||||
{
|
||||
struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
struct ath_frame_info *fi = get_frame_info(skb);
|
||||
@@ -1876,6 +1878,8 @@ static struct ath_buf *ath_tx_setup_buff
|
||||
return bf;
|
||||
|
||||
error:
|
||||
+ if (dequeue)
|
||||
+ __skb_unlink(skb, &tid->buf_q);
|
||||
dev_kfree_skb_any(skb);
|
||||
return NULL;
|
||||
}
|
||||
@@ -1895,7 +1899,7 @@ static void ath_tx_start_dma(struct ath_
|
||||
*/
|
||||
ath_tx_send_ampdu(sc, tid, skb, txctl);
|
||||
} else {
|
||||
- bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb);
|
||||
+ bf = ath_tx_setup_buffer(sc, txctl->txq, tid, skb, false);
|
||||
if (!bf)
|
||||
return;
|
||||
|
@ -1,301 +0,0 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9330_1p1_initvals.h
|
||||
@@ -1,5 +1,6 @@
|
||||
/*
|
||||
- * Copyright (c) 2011 Atheros Communications Inc.
|
||||
+ * Copyright (c) 2010-2011 Atheros Communications Inc.
|
||||
+ * Copyright (c) 2011-2012 Qualcomm Atheros Inc.
|
||||
*
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
@@ -18,7 +19,7 @@
|
||||
#define INITVALS_9330_1P1_H
|
||||
|
||||
static const u32 ar9331_1p1_baseband_postamble[][5] = {
|
||||
- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
{0x00009810, 0xd00a8005, 0xd00a8005, 0xd00a8005, 0xd00a8005},
|
||||
{0x00009820, 0x206a002e, 0x206a002e, 0x206a002e, 0x206a002e},
|
||||
{0x00009824, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0, 0x5ac640d0},
|
||||
@@ -27,10 +28,10 @@ static const u32 ar9331_1p1_baseband_pos
|
||||
{0x00009830, 0x0000059c, 0x0000059c, 0x0000059c, 0x0000059c},
|
||||
{0x00009c00, 0x00000044, 0x00000044, 0x00000044, 0x00000044},
|
||||
{0x00009e00, 0x0372161e, 0x0372161e, 0x037216a4, 0x037216a4},
|
||||
- {0x00009e04, 0x00182020, 0x00182020, 0x00182020, 0x00182020},
|
||||
+ {0x00009e04, 0x00202020, 0x00202020, 0x00202020, 0x00202020},
|
||||
{0x00009e0c, 0x6c4000e2, 0x6d4000e2, 0x6d4000e2, 0x6c4000e2},
|
||||
{0x00009e10, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e, 0x7ec80d2e},
|
||||
- {0x00009e14, 0x31395d5e, 0x3139605e, 0x3139605e, 0x31395d5e},
|
||||
+ {0x00009e14, 0x31365d5e, 0x3136605e, 0x3136605e, 0x31365d5e},
|
||||
{0x00009e18, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
|
||||
{0x00009e1c, 0x0001cf9c, 0x0001cf9c, 0x00021f9c, 0x00021f9c},
|
||||
{0x00009e20, 0x000003b5, 0x000003b5, 0x000003ce, 0x000003ce},
|
||||
@@ -55,7 +56,7 @@ static const u32 ar9331_1p1_baseband_pos
|
||||
{0x0000a288, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
|
||||
{0x0000a28c, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
|
||||
{0x0000a2c4, 0x00158d18, 0x00158d18, 0x00158d18, 0x00158d18},
|
||||
- {0x0000a2d0, 0x00071981, 0x00071981, 0x00071981, 0x00071981},
|
||||
+ {0x0000a2d0, 0x00071982, 0x00071982, 0x00071982, 0x00071982},
|
||||
{0x0000a2d8, 0xf999a83a, 0xf999a83a, 0xf999a83a, 0xf999a83a},
|
||||
{0x0000a358, 0x00000000, 0x00000000, 0x00000000, 0x00000000},
|
||||
{0x0000ae04, 0x00802020, 0x00802020, 0x00802020, 0x00802020},
|
||||
@@ -63,7 +64,7 @@ static const u32 ar9331_1p1_baseband_pos
|
||||
};
|
||||
|
||||
static const u32 ar9331_modes_lowest_ob_db_tx_gain_1p1[][5] = {
|
||||
- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
{0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
|
||||
{0x0000a2dc, 0xffff2a52, 0xffff2a52, 0xffff2a52, 0xffff2a52},
|
||||
{0x0000a2e0, 0xffffcc84, 0xffffcc84, 0xffffcc84, 0xffffcc84},
|
||||
@@ -155,7 +156,7 @@ static const u32 ar9331_modes_lowest_ob_
|
||||
};
|
||||
|
||||
static const u32 ar9331_modes_high_ob_db_tx_gain_1p1[][5] = {
|
||||
- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
{0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
|
||||
{0x0000a2dc, 0xffaa9a52, 0xffaa9a52, 0xffaa9a52, 0xffaa9a52},
|
||||
{0x0000a2e0, 0xffb31c84, 0xffb31c84, 0xffb31c84, 0xffb31c84},
|
||||
@@ -245,7 +246,7 @@ static const u32 ar9331_modes_high_ob_db
|
||||
};
|
||||
|
||||
static const u32 ar9331_modes_low_ob_db_tx_gain_1p1[][5] = {
|
||||
- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
{0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
|
||||
{0x0000a2dc, 0xffff2a52, 0xffff2a52, 0xffff2a52, 0xffff2a52},
|
||||
{0x0000a2e0, 0xffffcc84, 0xffffcc84, 0xffffcc84, 0xffffcc84},
|
||||
@@ -377,14 +378,14 @@ static const u32 ar9331_1p1_radio_core[]
|
||||
{0x000160b4, 0x92480040},
|
||||
{0x000160c0, 0x006db6db},
|
||||
{0x000160c4, 0x0186db60},
|
||||
- {0x000160c8, 0x6db6db6c},
|
||||
+ {0x000160c8, 0x6db4db6c},
|
||||
{0x000160cc, 0x6de6c300},
|
||||
{0x000160d0, 0x14500820},
|
||||
{0x00016100, 0x04cb0001},
|
||||
{0x00016104, 0xfff80015},
|
||||
{0x00016108, 0x00080010},
|
||||
{0x0001610c, 0x00170000},
|
||||
- {0x00016140, 0x10804000},
|
||||
+ {0x00016140, 0x10800000},
|
||||
{0x00016144, 0x01884080},
|
||||
{0x00016148, 0x000080c0},
|
||||
{0x00016280, 0x01000015},
|
||||
@@ -417,7 +418,7 @@ static const u32 ar9331_1p1_radio_core[]
|
||||
};
|
||||
|
||||
static const u32 ar9331_1p1_soc_postamble[][5] = {
|
||||
- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
{0x00007010, 0x00000022, 0x00000022, 0x00000022, 0x00000022},
|
||||
};
|
||||
|
||||
@@ -691,7 +692,7 @@ static const u32 ar9331_1p1_baseband_cor
|
||||
};
|
||||
|
||||
static const u32 ar9331_modes_high_power_tx_gain_1p1[][5] = {
|
||||
- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
{0x0000a2d8, 0x7999a83a, 0x7999a83a, 0x7999a83a, 0x7999a83a},
|
||||
{0x0000a2dc, 0xffff2a52, 0xffff2a52, 0xffff2a52, 0xffff2a52},
|
||||
{0x0000a2e0, 0xffffcc84, 0xffffcc84, 0xffffcc84, 0xffffcc84},
|
||||
@@ -783,7 +784,7 @@ static const u32 ar9331_modes_high_power
|
||||
};
|
||||
|
||||
static const u32 ar9331_1p1_mac_postamble[][5] = {
|
||||
- /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
+ /* Addr 5G_HT20 5G_HT40 2G_HT40 2G_HT20 */
|
||||
{0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160},
|
||||
{0x00001070, 0x00000168, 0x000002d0, 0x00000318, 0x0000018c},
|
||||
{0x000010b0, 0x00000e60, 0x00001cc0, 0x00007c70, 0x00003e38},
|
||||
@@ -973,26 +974,27 @@ static const u32 ar9331_1p1_mac_core[][2
|
||||
|
||||
static const u32 ar9331_common_rx_gain_1p1[][2] = {
|
||||
/* Addr allmodes */
|
||||
- {0x0000a000, 0x00010000},
|
||||
- {0x0000a004, 0x00030002},
|
||||
- {0x0000a008, 0x00050004},
|
||||
- {0x0000a00c, 0x00810080},
|
||||
- {0x0000a010, 0x00830082},
|
||||
- {0x0000a014, 0x01810180},
|
||||
- {0x0000a018, 0x01830182},
|
||||
- {0x0000a01c, 0x01850184},
|
||||
- {0x0000a020, 0x01890188},
|
||||
- {0x0000a024, 0x018b018a},
|
||||
- {0x0000a028, 0x018d018c},
|
||||
- {0x0000a02c, 0x01910190},
|
||||
- {0x0000a030, 0x01930192},
|
||||
- {0x0000a034, 0x01950194},
|
||||
- {0x0000a038, 0x038a0196},
|
||||
- {0x0000a03c, 0x038c038b},
|
||||
- {0x0000a040, 0x0390038d},
|
||||
- {0x0000a044, 0x03920391},
|
||||
- {0x0000a048, 0x03940393},
|
||||
- {0x0000a04c, 0x03960395},
|
||||
+ {0x00009e18, 0x05000000},
|
||||
+ {0x0000a000, 0x00060005},
|
||||
+ {0x0000a004, 0x00810080},
|
||||
+ {0x0000a008, 0x00830082},
|
||||
+ {0x0000a00c, 0x00850084},
|
||||
+ {0x0000a010, 0x01820181},
|
||||
+ {0x0000a014, 0x01840183},
|
||||
+ {0x0000a018, 0x01880185},
|
||||
+ {0x0000a01c, 0x018a0189},
|
||||
+ {0x0000a020, 0x02850284},
|
||||
+ {0x0000a024, 0x02890288},
|
||||
+ {0x0000a028, 0x028b028a},
|
||||
+ {0x0000a02c, 0x03850384},
|
||||
+ {0x0000a030, 0x03890388},
|
||||
+ {0x0000a034, 0x038b038a},
|
||||
+ {0x0000a038, 0x038d038c},
|
||||
+ {0x0000a03c, 0x03910390},
|
||||
+ {0x0000a040, 0x03930392},
|
||||
+ {0x0000a044, 0x03950394},
|
||||
+ {0x0000a048, 0x00000396},
|
||||
+ {0x0000a04c, 0x00000000},
|
||||
{0x0000a050, 0x00000000},
|
||||
{0x0000a054, 0x00000000},
|
||||
{0x0000a058, 0x00000000},
|
||||
@@ -1005,15 +1007,15 @@ static const u32 ar9331_common_rx_gain_1
|
||||
{0x0000a074, 0x00000000},
|
||||
{0x0000a078, 0x00000000},
|
||||
{0x0000a07c, 0x00000000},
|
||||
- {0x0000a080, 0x22222229},
|
||||
- {0x0000a084, 0x1d1d1d1d},
|
||||
- {0x0000a088, 0x1d1d1d1d},
|
||||
- {0x0000a08c, 0x1d1d1d1d},
|
||||
- {0x0000a090, 0x171d1d1d},
|
||||
- {0x0000a094, 0x11111717},
|
||||
- {0x0000a098, 0x00030311},
|
||||
- {0x0000a09c, 0x00000000},
|
||||
- {0x0000a0a0, 0x00000000},
|
||||
+ {0x0000a080, 0x28282828},
|
||||
+ {0x0000a084, 0x28282828},
|
||||
+ {0x0000a088, 0x28282828},
|
||||
+ {0x0000a08c, 0x28282828},
|
||||
+ {0x0000a090, 0x28282828},
|
||||
+ {0x0000a094, 0x24242428},
|
||||
+ {0x0000a098, 0x171e1e1e},
|
||||
+ {0x0000a09c, 0x02020b0b},
|
||||
+ {0x0000a0a0, 0x02020202},
|
||||
{0x0000a0a4, 0x00000000},
|
||||
{0x0000a0a8, 0x00000000},
|
||||
{0x0000a0ac, 0x00000000},
|
||||
@@ -1021,27 +1023,27 @@ static const u32 ar9331_common_rx_gain_1
|
||||
{0x0000a0b4, 0x00000000},
|
||||
{0x0000a0b8, 0x00000000},
|
||||
{0x0000a0bc, 0x00000000},
|
||||
- {0x0000a0c0, 0x001f0000},
|
||||
- {0x0000a0c4, 0x01000101},
|
||||
- {0x0000a0c8, 0x011e011f},
|
||||
- {0x0000a0cc, 0x011c011d},
|
||||
- {0x0000a0d0, 0x02030204},
|
||||
- {0x0000a0d4, 0x02010202},
|
||||
- {0x0000a0d8, 0x021f0200},
|
||||
- {0x0000a0dc, 0x0302021e},
|
||||
- {0x0000a0e0, 0x03000301},
|
||||
- {0x0000a0e4, 0x031e031f},
|
||||
- {0x0000a0e8, 0x0402031d},
|
||||
- {0x0000a0ec, 0x04000401},
|
||||
- {0x0000a0f0, 0x041e041f},
|
||||
- {0x0000a0f4, 0x0502041d},
|
||||
- {0x0000a0f8, 0x05000501},
|
||||
- {0x0000a0fc, 0x051e051f},
|
||||
- {0x0000a100, 0x06010602},
|
||||
- {0x0000a104, 0x061f0600},
|
||||
- {0x0000a108, 0x061d061e},
|
||||
- {0x0000a10c, 0x07020703},
|
||||
- {0x0000a110, 0x07000701},
|
||||
+ {0x0000a0c0, 0x22072208},
|
||||
+ {0x0000a0c4, 0x22052206},
|
||||
+ {0x0000a0c8, 0x22032204},
|
||||
+ {0x0000a0cc, 0x22012202},
|
||||
+ {0x0000a0d0, 0x221f2200},
|
||||
+ {0x0000a0d4, 0x221d221e},
|
||||
+ {0x0000a0d8, 0x33023303},
|
||||
+ {0x0000a0dc, 0x33003301},
|
||||
+ {0x0000a0e0, 0x331e331f},
|
||||
+ {0x0000a0e4, 0x4402331d},
|
||||
+ {0x0000a0e8, 0x44004401},
|
||||
+ {0x0000a0ec, 0x441e441f},
|
||||
+ {0x0000a0f0, 0x55025503},
|
||||
+ {0x0000a0f4, 0x55005501},
|
||||
+ {0x0000a0f8, 0x551e551f},
|
||||
+ {0x0000a0fc, 0x6602551d},
|
||||
+ {0x0000a100, 0x66006601},
|
||||
+ {0x0000a104, 0x661e661f},
|
||||
+ {0x0000a108, 0x7703661d},
|
||||
+ {0x0000a10c, 0x77017702},
|
||||
+ {0x0000a110, 0x00007700},
|
||||
{0x0000a114, 0x00000000},
|
||||
{0x0000a118, 0x00000000},
|
||||
{0x0000a11c, 0x00000000},
|
||||
@@ -1054,26 +1056,26 @@ static const u32 ar9331_common_rx_gain_1
|
||||
{0x0000a138, 0x00000000},
|
||||
{0x0000a13c, 0x00000000},
|
||||
{0x0000a140, 0x001f0000},
|
||||
- {0x0000a144, 0x01000101},
|
||||
- {0x0000a148, 0x011e011f},
|
||||
- {0x0000a14c, 0x011c011d},
|
||||
- {0x0000a150, 0x02030204},
|
||||
- {0x0000a154, 0x02010202},
|
||||
- {0x0000a158, 0x021f0200},
|
||||
- {0x0000a15c, 0x0302021e},
|
||||
- {0x0000a160, 0x03000301},
|
||||
- {0x0000a164, 0x031e031f},
|
||||
- {0x0000a168, 0x0402031d},
|
||||
- {0x0000a16c, 0x04000401},
|
||||
- {0x0000a170, 0x041e041f},
|
||||
- {0x0000a174, 0x0502041d},
|
||||
- {0x0000a178, 0x05000501},
|
||||
- {0x0000a17c, 0x051e051f},
|
||||
- {0x0000a180, 0x06010602},
|
||||
- {0x0000a184, 0x061f0600},
|
||||
- {0x0000a188, 0x061d061e},
|
||||
- {0x0000a18c, 0x07020703},
|
||||
- {0x0000a190, 0x07000701},
|
||||
+ {0x0000a144, 0x111f1100},
|
||||
+ {0x0000a148, 0x111d111e},
|
||||
+ {0x0000a14c, 0x111b111c},
|
||||
+ {0x0000a150, 0x22032204},
|
||||
+ {0x0000a154, 0x22012202},
|
||||
+ {0x0000a158, 0x221f2200},
|
||||
+ {0x0000a15c, 0x221d221e},
|
||||
+ {0x0000a160, 0x33013302},
|
||||
+ {0x0000a164, 0x331f3300},
|
||||
+ {0x0000a168, 0x4402331e},
|
||||
+ {0x0000a16c, 0x44004401},
|
||||
+ {0x0000a170, 0x441e441f},
|
||||
+ {0x0000a174, 0x55015502},
|
||||
+ {0x0000a178, 0x551f5500},
|
||||
+ {0x0000a17c, 0x6602551e},
|
||||
+ {0x0000a180, 0x66006601},
|
||||
+ {0x0000a184, 0x661e661f},
|
||||
+ {0x0000a188, 0x7703661d},
|
||||
+ {0x0000a18c, 0x77017702},
|
||||
+ {0x0000a190, 0x00007700},
|
||||
{0x0000a194, 0x00000000},
|
||||
{0x0000a198, 0x00000000},
|
||||
{0x0000a19c, 0x00000000},
|
||||
@@ -1100,14 +1102,14 @@ static const u32 ar9331_common_rx_gain_1
|
||||
{0x0000a1f0, 0x00000396},
|
||||
{0x0000a1f4, 0x00000396},
|
||||
{0x0000a1f8, 0x00000396},
|
||||
- {0x0000a1fc, 0x00000196},
|
||||
+ {0x0000a1fc, 0x00000296},
|
||||
};
|
||||
|
||||
static const u32 ar9331_common_tx_gain_offset1_1[][1] = {
|
||||
- {0},
|
||||
- {3},
|
||||
- {0},
|
||||
- {0},
|
||||
+ {0x00000000},
|
||||
+ {0x00000003},
|
||||
+ {0x00000000},
|
||||
+ {0x00000000},
|
||||
};
|
||||
|
||||
static const u32 ar9331_1p1_chansel_xtal_25M[] = {
|
@ -1,33 +0,0 @@
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
|
||||
@@ -3809,7 +3809,7 @@ static bool is_pmu_set(struct ath_hw *ah
|
||||
return true;
|
||||
}
|
||||
|
||||
-static void ar9003_hw_internal_regulator_apply(struct ath_hw *ah)
|
||||
+void ar9003_hw_internal_regulator_apply(struct ath_hw *ah)
|
||||
{
|
||||
int internal_regulator =
|
||||
ath9k_hw_ar9300_get_eeprom(ah, EEP_INTERNAL_REGULATOR);
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
|
||||
@@ -334,4 +334,7 @@ u8 *ar9003_get_spur_chan_ptr(struct ath_
|
||||
|
||||
unsigned int ar9003_get_paprd_scale_factor(struct ath_hw *ah,
|
||||
struct ath9k_channel *chan);
|
||||
+
|
||||
+void ar9003_hw_internal_regulator_apply(struct ath_hw *ah);
|
||||
+
|
||||
#endif
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -1477,6 +1477,9 @@ static bool ath9k_hw_chip_reset(struct a
|
||||
return false;
|
||||
|
||||
ah->chip_fullsleep = false;
|
||||
+
|
||||
+ if (AR_SREV_9330(ah))
|
||||
+ ar9003_hw_internal_regulator_apply(ah);
|
||||
ath9k_hw_init_pll(ah, chan);
|
||||
ath9k_hw_set_rfmode(ah, chan);
|
||||
|
@ -42,7 +42,7 @@
|
||||
|
||||
if (wl->radio_enabled != phy->radio_on) {
|
||||
if (wl->radio_enabled) {
|
||||
@@ -4934,6 +4931,47 @@ static int b43_op_get_survey(struct ieee
|
||||
@@ -4940,6 +4937,47 @@ static int b43_op_get_survey(struct ieee
|
||||
return 0;
|
||||
}
|
||||
|
||||
@ -90,7 +90,7 @@
|
||||
static const struct ieee80211_ops b43_hw_ops = {
|
||||
.tx = b43_op_tx,
|
||||
.conf_tx = b43_op_conf_tx,
|
||||
@@ -4955,6 +4993,8 @@ static const struct ieee80211_ops b43_hw
|
||||
@@ -4961,6 +4999,8 @@ static const struct ieee80211_ops b43_hw
|
||||
.sw_scan_complete = b43_op_sw_scan_complete_notifier,
|
||||
.get_survey = b43_op_get_survey,
|
||||
.rfkill_poll = b43_rfkill_poll,
|
||||
@ -99,7 +99,7 @@
|
||||
};
|
||||
|
||||
/* Hard-reset the chip. Do not call this directly.
|
||||
@@ -5201,6 +5241,8 @@ static int b43_one_core_attach(struct b4
|
||||
@@ -5207,6 +5247,8 @@ static int b43_one_core_attach(struct b4
|
||||
if (!wldev)
|
||||
goto out;
|
||||
|
||||
@ -108,7 +108,7 @@
|
||||
wldev->use_pio = b43_modparam_pio;
|
||||
wldev->dev = dev;
|
||||
wldev->wl = wl;
|
||||
@@ -5291,6 +5333,9 @@ static struct b43_wl *b43_wireless_init(
|
||||
@@ -5297,6 +5339,9 @@ static struct b43_wl *b43_wireless_init(
|
||||
|
||||
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
|
||||
|
||||
|
@ -1,159 +0,0 @@
|
||||
--- a/drivers/net/wireless/b43/bus.c
|
||||
+++ b/drivers/net/wireless/b43/bus.c
|
||||
@@ -107,11 +107,9 @@ struct b43_bus_dev *b43_bus_dev_bcma_ini
|
||||
dev->dma_dev = core->dma_dev;
|
||||
dev->irq = core->irq;
|
||||
|
||||
- /*
|
||||
dev->board_vendor = core->bus->boardinfo.vendor;
|
||||
dev->board_type = core->bus->boardinfo.type;
|
||||
- dev->board_rev = core->bus->boardinfo.rev;
|
||||
- */
|
||||
+ dev->board_rev = core->bus->sprom.board_rev;
|
||||
|
||||
dev->chip_id = core->bus->chipinfo.id;
|
||||
dev->chip_rev = core->bus->chipinfo.rev;
|
||||
@@ -210,7 +208,7 @@ struct b43_bus_dev *b43_bus_dev_ssb_init
|
||||
|
||||
dev->board_vendor = sdev->bus->boardinfo.vendor;
|
||||
dev->board_type = sdev->bus->boardinfo.type;
|
||||
- dev->board_rev = sdev->bus->boardinfo.rev;
|
||||
+ dev->board_rev = sdev->bus->sprom.board_rev;
|
||||
|
||||
dev->chip_id = sdev->bus->chip_id;
|
||||
dev->chip_rev = sdev->bus->chip_rev;
|
||||
--- a/drivers/net/wireless/b43/dma.c
|
||||
+++ b/drivers/net/wireless/b43/dma.c
|
||||
@@ -1109,7 +1109,7 @@ static bool b43_dma_translation_in_low_w
|
||||
#ifdef CONFIG_B43_SSB
|
||||
if (dev->dev->bus_type == B43_BUS_SSB &&
|
||||
dev->dev->sdev->bus->bustype == SSB_BUSTYPE_PCI &&
|
||||
- !(dev->dev->sdev->bus->host_pci->is_pcie &&
|
||||
+ !(pci_is_pcie(dev->dev->sdev->bus->host_pci) &&
|
||||
ssb_read32(dev->dev->sdev, SSB_TMSHIGH) & SSB_TMSHIGH_DMA64))
|
||||
return 1;
|
||||
#endif
|
||||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
@@ -4834,8 +4834,14 @@ static int b43_op_start(struct ieee80211
|
||||
out_mutex_unlock:
|
||||
mutex_unlock(&wl->mutex);
|
||||
|
||||
- /* reload configuration */
|
||||
- b43_op_config(hw, ~0);
|
||||
+ /*
|
||||
+ * Configuration may have been overwritten during initialization.
|
||||
+ * Reload the configuration, but only if initialization was
|
||||
+ * successful. Reloading the configuration after a failed init
|
||||
+ * may hang the system.
|
||||
+ */
|
||||
+ if (!err)
|
||||
+ b43_op_config(hw, ~0);
|
||||
|
||||
return err;
|
||||
}
|
||||
@@ -5279,10 +5285,10 @@ static void b43_sprom_fixup(struct ssb_b
|
||||
|
||||
/* boardflags workarounds */
|
||||
if (bus->boardinfo.vendor == SSB_BOARDVENDOR_DELL &&
|
||||
- bus->chip_id == 0x4301 && bus->boardinfo.rev == 0x74)
|
||||
+ bus->chip_id == 0x4301 && bus->sprom.board_rev == 0x74)
|
||||
bus->sprom.boardflags_lo |= B43_BFL_BTCOEXIST;
|
||||
if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
|
||||
- bus->boardinfo.type == 0x4E && bus->boardinfo.rev > 0x40)
|
||||
+ bus->boardinfo.type == 0x4E && bus->sprom.board_rev > 0x40)
|
||||
bus->sprom.boardflags_lo |= B43_BFL_PACTRL;
|
||||
if (bus->bustype == SSB_BUSTYPE_PCI) {
|
||||
pdev = bus->host_pci;
|
||||
--- a/drivers/net/wireless/b43/sdio.c
|
||||
+++ b/drivers/net/wireless/b43/sdio.c
|
||||
@@ -193,7 +193,7 @@ static struct sdio_driver b43_sdio_drive
|
||||
.name = "b43-sdio",
|
||||
.id_table = b43_sdio_ids,
|
||||
.probe = b43_sdio_probe,
|
||||
- .remove = b43_sdio_remove,
|
||||
+ .remove = __devexit_p(b43_sdio_remove),
|
||||
};
|
||||
|
||||
int b43_sdio_init(void)
|
||||
--- a/drivers/net/wireless/b43legacy/main.c
|
||||
+++ b/drivers/net/wireless/b43legacy/main.c
|
||||
@@ -1550,8 +1550,6 @@ static void b43legacy_request_firmware(s
|
||||
const char *filename;
|
||||
int err;
|
||||
|
||||
- /* do dummy read */
|
||||
- ssb_read32(dev->dev, SSB_TMSHIGH);
|
||||
if (!fw->ucode) {
|
||||
if (rev == 2)
|
||||
filename = "ucode2";
|
||||
@@ -3758,7 +3756,7 @@ static void b43legacy_sprom_fixup(struct
|
||||
/* boardflags workarounds */
|
||||
if (bus->boardinfo.vendor == PCI_VENDOR_ID_APPLE &&
|
||||
bus->boardinfo.type == 0x4E &&
|
||||
- bus->boardinfo.rev > 0x40)
|
||||
+ bus->sprom.board_rev > 0x40)
|
||||
bus->sprom.boardflags_lo |= B43legacy_BFL_PACTRL;
|
||||
}
|
||||
|
||||
--- a/drivers/net/wireless/b43legacy/phy.c
|
||||
+++ b/drivers/net/wireless/b43legacy/phy.c
|
||||
@@ -408,7 +408,7 @@ static void b43legacy_phy_setupg(struct
|
||||
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
(dev->dev->bus->boardinfo.type == 0x0416) &&
|
||||
- (dev->dev->bus->boardinfo.rev == 0x0017))
|
||||
+ (dev->dev->bus->sprom.board_rev == 0x0017))
|
||||
return;
|
||||
|
||||
b43legacy_ilt_write(dev, 0x5001, 0x0002);
|
||||
@@ -424,7 +424,7 @@ static void b43legacy_phy_setupg(struct
|
||||
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
(dev->dev->bus->boardinfo.type == 0x0416) &&
|
||||
- (dev->dev->bus->boardinfo.rev == 0x0017))
|
||||
+ (dev->dev->bus->sprom.board_rev == 0x0017))
|
||||
return;
|
||||
|
||||
b43legacy_ilt_write(dev, 0x0401, 0x0002);
|
||||
--- a/drivers/net/wireless/b43legacy/radio.c
|
||||
+++ b/drivers/net/wireless/b43legacy/radio.c
|
||||
@@ -1998,7 +1998,7 @@ u16 b43legacy_default_radio_attenuation(
|
||||
if (phy->type == B43legacy_PHYTYPE_G) {
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421 &&
|
||||
- dev->dev->bus->boardinfo.rev >= 30)
|
||||
+ dev->dev->bus->sprom.board_rev >= 30)
|
||||
att = 3;
|
||||
else if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x416)
|
||||
@@ -2008,7 +2008,7 @@ u16 b43legacy_default_radio_attenuation(
|
||||
} else {
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421 &&
|
||||
- dev->dev->bus->boardinfo.rev >= 30)
|
||||
+ dev->dev->bus->sprom.board_rev >= 30)
|
||||
att = 7;
|
||||
else
|
||||
att = 6;
|
||||
@@ -2018,7 +2018,7 @@ u16 b43legacy_default_radio_attenuation(
|
||||
if (phy->type == B43legacy_PHYTYPE_G) {
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421 &&
|
||||
- dev->dev->bus->boardinfo.rev >= 30)
|
||||
+ dev->dev->bus->sprom.board_rev >= 30)
|
||||
att = 3;
|
||||
else if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type ==
|
||||
@@ -2052,9 +2052,9 @@ u16 b43legacy_default_radio_attenuation(
|
||||
}
|
||||
if (is_bcm_board_vendor(dev) &&
|
||||
dev->dev->bus->boardinfo.type == 0x421) {
|
||||
- if (dev->dev->bus->boardinfo.rev < 0x43)
|
||||
+ if (dev->dev->bus->sprom.board_rev < 0x43)
|
||||
att = 2;
|
||||
- else if (dev->dev->bus->boardinfo.rev < 0x51)
|
||||
+ else if (dev->dev->bus->sprom.board_rev < 0x51)
|
||||
att = 3;
|
||||
}
|
||||
if (att == 0xFFFF)
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
|
||||
@@ -95,6 +95,7 @@ MODULE_LICENSE("Dual BSD/GPL");
|
||||
@@ -94,6 +94,7 @@ MODULE_LICENSE("Dual BSD/GPL");
|
||||
static struct bcma_device_id brcms_coreid_table[] = {
|
||||
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS),
|
||||
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS),
|
||||
@ -10,7 +10,7 @@
|
||||
MODULE_DEVICE_TABLE(bcma, brcms_coreid_table);
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -720,7 +720,7 @@ static void brcms_c_ucode_bsinit(struct
|
||||
@@ -719,7 +719,7 @@ static void brcms_c_ucode_bsinit(struct
|
||||
brcms_c_write_mhf(wlc_hw, wlc_hw->band->mhfs);
|
||||
|
||||
/* do band-specific ucode IHR, SHM, and SCR inits */
|
||||
@ -19,7 +19,7 @@
|
||||
if (BRCMS_ISNPHY(wlc_hw->band))
|
||||
brcms_c_write_inits(wlc_hw, ucode->d11n0bsinitvals16);
|
||||
else
|
||||
@@ -2243,7 +2243,7 @@ static void brcms_ucode_download(struct
|
||||
@@ -2242,7 +2242,7 @@ static void brcms_ucode_download(struct
|
||||
if (wlc_hw->ucode_loaded)
|
||||
return;
|
||||
|
||||
@ -28,7 +28,7 @@
|
||||
if (BRCMS_ISNPHY(wlc_hw->band)) {
|
||||
brcms_ucode_write(wlc_hw, ucode->bcm43xx_16_mimo,
|
||||
ucode->bcm43xx_16_mimosz);
|
||||
@@ -3219,7 +3219,7 @@ static void brcms_b_coreinit(struct brcm
|
||||
@@ -3218,7 +3218,7 @@ static void brcms_b_coreinit(struct brcm
|
||||
|
||||
sflags = bcma_aread32(core, BCMA_IOST);
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -4133,6 +4133,7 @@ void brcms_c_wme_setparams(struct brcms_
|
||||
@@ -4132,6 +4132,7 @@ void brcms_c_wme_setparams(struct brcms_
|
||||
M_EDCF_QINFO +
|
||||
wme_ac2fifo[aci] * M_EDCF_QLEN + i,
|
||||
*shm_entry++);
|
||||
@ -8,7 +8,7 @@
|
||||
}
|
||||
|
||||
if (suspend) {
|
||||
@@ -4538,7 +4539,8 @@ static int brcms_b_attach(struct brcms_c
|
||||
@@ -4537,7 +4538,8 @@ static int brcms_b_attach(struct brcms_c
|
||||
|
||||
/* check device id(srom, nvram etc.) to set bands */
|
||||
if (wlc_hw->deviceid == BCM43224_D11N_ID ||
|
||||
@ -18,7 +18,7 @@
|
||||
/* Dualband boards */
|
||||
wlc_hw->_nbands = 2;
|
||||
else
|
||||
@@ -5792,7 +5794,7 @@ bool brcms_c_chipmatch(u16 vendor, u16 d
|
||||
@@ -5791,7 +5793,7 @@ bool brcms_c_chipmatch(u16 vendor, u16 d
|
||||
return false;
|
||||
}
|
||||
|
@ -1,6 +1,6 @@
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/main.c
|
||||
@@ -1944,7 +1944,8 @@ static bool brcms_b_radio_read_hwdisable
|
||||
@@ -1943,7 +1943,8 @@ static bool brcms_b_radio_read_hwdisable
|
||||
* accesses phyreg throughput mac. This can be skipped since
|
||||
* only mac reg is accessed below
|
||||
*/
|
||||
@ -10,7 +10,7 @@
|
||||
|
||||
/*
|
||||
* TODO: test suspend/resume
|
||||
@@ -2025,7 +2026,8 @@ void brcms_b_corereset(struct brcms_hard
|
||||
@@ -2024,7 +2025,8 @@ void brcms_b_corereset(struct brcms_hard
|
||||
* phyreg throughput mac, AND phy_reset is skipped at early stage when
|
||||
* band->pi is invalid. need to enable PHY CLK
|
||||
*/
|
File diff suppressed because it is too large
Load Diff
@ -1,28 +0,0 @@
|
||||
--- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
|
||||
@@ -28,6 +28,7 @@
|
||||
#include <linux/uaccess.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/usb.h>
|
||||
+#include <linux/vmalloc.h>
|
||||
#include <net/cfg80211.h>
|
||||
|
||||
#include <defs.h>
|
||||
@@ -1239,7 +1240,7 @@ static int brcmf_usb_get_fw(struct brcmf
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
- devinfo->image = kmalloc(fw->size, GFP_ATOMIC); /* plus nvram */
|
||||
+ devinfo->image = vmalloc(fw->size); /* plus nvram */
|
||||
if (!devinfo->image)
|
||||
return -ENOMEM;
|
||||
|
||||
@@ -1602,7 +1603,7 @@ static struct usb_driver brcmf_usbdrvr =
|
||||
void brcmf_usb_exit(void)
|
||||
{
|
||||
usb_deregister(&brcmf_usbdrvr);
|
||||
- kfree(g_image.data);
|
||||
+ vfree(g_image.data);
|
||||
g_image.data = NULL;
|
||||
g_image.len = 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user