mac80211: update to 2012-09-07, adds ath9k beacon fixes, mesh/adhoc fixes, and more

SVN-Revision: 33331
owl
Felix Fietkau 2012-09-08 11:10:54 +00:00
parent 6771d63284
commit 6f6af5bee7
54 changed files with 385 additions and 4736 deletions

View File

@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211 PKG_NAME:=mac80211
PKG_VERSION:=2012-07-16 PKG_VERSION:=2012-09-07
PKG_RELEASE:=1 PKG_RELEASE:=1
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
PKG_MD5SUM:=8e41a935ad147631b78f99eda7187c1f PKG_MD5SUM:=59e0a114ee4b755a6e47cb6cd0f32ebc
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -376,8 +376,8 @@ export CONFIG_B43_BCMA_EXTRA=y @@ -377,8 +377,8 @@ export CONFIG_B43_BCMA_EXTRA=y
export CONFIG_P54_PCI=m export CONFIG_P54_PCI=m

View File

@ -1,15 +1,15 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -77,7 +77,7 @@ endif # build check @@ -78,7 +78,7 @@ endif # build check
endif # kernel Makefile check endif # kernel Makefile check
# These both are needed by compat-wireless || compat-bluetooth so enable them # These both are needed by 802.11 and bluetooth so enable
- export CONFIG_COMPAT_RFKILL=y - export CONFIG_COMPAT_RFKILL=y
+# export CONFIG_COMPAT_RFKILL=y +# export CONFIG_COMPAT_RFKILL=y
ifeq ($(CONFIG_MAC80211),y) 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") $(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")
@@ -688,10 +688,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 @@ -690,10 +690,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
# We need the backported rfkill module on kernel < 2.6.31. # We need the backported rfkill module on kernel < 2.6.31.
# In more recent kernel versions use the in kernel rfkill module. # In more recent kernel versions use the in kernel rfkill module.
ifdef CONFIG_COMPAT_KERNEL_2_6_31 ifdef CONFIG_COMPAT_KERNEL_2_6_31

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -99,9 +99,9 @@ ifndef CONFIG_COMPAT_KERNEL_2_6_27 @@ -100,9 +100,9 @@ ifndef CONFIG_COMPAT_KERNEL_2_6_27
ifeq ($(CONFIG_BT),y) ifeq ($(CONFIG_BT),y)
# we'll ignore compiling bluetooth # we'll ignore compiling bluetooth
else else

View File

@ -19,7 +19,7 @@
else else
include $(KLIB_BUILD)/.config include $(KLIB_BUILD)/.config
endif endif
@@ -352,7 +352,8 @@ export CONFIG_IPW2200_QOS=y @@ -353,7 +353,8 @@ export CONFIG_IPW2200_QOS=y
# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
endif #CONFIG_WIRELESS_EXT endif #CONFIG_WIRELESS_EXT
@ -29,7 +29,7 @@
# Sonics Silicon Backplane # Sonics Silicon Backplane
export CONFIG_SSB_SPROM=y export CONFIG_SSB_SPROM=y
@@ -365,7 +366,7 @@ endif #CONFIG_PCMCIA @@ -366,7 +367,7 @@ endif #CONFIG_PCMCIA
# export CONFIG_SSB_DEBUG=y # export CONFIG_SSB_DEBUG=y
export CONFIG_SSB_DRIVER_PCICORE=y export CONFIG_SSB_DRIVER_PCICORE=y
export CONFIG_B43_SSB=y export CONFIG_B43_SSB=y
@ -38,7 +38,7 @@
export CONFIG_BCMA=m export CONFIG_BCMA=m
export CONFIG_BCMA_BLOCKIO=y export CONFIG_BCMA_BLOCKIO=y
@@ -582,7 +583,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv @@ -580,7 +581,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
ifdef CONFIG_MMC ifdef CONFIG_MMC

View File

@ -10,7 +10,7 @@
ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),) ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),)
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -368,12 +368,12 @@ export CONFIG_SSB_DRIVER_PCICORE=y @@ -369,12 +369,12 @@ export CONFIG_SSB_DRIVER_PCICORE=y
export CONFIG_B43_SSB=y export CONFIG_B43_SSB=y
endif #__CONFIG_SSB endif #__CONFIG_SSB

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -240,7 +240,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT @@ -241,7 +241,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT
endif #CONFIG_WIRELESS_EXT endif #CONFIG_WIRELESS_EXT
ifdef CONFIG_STAGING ifdef CONFIG_STAGING
@ -9,7 +9,7 @@
endif #CONFIG_STAGING endif #CONFIG_STAGING
# mac80211 test driver # mac80211 test driver
@@ -405,15 +405,15 @@ endif #CONFIG_CRC_ITU_T @@ -406,12 +406,12 @@ endif #CONFIG_CRC_ITU_T
export CONFIG_MWL8K=m export CONFIG_MWL8K=m
# Ethernet drivers go here # Ethernet drivers go here
@ -19,20 +19,15 @@
+# export CONFIG_ATL1=m +# export CONFIG_ATL1=m
+# export CONFIG_ATL2=m +# export CONFIG_ATL2=m
+# export CONFIG_ATL1E=m +# export CONFIG_ATL1E=m
ifdef CONFIG_COMPAT_KERNEL_2_6_28 ifndef CONFIG_COMPAT_KERNEL_2_6_28
-export CONFIG_ATL1C=m -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_ALX=m
+# export CONFIG_ATL1C=n +# export CONFIG_ATL1C=m
+# export CONFIG_ALX=m +# export CONFIG_ALX=m
endif #CONFIG_COMPAT_KERNEL_2_6_28 endif #CONFIG_COMPAT_KERNEL_2_6_28
ifdef CONFIG_WIRELESS_EXT ifdef CONFIG_WIRELESS_EXT
@@ -474,21 +474,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 @@ -472,21 +472,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
# Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER # 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 # it also requires new RNDIS_HOST and CDC_ETHER modules which we add
ifdef CONFIG_COMPAT_KERNEL_2_6_29 ifdef CONFIG_COMPAT_KERNEL_2_6_29

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -176,7 +176,7 @@ export CONFIG_MAC80211_LEDS=y @@ -177,7 +177,7 @@ export CONFIG_MAC80211_LEDS=y
endif #CONFIG_LEDS_TRIGGERS endif #CONFIG_LEDS_TRIGGERS
# enable mesh networking too # enable mesh networking too

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -53,7 +53,7 @@ endif @@ -54,7 +54,7 @@ endif
ifeq ($(KERNEL_VERSION),2) ifeq ($(KERNEL_VERSION),2)
ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_26SUBLEVEL) -ge 27 -a $(KERNEL_26SUBLEVEL) -le 31 && echo yes),yes) ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_26SUBLEVEL) -ge 27 -a $(KERNEL_26SUBLEVEL) -le 31 && echo yes),yes)
ifeq ($(CONFIG_MAC80211),) ifeq ($(CONFIG_MAC80211),)

View File

@ -9,7 +9,7 @@
# export CONFIG_SSB=m # export CONFIG_SSB=m
else else
include $(KLIB_BUILD)/.config include $(KLIB_BUILD)/.config
@@ -303,7 +303,7 @@ export CONFIG_B43=m @@ -304,7 +304,7 @@ export CONFIG_B43=m
export CONFIG_B43_HWRNG=y export CONFIG_B43_HWRNG=y
export CONFIG_B43_PCI_AUTOSELECT=y export CONFIG_B43_PCI_AUTOSELECT=y
ifdef CONFIG_PCMCIA ifdef CONFIG_PCMCIA

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -584,7 +584,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv @@ -582,7 +582,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
ifdef CONFIG_MMC ifdef CONFIG_MMC
# export CONFIG_SSB_SDIOHOST=y # export CONFIG_SSB_SDIOHOST=y

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -309,8 +309,8 @@ ifdef CONFIG_MAC80211_LEDS @@ -310,8 +310,8 @@ ifdef CONFIG_MAC80211_LEDS
export CONFIG_B43_LEDS=y export CONFIG_B43_LEDS=y
endif #CONFIG_MAC80211_LEDS endif #CONFIG_MAC80211_LEDS
export CONFIG_B43_PHY_LP=y export CONFIG_B43_PHY_LP=y

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -384,7 +384,7 @@ export CONFIG_RTL8180=m @@ -385,7 +385,7 @@ export CONFIG_RTL8180=m
export CONFIG_ADM8211=m export CONFIG_ADM8211=m
@ -9,7 +9,7 @@
export CONFIG_RT2400PCI=m export CONFIG_RT2400PCI=m
export CONFIG_RT2500PCI=m export CONFIG_RT2500PCI=m
ifdef CONFIG_CRC_CCITT ifdef CONFIG_CRC_CCITT
@@ -530,7 +530,7 @@ export CONFIG_RT2800USB_RT35XX=y @@ -528,7 +528,7 @@ export CONFIG_RT2800USB_RT35XX=y
export CONFIG_RT2800USB_RT53XX=y export CONFIG_RT2800USB_RT53XX=y
export CONFIG_RT2800USB_UNKNOWN=y export CONFIG_RT2800USB_UNKNOWN=y
endif #CONFIG_CRC_CCITT endif #CONFIG_CRC_CCITT

View File

