mirror of https://github.com/hak5/openwrt-owl.git
mac80211: update to 2012-09-07, adds ath9k beacon fixes, mesh/adhoc fixes, and more
SVN-Revision: 33331owl
parent
6771d63284
commit
6f6af5bee7
|
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=2012-07-16
|
||||
PKG_VERSION:=2012-09-07
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_MD5SUM:=8e41a935ad147631b78f99eda7187c1f
|
||||
PKG_MD5SUM:=59e0a114ee4b755a6e47cb6cd0f32ebc
|
||||
|
||||
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -77,7 +77,7 @@ endif # build check
|
||||
@@ -78,7 +78,7 @@ endif # build 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
|
||||
|
||||
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")
|
||||
@@ -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.
|
||||
# In more recent kernel versions use the in kernel rfkill module.
|
||||
ifdef CONFIG_COMPAT_KERNEL_2_6_31
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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)
|
||||
# we'll ignore compiling bluetooth
|
||||
else
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
else
|
||||
include $(KLIB_BUILD)/.config
|
||||
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
|
||||
endif #CONFIG_WIRELESS_EXT
|
||||
|
||||
|
@ -29,7 +29,7 @@
|
|||
# Sonics Silicon Backplane
|
||||
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_DRIVER_PCICORE=y
|
||||
export CONFIG_B43_SSB=y
|
||||
|
@ -38,7 +38,7 @@
|
|||
|
||||
export CONFIG_BCMA=m
|
||||
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
|
||||
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),)
|
||||
--- a/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
|
||||
endif #__CONFIG_SSB
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
|
||||
ifdef CONFIG_STAGING
|
||||
|
@ -9,7 +9,7 @@
|
|||
endif #CONFIG_STAGING
|
||||
|
||||
# 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
|
||||
|
||||
# Ethernet drivers go here
|
||||
|
@ -19,20 +19,15 @@
|
|||
+# export CONFIG_ATL1=m
|
||||
+# export CONFIG_ATL2=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_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_ATL1C=m
|
||||
+# export CONFIG_ALX=m
|
||||
endif #CONFIG_COMPAT_KERNEL_2_6_28
|
||||
|
||||
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
|
||||
# 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
|
||||
@@ -176,7 +176,7 @@ export CONFIG_MAC80211_LEDS=y
|
||||
@@ -177,7 +177,7 @@ export CONFIG_MAC80211_LEDS=y
|
||||
endif #CONFIG_LEDS_TRIGGERS
|
||||
|
||||
# enable mesh networking too
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -53,7 +53,7 @@ endif
|
||||
@@ -54,7 +54,7 @@ endif
|
||||
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 ($(CONFIG_MAC80211),)
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
# export CONFIG_SSB=m
|
||||
else
|
||||
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_PCI_AUTOSELECT=y
|
||||
ifdef CONFIG_PCMCIA
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
|
||||
# export CONFIG_SSB_SDIOHOST=y
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
endif #CONFIG_MAC80211_LEDS
|
||||
export CONFIG_B43_PHY_LP=y
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
export CONFIG_RT2400PCI=m
|
||||
export CONFIG_RT2500PCI=m
|
||||
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_UNKNOWN=y
|
||||
endif #CONFIG_CRC_CCITT
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -168,7 +168,7 @@ export CONFIG_MAC80211_RC_DEFAULT_MINSTR
|
||||
# This is the one used by our compat-wireless net/mac80211/rate.c
|
||||
@@ -169,7 +169,7 @@ export CONFIG_MAC80211_RC_DEFAULT_MINSTR
|
||||
# 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.
|
||||
export CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel_ht
|
||||
-export CONFIG_MAC80211_RC_PID=y
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
# 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
|
||||
@@ -281,7 +281,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
@@ -282,7 +282,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27
|
||||
# PCI Drivers
|
||||
ifdef CONFIG_PCI
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
--- a/compat/Makefile
|
||||
+++ b/compat/Makefile
|
||||
@@ -44,8 +44,6 @@ compat-$(CONFIG_COMPAT_KERNEL_3_3) += \
|
||||
flow_dissector.o
|
||||
@@ -47,8 +47,6 @@ compat-$(CONFIG_COMPAT_KERNEL_3_3) += \
|
||||
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_CRC8) += crc8.o
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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.
|
||||
# export CONFIG_COMPAT_ATH9K_RATE_CONTROL=y
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
+endif
|
||||
+
|
||||
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
|
||||
+++ b/compat/compat_firmware_class.c
|
||||
@@ -741,19 +741,16 @@ compat_request_firmware_nowait(
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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, \
|
||||
pci_unregister_driver)
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
--- 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"
|
||||
@@ -66,16 +66,3 @@ if [[ ${CONFIG_COMPAT_KERNEL_2_6_36} = "
|
||||
echo "export CONFIG_COMPAT_KFIFO=y"
|
||||
fi
|
||||
fi
|
||||
-
|
||||
-if [[ ${CONFIG_COMPAT_KERNEL_3_5} = "y" ]]; then
|
||||
|
|
|
@ -11,16 +11,16 @@
|
|||
struct pcmcia_cfg_mem {
|
||||
--- a/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/autoconf.h>
|
||||
|
||||
-#if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE)
|
||||
+#if 0
|
||||
|
||||
/**
|
||||
* 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);
|
||||
/* Source: drivers/pcmcia/cistpl.c */
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
|||
struct pcmcia_device *p_dev;
|
||||
--- a/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 */
|
||||
|
||||
|
@ -51,7 +51,7 @@
|
|||
#include <pcmcia/cs_types.h>
|
||||
#include <pcmcia/cistpl.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;
|
||||
}
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
* @anchor: anchor the requests are bound to
|
||||
--- a/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 */
|
||||
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23))
|
||||
|
||||
|
@ -33,7 +33,7 @@
|
|||
#endif
|
||||
--- a/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 is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351
|
||||
# This fix will be included in some stable releases.
|
||||
|
|
|
@ -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>
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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;
|
||||
int i;
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,6 +1,6 @@
|
|||
--- a/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;
|
||||
struct regulatory_request *request;
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
mutex_lock(®_mutex);
|
||||
|
||||
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)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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;
|
||||
}
|
||||
|
||||
|
@ -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",
|
||||
@@ -2429,6 +2429,7 @@ static const struct ieee80211_iface_limi
|
||||
@@ -2427,6 +2427,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
|
||||
@@ -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++) {
|
||||
const struct ieee80211_iface_combination *c;
|
||||
|
|
|
@ -11,7 +11,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
|
|||
|
||||
--- a/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,
|
||||
};
|
||||
|
||||
|
@ -101,7 +101,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
|
|||
|
||||
/* 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,
|
||||
&fops_beacon);
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
--- a/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
|
||||
struct ar5416_eeprom_def *eep =
|
||||
(struct ar5416_eeprom_def *) &ah->eeprom.def;
|
||||
@@ -266,7 +266,7 @@ static int ath9k_hw_def_check_eeprom(str
|
||||
{
|
||||
struct ar5416_eeprom_def *eep = &ah->eeprom.def;
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
- u16 *eepdata, temp, magic, magic2;
|
||||
+ u16 *eepdata, temp, magic;
|
||||
u32 sum = 0, el;
|
||||
bool need_swap = false;
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@
|
|||
|
||||
--- a/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;
|
||||
|
||||
|
||||
|
@ -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
|
||||
@@ -704,6 +704,7 @@ enum ath_cal_list {
|
||||
@@ -705,6 +705,7 @@ enum ath_cal_list {
|
||||
#define AH_USE_EEPROM 0x1
|
||||
#define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
|
||||
#define AH_FASTCC 0x4
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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);
|
||||
|
||||
if (ah->config.rx_intr_mitigation) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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 device *dev;
|
||||
|
||||
|
@ -8,7 +8,7 @@
|
|||
struct survey_info *cur_survey;
|
||||
struct survey_info survey[ATH9K_NUM_CHANNELS];
|
||||
|
||||
@@ -733,6 +734,7 @@ struct ath_softc {
|
||||
@@ -734,6 +735,7 @@ struct ath_softc {
|
||||
#endif
|
||||
};
|
||||
|
||||
|
@ -80,7 +80,7 @@
|
|||
}
|
||||
--- a/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");
|
||||
}
|
||||
|
||||
|
@ -89,7 +89,7 @@
|
|||
{
|
||||
struct ath_softc *sc = hw->priv;
|
||||
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) {
|
||||
struct ieee80211_channel *curchan = hw->conf.channel;
|
||||
|
@ -101,7 +101,7 @@
|
|||
|
||||
if (ah->curchan)
|
||||
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));
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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)
|
||||
{
|
||||
ether_setup(dev);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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 {
|
||||
u32 flags;
|
||||
|
@ -11,7 +11,7 @@
|
|||
u16 listen_interval;
|
||||
--- a/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);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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;
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
@@ -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;
|
||||
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
|
||||
@@ -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
|
||||
* unspecified depending on the hardware capabilities flags
|
||||
* @IEEE80211_HW_SIGNAL_*
|
||||
|
@ -10,16 +10,15 @@
|
|||
* @antenna: antenna used
|
||||
* @rate_idx: index of data rate into band's supported rates or MCS index if
|
||||
* 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 antenna;
|
||||
s8 signal;
|
||||
+
|
||||
+ u8 chains;
|
||||
+ s8 chain_signal[4];
|
||||
u8 ampdu_delimiter_crc;
|
||||
};
|
||||
|
||||
/**
|
||||
--- a/net/mac80211/sta_info.h
|
||||
+++ b/net/mac80211/sta_info.h
|
||||
@@ -325,6 +325,11 @@ struct sta_info {
|
||||
|
@ -36,7 +35,7 @@
|
|||
|
||||
--- a/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 ieee80211_rx_status *status = IEEE80211_SKB_RXCB(skb);
|
||||
struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)skb->data;
|
||||
|
@ -44,7 +43,7 @@
|
|||
|
||||
if (!sta)
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -77,7 +76,7 @@
|
|||
kfree(sta);
|
||||
--- a/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_BEACON_LOSS_COUNT: @beacon_loss_count filled
|
||||
* @STATION_INFO_T_OFFSET: @t_offset filled
|
||||
|
@ -86,7 +85,7 @@
|
|||
*/
|
||||
enum station_info_flags {
|
||||
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_BEACON_LOSS_COUNT = 1<<19,
|
||||
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_.
|
||||
* @signal_avg: Average signal strength, type depends on the wiphy's signal_type.
|
||||
* For CFG80211_SIGNAL_TYPE_MBM, value is expressed in _dBm_.
|
||||
|
@ -105,7 +104,7 @@
|
|||
* @txrate: current unicast bitrate from this station
|
||||
* @rxrate: current unicast bitrate to 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;
|
||||
s8 signal;
|
||||
s8 signal_avg;
|
||||
|
@ -249,7 +248,7 @@
|
|||
RX_SAMP_DBG(rate) = rs->rs_rate;
|
||||
--- a/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_BEACON_LOSS: count of times beacon loss was detected (u32)
|
||||
* @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_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_BEACON_LOSS,
|
||||
NL80211_STA_INFO_T_OFFSET,
|
||||
|
@ -269,7 +268,7 @@
|
|||
__NL80211_STA_INFO_AFTER_LAST,
|
||||
--- a/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;
|
||||
}
|
||||
|
||||
|
@ -302,7 +301,7 @@
|
|||
static int nl80211_send_station(struct sk_buff *msg, u32 pid, u32 seq,
|
||||
int flags,
|
||||
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:
|
||||
break;
|
||||
}
|
||||
|
@ -323,7 +322,7 @@
|
|||
NL80211_STA_INFO_TX_BITRATE))
|
||||
--- a/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_local *local = sdata->local;
|
||||
struct timespec uptime;
|
||||
|
@ -331,7 +330,7 @@
|
|||
|
||||
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_avg = (s8) -ewma_read(&sta->avg_signal);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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
|
||||
void ath_init_leds(struct ath_softc *sc);
|
||||
void ath_deinit_leds(struct ath_softc *sc);
|
||||
|
@ -10,7 +10,7 @@
|
|||
#else
|
||||
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 */
|
||||
};
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
|||
struct ath_softc {
|
||||
struct ieee80211_hw *hw;
|
||||
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];
|
||||
|
||||
#ifdef CONFIG_MAC80211_LEDS
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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 */
|
||||
u32 rc_rateidx_mask[IEEE80211_NUM_BANDS];
|
||||
|
@ -11,7 +11,7 @@
|
|||
union {
|
||||
--- a/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++) {
|
||||
|
@ -34,7 +34,7 @@
|
|||
return 0;
|
||||
--- a/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
|
||||
* 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 {
|
||||
@@ -3682,7 +3682,7 @@ struct ieee80211_tx_rate_control {
|
||||
@@ -3730,7 +3730,7 @@ struct ieee80211_tx_rate_control {
|
||||
bool rts, short_preamble;
|
||||
u8 max_rate_idx;
|
||||
u32 rate_idx_mask;
|
||||
|
@ -59,17 +59,17 @@
|
|||
else
|
||||
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;
|
||||
- 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));
|
||||
+
|
||||
+ if (tx->sdata->rc_has_mcs_mask[tx->channel->band])
|
||||
+ if (tx->sdata->rc_has_mcs_mask[info->band])
|
||||
+ 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 ||
|
||||
tx->sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
|
||||
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;
|
||||
else
|
||||
txrc.max_rate_idx = fls(txrc.rate_idx_mask) - 1;
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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);
|
||||
|
||||
mutex_unlock(&sc->mutex);
|
||||
|
@ -8,7 +8,7 @@
|
|||
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);
|
||||
|
||||
if (changed & IEEE80211_CONF_CHANGE_IDLE) {
|
||||
|
|
|
@ -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).
|
|
@ -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);
|
|
@ -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
|
|
@ -186,7 +186,7 @@
|
|||
obj-$(CONFIG_RT2X00_LIB_PCI) += rt2x00pci.o
|
||||
--- a/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);
|
||||
}
|
||||
|
||||
|
@ -208,7 +208,7 @@
|
|||
|
||||
#ifdef CONFIG_PCI
|
||||
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.
|
||||
*/
|
||||
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,
|
||||
.check_firmware = rt2800_check_firmware,
|
||||
.load_firmware = rt2800_load_firmware,
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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);
|
||||
}
|
||||
|
||||
|
@ -9,14 +9,14 @@
|
|||
{
|
||||
memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE);
|
||||
}
|
||||
@@ -974,8 +974,9 @@ static int rt2800pci_validate_eeprom(str
|
||||
/*
|
||||
* Read EEPROM into buffer
|
||||
*/
|
||||
@@ -976,8 +976,9 @@ static irqreturn_t rt2800pci_interrupt(i
|
||||
*/
|
||||
static void rt2800pci_read_eeprom(struct rt2x00_dev *rt2x00dev)
|
||||
{
|
||||
- if (rt2x00_is_soc(rt2x00dev))
|
||||
- rt2800pci_read_eeprom_soc(rt2x00dev);
|
||||
+ if (rt2x00_is_soc(rt2x00dev) ||
|
||||
+ test_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags))
|
||||
+ test_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags))
|
||||
+ rt2800pci_read_eeprom_file(rt2x00dev);
|
||||
else if (rt2800pci_efuse_detect(rt2x00dev))
|
||||
rt2800pci_read_eeprom_efuse(rt2x00dev);
|
||||
|
|
|
@ -41,7 +41,7 @@
|
|||
* Interrupt context handlers.
|
||||
--- a/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;
|
||||
u16 word;
|
||||
u8 *mac;
|
||||
|
@ -49,7 +49,7 @@
|
|||
s8 value;
|
||||
|
||||
rt2x00pci_register_read(rt2x00dev, E2PROM_CSR, ®);
|
||||
@@ -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.
|
||||
*/
|
||||
|
@ -59,5 +59,5 @@
|
|||
+ memcpy(mac, pdata_mac, 6);
|
||||
+
|
||||
if (!is_valid_ether_addr(mac)) {
|
||||
random_ether_addr(mac);
|
||||
eth_random_addr(mac);
|
||||
EEPROM(rt2x00dev, "MAC: %pM\n", mac);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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:
|
||||
if (rt2x00_rt(rt2x00dev, RT3070) ||
|
||||
rt2x00_rt(rt2x00dev, RT3090) ||
|
||||
|
@ -8,7 +8,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT3390)) {
|
||||
rt2x00_eeprom_read(rt2x00dev,
|
||||
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,
|
||||
struct ieee80211_conf *conf,
|
||||
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:
|
||||
rt2800_config_channel_rf3290(rt2x00dev, conf, rf, info);
|
||||
break;
|
||||
|
@ -77,7 +77,7 @@
|
|||
case RF5360:
|
||||
case RF5370:
|
||||
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) ||
|
||||
|
@ -85,7 +85,7 @@
|
|||
rt2x00_rf(rt2x00dev, RF5360) ||
|
||||
rt2x00_rf(rt2x00dev, RF5370) ||
|
||||
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
|
||||
*/
|
||||
|
@ -110,7 +110,7 @@
|
|||
|
||||
if (rf->channel <= 14) {
|
||||
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, ®);
|
||||
rt2800_register_read(rt2x00dev, CH_BUSY_STA, ®);
|
||||
rt2800_register_read(rt2x00dev, CH_BUSY_STA_SEC, ®);
|
||||
|
@ -127,7 +127,7 @@
|
|||
}
|
||||
|
||||
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) ||
|
||||
rt2x00_rt(rt2x00dev, RT3090) ||
|
||||
rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
|
@ -143,7 +143,7 @@
|
|||
else
|
||||
rt2800_register_write(rt2x00dev, TX_SW_CFG0,
|
||||
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)))
|
||||
return -EACCES;
|
||||
|
||||
|
@ -155,7 +155,7 @@
|
|||
if (rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
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) ||
|
||||
rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
|
@ -176,7 +176,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
rt2x00_rt(rt2x00dev, RT5392))
|
||||
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, 73, 0x12);
|
||||
} else if (rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
|
@ -184,7 +184,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
rt2x00_rt(rt2x00dev, RT5392)) {
|
||||
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)) {
|
||||
rt2800_bbp_write(rt2x00dev, 78, 0x0e);
|
||||
rt2800_bbp_write(rt2x00dev, 80, 0x08);
|
||||
|
@ -195,7 +195,7 @@
|
|||
} else {
|
||||
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);
|
||||
|
||||
if (rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
|
@ -218,7 +218,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
rt2x00_rt(rt2x00dev, RT5392))
|
||||
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, RT3390, REV_RT3390E) ||
|
||||
rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
|
@ -226,7 +226,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT3572) ||
|
||||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
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);
|
||||
|
||||
if (rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
|
@ -234,7 +234,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
rt2x00_rt(rt2x00dev, RT5392))
|
||||
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);
|
||||
else if (rt2x00_rt(rt2x00dev, RT3290))
|
||||
rt2800_bbp_write(rt2x00dev, 105, 0x1c);
|
||||
|
@ -243,7 +243,7 @@
|
|||
else if (rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
rt2x00_rt(rt2x00dev, RT5392))
|
||||
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) ||
|
||||
rt2x00_rt(rt2x00dev, RT5390))
|
||||
rt2800_bbp_write(rt2x00dev, 106, 0x03);
|
||||
|
@ -260,7 +260,7 @@
|
|||
if (rt2x00_rt(rt2x00dev, RT3290) ||
|
||||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -270,7 +270,7 @@
|
|||
if (rt2x00_rt(rt2x00dev, RT3071) ||
|
||||
rt2x00_rt(rt2x00dev, RT3090) ||
|
||||
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);
|
||||
}
|
||||
|
||||
|
@ -299,7 +299,7 @@
|
|||
if (rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
rt2x00_rt(rt2x00dev, RT5392)) {
|
||||
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, RT3090) &&
|
||||
!rt2x00_rt(rt2x00dev, RT3290) &&
|
||||
|
@ -307,7 +307,7 @@
|
|||
!rt2x00_rt(rt2x00dev, RT3390) &&
|
||||
!rt2x00_rt(rt2x00dev, RT3572) &&
|
||||
!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, 31, 0x00);
|
||||
return 0;
|
||||
|
@ -378,7 +378,7 @@
|
|||
} else if (rt2x00_rt(rt2x00dev, RT5390)) {
|
||||
rt2800_rfcsr_write(rt2x00dev, 1, 0x0f);
|
||||
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);
|
||||
} else if (rt2x00_rt(rt2x00dev, RT3071) ||
|
||||
rt2x00_rt(rt2x00dev, RT3090) ||
|
||||
|
@ -386,7 +386,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT3390) ||
|
||||
rt2x00_rt(rt2x00dev, RT3572)) {
|
||||
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 RT3090:
|
||||
case RT3290:
|
||||
|
@ -394,7 +394,7 @@
|
|||
case RT3390:
|
||||
case RT3572:
|
||||
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 RF3290:
|
||||
case RF3320:
|
||||
|
@ -402,7 +402,7 @@
|
|||
case RF5360:
|
||||
case RF5370:
|
||||
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) ||
|
||||
rt2x00_rt(rt2x00dev, RT3090) ||
|
||||
|
@ -410,7 +410,7 @@
|
|||
rt2x00_rt(rt2x00dev, RT3390)) {
|
||||
value = rt2x00_get_field16(eeprom,
|
||||
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, RF3290) ||
|
||||
rt2x00_rf(rt2x00dev, RF3320) ||
|
||||
|
@ -430,7 +430,7 @@
|
|||
#define RT3593 0x3593
|
||||
--- a/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)
|
||||
|
||||
/*
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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));
|
||||
|
||||
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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 hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
|
||||
bool use_pio; /* TRUE if next init should use PIO */
|
||||
|
@ -22,7 +22,7 @@
|
|||
static int modparam_bad_frames_preempt;
|
||||
module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
|
||||
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;
|
||||
|
||||
b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0);
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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 += wa.o
|
||||
b43-y += dma.o
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
antenna = b43_antenna_to_phyctl(antenna);
|
||||
ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL);
|
||||
/* 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 */
|
||||
if (phy->ops->set_rx_antenna)
|
||||
|
@ -20,7 +20,7 @@
|
|||
|
||||
if (phy->type == B43_PHYTYPE_B) {
|
||||
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_phy *phy;
|
||||
struct ieee80211_conf *conf = &hw->conf;
|
||||
|
@ -28,7 +28,7 @@
|
|||
int err = 0;
|
||||
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. */
|
||||
|
@ -42,7 +42,7 @@
|
|||
|
||||
if (wl->radio_enabled != phy->radio_on) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
@ -90,7 +90,7 @@
|
|||
static const struct ieee80211_ops b43_hw_ops = {
|
||||
.tx = b43_op_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,
|
||||
.get_survey = b43_op_get_survey,
|
||||
.rfkill_poll = b43_rfkill_poll,
|
||||
|
@ -99,7 +99,7 @@
|
|||
};
|
||||
|
||||
/* 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)
|
||||
goto out;
|
||||
|
||||
|
@ -108,19 +108,19 @@
|
|||
wldev->use_pio = b43_modparam_pio;
|
||||
wldev->dev = dev;
|
||||
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->available_antennas_rx = 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;
|
||||
hw->max_rates = 2;
|
||||
SET_IEEE80211_DEV(hw, dev->dev);
|
||||
--- a/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 use_pio; /* TRUE if next init should use PIO */
|
||||
int gpiomask; /* GPIO LED mask as a module parameter */
|
||||
|
|
|
@ -19,7 +19,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||
|
||||
--- a/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;
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
--- a/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);
|
||||
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;
|
||||
--- a/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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
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);
|
||||
}
|
||||
|
||||
@@ -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 */
|
||||
reg |= 0x100;
|
||||
|
||||
|
@ -123,7 +123,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
|||
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. */
|
||||
B43_WARN_ON(reg == 1);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/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 */
|
||||
static struct bcma_device_id brcms_coreid_table[] = {
|
||||
|
|
|
@ -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 @@ 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, 23, BCMA_ANY_CLASS),
|
||||
BCMA_CORE(BCMA_MANUF_BCM, BCMA_CORE_80211, 24, BCMA_ANY_CLASS),
|
||||
|
|
Loading…
Reference in New Issue