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_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)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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),)

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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(

View File

@ -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)

View File

@ -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

View File

@ -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;
}

View File

@ -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.

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
+++ 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

View File

@ -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(&reg_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)
{

View File

@ -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

View File

@ -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;

View File

@ -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);

View File

@ -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

View File

@ -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) {

View File

@ -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));
}

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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

View File

@ -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;

View File

@ -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) {

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
--- 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,

View File

@ -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);

View File

@ -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, &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.
*/
@ -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);

View File

@ -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, &reg);
rt2800_register_read(rt2x00dev, CH_BUSY_STA, &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)
@@ -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)
/*

View File

@ -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) = {

View File

@ -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);

View File

@ -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

View File

@ -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 */

View File

@ -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);

View File

@ -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[] = {

View File

@ -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),