@ -1,7 +1,7 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -168,7 +168,7 @@ export CONFIG_MAC80211_RC_DEFAULT_MINSTR @@ -169,7 +169,7 @@ export CONFIG_MAC80211_RC_DEFAULT_MINSTR
# This is the one used by our compat-wireless net/mac80211/rate.c # This is the one used by our compat-drivers net/mac80211/rate.c
# in case you have and old kernel which is overriding this to pid. # in case you have and old kernel which is overriding this to pid.
export CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel_ht export CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel_ht
-export CONFIG_MAC80211_RC_PID=y -export CONFIG_MAC80211_RC_PID=y

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -264,7 +264,7 @@ export CONFIG_ATH9K_COMMON=m @@ -265,7 +265,7 @@ export CONFIG_ATH9K_COMMON=m
# as default once we get minstrel properly tested and blessed by # as default once we get minstrel properly tested and blessed by
# our systems engineering team. CCK rates also need to be used # our systems engineering team. CCK rates also need to be used
# for long range considerations. # for long range considerations.

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -281,7 +281,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 @@ -282,7 +282,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
# PCI Drivers # PCI Drivers
ifdef CONFIG_PCI ifdef CONFIG_PCI

View File

@ -1,8 +1,8 @@
--- a/compat/Makefile --- a/compat/Makefile
+++ b/compat/Makefile +++ b/compat/Makefile
@@ -44,8 +44,6 @@ compat-$(CONFIG_COMPAT_KERNEL_3_3) += \ @@ -47,8 +47,6 @@ compat-$(CONFIG_COMPAT_KERNEL_3_3) += \
flow_dissector.o
compat-$(CONFIG_COMPAT_KERNEL_3_4) += compat-3.4.o compat-$(CONFIG_COMPAT_KERNEL_3_4) += compat-3.4.o
compat-$(CONFIG_COMPAT_KERNEL_3_7) += compat-3.7.o
-compat-$(CONFIG_COMPAT_CORDIC) += cordic.o -compat-$(CONFIG_COMPAT_CORDIC) += cordic.o
-compat-$(CONFIG_COMPAT_CRC8) += crc8.o -compat-$(CONFIG_COMPAT_CRC8) += crc8.o

View File

@ -1,6 +1,6 @@
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -266,7 +266,7 @@ export CONFIG_ATH9K_COMMON=m @@ -267,7 +267,7 @@ export CONFIG_ATH9K_COMMON=m
# for long range considerations. # for long range considerations.
# export CONFIG_COMPAT_ATH9K_RATE_CONTROL=y # export CONFIG_COMPAT_ATH9K_RATE_CONTROL=y

View File

