mac80211: update to wireless-testing 2011-01-05, should improve aggregation reliability in ath9k
SVN-Revision: 24948
This commit is contained in:
parent
088d334311
commit
56647592a4
33 changed files with 49 additions and 724 deletions
|
@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=2010-12-16
|
||||
PKG_RELEASE:=2
|
||||
PKG_VERSION:=2011-01-05
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_MD5SUM:=39196307aa67c1f19f498b570b994112
|
||||
PKG_MD5SUM:=2b87fdd08d95fa5def39f56f49c4906d
|
||||
|
||||
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
|
||||
|
@ -345,7 +345,7 @@ define KernelPackage/rtl8180
|
|||
$(call KernelPackage/rtl818x/Default)
|
||||
DEPENDS+= @PCI_SUPPORT
|
||||
TITLE+= (RTL8180 PCI)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8180.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8180/rtl8180.ko
|
||||
AUTOLOAD:=$(call AutoLoad,27,rtl8180)
|
||||
endef
|
||||
|
||||
|
@ -353,7 +353,7 @@ define KernelPackage/rtl8187
|
|||
$(call KernelPackage/rtl818x/Default)
|
||||
DEPENDS+= @USB_SUPPORT
|
||||
TITLE+= (RTL8187 USB)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8187.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rtl818x/rtl8187/rtl8187.ko
|
||||
AUTOLOAD:=$(call AutoLoad,27,rtl8187)
|
||||
endef
|
||||
|
||||
|
@ -941,6 +941,7 @@ MAKE_OPTS:= \
|
|||
CONFIG_RT2800USB=$(if $(CONFIG_PACKAGE_kmod-rt2800-usb),m) \
|
||||
CONFIG_RTL8180=$(if $(CONFIG_PACKAGE_kmod-rtl8180),m) \
|
||||
CONFIG_RTL8187=$(if $(CONFIG_PACKAGE_kmod-rtl8187),m) \
|
||||
CONFIG_RTL8192CE= \
|
||||
CONFIG_MAC80211_HWSIM=$(if $(CONFIG_PACKAGE_kmod-mac80211-hwsim),m) \
|
||||
CONFIG_PCMCIA= \
|
||||
CONFIG_LIBIPW=$(if $(CONFIG_PACKAGE_kmod-net-libipw),m) \
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -301,8 +301,8 @@ endif #CONFIG_SSB
|
||||
@@ -311,8 +311,8 @@ endif #CONFIG_SSB
|
||||
|
||||
CONFIG_P54_PCI=m
|
||||
|
||||
|
|
|
@ -9,15 +9,17 @@
|
|||
|
||||
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")
|
||||
@@ -590,8 +590,8 @@ endif #CONFIG_COMPAT_KERNEL_27
|
||||
@@ -613,10 +613,10 @@ endif #CONFIG_COMPAT_KERNEL_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_31
|
||||
-CONFIG_RFKILL_BACKPORT=m
|
||||
-CONFIG_RFKILL_BACKPORT_LEDS=y
|
||||
-CONFIG_RFKILL_BACKPORT_INPUT=y
|
||||
+# CONFIG_RFKILL_BACKPORT=m
|
||||
ifdef CONFIG_LEDS_TRIGGERS
|
||||
-CONFIG_RFKILL_BACKPORT_LEDS=y
|
||||
+# CONFIG_RFKILL_BACKPORT_LEDS=y
|
||||
endif #CONFIG_LEDS_TRIGGERS
|
||||
-CONFIG_RFKILL_BACKPORT_INPUT=y
|
||||
+# CONFIG_RFKILL_BACKPORT_INPUT=y
|
||||
endif #CONFIG_COMPAT_KERNEL_31
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
else
|
||||
include $(KLIB_BUILD)/.config
|
||||
endif
|
||||
@@ -285,19 +284,18 @@ CONFIG_IPW2200_QOS=y
|
||||
@@ -295,19 +294,18 @@ CONFIG_IPW2200_QOS=y
|
||||
# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
|
||||
endif #CONFIG_WIRELESS_EXT
|
||||
|
||||
|
@ -51,7 +51,7 @@
|
|||
|
||||
CONFIG_P54_PCI=m
|
||||
|
||||
@@ -486,7 +484,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
@@ -505,7 +503,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
|
||||
ifdef CONFIG_MMC
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -196,7 +196,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT
|
||||
@@ -202,7 +202,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT
|
||||
endif #CONFIG_WIRELESS_EXT
|
||||
|
||||
ifneq ($(CONFIG_STAGING),)
|
||||
|
@ -9,7 +9,7 @@
|
|||
endif
|
||||
|
||||
# mac80211 test driver
|
||||
@@ -326,13 +326,13 @@ endif #CONFIG_CRC_ITU_T
|
||||
@@ -336,13 +336,13 @@ endif #CONFIG_CRC_ITU_T
|
||||
CONFIG_MWL8K=m
|
||||
|
||||
# Ethernet drivers go here
|
||||
|
@ -28,7 +28,7 @@
|
|||
endif #CONFIG_COMPAT_KERNEL_27
|
||||
|
||||
ifdef CONFIG_WIRELESS_EXT
|
||||
@@ -383,21 +383,21 @@ CONFIG_ZD1211RW=m
|
||||
@@ -396,21 +396,21 @@ CONFIG_ZD1211RW=m
|
||||
# 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_29
|
||||
|
|
|
@ -1,84 +0,0 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -132,7 +132,7 @@ CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstr
|
||||
CONFIG_MAC80211_RC_PID=y
|
||||
CONFIG_MAC80211_RC_MINSTREL=y
|
||||
CONFIG_MAC80211_RC_MINSTREL_HT=y
|
||||
-CONFIG_MAC80211_LEDS=y
|
||||
+# CONFIG_MAC80211_LEDS=y
|
||||
|
||||
# enable mesh networking too
|
||||
CONFIG_MAC80211_MESH=y
|
||||
@@ -242,7 +242,7 @@ CONFIG_B43_PCI_AUTOSELECT=y
|
||||
ifdef CONFIG_PCMCIA
|
||||
CONFIG_B43_PCMCIA=y
|
||||
endif #CONFIG_PCMCIA
|
||||
-CONFIG_B43_LEDS=y
|
||||
+# CONFIG_B43_LEDS=y
|
||||
CONFIG_B43_PHY_LP=y
|
||||
CONFIG_B43_PHY_N=y
|
||||
# CONFIG_B43_FORCE_PIO=y
|
||||
@@ -251,7 +251,7 @@ CONFIG_B43_PHY_N=y
|
||||
CONFIG_B43LEGACY=m
|
||||
CONFIG_B43LEGACY_HWRNG=y
|
||||
CONFIG_B43LEGACY_PCI_AUTOSELECT=y
|
||||
-CONFIG_B43LEGACY_LEDS=y
|
||||
+# CONFIG_B43LEGACY_LEDS=y
|
||||
# CONFIG_B43LEGACY_DEBUG=y
|
||||
CONFIG_B43LEGACY_DMA=y
|
||||
CONFIG_B43LEGACY_PIO=y
|
||||
@@ -561,7 +561,7 @@ endif
|
||||
|
||||
# p54
|
||||
CONFIG_P54_COMMON=m
|
||||
-CONFIG_P54_LEDS=y
|
||||
+# CONFIG_P54_LEDS=y
|
||||
|
||||
# Atheros
|
||||
CONFIG_ATH_COMMON=m
|
||||
--- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
|
||||
@@ -864,6 +864,7 @@ static void ath9k_led_brightness_work(st
|
||||
}
|
||||
}
|
||||
|
||||
+#ifdef CONFIG_LEDS_CLASS
|
||||
static void ath9k_led_brightness(struct led_classdev *led_cdev,
|
||||
enum led_brightness brightness)
|
||||
{
|
||||
@@ -875,6 +876,7 @@ static void ath9k_led_brightness(struct
|
||||
ieee80211_queue_delayed_work(priv->hw,
|
||||
&led->brightness_work, 0);
|
||||
}
|
||||
+#endif
|
||||
|
||||
static void ath9k_led_stop_brightness(struct ath9k_htc_priv *priv)
|
||||
{
|
||||
@@ -887,6 +889,7 @@ static void ath9k_led_stop_brightness(st
|
||||
static int ath9k_register_led(struct ath9k_htc_priv *priv, struct ath_led *led,
|
||||
char *trigger)
|
||||
{
|
||||
+#ifdef CONFIG_LEDS_CLASS
|
||||
int ret;
|
||||
|
||||
led->priv = priv;
|
||||
@@ -904,14 +907,19 @@ static int ath9k_register_led(struct ath
|
||||
INIT_DELAYED_WORK(&led->brightness_work, ath9k_led_brightness_work);
|
||||
|
||||
return ret;
|
||||
+#else
|
||||
+ return 0;
|
||||
+#endif
|
||||
}
|
||||
|
||||
static void ath9k_unregister_led(struct ath_led *led)
|
||||
{
|
||||
+#ifdef CONFIG_LEDS_CLASS
|
||||
if (led->registered) {
|
||||
led_classdev_unregister(&led->led_cdev);
|
||||
led->registered = 0;
|
||||
}
|
||||
+#endif
|
||||
}
|
||||
|
||||
void ath9k_deinit_leds(struct ath9k_htc_priv *priv)
|
|
@ -9,12 +9,12 @@
|
|||
else
|
||||
include $(KLIB_BUILD)/.config
|
||||
endif
|
||||
@@ -223,7 +223,7 @@ CONFIG_B43=m
|
||||
@@ -229,7 +229,7 @@ CONFIG_B43=m
|
||||
CONFIG_B43_HWRNG=y
|
||||
CONFIG_B43_PCI_AUTOSELECT=y
|
||||
ifdef CONFIG_PCMCIA
|
||||
-CONFIG_B43_PCMCIA=y
|
||||
+# CONFIG_B43_PCMCIA=y
|
||||
endif #CONFIG_PCMCIA
|
||||
# CONFIG_B43_LEDS=y
|
||||
CONFIG_B43_PHY_LP=y
|
||||
ifdef CONFIG_MAC80211_LEDS
|
||||
CONFIG_B43_LEDS=y
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -467,7 +467,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
@@ -486,7 +486,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
|
||||
|
||||
ifdef CONFIG_MMC
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -227,7 +227,7 @@ ifdef CONFIG_PCMCIA
|
||||
endif #CONFIG_PCMCIA
|
||||
# CONFIG_B43_LEDS=y
|
||||
@@ -235,7 +235,7 @@ ifdef CONFIG_MAC80211_LEDS
|
||||
CONFIG_B43_LEDS=y
|
||||
endif #CONFIG_MAC80211_LEDS
|
||||
CONFIG_B43_PHY_LP=y
|
||||
-CONFIG_B43_PHY_N=y
|
||||
+# CONFIG_B43_PHY_N=y
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -289,7 +289,7 @@ CONFIG_RTL8180=m
|
||||
@@ -299,7 +299,7 @@ CONFIG_RTL8180=m
|
||||
|
||||
CONFIG_ADM8211=m
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
CONFIG_RT2400PCI=m
|
||||
CONFIG_RT2500PCI=m
|
||||
ifdef CONFIG_CRC_CCITT
|
||||
@@ -418,7 +418,7 @@ CONFIG_RT2800USB=m
|
||||
@@ -437,7 +437,7 @@ CONFIG_RT2800USB=m
|
||||
# CONFIG_RT2800USB_RT35XX=y
|
||||
CONFIG_RT2800USB_UNKNOWN=y
|
||||
endif #CONFIG_CRC_CCITT
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -112,7 +112,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
|
||||
@@ -116,7 +116,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y
|
||||
# This is the one used by our compat-wireless net/mac80211/rate.c
|
||||
# in case you have and old kernel which is overriding this to pid.
|
||||
CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstrel_ht
|
||||
|
@ -8,4 +8,4 @@
|
|||
+# CONFIG_MAC80211_RC_PID=y
|
||||
CONFIG_MAC80211_RC_MINSTREL=y
|
||||
CONFIG_MAC80211_RC_MINSTREL_HT=y
|
||||
# CONFIG_MAC80211_LEDS=y
|
||||
ifdef CONFIG_LEDS_TRIGGERS
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -206,7 +206,7 @@ CONFIG_ATH9K_COMMON=m
|
||||
@@ -212,7 +212,7 @@ 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
|
||||
@@ -189,7 +189,7 @@ CONFIG_MAC80211_HWSIM=m
|
||||
@@ -195,7 +195,7 @@ CONFIG_MAC80211_HWSIM=m
|
||||
ifdef CONFIG_PCI
|
||||
|
||||
CONFIG_ATH5K=m
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
--- a/include/linux/compat-2.6.36.h
|
||||
+++ b/include/linux/compat-2.6.36.h
|
||||
@@ -90,6 +90,8 @@ struct pm_qos_request_list {
|
||||
|
||||
@@ -101,6 +101,8 @@ int no_printk(const char *s, ...) { retu
|
||||
#define alloc_workqueue(name, flags, max_active) __create_workqueue(name, flags, max_active, 0)
|
||||
#endif
|
||||
|
||||
+#define PCI_EEPROM_WIDTH_93C86 8
|
||||
|
|
|
@ -42,10 +42,10 @@
|
|||
#include <pcmcia/cs.h>
|
||||
--- a/include/linux/compat-2.6.33.h
|
||||
+++ b/include/linux/compat-2.6.33.h
|
||||
@@ -6,7 +6,7 @@
|
||||
#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
|
||||
@@ -7,7 +7,7 @@
|
||||
|
||||
#include <linux/skbuff.h>
|
||||
#include <linux/pci.h>
|
||||
-#if defined(CONFIG_PCCARD) || defined(CONFIG_PCCARD_MODULE)
|
||||
+#if 0
|
||||
#include <pcmcia/cs_types.h>
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
#endif
|
||||
--- a/config.mk
|
||||
+++ b/config.mk
|
||||
@@ -405,7 +405,7 @@ endif #CONFIG_COMPAT_KERNEL_29
|
||||
@@ -424,7 +424,7 @@ endif #CONFIG_COMPAT_KERNEL_29
|
||||
# This activates a threading fix for usb urb.
|
||||
# this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351
|
||||
# This fix will be included in some stable releases.
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
err:
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
@@ -788,6 +788,8 @@ struct ath_hw {
|
||||
@@ -791,6 +791,8 @@ struct ath_hw {
|
||||
int initPDADC;
|
||||
int PDADCdelta;
|
||||
u8 led_pin;
|
||||
|
|
|
@ -1,35 +0,0 @@
|
|||
From: Luciano Coelho <luciano.coelho@xxxxxxxxx>
|
||||
|
||||
If CONFIG_MAC80211_LEDS is not set, ieee80211_i.h was failing to compile,
|
||||
because struct led_trigger is only declared when CONFIG_LEDS_TRIGGERS is
|
||||
set.
|
||||
|
||||
This patch adds ifdefs around the tpt_led_trigger declaration in
|
||||
ieee80211_i.h to avoid the problem.
|
||||
|
||||
Cc: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
|
||||
Signed-off-by: Luciano Coelho <luciano.coelho@xxxxxxxxx>
|
||||
---
|
||||
net/mac80211/ieee80211_i.h | 2 ++
|
||||
1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
|
||||
index 0817ec6..7541d42 100644
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -631,6 +631,7 @@ enum queue_stop_reason {
|
||||
IEEE80211_QUEUE_STOP_REASON_SKB_ADD,
|
||||
};
|
||||
|
||||
+#ifdef CONFIG_MAC80211_LEDS
|
||||
struct tpt_led_trigger {
|
||||
struct led_trigger trig;
|
||||
char name[32];
|
||||
@@ -642,6 +643,7 @@ struct tpt_led_trigger {
|
||||
unsigned int active, want;
|
||||
bool running;
|
||||
};
|
||||
+#endif
|
||||
|
||||
/**
|
||||
* mac80211 scan flags - currently active scan mode
|
|
@ -1,270 +0,0 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c
|
||||
@@ -961,18 +961,6 @@ static void ar5008_hw_rfbus_done(struct
|
||||
REG_WRITE(ah, AR_PHY_RFBUS_REQ, 0);
|
||||
}
|
||||
|
||||
-static void ar5008_hw_enable_rfkill(struct ath_hw *ah)
|
||||
-{
|
||||
- REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL,
|
||||
- AR_GPIO_INPUT_EN_VAL_RFSILENT_BB);
|
||||
-
|
||||
- REG_CLR_BIT(ah, AR_GPIO_INPUT_MUX2,
|
||||
- AR_GPIO_INPUT_MUX2_RFSILENT);
|
||||
-
|
||||
- ath9k_hw_cfg_gpio_input(ah, ah->rfkill_gpio);
|
||||
- REG_SET_BIT(ah, AR_PHY_TEST, RFSILENT_BB);
|
||||
-}
|
||||
-
|
||||
static void ar5008_restore_chainmask(struct ath_hw *ah)
|
||||
{
|
||||
int rx_chainmask = ah->rxchainmask;
|
||||
@@ -1629,7 +1617,6 @@ void ar5008_hw_attach_phy_ops(struct ath
|
||||
priv_ops->set_delta_slope = ar5008_hw_set_delta_slope;
|
||||
priv_ops->rfbus_req = ar5008_hw_rfbus_req;
|
||||
priv_ops->rfbus_done = ar5008_hw_rfbus_done;
|
||||
- priv_ops->enable_rfkill = ar5008_hw_enable_rfkill;
|
||||
priv_ops->restore_chainmask = ar5008_restore_chainmask;
|
||||
priv_ops->set_diversity = ar5008_set_diversity;
|
||||
priv_ops->do_getnf = ar5008_hw_do_getnf;
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
|
||||
@@ -745,28 +745,6 @@ static void ar9003_hw_rfbus_done(struct
|
||||
REG_WRITE(ah, AR_PHY_RFBUS_REQ, 0);
|
||||
}
|
||||
|
||||
-/*
|
||||
- * Set the interrupt and GPIO values so the ISR can disable RF
|
||||
- * on a switch signal. Assumes GPIO port and interrupt polarity
|
||||
- * are set prior to call.
|
||||
- */
|
||||
-static void ar9003_hw_enable_rfkill(struct ath_hw *ah)
|
||||
-{
|
||||
- /* Connect rfsilent_bb_l to baseband */
|
||||
- REG_SET_BIT(ah, AR_GPIO_INPUT_EN_VAL,
|
||||
- AR_GPIO_INPUT_EN_VAL_RFSILENT_BB);
|
||||
- /* Set input mux for rfsilent_bb_l to GPIO #0 */
|
||||
- REG_CLR_BIT(ah, AR_GPIO_INPUT_MUX2,
|
||||
- AR_GPIO_INPUT_MUX2_RFSILENT);
|
||||
-
|
||||
- /*
|
||||
- * Configure the desired GPIO port for input and
|
||||
- * enable baseband rf silence.
|
||||
- */
|
||||
- ath9k_hw_cfg_gpio_input(ah, ah->rfkill_gpio);
|
||||
- REG_SET_BIT(ah, AR_PHY_TEST, RFSILENT_BB);
|
||||
-}
|
||||
-
|
||||
static void ar9003_hw_set_diversity(struct ath_hw *ah, bool value)
|
||||
{
|
||||
u32 v = REG_READ(ah, AR_PHY_CCK_DETECT);
|
||||
@@ -1203,7 +1181,6 @@ void ar9003_hw_attach_phy_ops(struct ath
|
||||
priv_ops->set_delta_slope = ar9003_hw_set_delta_slope;
|
||||
priv_ops->rfbus_req = ar9003_hw_rfbus_req;
|
||||
priv_ops->rfbus_done = ar9003_hw_rfbus_done;
|
||||
- priv_ops->enable_rfkill = ar9003_hw_enable_rfkill;
|
||||
priv_ops->set_diversity = ar9003_hw_set_diversity;
|
||||
priv_ops->ani_control = ar9003_hw_ani_control;
|
||||
priv_ops->do_getnf = ar9003_hw_do_getnf;
|
||||
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
@@ -189,6 +189,7 @@ struct ath_txq {
|
||||
struct list_head axq_q;
|
||||
spinlock_t axq_lock;
|
||||
u32 axq_depth;
|
||||
+ u32 axq_ampdu_depth;
|
||||
bool stopped;
|
||||
bool axq_tx_inprogress;
|
||||
struct list_head axq_acq;
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw-ops.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw-ops.h
|
||||
@@ -223,11 +223,6 @@ static inline void ath9k_hw_rfbus_done(s
|
||||
return ath9k_hw_private_ops(ah)->rfbus_done(ah);
|
||||
}
|
||||
|
||||
-static inline void ath9k_enable_rfkill(struct ath_hw *ah)
|
||||
-{
|
||||
- return ath9k_hw_private_ops(ah)->enable_rfkill(ah);
|
||||
-}
|
||||
-
|
||||
static inline void ath9k_hw_restore_chainmask(struct ath_hw *ah)
|
||||
{
|
||||
if (!ath9k_hw_private_ops(ah)->restore_chainmask)
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -491,6 +491,17 @@ static int __ath9k_hw_init(struct ath_hw
|
||||
if (ah->hw_version.devid == AR5416_AR9100_DEVID)
|
||||
ah->hw_version.macVersion = AR_SREV_VERSION_9100;
|
||||
|
||||
+ ath9k_hw_read_revisions(ah);
|
||||
+
|
||||
+ /*
|
||||
+ * Read back AR_WA into a permanent copy and set bits 14 and 17.
|
||||
+ * We need to do this to avoid RMW of this register. We cannot
|
||||
+ * read the reg when chip is asleep.
|
||||
+ */
|
||||
+ ah->WARegVal = REG_READ(ah, AR_WA);
|
||||
+ ah->WARegVal |= (AR_WA_D3_L1_DISABLE |
|
||||
+ AR_WA_ASPM_TIMER_BASED_DISABLE);
|
||||
+
|
||||
if (!ath9k_hw_set_reset_reg(ah, ATH9K_RESET_POWER_ON)) {
|
||||
ath_err(common, "Couldn't reset chip\n");
|
||||
return -EIO;
|
||||
@@ -559,14 +570,6 @@ static int __ath9k_hw_init(struct ath_hw
|
||||
|
||||
ath9k_hw_init_mode_regs(ah);
|
||||
|
||||
- /*
|
||||
- * Read back AR_WA into a permanent copy and set bits 14 and 17.
|
||||
- * We need to do this to avoid RMW of this register. We cannot
|
||||
- * read the reg when chip is asleep.
|
||||
- */
|
||||
- ah->WARegVal = REG_READ(ah, AR_WA);
|
||||
- ah->WARegVal |= (AR_WA_D3_L1_DISABLE |
|
||||
- AR_WA_ASPM_TIMER_BASED_DISABLE);
|
||||
|
||||
if (ah->is_pciexpress)
|
||||
ath9k_hw_configpcipowersave(ah, 0, 0);
|
||||
@@ -1078,8 +1081,6 @@ static bool ath9k_hw_set_reset_power_on(
|
||||
return false;
|
||||
}
|
||||
|
||||
- ath9k_hw_read_revisions(ah);
|
||||
-
|
||||
return ath9k_hw_set_reset(ah, ATH9K_RESET_WARM);
|
||||
}
|
||||
|
||||
@@ -1399,7 +1400,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
ath9k_hw_init_qos(ah);
|
||||
|
||||
if (ah->caps.hw_caps & ATH9K_HW_CAP_RFSILENT)
|
||||
- ath9k_enable_rfkill(ah);
|
||||
+ ath9k_hw_cfg_gpio_input(ah, ah->rfkill_gpio);
|
||||
|
||||
ath9k_hw_init_global_settings(ah);
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
@@ -576,7 +576,6 @@ struct ath_hw_private_ops {
|
||||
void (*set_delta_slope)(struct ath_hw *ah, struct ath9k_channel *chan);
|
||||
bool (*rfbus_req)(struct ath_hw *ah);
|
||||
void (*rfbus_done)(struct ath_hw *ah);
|
||||
- void (*enable_rfkill)(struct ath_hw *ah);
|
||||
void (*restore_chainmask)(struct ath_hw *ah);
|
||||
void (*set_diversity)(struct ath_hw *ah, bool value);
|
||||
u32 (*compute_pll_control)(struct ath_hw *ah,
|
||||
--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
||||
@@ -838,7 +838,7 @@ static void ath_tx_sched_aggr(struct ath
|
||||
ath_tx_txqaddbuf(sc, txq, &bf_q);
|
||||
TX_STAT_INC(txq->axq_qnum, a_aggr);
|
||||
|
||||
- } while (txq->axq_depth < ATH_AGGR_MIN_QDEPTH &&
|
||||
+ } while (txq->axq_ampdu_depth < ATH_AGGR_MIN_QDEPTH &&
|
||||
status != ATH_AGGR_BAW_CLOSED);
|
||||
}
|
||||
|
||||
@@ -999,6 +999,7 @@ struct ath_txq *ath_txq_setup(struct ath
|
||||
INIT_LIST_HEAD(&txq->axq_acq);
|
||||
spin_lock_init(&txq->axq_lock);
|
||||
txq->axq_depth = 0;
|
||||
+ txq->axq_ampdu_depth = 0;
|
||||
txq->axq_tx_inprogress = false;
|
||||
sc->tx.txqsetup |= 1<<qnum;
|
||||
|
||||
@@ -1068,6 +1069,12 @@ int ath_cabq_update(struct ath_softc *sc
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static bool bf_is_ampdu_not_probing(struct ath_buf *bf)
|
||||
+{
|
||||
+ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(bf->bf_mpdu);
|
||||
+ return bf_isampdu(bf) && !(info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE);
|
||||
+}
|
||||
+
|
||||
/*
|
||||
* Drain a given TX queue (could be Beacon or Data)
|
||||
*
|
||||
@@ -1126,7 +1133,8 @@ void ath_draintxq(struct ath_softc *sc,
|
||||
}
|
||||
|
||||
txq->axq_depth--;
|
||||
-
|
||||
+ if (bf_is_ampdu_not_probing(bf))
|
||||
+ txq->axq_ampdu_depth--;
|
||||
spin_unlock_bh(&txq->axq_lock);
|
||||
|
||||
if (bf_isampdu(bf))
|
||||
@@ -1316,6 +1324,8 @@ static void ath_tx_txqaddbuf(struct ath_
|
||||
ath9k_hw_txstart(ah, txq->axq_qnum);
|
||||
}
|
||||
txq->axq_depth++;
|
||||
+ if (bf_is_ampdu_not_probing(bf))
|
||||
+ txq->axq_ampdu_depth++;
|
||||
}
|
||||
|
||||
static void ath_tx_send_ampdu(struct ath_softc *sc, struct ath_atx_tid *tid,
|
||||
@@ -1336,7 +1346,7 @@ static void ath_tx_send_ampdu(struct ath
|
||||
*/
|
||||
if (!list_empty(&tid->buf_q) || tid->paused ||
|
||||
!BAW_WITHIN(tid->seq_start, tid->baw_size, fi->seqno) ||
|
||||
- txctl->txq->axq_depth >= ATH_AGGR_MIN_QDEPTH) {
|
||||
+ txctl->txq->axq_ampdu_depth >= ATH_AGGR_MIN_QDEPTH) {
|
||||
/*
|
||||
* Add this frame to software queue for scheduling later
|
||||
* for aggregation.
|
||||
@@ -2040,6 +2050,9 @@ static void ath_tx_processq(struct ath_s
|
||||
txq->axq_tx_inprogress = false;
|
||||
if (bf_held)
|
||||
list_del(&bf_held->list);
|
||||
+
|
||||
+ if (bf_is_ampdu_not_probing(bf))
|
||||
+ txq->axq_ampdu_depth--;
|
||||
spin_unlock_bh(&txq->axq_lock);
|
||||
|
||||
if (bf_held)
|
||||
@@ -2168,6 +2181,8 @@ void ath_tx_edma_tasklet(struct ath_soft
|
||||
INCR(txq->txq_tailidx, ATH_TXFIFO_DEPTH);
|
||||
txq->axq_depth--;
|
||||
txq->axq_tx_inprogress = false;
|
||||
+ if (bf_is_ampdu_not_probing(bf))
|
||||
+ txq->axq_ampdu_depth--;
|
||||
spin_unlock_bh(&txq->axq_lock);
|
||||
|
||||
txok = !(txs.ts_status & ATH9K_TXERR_MASK);
|
||||
--- a/drivers/net/wireless/ath/ath9k/htc_drv_init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/htc_drv_init.c
|
||||
@@ -714,8 +714,7 @@ static void ath9k_set_hw_capab(struct at
|
||||
IEEE80211_HW_HAS_RATE_CONTROL |
|
||||
IEEE80211_HW_RX_INCLUDES_FCS |
|
||||
IEEE80211_HW_SUPPORTS_PS |
|
||||
- IEEE80211_HW_PS_NULLFUNC_STACK |
|
||||
- IEEE80211_HW_NEED_DTIM_PERIOD;
|
||||
+ IEEE80211_HW_PS_NULLFUNC_STACK;
|
||||
|
||||
hw->wiphy->interface_modes =
|
||||
BIT(NL80211_IFTYPE_STATION) |
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -646,8 +646,7 @@ void ath9k_set_hw_capab(struct ath_softc
|
||||
IEEE80211_HW_SUPPORTS_PS |
|
||||
IEEE80211_HW_PS_NULLFUNC_STACK |
|
||||
IEEE80211_HW_SPECTRUM_MGMT |
|
||||
- IEEE80211_HW_REPORTS_TX_ACK_STATUS |
|
||||
- IEEE80211_HW_NEED_DTIM_PERIOD;
|
||||
+ IEEE80211_HW_REPORTS_TX_ACK_STATUS;
|
||||
|
||||
if (sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_HT)
|
||||
hw->flags |= IEEE80211_HW_AMPDU_AGGREGATION;
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -285,7 +285,8 @@ int ath_set_channel(struct ath_softc *sc
|
||||
ath9k_hw_set_interrupts(ah, ah->imask);
|
||||
|
||||
if (!(sc->sc_flags & (SC_OP_OFFCHANNEL))) {
|
||||
- ath_beacon_config(sc, NULL);
|
||||
+ if (sc->sc_flags & SC_OP_BEACONS)
|
||||
+ ath_beacon_config(sc, NULL);
|
||||
ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 0);
|
||||
ath_start_ani(common);
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
commit ad0e2b5a00dbec303e4682b403bb6703d11dcdb2
|
||||
Author: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Tue Jun 1 10:19:19 2010 +0200
|
||||
|
||||
mac80211: simplify key locking
|
||||
|
||||
removed the synchronization against RCU and thus
|
||||
opened a race window where we can use a key for
|
||||
TX while it is already freed. Put a synchronisation
|
||||
into the right place to close that window.
|
||||
|
||||
Reported-by: Jussi Kivilinna <jussi.kivilinna@mbnet.fi>
|
||||
Cc: stable@kernel.org [2.6.36+]
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
|
||||
--- a/net/mac80211/key.c
|
||||
+++ b/net/mac80211/key.c
|
||||
@@ -382,6 +382,12 @@ static void __ieee80211_key_destroy(stru
|
||||
if (!key)
|
||||
return;
|
||||
|
||||
+ /*
|
||||
+ * Synchronize so the TX path can no longer be using
|
||||
+ * this key before we free/remove it.
|
||||
+ */
|
||||
+ synchronize_rcu();
|
||||
+
|
||||
if (key->local)
|
||||
ieee80211_key_disable_hw_accel(key);
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -33,7 +33,7 @@ int modparam_nohwcrypt;
|
||||
module_param_named(nohwcrypt, modparam_nohwcrypt, int, 0444);
|
||||
@@ -33,7 +33,7 @@ int ath9k_modparam_nohwcrypt;
|
||||
module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444);
|
||||
MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption");
|
||||
|
||||
-int led_blink;
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
|
||||
#include "ath9k.h"
|
||||
|
||||
@@ -526,6 +527,7 @@ static void ath9k_init_misc(struct ath_s
|
||||
@@ -528,6 +529,7 @@ static void ath9k_init_misc(struct ath_s
|
||||
static int ath9k_init_softc(u16 devid, struct ath_softc *sc, u16 subsysid,
|
||||
const struct ath_bus_ops *bus_ops)
|
||||
{
|
||||
|
@ -26,7 +26,7 @@
|
|||
struct ath_hw *ah = NULL;
|
||||
struct ath_common *common;
|
||||
int ret = 0, i;
|
||||
@@ -539,7 +541,7 @@ static int ath9k_init_softc(u16 devid, s
|
||||
@@ -541,7 +543,7 @@ static int ath9k_init_softc(u16 devid, s
|
||||
ah->hw_version.subsysid = subsysid;
|
||||
sc->sc_ah = ah;
|
||||
|
||||
|
@ -35,7 +35,7 @@
|
|||
ah->ah_flags |= AH_USE_EEPROM;
|
||||
|
||||
common = ath9k_hw_common(ah);
|
||||
@@ -572,6 +574,9 @@ static int ath9k_init_softc(u16 devid, s
|
||||
@@ -574,6 +576,9 @@ static int ath9k_init_softc(u16 devid, s
|
||||
if (ret)
|
||||
goto err_hw;
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -541,8 +541,14 @@ static int ath9k_init_softc(u16 devid, s
|
||||
@@ -543,8 +543,14 @@ static int ath9k_init_softc(u16 devid, s
|
||||
ah->hw_version.subsysid = subsysid;
|
||||
sc->sc_ah = ah;
|
||||
|
||||
|
@ -18,7 +18,7 @@
|
|||
common->ops = &ath9k_common_ops;
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
@@ -786,7 +786,7 @@ struct ath_hw {
|
||||
@@ -790,7 +790,7 @@ struct ath_hw {
|
||||
u32 originalGain[22];
|
||||
int initPDADC;
|
||||
int PDADCdelta;
|
||||
|
|
|
@ -253,7 +253,7 @@
|
|||
/* Rfkill */
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -1296,9 +1296,6 @@ static void ath9k_stop(struct ieee80211_
|
||||
@@ -1270,9 +1270,6 @@ static void ath9k_stop(struct ieee80211_
|
||||
|
||||
aphy->state = ATH_WIPHY_INACTIVE;
|
||||
|
||||
|
@ -265,7 +265,7 @@
|
|||
cancel_work_sync(&sc->hw_check_work);
|
||||
--- a/drivers/net/wireless/ath/ath9k/init.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/init.c
|
||||
@@ -143,6 +143,21 @@ static struct ieee80211_rate ath9k_legac
|
||||
@@ -145,6 +145,21 @@ static struct ieee80211_rate ath9k_legac
|
||||
RATE(540, 0x0c, 0),
|
||||
};
|
||||
|
||||
|
@ -287,7 +287,7 @@
|
|||
static void ath9k_deinit_softc(struct ath_softc *sc);
|
||||
|
||||
/*
|
||||
@@ -745,6 +760,13 @@ int ath9k_init_device(u16 devid, struct
|
||||
@@ -747,6 +762,13 @@ int ath9k_init_device(u16 devid, struct
|
||||
|
||||
ath9k_init_txpower_limits(sc);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/hw.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.c
|
||||
@@ -1426,8 +1426,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
@@ -1425,8 +1425,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
|
||||
REG_WRITE(ah, AR_OBS, 8);
|
||||
|
||||
if (ah->config.rx_intr_mitigation) {
|
|
@ -1,57 +0,0 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c
|
||||
@@ -4762,6 +4762,7 @@ static void ath9k_hw_ar9300_set_txpower(
|
||||
struct ath_regulatory *regulatory = ath9k_hw_regulatory(ah);
|
||||
struct ath_common *common = ath9k_hw_common(ah);
|
||||
struct ar9300_eeprom *eep = &ah->eeprom.ar9300_eep;
|
||||
+ struct ar9300_modal_eep_header *modal_hdr;
|
||||
u8 targetPowerValT2[ar9300RateSize];
|
||||
u8 target_power_val_t2_eep[ar9300RateSize];
|
||||
unsigned int i = 0, paprd_scale_factor = 0;
|
||||
@@ -4771,15 +4772,17 @@ static void ath9k_hw_ar9300_set_txpower(
|
||||
|
||||
if (ah->eep_ops->get_eeprom(ah, EEP_PAPRD)) {
|
||||
if (IS_CHAN_2GHZ(chan))
|
||||
- ah->paprd_ratemask = (IS_CHAN_HT40(chan) ?
|
||||
- le32_to_cpu(eep->modalHeader2G.papdRateMaskHt40) :
|
||||
- le32_to_cpu(eep->modalHeader2G.papdRateMaskHt20))
|
||||
- & AR9300_PAPRD_RATE_MASK;
|
||||
+ modal_hdr = &eep->modalHeader2G;
|
||||
else
|
||||
- ah->paprd_ratemask = (IS_CHAN_HT40(chan) ?
|
||||
- le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40) :
|
||||
- le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20))
|
||||
- & AR9300_PAPRD_RATE_MASK;
|
||||
+ modal_hdr = &eep->modalHeader5G;
|
||||
+
|
||||
+ ah->paprd_ratemask =
|
||||
+ le32_to_cpu(modal_hdr->papdRateMaskHt20) &
|
||||
+ AR9300_PAPRD_RATE_MASK;
|
||||
+
|
||||
+ ah->paprd_ratemask_ht40 =
|
||||
+ le32_to_cpu(modal_hdr->papdRateMaskHt40) &
|
||||
+ AR9300_PAPRD_RATE_MASK;
|
||||
|
||||
paprd_scale_factor = ar9003_get_paprd_scale_factor(ah, chan);
|
||||
min_pwridx = IS_CHAN_HT40(chan) ? ALL_TARGET_HT40_0_8_16 :
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c
|
||||
@@ -134,7 +134,7 @@ static int ar9003_paprd_setup_single_tab
|
||||
REG_RMW_FIELD(ah, AR_PHY_PAPRD_AM2PM, AR_PHY_PAPRD_AM2PM_MASK,
|
||||
ah->paprd_ratemask);
|
||||
REG_RMW_FIELD(ah, AR_PHY_PAPRD_HT40, AR_PHY_PAPRD_HT40_MASK,
|
||||
- AR_PHY_PAPRD_HT40_MASK);
|
||||
+ ah->paprd_ratemask_ht40);
|
||||
|
||||
for (i = 0; i < ah->caps.max_txchains; i++) {
|
||||
REG_RMW_FIELD(ah, ctrl0[i],
|
||||
--- a/drivers/net/wireless/ath/ath9k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/hw.h
|
||||
@@ -837,6 +837,7 @@ struct ath_hw {
|
||||
unsigned int paprd_target_power;
|
||||
unsigned int paprd_training_power;
|
||||
unsigned int paprd_ratemask;
|
||||
+ unsigned int paprd_ratemask_ht40;
|
||||
bool paprd_table_write_done;
|
||||
u32 paprd_gain_table_entries[PAPRD_GAIN_TABLE_ENTRIES];
|
||||
u8 paprd_gain_table_index[PAPRD_GAIN_TABLE_ENTRIES];
|
|
@ -1,28 +0,0 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/debug.c
|
||||
@@ -81,11 +81,10 @@ static ssize_t read_file_tx_chainmask(st
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct ath_softc *sc = file->private_data;
|
||||
- struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
char buf[32];
|
||||
unsigned int len;
|
||||
|
||||
- len = sprintf(buf, "0x%08x\n", common->tx_chainmask);
|
||||
+ len = sprintf(buf, "0x%08x\n", sc->sc_ah->caps.tx_chainmask);
|
||||
return simple_read_from_buffer(user_buf, count, ppos, buf, len);
|
||||
}
|
||||
|
||||
@@ -124,11 +123,10 @@ static ssize_t read_file_rx_chainmask(st
|
||||
size_t count, loff_t *ppos)
|
||||
{
|
||||
struct ath_softc *sc = file->private_data;
|
||||
- struct ath_common *common = ath9k_hw_common(sc->sc_ah);
|
||||
char buf[32];
|
||||
unsigned int len;
|
||||
|
||||
- len = sprintf(buf, "0x%08x\n", common->rx_chainmask);
|
||||
+ len = sprintf(buf, "0x%08x\n", sc->sc_ah->caps.rx_chainmask);
|
||||
return simple_read_from_buffer(user_buf, count, ppos, buf, len);
|
||||
}
|
||||
|
|
@ -1,75 +0,0 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
|
||||
@@ -665,7 +665,6 @@ void ath9k_deinit_device(struct ath_soft
|
||||
void ath9k_set_hw_capab(struct ath_softc *sc, struct ieee80211_hw *hw);
|
||||
void ath9k_update_ichannel(struct ath_softc *sc, struct ieee80211_hw *hw,
|
||||
struct ath9k_channel *ichan);
|
||||
-void ath_update_chainmask(struct ath_softc *sc, int is_ht);
|
||||
int ath_set_channel(struct ath_softc *sc, struct ieee80211_hw *hw,
|
||||
struct ath9k_channel *hchan);
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/main.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/main.c
|
||||
@@ -539,32 +539,6 @@ set_timer:
|
||||
}
|
||||
}
|
||||
|
||||
-/*
|
||||
- * Update tx/rx chainmask. For legacy association,
|
||||
- * hard code chainmask to 1x1, for 11n association, use
|
||||
- * the chainmask configuration, for bt coexistence, use
|
||||
- * the chainmask configuration even in legacy mode.
|
||||
- */
|
||||
-void ath_update_chainmask(struct ath_softc *sc, int is_ht)
|
||||
-{
|
||||
- struct ath_hw *ah = sc->sc_ah;
|
||||
- struct ath_common *common = ath9k_hw_common(ah);
|
||||
-
|
||||
- if ((sc->sc_flags & SC_OP_OFFCHANNEL) || is_ht ||
|
||||
- (ah->btcoex_hw.scheme != ATH_BTCOEX_CFG_NONE)) {
|
||||
- common->tx_chainmask = ah->caps.tx_chainmask;
|
||||
- common->rx_chainmask = ah->caps.rx_chainmask;
|
||||
- } else {
|
||||
- common->tx_chainmask = 1;
|
||||
- common->rx_chainmask = 1;
|
||||
- }
|
||||
-
|
||||
- ath_dbg(common, ATH_DBG_CONFIG,
|
||||
- "tx chmask: %d, rx chmask: %d\n",
|
||||
- common->tx_chainmask,
|
||||
- common->rx_chainmask);
|
||||
-}
|
||||
-
|
||||
static void ath_node_attach(struct ath_softc *sc, struct ieee80211_sta *sta)
|
||||
{
|
||||
struct ath_node *an;
|
||||
@@ -1677,8 +1651,6 @@ static int ath9k_config(struct ieee80211
|
||||
/* XXX: remove me eventualy */
|
||||
ath9k_update_ichannel(sc, hw, &sc->sc_ah->channels[pos]);
|
||||
|
||||
- ath_update_chainmask(sc, conf_is_ht(conf));
|
||||
-
|
||||
/* update survey stats for the old channel before switching */
|
||||
spin_lock_irqsave(&common->cc_lock, flags);
|
||||
ath_update_survey_stats(sc);
|
||||
@@ -1910,10 +1882,6 @@ static void ath9k_bss_info_changed(struc
|
||||
/* Set aggregation protection mode parameters */
|
||||
sc->config.ath_aggr_prot = 0;
|
||||
|
||||
- /* Only legacy IBSS for now */
|
||||
- if (vif->type == NL80211_IFTYPE_ADHOC)
|
||||
- ath_update_chainmask(sc, 0);
|
||||
-
|
||||
ath_dbg(common, ATH_DBG_CONFIG, "BSSID: %pM aid: 0x%x\n",
|
||||
common->curbssid, common->curaid);
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/virtual.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/virtual.c
|
||||
@@ -288,7 +288,6 @@ void ath9k_wiphy_chan_work(struct work_s
|
||||
/* sync hw configuration for hw code */
|
||||
common->hw = aphy->hw;
|
||||
|
||||
- ath_update_chainmask(sc, sc->chan_is_ht);
|
||||
if (ath_set_channel(sc, aphy->hw,
|
||||
&sc->sc_ah->channels[sc->chan_idx]) < 0) {
|
||||
printk(KERN_DEBUG "ath9k: Failed to set channel for new "
|
|
@ -1,14 +0,0 @@
|
|||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1549,8 +1549,10 @@ static int ieee80211_skb_resize(struct i
|
||||
|
||||
if (skb_header_cloned(skb))
|
||||
I802_DEBUG_INC(local->tx_expand_skb_head_cloned);
|
||||
- else
|
||||
+ else if (head_need || tail_need)
|
||||
I802_DEBUG_INC(local->tx_expand_skb_head);
|
||||
+ else
|
||||
+ return 0;
|
||||
|
||||
if (pskb_expand_head(skb, head_need, tail_need, GFP_ATOMIC)) {
|
||||
wiphy_debug(local->hw.wiphy,
|
|
@ -1,19 +0,0 @@
|
|||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1748,7 +1748,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
{
|
||||
struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev);
|
||||
struct ieee80211_local *local = sdata->local;
|
||||
- struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb);
|
||||
+ struct ieee80211_tx_info *info;
|
||||
int ret = NETDEV_TX_BUSY, head_need;
|
||||
u16 ethertype, hdrlen, meshhdrlen = 0;
|
||||
__le16 fc;
|
||||
@@ -2039,6 +2039,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
skb_set_network_header(skb, nh_pos);
|
||||
skb_set_transport_header(skb, h_pos);
|
||||
|
||||
+ info = IEEE80211_SKB_CB(skb);
|
||||
memset(info, 0, sizeof(*info));
|
||||
|
||||
dev->trans_start = jiffies;
|
|
@ -1,11 +0,0 @@
|
|||
--- a/net/mac80211/tx.c
|
||||
+++ b/net/mac80211/tx.c
|
||||
@@ -1943,7 +1943,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
|
||||
*/
|
||||
if (skb_shared(skb)) {
|
||||
tmp_skb = skb;
|
||||
- skb = skb_copy(skb, GFP_ATOMIC);
|
||||
+ skb = skb_clone(skb, GFP_ATOMIC);
|
||||
kfree_skb(tmp_skb);
|
||||
|
||||
if (!skb) {
|
|
@ -1,53 +0,0 @@
|
|||
--- a/drivers/net/wireless/ath/ath9k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/mac.c
|
||||
@@ -692,15 +692,16 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
|
||||
if ((ads.ds_rxstatus8 & AR_RxFrameOK) == 0) {
|
||||
if (ads.ds_rxstatus8 & AR_CRCErr)
|
||||
rs->rs_status |= ATH9K_RXERR_CRC;
|
||||
- else if (ads.ds_rxstatus8 & AR_PHYErr) {
|
||||
+ if (ads.ds_rxstatus8 & AR_PHYErr) {
|
||||
rs->rs_status |= ATH9K_RXERR_PHY;
|
||||
phyerr = MS(ads.ds_rxstatus8, AR_PHYErrCode);
|
||||
rs->rs_phyerr = phyerr;
|
||||
- } else if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
|
||||
+ }
|
||||
+ if (ads.ds_rxstatus8 & AR_DecryptCRCErr)
|
||||
rs->rs_status |= ATH9K_RXERR_DECRYPT;
|
||||
- else if (ads.ds_rxstatus8 & AR_MichaelErr)
|
||||
+ if (ads.ds_rxstatus8 & AR_MichaelErr)
|
||||
rs->rs_status |= ATH9K_RXERR_MIC;
|
||||
- else if (ads.ds_rxstatus8 & AR_KeyMiss)
|
||||
+ if (ads.ds_rxstatus8 & AR_KeyMiss)
|
||||
rs->rs_status |= ATH9K_RXERR_DECRYPT;
|
||||
}
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
|
||||
@@ -613,9 +613,9 @@ int ath9k_hw_process_rxdesc_edma(struct
|
||||
* possibly be reviewing the last subframe. AR_CRCErr
|
||||
* is the CRC of the actual data.
|
||||
*/
|
||||
- if (rxsp->status11 & AR_CRCErr) {
|
||||
+ if (rxsp->status11 & AR_CRCErr)
|
||||
rxs->rs_status |= ATH9K_RXERR_CRC;
|
||||
- } else if (rxsp->status11 & AR_PHYErr) {
|
||||
+ if (rxsp->status11 & AR_PHYErr) {
|
||||
phyerr = MS(rxsp->status11, AR_PHYErrCode);
|
||||
/*
|
||||
* If we reach a point here where AR_PostDelimCRCErr is
|
||||
@@ -638,11 +638,12 @@ int ath9k_hw_process_rxdesc_edma(struct
|
||||
rxs->rs_phyerr = phyerr;
|
||||
}
|
||||
|
||||
- } else if (rxsp->status11 & AR_DecryptCRCErr) {
|
||||
+ }
|
||||
+ if (rxsp->status11 & AR_DecryptCRCErr)
|
||||
rxs->rs_status |= ATH9K_RXERR_DECRYPT;
|
||||
- } else if (rxsp->status11 & AR_MichaelErr) {
|
||||
+ if (rxsp->status11 & AR_MichaelErr)
|
||||
rxs->rs_status |= ATH9K_RXERR_MIC;
|
||||
- } else if (rxsp->status11 & AR_KeyMiss)
|
||||
+ if (rxsp->status11 & AR_KeyMiss)
|
||||
rxs->rs_status |= ATH9K_RXERR_DECRYPT;
|
||||
}
|
||||
|
|
@ -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,
|
||||
@@ -2536,10 +2541,10 @@ static int b43_gpio_init(struct b43_wlde
|
||||
@@ -2542,10 +2547,10 @@ static int b43_gpio_init(struct b43_wlde
|
||||
& ~B43_MACCTL_GPOUTSMSK);
|
||||
|
||||
b43_write16(dev, B43_MMIO_GPIO_MASK, b43_read16(dev, B43_MMIO_GPIO_MASK)
|
||||
|
@ -35,7 +35,7 @@
|
|||
if (dev->dev->bus->chip_id == 0x4301) {
|
||||
mask |= 0x0060;
|
||||
set |= 0x0060;
|
||||
@@ -5096,10 +5101,10 @@ static void b43_print_driverinfo(void)
|
||||
@@ -5102,10 +5107,10 @@ static void b43_print_driverinfo(void)
|
||||
feat_sdio = "S";
|
||||
#endif
|
||||
printk(KERN_INFO "Broadcom 43xx driver loaded "
|
||||
|
|
Loading…
Reference in a new issue