@ -10,8 +10,8 @@
+endif +endif
+ +
obj-$(CONFIG_COMPAT_NET_SCH_CODEL) += sch_codel.o obj-$(CONFIG_COMPAT_NET_SCH_CODEL) += sch_codel.o
obj-$(CONFIG_COMPAT_NET_SCH_FQ_CODEL) += sch_fq_codel.o
sch_fq_codel-y = sch_fq_codel_core.o flow_dissector.o
--- a/compat/compat_firmware_class.c --- a/compat/compat_firmware_class.c
+++ b/compat/compat_firmware_class.c +++ b/compat/compat_firmware_class.c
@@ -741,19 +741,16 @@ compat_request_firmware_nowait( @@ -741,19 +741,16 @@ compat_request_firmware_nowait(

View File

@ -1,6 +1,6 @@
--- a/include/linux/compat-3.4.h --- a/include/linux/compat-3.4.h
+++ b/include/linux/compat-3.4.h +++ b/include/linux/compat-3.4.h
@@ -81,6 +81,19 @@ static inline void eth_hw_addr_random(st @@ -112,6 +112,19 @@ static inline void eth_hw_addr_random(st
module_driver(__pci_driver, pci_register_driver, \ module_driver(__pci_driver, pci_register_driver, \
pci_unregister_driver) pci_unregister_driver)

View File

@ -1,9 +1,9 @@
--- a/compat/scripts/gen-compat-config.sh --- a/compat/scripts/gen-compat-config.sh
+++ b/compat/scripts/gen-compat-config.sh +++ b/compat/scripts/gen-compat-config.sh
@@ -62,16 +62,3 @@ fi @@ -66,16 +66,3 @@ if [[ ${CONFIG_COMPAT_KERNEL_2_6_36} = "
if [[ ${CONFIG_COMPAT_KERNEL_2_6_36} = "y" ]]; then
echo "export CONFIG_COMPAT_KFIFO=y" echo "export CONFIG_COMPAT_KFIFO=y"
fi fi
fi
- -
-if [[ ${CONFIG_COMPAT_KERNEL_3_5} = "y" ]]; then -if [[ ${CONFIG_COMPAT_KERNEL_3_5} = "y" ]]; then
- # We don't have 2.6.24 backport support yet for Codel / FQ CoDel - # We don't have 2.6.24 backport support yet for Codel / FQ CoDel

View File

@ -11,16 +11,16 @@
struct pcmcia_cfg_mem { struct pcmcia_cfg_mem {
--- a/compat/compat-2.6.33.c --- a/compat/compat-2.6.33.c
+++ b/compat/compat-2.6.33.c +++ b/compat/compat-2.6.33.c
@@ -11,7 +11,7 @@ @@ -10,7 +10,7 @@
#include <linux/compat.h> #include <linux/compat.h>
#include <linux/autoconf.h>
-#if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE) -#if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE)
+#if 0 +#if 0
/** /**
* pccard_loop_tuple() - loop over tuples in the CIS * pccard_loop_tuple() - loop over tuples in the CIS
@@ -73,7 +73,7 @@ next_entry: @@ -72,7 +72,7 @@ next_entry:
EXPORT_SYMBOL_GPL(pccard_loop_tuple); EXPORT_SYMBOL_GPL(pccard_loop_tuple);
/* Source: drivers/pcmcia/cistpl.c */ /* Source: drivers/pcmcia/cistpl.c */
@ -31,7 +31,7 @@
struct pcmcia_device *p_dev; struct pcmcia_device *p_dev;
--- a/include/linux/compat-2.6.28.h --- a/include/linux/compat-2.6.28.h
+++ b/include/linux/compat-2.6.28.h +++ b/include/linux/compat-2.6.28.h
@@ -48,7 +48,7 @@ typedef u32 phys_addr_t; @@ -49,7 +49,7 @@ typedef u32 phys_addr_t;
}) })
#endif /* From include/asm-generic/bug.h */ #endif /* From include/asm-generic/bug.h */
@ -51,7 +51,7 @@
#include <pcmcia/cs_types.h> #include <pcmcia/cs_types.h>
#include <pcmcia/cistpl.h> #include <pcmcia/cistpl.h>
#include <pcmcia/ds.h> #include <pcmcia/ds.h>
@@ -74,9 +74,9 @@ static inline struct sk_buff *netdev_all @@ -82,9 +82,9 @@ static inline struct sk_buff *netdev_all
return skb; return skb;
} }

View File

@ -22,7 +22,7 @@
* @anchor: anchor the requests are bound to * @anchor: anchor the requests are bound to
--- a/include/linux/compat-2.6.28.h --- a/include/linux/compat-2.6.28.h
+++ b/include/linux/compat-2.6.28.h +++ b/include/linux/compat-2.6.28.h
@@ -73,7 +73,7 @@ int pcmcia_loop_config(struct pcmcia_dev @@ -74,7 +74,7 @@ int pcmcia_loop_config(struct pcmcia_dev
/* USB anchors were added as of 2.6.23 */ /* USB anchors were added as of 2.6.23 */
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)) #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23))
@ -33,7 +33,7 @@
#endif #endif
--- a/config.mk --- a/config.mk
+++ b/config.mk +++ b/config.mk
@@ -512,7 +512,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 @@ -510,7 +510,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29
# This activates a threading fix for usb urb. # This activates a threading fix for usb urb.
# this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351 # this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351
# This fix will be included in some stable releases. # This fix will be included in some stable releases.

View File

@ -1,10 +0,0 @@
--- a/drivers/net/wireless/ath/ath5k/debug.c
+++ b/drivers/net/wireless/ath/ath5k/debug.c
@@ -58,6 +58,7 @@
* THE POSSIBILITY OF SUCH DAMAGES.
*/
+#undef pr_fmt
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
#include <linux/export.h>

View File

@ -1,6 +1,6 @@
--- a/net/mac80211/mesh_pathtbl.c --- a/net/mac80211/mesh_pathtbl.c
+++ b/net/mac80211/mesh_pathtbl.c +++ b/net/mac80211/mesh_pathtbl.c
@@ -817,7 +817,6 @@ static void table_flush_by_iface(struct @@ -813,7 +813,6 @@ static void table_flush_by_iface(struct
struct hlist_node *p; struct hlist_node *p;
int i; int i;

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +1,6 @@
--- a/net/wireless/reg.c --- a/net/wireless/reg.c
+++ b/net/wireless/reg.c +++ b/net/wireless/reg.c
@@ -1702,6 +1702,8 @@ void regulatory_hint_11d(struct wiphy *w @@ -1790,6 +1790,8 @@ void regulatory_hint_11d(struct wiphy *w
enum environment_cap env = ENVIRON_ANY; enum environment_cap env = ENVIRON_ANY;
struct regulatory_request *request; struct regulatory_request *request;
@ -9,7 +9,7 @@
mutex_lock(&reg_mutex); mutex_lock(&reg_mutex);
if (unlikely(!last_request)) if (unlikely(!last_request))
@@ -1937,6 +1939,8 @@ static void restore_regulatory_settings( @@ -2024,6 +2026,8 @@ static void restore_regulatory_settings(
void regulatory_hint_disconnect(void) void regulatory_hint_disconnect(void)
{ {

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c --- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c +++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
@@ -88,13 +88,8 @@ ath5k_add_interface(struct ieee80211_hw @@ -89,13 +89,8 @@ ath5k_add_interface(struct ieee80211_hw
goto end; goto end;
} }
@ -36,7 +36,7 @@
intval /= ATH_BCBUF; /* staggered multi-bss beacons */ intval /= ATH_BCBUF; /* staggered multi-bss beacons */
if (intval < 15) if (intval < 15)
ATH5K_WARN(ah, "intval %u is too low, min 15\n", ATH5K_WARN(ah, "intval %u is too low, min 15\n",
@@ -2429,6 +2429,7 @@ static const struct ieee80211_iface_limi @@ -2427,6 +2427,7 @@ static const struct ieee80211_iface_limi
#ifdef CONFIG_MAC80211_MESH #ifdef CONFIG_MAC80211_MESH
BIT(NL80211_IFTYPE_MESH_POINT) | BIT(NL80211_IFTYPE_MESH_POINT) |
#endif #endif

View File

@ -1,6 +1,6 @@
--- a/net/mac80211/main.c --- a/net/mac80211/main.c
+++ b/net/mac80211/main.c +++ b/net/mac80211/main.c
@@ -787,17 +787,11 @@ int ieee80211_register_hw(struct ieee802 @@ -794,17 +794,11 @@ int ieee80211_register_hw(struct ieee802
*/ */
for (i = 0; i < hw->wiphy->n_iface_combinations; i++) { for (i = 0; i < hw->wiphy->n_iface_combinations; i++) {
const struct ieee80211_iface_combination *c; const struct ieee80211_iface_combination *c;

View File

@ -11,7 +11,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
--- a/drivers/net/wireless/ath/ath5k/debug.c --- a/drivers/net/wireless/ath/ath5k/debug.c
+++ b/drivers/net/wireless/ath/ath5k/debug.c +++ b/drivers/net/wireless/ath/ath5k/debug.c
@@ -812,6 +812,89 @@ static const struct file_operations fops @@ -813,6 +813,89 @@ static const struct file_operations fops
.llseek = default_llseek, .llseek = default_llseek,
}; };
@ -101,7 +101,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
/* debugfs: queues etc */ /* debugfs: queues etc */
@@ -903,6 +986,9 @@ ath5k_debug_init_device(struct ath5k_hw @@ -904,6 +987,9 @@ ath5k_debug_init_device(struct ath5k_hw
debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah, debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah,
&fops_beacon); &fops_beacon);

View File

@ -1,15 +1,15 @@
--- a/drivers/net/wireless/ath/ath9k/eeprom_def.c --- a/drivers/net/wireless/ath/ath9k/eeprom_def.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_def.c
@@ -267,7 +267,7 @@ static int ath9k_hw_def_check_eeprom(str @@ -266,7 +266,7 @@ static int ath9k_hw_def_check_eeprom(str
struct ar5416_eeprom_def *eep = {
(struct ar5416_eeprom_def *) &ah->eeprom.def; struct ar5416_eeprom_def *eep = &ah->eeprom.def;
struct ath_common *common = ath9k_hw_common(ah); struct ath_common *common = ath9k_hw_common(ah);
- u16 *eepdata, temp, magic, magic2; - u16 *eepdata, temp, magic, magic2;
+ u16 *eepdata, temp, magic; + u16 *eepdata, temp, magic;
u32 sum = 0, el; u32 sum = 0, el;
bool need_swap = false; bool need_swap = false;
int i, addr, size; int i, addr, size;
@@ -277,27 +277,16 @@ static int ath9k_hw_def_check_eeprom(str @@ -276,27 +276,16 @@ static int ath9k_hw_def_check_eeprom(str
return false; return false;
} }
@ -49,7 +49,7 @@
--- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c --- a/drivers/net/wireless/ath/ath9k/eeprom_4k.c
+++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c +++ b/drivers/net/wireless/ath/ath9k/eeprom_4k.c
@@ -196,7 +196,7 @@ static int ath9k_hw_4k_check_eeprom(stru @@ -195,7 +195,7 @@ static int ath9k_hw_4k_check_eeprom(stru
int i, addr; int i, addr;
@ -71,7 +71,7 @@
ath_err(common, "Reading Magic # failed\n"); ath_err(common, "Reading Magic # failed\n");
--- a/drivers/net/wireless/ath/ath9k/hw.h --- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h +++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -704,6 +704,7 @@ enum ath_cal_list { @@ -705,6 +705,7 @@ enum ath_cal_list {
#define AH_USE_EEPROM 0x1 #define AH_USE_EEPROM 0x1
#define AH_UNPLUGGED 0x2 /* The card has been physically removed. */ #define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
#define AH_FASTCC 0x4 #define AH_FASTCC 0x4

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c --- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1951,8 +1951,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st @@ -1949,8 +1949,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
REG_WRITE(ah, AR_OBS, 8); REG_WRITE(ah, AR_OBS, 8);
if (ah->config.rx_intr_mitigation) { if (ah->config.rx_intr_mitigation) {

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/ath9k.h --- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -658,6 +658,7 @@ struct ath_softc { @@ -659,6 +659,7 @@ struct ath_softc {
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
struct device *dev; struct device *dev;
@ -8,7 +8,7 @@
struct survey_info *cur_survey; struct survey_info *cur_survey;
struct survey_info survey[ATH9K_NUM_CHANNELS]; struct survey_info survey[ATH9K_NUM_CHANNELS];
@@ -733,6 +734,7 @@ struct ath_softc { @@ -734,6 +735,7 @@ struct ath_softc {
#endif #endif
}; };
@ -80,7 +80,7 @@
} }
--- a/drivers/net/wireless/ath/ath9k/main.c --- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1097,7 +1097,7 @@ static void ath9k_disable_ps(struct ath_ @@ -1127,7 +1127,7 @@ static void ath9k_disable_ps(struct ath_
ath_dbg(common, PS, "PowerSave disabled\n"); ath_dbg(common, PS, "PowerSave disabled\n");
} }
@ -89,7 +89,7 @@
{ {
struct ath_softc *sc = hw->priv; struct ath_softc *sc = hw->priv;
struct ath_hw *ah = sc->sc_ah; struct ath_hw *ah = sc->sc_ah;
@@ -1151,9 +1151,11 @@ static int ath9k_config(struct ieee80211 @@ -1181,9 +1181,11 @@ static int ath9k_config(struct ieee80211
if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) { if ((changed & IEEE80211_CONF_CHANGE_CHANNEL) || reset_channel) {
struct ieee80211_channel *curchan = hw->conf.channel; struct ieee80211_channel *curchan = hw->conf.channel;
@ -101,7 +101,7 @@
if (ah->curchan) if (ah->curchan)
old_pos = ah->curchan - &ah->channels[0]; old_pos = ah->curchan - &ah->channels[0];
@@ -1196,7 +1198,23 @@ static int ath9k_config(struct ieee80211 @@ -1226,7 +1228,23 @@ static int ath9k_config(struct ieee80211
memset(&sc->survey[pos], 0, sizeof(struct survey_info)); memset(&sc->survey[pos], 0, sizeof(struct survey_info));
} }

View File

@ -1,6 +1,6 @@
--- a/net/mac80211/iface.c --- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c +++ b/net/mac80211/iface.c
@@ -938,6 +938,7 @@ static const struct net_device_ops ieee8 @@ -964,6 +964,7 @@ static const struct net_device_ops ieee8
static void ieee80211_if_setup(struct net_device *dev) static void ieee80211_if_setup(struct net_device *dev)
{ {
ether_setup(dev); ether_setup(dev);

View File

@ -1,6 +1,6 @@
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/include/net/mac80211.h +++ b/include/net/mac80211.h
@@ -835,7 +835,7 @@ enum ieee80211_smps_mode { @@ -863,7 +863,7 @@ enum ieee80211_smps_mode {
*/ */
struct ieee80211_conf { struct ieee80211_conf {
u32 flags; u32 flags;
@ -11,7 +11,7 @@
u16 listen_interval; u16 listen_interval;
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -1957,7 +1957,7 @@ static int ieee80211_get_tx_power(struct @@ -1969,7 +1969,7 @@ static int ieee80211_get_tx_power(struct
{ {
struct ieee80211_local *local = wiphy_priv(wiphy); struct ieee80211_local *local = wiphy_priv(wiphy);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/main.c --- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1221,6 +1221,8 @@ int ath9k_config(struct ieee80211_hw *hw @@ -1251,6 +1251,8 @@ int ath9k_config(struct ieee80211_hw *hw
return -EINVAL; return -EINVAL;
} }
@ -9,7 +9,7 @@
/* /*
* The most recent snapshot of channel->noisefloor for the old * The most recent snapshot of channel->noisefloor for the old
* channel is only available after the hardware reset. Copy it to * channel is only available after the hardware reset. Copy it to
@@ -1235,6 +1237,7 @@ int ath9k_config(struct ieee80211_hw *hw @@ -1265,6 +1267,7 @@ int ath9k_config(struct ieee80211_hw *hw
sc->config.txpowlimit = 2 * conf->power_level; sc->config.txpowlimit = 2 * conf->power_level;
ath9k_cmn_update_txpow(ah, sc->curtxpow, ath9k_cmn_update_txpow(ah, sc->curtxpow,
sc->config.txpowlimit, &sc->curtxpow); sc->config.txpowlimit, &sc->curtxpow);

View File

@ -1,6 +1,6 @@
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/include/net/mac80211.h +++ b/include/net/mac80211.h
@@ -706,6 +706,9 @@ enum mac80211_rx_flags { @@ -729,6 +729,9 @@ enum mac80211_rx_flags {
* @signal: signal strength when receiving this frame, either in dBm, in dB or * @signal: signal strength when receiving this frame, either in dBm, in dB or
* unspecified depending on the hardware capabilities flags * unspecified depending on the hardware capabilities flags
* @IEEE80211_HW_SIGNAL_* * @IEEE80211_HW_SIGNAL_*
@ -10,16 +10,15 @@
* @antenna: antenna used * @antenna: antenna used
* @rate_idx: index of data rate into band's supported rates or MCS index if * @rate_idx: index of data rate into band's supported rates or MCS index if
* HT rates are use (RX_FLAG_HT) * HT rates are use (RX_FLAG_HT)
@@ -722,6 +725,9 @@ struct ieee80211_rx_status { @@ -749,6 +752,8 @@ struct ieee80211_rx_status {
u8 band; u8 band;
u8 antenna; u8 antenna;
s8 signal; s8 signal;
+
+ u8 chains; + u8 chains;
+ s8 chain_signal[4]; + s8 chain_signal[4];
u8 ampdu_delimiter_crc;
}; };
/**
--- a/net/mac80211/sta_info.h --- a/net/mac80211/sta_info.h
+++ b/net/mac80211/sta_info.h +++ b/net/mac80211/sta_info.h
@@ -325,6 +325,11 @@ struct sta_info { @@ -325,6 +325,11 @@ struct sta_info {
@ -36,7 +35,7 @@
--- a/net/mac80211/rx.c --- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c +++ b/net/mac80211/rx.c
@@ -1231,6 +1231,7 @@ ieee80211_rx_h_sta_process(struct ieee80 @@ -1271,6 +1271,7 @@ ieee80211_rx_h_sta_process(struct ieee80
struct sk_buff *skb = rx->skb; struct sk_buff *skb = rx->skb;
struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb); struct ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data; struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
@ -44,7 +43,7 @@
if (!sta) if (!sta)
return RX_CONTINUE; return RX_CONTINUE;
@@ -1275,6 +1276,19 @@ ieee80211_rx_h_sta_process(struct ieee80 @@ -1315,6 +1316,19 @@ ieee80211_rx_h_sta_process(struct ieee80
ewma_add(&sta->avg_signal, -status->signal); ewma_add(&sta->avg_signal, -status->signal);
} }
@ -77,7 +76,7 @@
kfree(sta); kfree(sta);
--- a/include/net/cfg80211.h --- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h +++ b/include/net/cfg80211.h
@@ -546,6 +546,8 @@ struct station_parameters { @@ -549,6 +549,8 @@ struct station_parameters {
* @STATION_INFO_STA_FLAGS: @sta_flags filled * @STATION_INFO_STA_FLAGS: @sta_flags filled
* @STATION_INFO_BEACON_LOSS_COUNT: @beacon_loss_count filled * @STATION_INFO_BEACON_LOSS_COUNT: @beacon_loss_count filled
* @STATION_INFO_T_OFFSET: @t_offset filled * @STATION_INFO_T_OFFSET: @t_offset filled
@ -86,7 +85,7 @@
*/ */
enum station_info_flags { enum station_info_flags {
STATION_INFO_INACTIVE_TIME = 1<<0, STATION_INFO_INACTIVE_TIME = 1<<0,
@@ -569,6 +571,8 @@ enum station_info_flags { @@ -572,6 +574,8 @@ enum station_info_flags {
STATION_INFO_STA_FLAGS = 1<<18, STATION_INFO_STA_FLAGS = 1<<18,
STATION_INFO_BEACON_LOSS_COUNT = 1<<19, STATION_INFO_BEACON_LOSS_COUNT = 1<<19,
STATION_INFO_T_OFFSET = 1<<20, STATION_INFO_T_OFFSET = 1<<20,
@ -95,7 +94,7 @@
}; };
/** /**
@@ -652,6 +656,9 @@ struct sta_bss_parameters { @@ -655,6 +659,9 @@ struct sta_bss_parameters {
* For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. * For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.
* @signal_avg: Average signal strength, type depends on the wiphy's signal_type. * @signal_avg: Average signal strength, type depends on the wiphy's signal_type.
* For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_. * For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.
@ -105,7 +104,7 @@
* @txrate: current unicast bitrate from this station * @txrate: current unicast bitrate from this station
* @rxrate: current unicast bitrate to this station * @rxrate: current unicast bitrate to this station
* @rx_packets: packets received from this station * @rx_packets: packets received from this station
@@ -684,6 +691,11 @@ struct station_info { @@ -687,6 +694,11 @@ struct station_info {
u8 plink_state; u8 plink_state;
s8 signal; s8 signal;
s8 signal_avg; s8 signal_avg;
@ -249,7 +248,7 @@
RX_SAMP_DBG(rate) = rs->rs_rate; RX_SAMP_DBG(rate) = rs->rs_rate;
--- a/include/linux/nl80211.h --- a/include/linux/nl80211.h
+++ b/include/linux/nl80211.h +++ b/include/linux/nl80211.h
@@ -1734,6 +1734,8 @@ enum nl80211_sta_bss_param { @@ -1760,6 +1760,8 @@ enum nl80211_sta_bss_param {
* @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update. * @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_BEACON_LOSS: count of times beacon loss was detected (u32)
* @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64) * @NL80211_STA_INFO_T_OFFSET: timing offset with respect to this STA (s64)
@ -258,7 +257,7 @@
* @__NL80211_STA_INFO_AFTER_LAST: internal * @__NL80211_STA_INFO_AFTER_LAST: internal
* @NL80211_STA_INFO_MAX: highest possible station info attribute * @NL80211_STA_INFO_MAX: highest possible station info attribute
*/ */
@@ -1758,6 +1760,8 @@ enum nl80211_sta_info { @@ -1784,6 +1786,8 @@ enum nl80211_sta_info {
NL80211_STA_INFO_STA_FLAGS, NL80211_STA_INFO_STA_FLAGS,
NL80211_STA_INFO_BEACON_LOSS, NL80211_STA_INFO_BEACON_LOSS,
NL80211_STA_INFO_T_OFFSET, NL80211_STA_INFO_T_OFFSET,
@ -269,7 +268,7 @@
__NL80211_STA_INFO_AFTER_LAST, __NL80211_STA_INFO_AFTER_LAST,
--- a/net/wireless/nl80211.c --- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c +++ b/net/wireless/nl80211.c
@@ -2745,6 +2745,32 @@ nla_put_failure: @@ -2769,6 +2769,32 @@ nla_put_failure:
return false; return false;
} }
@ -302,7 +301,7 @@
static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq, static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
int flags, int flags,
struct cfg80211_registered_device *rdev, struct cfg80211_registered_device *rdev,
@@ -2806,6 +2832,18 @@ static int nl80211_send_station(struct s @@ -2830,6 +2856,18 @@ static int nl80211_send_station(struct s
default: default:
break; break;
} }
@ -323,7 +322,7 @@
NL80211_STA_INFO_TX_BITRATE)) NL80211_STA_INFO_TX_BITRATE))
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -355,6 +355,7 @@ static void sta_set_sinfo(struct sta_inf @@ -367,6 +367,7 @@ static void sta_set_sinfo(struct sta_inf
struct ieee80211_sub_if_data *sdata = sta->sdata; struct ieee80211_sub_if_data *sdata = sta->sdata;
struct ieee80211_local *local = sdata->local; struct ieee80211_local *local = sdata->local;
struct timespec uptime; struct timespec uptime;
@ -331,7 +330,7 @@
sinfo->generation = sdata->local->sta_generation; sinfo->generation = sdata->local->sta_generation;
@@ -394,6 +395,17 @@ static void sta_set_sinfo(struct sta_inf @@ -406,6 +407,17 @@ static void sta_set_sinfo(struct sta_inf
sinfo->signal = (s8)sta->last_signal; sinfo->signal = (s8)sta->last_signal;
sinfo->signal_avg = (s8) -ewma_read(&sta->avg_signal); sinfo->signal_avg = (s8) -ewma_read(&sta->avg_signal);
} }

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/ath9k.h --- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -537,6 +537,9 @@ struct ath9k_wow_pattern { @@ -538,6 +538,9 @@ struct ath9k_wow_pattern {
#ifdef CONFIG_MAC80211_LEDS #ifdef CONFIG_MAC80211_LEDS
void ath_init_leds(struct ath_softc *sc); void ath_init_leds(struct ath_softc *sc);
void ath_deinit_leds(struct ath_softc *sc); void ath_deinit_leds(struct ath_softc *sc);
@ -10,7 +10,7 @@
#else #else
static inline void ath_init_leds(struct ath_softc *sc) static inline void ath_init_leds(struct ath_softc *sc)
{ {
@@ -654,6 +657,13 @@ struct ath9k_vif_iter_data { @@ -655,6 +658,13 @@ struct ath9k_vif_iter_data {
int nadhocs; /* number of adhoc vifs */ int nadhocs; /* number of adhoc vifs */
}; };
@ -24,7 +24,7 @@
struct ath_softc { struct ath_softc {
struct ieee80211_hw *hw; struct ieee80211_hw *hw;
struct device *dev; struct device *dev;
@@ -695,9 +705,8 @@ struct ath_softc { @@ -696,9 +706,8 @@ struct ath_softc {
struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS]; struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
#ifdef CONFIG_MAC80211_LEDS #ifdef CONFIG_MAC80211_LEDS

View File

@ -1,6 +1,6 @@
--- a/net/mac80211/ieee80211_i.h --- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h +++ b/net/mac80211/ieee80211_i.h
@@ -710,6 +710,8 @@ struct ieee80211_sub_if_data { @@ -715,6 +715,8 @@ struct ieee80211_sub_if_data {
/* bitmap of allowed (non-MCS) rate indexes for rate control */ /* bitmap of allowed (non-MCS) rate indexes for rate control */
u32 rc_rateidx_mask[IEEE80211_NUM_BANDS]; u32 rc_rateidx_mask[IEEE80211_NUM_BANDS];
@ -11,7 +11,7 @@
union { union {
--- a/net/mac80211/cfg.c --- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c
@@ -2136,9 +2136,20 @@ static int ieee80211_set_bitrate_mask(st @@ -2149,9 +2149,20 @@ static int ieee80211_set_bitrate_mask(st
} }
for (i = 0; i < IEEE80211_NUM_BANDS; i++) { for (i = 0; i < IEEE80211_NUM_BANDS; i++) {
@ -34,7 +34,7 @@
return 0; return 0;
--- a/include/net/mac80211.h --- a/include/net/mac80211.h
+++ b/include/net/mac80211.h +++ b/include/net/mac80211.h
@@ -3670,7 +3670,7 @@ void ieee80211_send_bar(struct ieee80211 @@ -3718,7 +3718,7 @@ void ieee80211_send_bar(struct ieee80211
* (deprecated; this will be removed once drivers get updated to use * (deprecated; this will be removed once drivers get updated to use
* rate_idx_mask) * rate_idx_mask)
* @rate_idx_mask: user-requested (legacy) rate 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 * @bss: whether this frame is sent out in AP or IBSS mode
*/ */
struct ieee80211_tx_rate_control { struct ieee80211_tx_rate_control {
@@ -3682,7 +3682,7 @@ struct ieee80211_tx_rate_control { @@ -3730,7 +3730,7 @@ struct ieee80211_tx_rate_control {
bool rts, short_preamble; bool rts, short_preamble;
u8 max_rate_idx; u8 max_rate_idx;
u32 rate_idx_mask; u32 rate_idx_mask;
@ -59,17 +59,17 @@
else else
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;
- memcpy(txrc.rate_idx_mcs_mask, - memcpy(txrc.rate_idx_mcs_mask,
- tx->sdata->rc_rateidx_mcs_mask[tx->channel->band], - tx->sdata->rc_rateidx_mcs_mask[info->band],
- sizeof(txrc.rate_idx_mcs_mask)); - sizeof(txrc.rate_idx_mcs_mask));
+ +
+ if (tx->sdata->rc_has_mcs_mask[tx->channel->band]) + if (tx->sdata->rc_has_mcs_mask[info->band])
+ txrc.rate_idx_mcs_mask = + txrc.rate_idx_mcs_mask =
+ tx->sdata->rc_rateidx_mcs_mask[tx->channel->band]; + tx->sdata->rc_rateidx_mcs_mask[info->band];
+ +
txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP || txrc.bss = (tx->sdata->vif.type == NL80211_IFTYPE_AP ||
tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT || tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
tx->sdata->vif.type == NL80211_IFTYPE_ADHOC); tx->sdata->vif.type == NL80211_IFTYPE_ADHOC);
@@ -2464,8 +2466,6 @@ struct sk_buff *ieee80211_beacon_get_tim @@ -2447,8 +2449,6 @@ struct sk_buff *ieee80211_beacon_get_tim
txrc.max_rate_idx = -1; txrc.max_rate_idx = -1;
else else
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1; txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/main.c --- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c +++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1057,6 +1057,7 @@ static void ath9k_remove_interface(struc @@ -1087,6 +1087,7 @@ static void ath9k_remove_interface(struc
ath9k_calculate_summary_state(hw, NULL); ath9k_calculate_summary_state(hw, NULL);
mutex_unlock(&sc->mutex); mutex_unlock(&sc->mutex);
@ -8,7 +8,7 @@
ath9k_ps_restore(sc); ath9k_ps_restore(sc);
} }
@@ -1109,7 +1110,8 @@ int ath9k_config(struct ieee80211_hw *hw @@ -1139,7 +1140,8 @@ int ath9k_config(struct ieee80211_hw *hw
mutex_lock(&sc->mutex); mutex_lock(&sc->mutex);
if (changed & IEEE80211_CONF_CHANGE_IDLE) { if (changed & IEEE80211_CONF_CHANGE_IDLE) {

View File

@ -0,0 +1,139 @@
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1678,6 +1678,50 @@ static const struct file_operations fops
};
+static ssize_t read_file_diag(struct file *file, char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct ath_softc *sc = file->private_data;
+ struct ath_hw *ah = sc->sc_ah;
+ char buf[32];
+ unsigned int len;
+
+ len = sprintf(buf, "0x%08lx\n", ah->diag);
+ return simple_read_from_buffer(user_buf, count, ppos, buf, len);
+}
+
+static ssize_t write_file_diag(struct file *file, const char __user *user_buf,
+ size_t count, loff_t *ppos)
+{
+ struct ath_softc *sc = file->private_data;
+ struct ath_hw *ah = sc->sc_ah;
+ unsigned long diag;
+ char buf[32];
+ ssize_t len;
+
+ len = min(count, sizeof(buf) - 1);
+ if (copy_from_user(buf, user_buf, len))
+ return -EFAULT;
+
+ buf[len] = '\0';
+ if (strict_strtoul(buf, 0, &diag))
+ return -EINVAL;
+
+ ah->diag = diag;
+ ath9k_hw_update_diag(ah);
+
+ return count;
+}
+
+static const struct file_operations fops_diag = {
+ .read = read_file_diag,
+ .write = write_file_diag,
+ .open = simple_open,
+ .owner = THIS_MODULE,
+ .llseek = default_llseek,
+};
+
+
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -1760,5 +1804,8 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
sc, &fops_chanbw);
+ debugfs_create_file("diag", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
+ sc, &fops_diag);
+
return 0;
}
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -498,6 +498,12 @@ enum {
ATH9K_RESET_COLD,
};
+enum {
+ ATH_DIAG_DISABLE_RX,
+ ATH_DIAG_DISABLE_TX,
+ ATH_DIAG_TRIGGER_ERROR,
+};
+
struct ath9k_hw_version {
u32 magic;
u16 devid;
@@ -741,6 +747,8 @@ struct ath_hw {
u32 rfkill_polarity;
u32 ah_flags;
+ unsigned long diag;
+
bool htc_reset_init;
enum nl80211_iftype opmode;
@@ -1007,6 +1015,7 @@ void ath9k_hw_set_sta_beacon_timers(stru
bool ath9k_hw_check_alive(struct ath_hw *ah);
bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode);
+void ath9k_hw_update_diag(struct ath_hw *ah);
#ifdef CONFIG_ATH9K_DEBUGFS
void ath9k_debug_sync_cause(struct ath_common *common, u32 sync_cause);
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1749,6 +1749,20 @@ fail:
return -EINVAL;
}
+void ath9k_hw_update_diag(struct ath_hw *ah)
+{
+ if (test_bit(ATH_DIAG_DISABLE_RX, &ah->diag))
+ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_DIS);
+ else
+ REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_DIS);
+
+ if (test_bit(ATH_DIAG_DISABLE_TX, &ah->diag))
+ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_LOOP_BACK);
+ else
+ REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_LOOP_BACK);
+}
+EXPORT_SYMBOL(ath9k_hw_update_diag);
+
int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
struct ath9k_hw_cal_data *caldata, bool fastcc)
{
@@ -2026,6 +2040,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
}
ath9k_hw_apply_gpio_override(ah);
+ ath9k_hw_update_diag(ah);
return 0;
}
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -476,6 +476,11 @@ irqreturn_t ath_isr(int irq, void *dev)
ath9k_hw_getisr(ah, &status); /* NB: clears ISR too */
status &= ah->imask; /* discard unasked-for bits */
+ if (test_bit(ATH_DIAG_TRIGGER_ERROR, &ah->diag)) {
+ status |= ATH9K_INT_FATAL;
+ clear_bit(ATH_DIAG_TRIGGER_ERROR, &ah->diag);
+ }
+
/*
* If there are no status bits set, then this interrupt was not
* for me (should have been caught above).

View File

@ -1,12 +0,0 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -983,9 +983,6 @@ static void ath9k_hw_init_interrupt_mask
else
imr_reg |= AR_IMR_TXOK;
- if (opmode == NL80211_IFTYPE_AP)
- imr_reg |= AR_IMR_MIB;
-
ENABLE_REGWRITE_BUFFER(ah);
REG_WRITE(ah, AR_IMR, imr_reg);

View File

@ -1,32 +0,0 @@
--- a/net/mac80211/status.c
+++ b/net/mac80211/status.c
@@ -517,6 +517,8 @@ void ieee80211_tx_status(struct ieee8021
if (info->flags & IEEE80211_TX_INTFL_NL80211_FRAME_TX) {
u64 cookie = (unsigned long)skb;
+ bool found = false;
+
acked = info->flags & IEEE80211_TX_STAT_ACK;
/*
@@ -524,8 +526,18 @@ void ieee80211_tx_status(struct ieee8021
* we cannot use skb->dev->ieee80211_ptr
*/
- if (ieee80211_is_nullfunc(hdr->frame_control) ||
- ieee80211_is_qos_nullfunc(hdr->frame_control))
+ list_for_each_entry_rcu(sdata, &local->interfaces, list) {
+ if (skb->dev != sdata->dev)
+ continue;
+
+ found = true;
+ break;
+ }
+
+ if (!found)
+ skb->dev = NULL;
+ else if (ieee80211_is_nullfunc(hdr->frame_control) ||
+ ieee80211_is_qos_nullfunc(hdr->frame_control))
cfg80211_probe_status(skb->dev, hdr->addr1,
cookie, acked, GFP_ATOMIC);
else

View File

@ -186,7 +186,7 @@
obj-$(CONFIG_RT2X00_LIB_PCI) += rt2x00pci.o obj-$(CONFIG_RT2X00_LIB_PCI) += rt2x00pci.o
--- a/drivers/net/wireless/rt2x00/rt2800pci.c --- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -84,20 +84,10 @@ static void rt2800pci_mcu_status(struct @@ -89,20 +89,10 @@ static void rt2800pci_mcu_status(struct
rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0);
} }
@ -208,7 +208,7 @@
#ifdef CONFIG_PCI #ifdef CONFIG_PCI
static void rt2800pci_eepromregister_read(struct eeprom_93cx6 *eeprom) static void rt2800pci_eepromregister_read(struct eeprom_93cx6 *eeprom)
@@ -317,6 +307,20 @@ static int rt2800pci_write_firmware(stru @@ -322,6 +312,20 @@ static int rt2800pci_write_firmware(stru
} }
/* /*
@ -229,7 +229,7 @@
* Initialization functions. * Initialization functions.
*/ */
static bool rt2800pci_get_entry_state(struct queue_entry *entry) static bool rt2800pci_get_entry_state(struct queue_entry *entry)
@@ -1159,6 +1163,7 @@ static const struct rt2x00lib_ops rt2800 @@ -1033,6 +1037,7 @@ static const struct rt2x00lib_ops rt2800
.get_firmware_name = rt2800pci_get_firmware_name, .get_firmware_name = rt2800pci_get_firmware_name,
.check_firmware = rt2800_check_firmware, .check_firmware = rt2800_check_firmware,
.load_firmware = rt2800_load_firmware, .load_firmware = rt2800_load_firmware,

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800pci.c --- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c +++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -84,7 +84,7 @@ static void rt2800pci_mcu_status(struct @@ -89,7 +89,7 @@ static void rt2800pci_mcu_status(struct
rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); rt2x00pci_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0);
} }
@ -9,10 +9,10 @@
{ {
memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE); memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE);
} }
@@ -974,8 +974,9 @@ static int rt2800pci_validate_eeprom(str @@ -976,8 +976,9 @@ static irqreturn_t rt2800pci_interrupt(i
/*
* Read EEPROM into buffer
*/ */
static void rt2800pci_read_eeprom(struct rt2x00_dev *rt2x00dev)
{
- if (rt2x00_is_soc(rt2x00dev)) - if (rt2x00_is_soc(rt2x00dev))
- rt2800pci_read_eeprom_soc(rt2x00dev); - rt2800pci_read_eeprom_soc(rt2x00dev);
+ if (rt2x00_is_soc(rt2x00dev) || + if (rt2x00_is_soc(rt2x00dev) ||

View File

@ -41,7 +41,7 @@
* Interrupt context handlers. * Interrupt context handlers.
--- a/drivers/net/wireless/rt2x00/rt61pci.c --- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c +++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2393,6 +2393,7 @@ static int rt61pci_validate_eeprom(struc @@ -2392,6 +2392,7 @@ static int rt61pci_validate_eeprom(struc
u32 reg; u32 reg;
u16 word; u16 word;
u8 *mac; u8 *mac;
@ -49,7 +49,7 @@
s8 value; s8 value;
rt2x00pci_register_read(rt2x00dev, E2PROM_CSR, &reg); rt2x00pci_register_read(rt2x00dev, E2PROM_CSR, &reg);
@@ -2413,7 +2414,11 @@ static int rt61pci_validate_eeprom(struc @@ -2412,7 +2413,11 @@ static int rt61pci_validate_eeprom(struc
/* /*
* Start validation of the data that has been read. * Start validation of the data that has been read.
*/ */
@ -59,5 +59,5 @@
+ memcpy(mac, pdata_mac, 6); + memcpy(mac, pdata_mac, 6);
+ +
if (!is_valid_ether_addr(mac)) { if (!is_valid_ether_addr(mac)) {
random_ether_addr(mac); eth_random_addr(mac);
EEPROM(rt2x00dev, "MAC: %pM\n", mac); EEPROM(rt2x00dev, "MAC: %pM\n", mac);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c --- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c +++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -1547,6 +1547,7 @@ void rt2800_config_ant(struct rt2x00_dev @@ -1615,6 +1615,7 @@ void rt2800_config_ant(struct rt2x00_dev
case 1: case 1:
if (rt2x00_rt(rt2x00dev, RT3070) || if (rt2x00_rt(rt2x00dev, RT3070) ||
rt2x00_rt(rt2x00dev, RT3090) || rt2x00_rt(rt2x00dev, RT3090) ||
@ -8,7 +8,7 @@
rt2x00_rt(rt2x00dev, RT3390)) { rt2x00_rt(rt2x00dev, RT3390)) {
rt2x00_eeprom_read(rt2x00dev, rt2x00_eeprom_read(rt2x00dev,
EEPROM_NIC_CONF1, &eeprom); EEPROM_NIC_CONF1, &eeprom);
@@ -1985,6 +1986,58 @@ static void rt2800_config_channel_rf3290 @@ -2053,6 +2054,58 @@ static void rt2800_config_channel_rf3290
} }
} }
@ -67,7 +67,7 @@
static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev, static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev,
struct ieee80211_conf *conf, struct ieee80211_conf *conf,
struct rf_channel *rf, struct rf_channel *rf,
@@ -2114,6 +2167,9 @@ static void rt2800_config_channel(struct @@ -2182,6 +2235,9 @@ static void rt2800_config_channel(struct
case RF3290: case RF3290:
rt2800_config_channel_rf3290(rt2x00dev, conf, rf, info); rt2800_config_channel_rf3290(rt2x00dev, conf, rf, info);
break; break;
@ -77,7 +77,7 @@
case RF5360: case RF5360:
case RF5370: case RF5370:
case RF5372: case RF5372:
@@ -2126,6 +2182,7 @@ static void rt2800_config_channel(struct @@ -2194,6 +2250,7 @@ static void rt2800_config_channel(struct
} }
if (rt2x00_rf(rt2x00dev, RF3290) || if (rt2x00_rf(rt2x00dev, RF3290) ||
@ -85,7 +85,7 @@
rt2x00_rf(rt2x00dev, RF5360) || rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) || rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) || rt2x00_rf(rt2x00dev, RF5372) ||
@@ -2144,10 +2201,20 @@ static void rt2800_config_channel(struct @@ -2212,10 +2269,20 @@ static void rt2800_config_channel(struct
/* /*
* Change BBP settings * Change BBP settings
*/ */
@ -110,7 +110,7 @@
if (rf->channel <= 14) { if (rf->channel <= 14) {
if (!rt2x00_rt(rt2x00dev, RT5390) && if (!rt2x00_rt(rt2x00dev, RT5390) &&
@@ -2242,6 +2309,16 @@ static void rt2800_config_channel(struct @@ -2310,6 +2377,16 @@ static void rt2800_config_channel(struct
rt2800_register_read(rt2x00dev, CH_IDLE_STA, &reg); rt2800_register_read(rt2x00dev, CH_IDLE_STA, &reg);
rt2800_register_read(rt2x00dev, CH_BUSY_STA, &reg); rt2800_register_read(rt2x00dev, CH_BUSY_STA, &reg);
rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, &reg); rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, &reg);
@ -127,7 +127,7 @@
} }
static int rt2800_get_gain_calibration_delta(struct rt2x00_dev *rt2x00dev) static int rt2800_get_gain_calibration_delta(struct rt2x00_dev *rt2x00dev)
@@ -2893,11 +2970,15 @@ static int rt2800_init_registers(struct @@ -2961,11 +3038,15 @@ static int rt2800_init_registers(struct
if (rt2x00_rt(rt2x00dev, RT3071) || if (rt2x00_rt(rt2x00dev, RT3071) ||
rt2x00_rt(rt2x00dev, RT3090) || rt2x00_rt(rt2x00dev, RT3090) ||
rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3290) ||
@ -143,7 +143,7 @@
else else
rt2800_register_write(rt2x00dev, TX_SW_CFG0, rt2800_register_write(rt2x00dev, TX_SW_CFG0,
0x00000400); 0x00000400);
@@ -3310,6 +3391,11 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3378,6 +3459,11 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_wait_bbp_ready(rt2x00dev))) rt2800_wait_bbp_ready(rt2x00dev)))
return -EACCES; return -EACCES;
@ -155,7 +155,7 @@
if (rt2x00_rt(rt2x00dev, RT3290) || if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) { rt2x00_rt(rt2x00dev, RT5392)) {
@@ -3320,15 +3406,20 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3388,15 +3474,20 @@ static int rt2800_init_bbp(struct rt2x00
if (rt2800_is_305x_soc(rt2x00dev) || if (rt2800_is_305x_soc(rt2x00dev) ||
rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3290) ||
@ -176,7 +176,7 @@
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 68, 0x0b); rt2800_bbp_write(rt2x00dev, 68, 0x0b);
@@ -3337,6 +3428,7 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3405,6 +3496,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 69, 0x16); rt2800_bbp_write(rt2x00dev, 69, 0x16);
rt2800_bbp_write(rt2x00dev, 73, 0x12); rt2800_bbp_write(rt2x00dev, 73, 0x12);
} else if (rt2x00_rt(rt2x00dev, RT3290) || } else if (rt2x00_rt(rt2x00dev, RT3290) ||
@ -184,7 +184,7 @@
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) { rt2x00_rt(rt2x00dev, RT5392)) {
rt2800_bbp_write(rt2x00dev, 69, 0x12); rt2800_bbp_write(rt2x00dev, 69, 0x12);
@@ -3368,6 +3460,10 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3436,6 +3528,10 @@ static int rt2800_init_bbp(struct rt2x00
} else if (rt2800_is_305x_soc(rt2x00dev)) { } else if (rt2800_is_305x_soc(rt2x00dev)) {
rt2800_bbp_write(rt2x00dev, 78, 0x0e); rt2800_bbp_write(rt2x00dev, 78, 0x0e);
rt2800_bbp_write(rt2x00dev, 80, 0x08); rt2800_bbp_write(rt2x00dev, 80, 0x08);
@ -195,7 +195,7 @@
} else { } else {
rt2800_bbp_write(rt2x00dev, 81, 0x37); rt2800_bbp_write(rt2x00dev, 81, 0x37);
} }
@@ -3397,18 +3493,21 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3465,18 +3561,21 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 84, 0x99); rt2800_bbp_write(rt2x00dev, 84, 0x99);
if (rt2x00_rt(rt2x00dev, RT3290) || if (rt2x00_rt(rt2x00dev, RT3290) ||
@ -218,7 +218,7 @@
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 92, 0x02); rt2800_bbp_write(rt2x00dev, 92, 0x02);
@@ -3425,6 +3524,7 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3493,6 +3592,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2x00_rt_rev_gte(rt2x00dev, RT3090, REV_RT3090E) || rt2x00_rt_rev_gte(rt2x00dev, RT3090, REV_RT3090E) ||
rt2x00_rt_rev_gte(rt2x00dev, RT3390, REV_RT3390E) || rt2x00_rt_rev_gte(rt2x00dev, RT3390, REV_RT3390E) ||
rt2x00_rt(rt2x00dev, RT3290) || rt2x00_rt(rt2x00dev, RT3290) ||
@ -226,7 +226,7 @@
rt2x00_rt(rt2x00dev, RT3572) || rt2x00_rt(rt2x00dev, RT3572) ||
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392) || rt2x00_rt(rt2x00dev, RT5392) ||
@@ -3434,6 +3534,7 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3502,6 +3602,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 103, 0x00); rt2800_bbp_write(rt2x00dev, 103, 0x00);
if (rt2x00_rt(rt2x00dev, RT3290) || if (rt2x00_rt(rt2x00dev, RT3290) ||
@ -234,7 +234,7 @@
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 104, 0x92); rt2800_bbp_write(rt2x00dev, 104, 0x92);
@@ -3442,6 +3543,8 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3510,6 +3611,8 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 105, 0x01); rt2800_bbp_write(rt2x00dev, 105, 0x01);
else if (rt2x00_rt(rt2x00dev, RT3290)) else if (rt2x00_rt(rt2x00dev, RT3290))
rt2800_bbp_write(rt2x00dev, 105, 0x1c); rt2800_bbp_write(rt2x00dev, 105, 0x1c);
@ -243,7 +243,7 @@
else if (rt2x00_rt(rt2x00dev, RT5390) || else if (rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 105, 0x3c); rt2800_bbp_write(rt2x00dev, 105, 0x3c);
@@ -3451,11 +3554,16 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3519,11 +3622,16 @@ static int rt2800_init_bbp(struct rt2x00
if (rt2x00_rt(rt2x00dev, RT3290) || if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT5390)) rt2x00_rt(rt2x00dev, RT5390))
rt2800_bbp_write(rt2x00dev, 106, 0x03); rt2800_bbp_write(rt2x00dev, 106, 0x03);
@ -260,7 +260,7 @@
if (rt2x00_rt(rt2x00dev, RT3290) || if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT5390) || rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) rt2x00_rt(rt2x00dev, RT5392))
@@ -3466,6 +3574,9 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3534,6 +3642,9 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 135, 0xf6); rt2800_bbp_write(rt2x00dev, 135, 0xf6);
} }
@ -270,7 +270,7 @@
if (rt2x00_rt(rt2x00dev, RT3071) || if (rt2x00_rt(rt2x00dev, RT3071) ||
rt2x00_rt(rt2x00dev, RT3090) || rt2x00_rt(rt2x00dev, RT3090) ||
rt2x00_rt(rt2x00dev, RT3390) || rt2x00_rt(rt2x00dev, RT3390) ||
@@ -3506,6 +3617,28 @@ static int rt2800_init_bbp(struct rt2x00 @@ -3574,6 +3685,28 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 3, value); rt2800_bbp_write(rt2x00dev, 3, value);
} }
@ -299,7 +299,7 @@
if (rt2x00_rt(rt2x00dev, RT5390) || if (rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) { rt2x00_rt(rt2x00dev, RT5392)) {
int ant, div_mode; int ant, div_mode;
@@ -3639,6 +3772,7 @@ static int rt2800_init_rfcsr(struct rt2x @@ -3707,6 +3840,7 @@ static int rt2800_init_rfcsr(struct rt2x
!rt2x00_rt(rt2x00dev, RT3071) && !rt2x00_rt(rt2x00dev, RT3071) &&
!rt2x00_rt(rt2x00dev, RT3090) && !rt2x00_rt(rt2x00dev, RT3090) &&
!rt2x00_rt(rt2x00dev, RT3290) && !rt2x00_rt(rt2x00dev, RT3290) &&
@ -307,7 +307,7 @@
!rt2x00_rt(rt2x00dev, RT3390) && !rt2x00_rt(rt2x00dev, RT3390) &&
!rt2x00_rt(rt2x00dev, RT3572) && !rt2x00_rt(rt2x00dev, RT3572) &&
!rt2x00_rt(rt2x00dev, RT5390) && !rt2x00_rt(rt2x00dev, RT5390) &&
@@ -3835,6 +3969,70 @@ static int rt2800_init_rfcsr(struct rt2x @@ -3903,6 +4037,70 @@ static int rt2800_init_rfcsr(struct rt2x
rt2800_rfcsr_write(rt2x00dev, 30, 0x00); rt2800_rfcsr_write(rt2x00dev, 30, 0x00);
rt2800_rfcsr_write(rt2x00dev, 31, 0x00); rt2800_rfcsr_write(rt2x00dev, 31, 0x00);
return 0; return 0;
@ -378,7 +378,7 @@
} else if (rt2x00_rt(rt2x00dev, RT5390)) { } else if (rt2x00_rt(rt2x00dev, RT5390)) {
rt2800_rfcsr_write(rt2x00dev, 1, 0x0f); rt2800_rfcsr_write(rt2x00dev, 1, 0x0f);
rt2800_rfcsr_write(rt2x00dev, 2, 0x80); rt2800_rfcsr_write(rt2x00dev, 2, 0x80);
@@ -4035,6 +4233,7 @@ static int rt2800_init_rfcsr(struct rt2x @@ -4104,6 +4302,7 @@ static int rt2800_init_rfcsr(struct rt2x
rt2800_init_rx_filter(rt2x00dev, true, 0x27, 0x19); rt2800_init_rx_filter(rt2x00dev, true, 0x27, 0x19);
} else if (rt2x00_rt(rt2x00dev, RT3071) || } else if (rt2x00_rt(rt2x00dev, RT3071) ||
rt2x00_rt(rt2x00dev, RT3090) || rt2x00_rt(rt2x00dev, RT3090) ||
@ -386,7 +386,7 @@
rt2x00_rt(rt2x00dev, RT3390) || rt2x00_rt(rt2x00dev, RT3390) ||
rt2x00_rt(rt2x00dev, RT3572)) { rt2x00_rt(rt2x00dev, RT3572)) {
drv_data->calibration_bw20 = drv_data->calibration_bw20 =
@@ -4493,6 +4692,7 @@ int rt2800_init_eeprom(struct rt2x00_dev @@ -4566,6 +4765,7 @@ static int rt2800_init_eeprom(struct rt2
case RT3071: case RT3071:
case RT3090: case RT3090:
case RT3290: case RT3290:
@ -394,7 +394,7 @@
case RT3390: case RT3390:
case RT3572: case RT3572:
case RT5390: case RT5390:
@@ -4515,6 +4715,7 @@ int rt2800_init_eeprom(struct rt2x00_dev @@ -4588,6 +4788,7 @@ static int rt2800_init_eeprom(struct rt2
case RF3052: case RF3052:
case RF3290: case RF3290:
case RF3320: case RF3320:
@ -402,7 +402,7 @@
case RF5360: case RF5360:
case RF5370: case RF5370:
case RF5372: case RF5372:
@@ -4539,6 +4740,7 @@ int rt2800_init_eeprom(struct rt2x00_dev @@ -4612,6 +4813,7 @@ static int rt2800_init_eeprom(struct rt2
if (rt2x00_rt(rt2x00dev, RT3070) || if (rt2x00_rt(rt2x00dev, RT3070) ||
rt2x00_rt(rt2x00dev, RT3090) || rt2x00_rt(rt2x00dev, RT3090) ||
@ -410,7 +410,7 @@
rt2x00_rt(rt2x00dev, RT3390)) { rt2x00_rt(rt2x00dev, RT3390)) {
value = rt2x00_get_field16(eeprom, value = rt2x00_get_field16(eeprom,
EEPROM_NIC_CONF1_ANT_DIVERSITY); EEPROM_NIC_CONF1_ANT_DIVERSITY);
@@ -4832,6 +5034,7 @@ int rt2800_probe_hw_mode(struct rt2x00_d @@ -4904,6 +5106,7 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF3022) || rt2x00_rf(rt2x00dev, RF3022) ||
rt2x00_rf(rt2x00dev, RF3290) || rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3320) || rt2x00_rf(rt2x00dev, RF3320) ||
@ -430,7 +430,7 @@
#define RT3593 0x3593 #define RT3593 0x3593
--- a/drivers/net/wireless/rt2x00/rt2800.h --- a/drivers/net/wireless/rt2x00/rt2800.h
+++ b/drivers/net/wireless/rt2x00/rt2800.h +++ b/drivers/net/wireless/rt2x00/rt2800.h
@@ -1936,6 +1936,11 @@ struct mac_iveiv_entry { @@ -1943,6 +1943,11 @@ struct mac_iveiv_entry {
#define BBP47_TSSI_ADC6 FIELD8(0x80) #define BBP47_TSSI_ADC6 FIELD8(0x80)
/* /*

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/mwl8k.c --- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c
@@ -5299,6 +5299,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") @@ -5302,6 +5302,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API)); MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = { static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/b43/b43.h --- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h
@@ -803,6 +803,7 @@ struct b43_wldev { @@ -807,6 +807,7 @@ struct b43_wldev {
bool qos_enabled; /* TRUE, if QoS is used. */ bool qos_enabled; /* TRUE, if QoS is used. */
bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */ bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
bool use_pio; /* TRUE if next init should use PIO */ bool use_pio; /* TRUE if next init should use PIO */
@ -22,7 +22,7 @@
static int modparam_bad_frames_preempt; static int modparam_bad_frames_preempt;
module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444); module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
MODULE_PARM_DESC(bad_frames_preempt, MODULE_PARM_DESC(bad_frames_preempt,
@@ -2690,10 +2695,10 @@ static int b43_gpio_init(struct b43_wlde @@ -2688,10 +2693,10 @@ static int b43_gpio_init(struct b43_wlde
u32 mask, set; u32 mask, set;
b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0); b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/b43/Makefile --- a/drivers/net/wireless/b43/Makefile
+++ b/drivers/net/wireless/b43/Makefile +++ b/drivers/net/wireless/b43/Makefile
@@ -19,7 +19,7 @@ b43-y += xmit.o @@ -20,7 +20,7 @@ b43-y += xmit.o
b43-y += lo.o b43-y += lo.o
b43-y += wa.o b43-y += wa.o
b43-y += dma.o b43-y += dma.o

View File

@ -9,7 +9,7 @@
antenna = b43_antenna_to_phyctl(antenna); antenna = b43_antenna_to_phyctl(antenna);
ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL); ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL);
/* We can't send beacons with short preamble. Would get PHY errors. */ /* We can't send beacons with short preamble. Would get PHY errors. */
@@ -3046,8 +3046,8 @@ static int b43_chip_init(struct b43_wlde @@ -3049,8 +3049,8 @@ static int b43_chip_init(struct b43_wlde
/* Select the antennae */ /* Select the antennae */
if (phy->ops->set_rx_antenna) if (phy->ops->set_rx_antenna)
@ -20,7 +20,7 @@
if (phy->type == B43_PHYTYPE_B) { if (phy->type == B43_PHYTYPE_B) {
value16 = b43_read16(dev, 0x005E); value16 = b43_read16(dev, 0x005E);
@@ -3790,7 +3790,6 @@ static int b43_op_config(struct ieee8021 @@ -3794,7 +3794,6 @@ static int b43_op_config(struct ieee8021
struct b43_wldev *dev; struct b43_wldev *dev;
struct b43_phy *phy; struct b43_phy *phy;
struct ieee80211_conf *conf = &hw->conf; struct ieee80211_conf *conf = &hw->conf;
@ -28,7 +28,7 @@
int err = 0; int err = 0;
bool reload_bss = false; bool reload_bss = false;
@@ -3844,11 +3843,9 @@ static int b43_op_config(struct ieee8021 @@ -3848,11 +3847,9 @@ static int b43_op_config(struct ieee8021
} }
/* Antennas for RX and management frame TX. */ /* Antennas for RX and management frame TX. */
@ -42,7 +42,7 @@
if (wl->radio_enabled != phy->radio_on) { if (wl->radio_enabled != phy->radio_on) {
if (wl->radio_enabled) { if (wl->radio_enabled) {
@@ -4941,6 +4938,47 @@ static int b43_op_get_survey(struct ieee @@ -4974,6 +4971,47 @@ static int b43_op_get_survey(struct ieee
return 0; return 0;
} }
@ -90,7 +90,7 @@
static const struct ieee80211_ops b43_hw_ops = { static const struct ieee80211_ops b43_hw_ops = {
.tx = b43_op_tx, .tx = b43_op_tx,
.conf_tx = b43_op_conf_tx, .conf_tx = b43_op_conf_tx,
@@ -4962,6 +5000,8 @@ static const struct ieee80211_ops b43_hw @@ -4995,6 +5033,8 @@ static const struct ieee80211_ops b43_hw
.sw_scan_complete = b43_op_sw_scan_complete_notifier, .sw_scan_complete = b43_op_sw_scan_complete_notifier,
.get_survey = b43_op_get_survey, .get_survey = b43_op_get_survey,
.rfkill_poll = b43_rfkill_poll, .rfkill_poll = b43_rfkill_poll,
@ -99,7 +99,7 @@
}; };
/* Hard-reset the chip. Do not call this directly. /* Hard-reset the chip. Do not call this directly.
@@ -5208,6 +5248,8 @@ static int b43_one_core_attach(struct b4 @@ -5241,6 +5281,8 @@ static int b43_one_core_attach(struct b4
if (!wldev) if (!wldev)
goto out; goto out;
@ -108,19 +108,19 @@
wldev->use_pio = b43_modparam_pio; wldev->use_pio = b43_modparam_pio;
wldev->dev = dev; wldev->dev = dev;
wldev->wl = wl; wldev->wl = wl;
@@ -5298,6 +5340,9 @@ static struct b43_wl *b43_wireless_init( @@ -5331,6 +5373,9 @@ static struct b43_wl *b43_wireless_init(
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
+ hw->wiphy->available_antennas_rx = 0x3; + hw->wiphy->available_antennas_rx = 0x3;
+ hw->wiphy->available_antennas_tx = 0x3; + hw->wiphy->available_antennas_tx = 0x3;
+ +
hw->queues = modparam_qos ? B43_QOS_QUEUE_NUM : 1;
wl->mac80211_initially_registered_queues = hw->queues;
wl->hw_registred = false; wl->hw_registred = false;
hw->max_rates = 2;
SET_IEEE80211_DEV(hw, dev->dev);
--- a/drivers/net/wireless/b43/b43.h --- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h
@@ -804,6 +804,8 @@ struct b43_wldev { @@ -808,6 +808,8 @@ struct b43_wldev {
bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */ bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
bool use_pio; /* TRUE if next init should use PIO */ bool use_pio; /* TRUE if next init should use PIO */
int gpiomask; /* GPIO LED mask as a module parameter */ int gpiomask; /* GPIO LED mask as a module parameter */

View File

@ -19,7 +19,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
--- a/drivers/net/wireless/b43/b43.h --- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h +++ b/drivers/net/wireless/b43/b43.h
@@ -1051,6 +1051,32 @@ static inline bool b43_using_pio_transfe @@ -1048,6 +1048,32 @@ static inline bool b43_using_pio_transfe
return dev->__using_pio_transfers; return dev->__using_pio_transfers;
} }
@ -73,7 +73,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev); struct b43_bus_dev *b43_bus_dev_ssb_init(struct ssb_device *sdev);
--- a/drivers/net/wireless/b43/phy_common.c --- a/drivers/net/wireless/b43/phy_common.c
+++ b/drivers/net/wireless/b43/phy_common.c +++ b/drivers/net/wireless/b43/phy_common.c
@@ -251,6 +251,12 @@ void b43_phy_write(struct b43_wldev *dev @@ -266,6 +266,12 @@ void b43_phy_write(struct b43_wldev *dev
{ {
assert_mac_suspended(dev); assert_mac_suspended(dev);
dev->phy.ops->phy_write(dev, reg, value); dev->phy.ops->phy_write(dev, reg, value);
@ -88,7 +88,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
dev->phy.writes_counter = 0; dev->phy.writes_counter = 0;
--- a/drivers/net/wireless/b43/phy_n.c --- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c +++ b/drivers/net/wireless/b43/phy_n.c
@@ -4838,14 +4838,14 @@ static inline void check_phyreg(struct b @@ -5423,14 +5423,14 @@ static inline void check_phyreg(struct b
static u16 b43_nphy_op_read(struct b43_wldev *dev, u16 reg) static u16 b43_nphy_op_read(struct b43_wldev *dev, u16 reg)
{ {
check_phyreg(dev, reg); check_phyreg(dev, reg);
@ -105,7 +105,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
b43_write16(dev, B43_MMIO_PHY_DATA, value); b43_write16(dev, B43_MMIO_PHY_DATA, value);
} }
@@ -4853,7 +4853,7 @@ static void b43_nphy_op_maskset(struct b @@ -5438,7 +5438,7 @@ static void b43_nphy_op_maskset(struct b
u16 set) u16 set)
{ {
check_phyreg(dev, reg); check_phyreg(dev, reg);
@ -114,7 +114,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
b43_maskset16(dev, B43_MMIO_PHY_DATA, mask, set); b43_maskset16(dev, B43_MMIO_PHY_DATA, mask, set);
} }
@@ -4864,7 +4864,7 @@ static u16 b43_nphy_op_radio_read(struct @@ -5449,7 +5449,7 @@ static u16 b43_nphy_op_radio_read(struct
/* N-PHY needs 0x100 for read access */ /* N-PHY needs 0x100 for read access */
reg |= 0x100; reg |= 0x100;
@ -123,7 +123,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW); return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW);
} }
@@ -4873,7 +4873,7 @@ static void b43_nphy_op_radio_write(stru @@ -5458,7 +5458,7 @@ static void b43_nphy_op_radio_write(stru
/* Register 1 is a 32-bit register. */ /* Register 1 is a 32-bit register. */
B43_WARN_ON(reg == 1); B43_WARN_ON(reg == 1);

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
@@ -92,6 +92,7 @@ MODULE_LICENSE("Dual BSD/GPL"); @@ -94,6 +94,7 @@ MODULE_FIRMWARE("brcm/bcm43xx_hdr-0.fw")
/* recognized BCMA Core IDs */ /* recognized BCMA Core IDs */
static struct bcma_device_id brcms_coreid_table[] = { static struct bcma_device_id brcms_coreid_table[] = {

View File

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c --- a/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
+++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c +++ b/drivers/net/wireless/brcm80211/brcmsmac/mac80211_if.c
@@ -95,6 +95,7 @@ static struct bcma_device_id brcms_corei @@ -97,6 +97,7 @@ static struct bcma_device_id brcms_corei
// BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 17, BCMA_ANY_CLASS), // BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 17, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 23, BCMA_ANY_CLASS),
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS), BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS),