mac80211: merge latest from trunk - improves reliability with intel clients
authorFelix Fietkau <nbd@openwrt.org>
Tue, 11 Jan 2011 00:21:32 +0000 (00:21 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 11 Jan 2011 00:21:32 +0000 (00:21 +0000)
SVN-Revision: 24962

36 files changed:
package/mac80211/Makefile
package/mac80211/patches/001-disable_b44.patch
package/mac80211/patches/002-disable_rfkill.patch
package/mac80211/patches/005-disable_ssb_build.patch
package/mac80211/patches/007-remove_misc_drivers.patch
package/mac80211/patches/008-led_default.patch [deleted file]
package/mac80211/patches/010-no_pcmcia.patch
package/mac80211/patches/011-no_sdio.patch
package/mac80211/patches/013-disable_b43_nphy.patch
package/mac80211/patches/015-remove-rt2x00-options.patch
package/mac80211/patches/016-remove_pid_algo.patch
package/mac80211/patches/017-remove_ath9k_rc.patch
package/mac80211/patches/019-remove_ath5k_pci_option.patch
package/mac80211/patches/030-backport_93c86_eeprom.patch
package/mac80211/patches/100-disable_pcmcia_compat.patch
package/mac80211/patches/110-disable_usb_compat.patch
package/mac80211/patches/300-ath9k_gpio_settings.patch
package/mac80211/patches/303-tpt_led_trigger_declaration_fix.patch [deleted file]
package/mac80211/patches/310-ath9k_pending_work.patch [deleted file]
package/mac80211/patches/402-ath9k_blink_default.patch
package/mac80211/patches/407-ath9k-override-mac-address-from-platform-data.patch
package/mac80211/patches/409-ath9k_platform_settings.patch
package/mac80211/patches/510-ath9k_led_cleanup.patch
package/mac80211/patches/520-ath9k_intr_mitigation_tweak.patch [new file with mode: 0644]
package/mac80211/patches/520-ath9k_paprd_ht40_fix.patch [deleted file]
package/mac80211/patches/530-ath9k_aggr_flush_fix.patch [new file with mode: 0644]
package/mac80211/patches/530-ath9k_chainmask_read_fix.patch [deleted file]
package/mac80211/patches/531-ath9k_aggr_start_fix.patch [new file with mode: 0644]
package/mac80211/patches/531-ath9k_legacy_chainmask_fix.patch [deleted file]
package/mac80211/patches/532-ath9k_aggr_baw_init.patch [new file with mode: 0644]
package/mac80211/patches/540-ath9k_bb_hang_check_fix.patch [new file with mode: 0644]
package/mac80211/patches/540-mac80211_tx_optimization.patch [deleted file]
package/mac80211/patches/541-mac80211_fix_skb_copy_crash.patch [deleted file]
package/mac80211/patches/542-mac80211_fix_duplicate_skb_data_copy.patch [deleted file]
package/mac80211/patches/550-ath9k_intr_mitigation_tweak.patch [deleted file]
package/mac80211/patches/800-b43-gpio-mask-module-option.patch

index 2755cb0ad917ecae0b29db2d9ecd0e684ea9b239..3aec1cd1a640b4992487780eb6bf4d18817141e6 100644 (file)
@@ -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)
@@ -25,7 +25,7 @@ PKG_CONFIG_DEPENDS:= \
        CONFIG_PACKAGE_ATH_DEBUG \
        CONFIG_ATH_USER_REGD \
 
-CARL9170_FW_VERSION:=1.8.8.2
+CARL9170_FW_VERSION:=1.9.2
 
 include $(INCLUDE_DIR)/package.mk
 
@@ -117,9 +117,9 @@ endef
 $(eval $(call Download,p54spi))
 
 define Download/carl9170
-  FILE:=$(CARL9170_FW)
-  URL:=http://www.kernel.org/pub/linux/kernel/people/chr/carl9170/fw/$(CARL9170_FW_VERSION)
-  MD5SUM:=114c43846ed1d2f89cc92bd0e2ec0589
+  FILE:=$(CARL9170_FW)-$(CARL9170_FW_VERSION)
+  URL:=http://downloads.openwrt.org/sources/
+  MD5SUM:=9e33ac39dcd610aa1ad80bbf4f1abccf
 endef
 $(eval $(call Download,carl9170))
 
@@ -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
 
@@ -401,7 +401,7 @@ endef
 define KernelPackage/ath
   $(call KernelPackage/mac80211/Default)
   TITLE:=Atheros common driver part
-  DEPENDS+= @PCI_SUPPORT +kmod-mac80211
+  DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT +kmod-mac80211
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko
   AUTOLOAD:=$(call AutoLoad,26,ath)
   MENU:=1
@@ -415,7 +415,7 @@ define KernelPackage/ath5k
   $(call KernelPackage/mac80211/Default)
   TITLE:=Atheros 5xxx wireless cards support
   URL:=http://linuxwireless.org/en/users/Drivers/ath5k
-  DEPENDS+= +kmod-ath
+  DEPENDS+= @PCI_SUPPORT||@TARGET_atheros +kmod-ath
   FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath5k/ath5k.ko
   AUTOLOAD:=$(call AutoLoad,27,ath5k)
 endef
@@ -429,7 +429,7 @@ define KernelPackage/ath9k
   $(call KernelPackage/mac80211/Default)
   TITLE:=Atheros 802.11n wireless cards support
   URL:=http://linuxwireless.org/en/users/Drivers/ath9k
-  DEPENDS+= +kmod-ath
+  DEPENDS+= @PCI_SUPPORT +kmod-ath
   FILES:= \
        $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.ko \
        $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_hw.ko \
@@ -453,7 +453,7 @@ endef
 
 define KernelPackage/carl9170/install
        $(INSTALL_DIR) $(1)/lib/firmware
-       $(INSTALL_DATA) $(DL_DIR)/$(CARL9170_FW) $(1)/lib/firmware/
+       $(INSTALL_DATA) $(DL_DIR)/$(CARL9170_FW)-$(CARL9170_FW_VERSION) $(1)/lib/firmware/$(CARL9170_FW)
 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) \
index a99bf99d890a200d432df629ca91b24c260f2b42..017c8f98a1aaecac34953b3f4d4dc91761845a88 100644 (file)
@@ -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
  
index 453b97942e673f2c553218c82a5a93c3e6d287ba..c0e47f61a3e25792a94fec7c57c1c4c7aa471c73 100644 (file)
@@ -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
  
index 3120361a8adc8301349b2ec62134fae7819f6209..e2744d9206a4b9f5406833854f336b79f8baa30f 100644 (file)
@@ -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
  
index cb3fddb49b8bdacd95531e8fc349193f7cc907a7..bf7ecbd01167742a943dcde755fe8a5422ce6377 100644 (file)
@@ -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
diff --git a/package/mac80211/patches/008-led_default.patch b/package/mac80211/patches/008-led_default.patch
deleted file mode 100644 (file)
index 8a36f16..0000000
+++ /dev/null
@@ -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)
index 51189fc821815ae7a1fc9d0df0f322aafde8a14b..c7457c856b40e1b6166af7b23470ba9538ac20d8 100644 (file)
@@ -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
index aba19b644a65607d9ed56a0627ecfeb30e2c2abc..3bb20306118e7ee4d9aaf52862bb21e46ccc4aa1 100644 (file)
@@ -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
  
index 94c09fce7909e818d1ad32961aa65411f189016e..b5c47593feac4b662d1b314d72ee5dc6b2fd462e 100644 (file)
@@ -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
index 86b65b86c7a6a9c7a44d0629e3ed2ef69e51f6c2..768c61cfc912fc326a76769428d9389f41cf2b8f 100644 (file)
@@ -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
index 99b19d81edc88f7e10caad4fc0329fd824948dec..f53284e1af49f2c6e644172b8df4cd50fa8d22c9 100644 (file)
@@ -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
index 7e275b0429a4afbbdd580e3c4e79cd2c858e5014..7b7304aab9ae4bedfa6751d3e9987310174acdd7 100644 (file)
@@ -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.
index 792ecb563c5153ede6600b1645d8245d78261fd5..a9bc153b2228e61c849beca2df1992c537d52c6d 100644 (file)
@@ -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
index be91eafb80c180189b457895b3484dd5a908d048..178f38b3e592c343c25c8b5d94257e7564e1c727 100644 (file)
@@ -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
index a88d1f590cfdd581bef2812e229e555b2e5df48f..99f250ab3cc816501f7f9346f922d34195b7d8b1 100644 (file)
  #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>
index 561e36924bbd626818920b158e86212f85ad4263..cbfa42cba32b0da1da7564dc562e0a76f4ab162e 100644 (file)
@@ -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.
index ec2d5a72e628970bb94d393f0af8ab05a61a15a5..148ff0c2cdb1252248410577f888cd73724bb276 100644 (file)
@@ -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;
diff --git a/package/mac80211/patches/303-tpt_led_trigger_declaration_fix.patch b/package/mac80211/patches/303-tpt_led_trigger_declaration_fix.patch
deleted file mode 100644 (file)
index 9386176..0000000
+++ /dev/null
@@ -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
diff --git a/package/mac80211/patches/310-ath9k_pending_work.patch b/package/mac80211/patches/310-ath9k_pending_work.patch
deleted file mode 100644 (file)
index 7278551..0000000
+++ /dev/null
@@ -1,234 +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);
index 85fcc63c3568cda6aa41fa2f1e01ee047588ab69..5f07a6da9a5aa7916804a82fd715705db0f8ed58 100644 (file)
@@ -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;
index daebf33b40506063c6437b29c340c579c8d692a5..d0c22b3d5c3a78bb8a3ad2939818175a225de1b2 100644 (file)
@@ -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;
  
index 7b735a10bc3e90090762833ddf835adb11928e44..d322b6eb9e733b49ccf404216e7c101df4c54343 100644 (file)
@@ -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;
index be26a883cfe2d27e48ea3ff53d01dfc6c968aba0..5f6968becc5391bd89aa7c9c249887d74932d350 100644 (file)
  /*    Rfkill     */
 --- a/drivers/net/wireless/ath/ath9k/main.c
 +++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1295,9 +1295,6 @@ static void ath9k_stop(struct ieee80211_
+@@ -1270,9 +1270,6 @@ static void ath9k_stop(struct ieee80211_
  
        aphy->state = ATH_WIPHY_INACTIVE;
  
        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),
  };
  
  static void ath9k_deinit_softc(struct ath_softc *sc);
  
  /*
-@@ -746,6 +761,13 @@ int ath9k_init_device(u16 devid, struct 
+@@ -747,6 +762,13 @@ int ath9k_init_device(u16 devid, struct 
  
        ath9k_init_txpower_limits(sc);
  
diff --git a/package/mac80211/patches/520-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/520-ath9k_intr_mitigation_tweak.patch
new file mode 100644 (file)
index 0000000..0c33741
--- /dev/null
@@ -0,0 +1,13 @@
+--- a/drivers/net/wireless/ath/ath9k/hw.c
++++ b/drivers/net/wireless/ath/ath9k/hw.c
+@@ -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) {
+-              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
+-              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 2000);
++              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 250);
++              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 500);
+       }
+       if (ah->config.tx_intr_mitigation) {
diff --git a/package/mac80211/patches/520-ath9k_paprd_ht40_fix.patch b/package/mac80211/patches/520-ath9k_paprd_ht40_fix.patch
deleted file mode 100644 (file)
index cea8f2e..0000000
+++ /dev/null
@@ -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];
diff --git a/package/mac80211/patches/530-ath9k_aggr_flush_fix.patch b/package/mac80211/patches/530-ath9k_aggr_flush_fix.patch
new file mode 100644 (file)
index 0000000..1407a73
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -169,7 +169,7 @@ static void ath_tx_flush_tid(struct ath_
+                       ath_tx_update_baw(sc, tid, fi->seqno);
+                       ath_tx_complete_buf(sc, bf, txq, &bf_head, &ts, 0, 0);
+               } else {
+-                      ath_tx_send_normal(sc, txq, tid, &bf_head);
++                      ath_tx_send_normal(sc, txq, NULL, &bf_head);
+               }
+               spin_lock_bh(&txq->axq_lock);
+       }
diff --git a/package/mac80211/patches/530-ath9k_chainmask_read_fix.patch b/package/mac80211/patches/530-ath9k_chainmask_read_fix.patch
deleted file mode 100644 (file)
index a0eebf5..0000000
+++ /dev/null
@@ -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);
- }
diff --git a/package/mac80211/patches/531-ath9k_aggr_start_fix.patch b/package/mac80211/patches/531-ath9k_aggr_start_fix.patch
new file mode 100644 (file)
index 0000000..1197e5c
--- /dev/null
@@ -0,0 +1,11 @@
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -856,7 +856,7 @@ int ath_tx_aggr_start(struct ath_softc *
+       txtid->state |= AGGR_ADDBA_PROGRESS;
+       txtid->paused = true;
+-      *ssn = txtid->seq_start;
++      *ssn = txtid->seq_start = txtid->seq_next;
+       return 0;
+ }
diff --git a/package/mac80211/patches/531-ath9k_legacy_chainmask_fix.patch b/package/mac80211/patches/531-ath9k_legacy_chainmask_fix.patch
deleted file mode 100644 (file)
index df7e5cb..0000000
+++ /dev/null
@@ -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
-@@ -538,32 +538,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;
-@@ -1676,8 +1650,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);
-@@ -1909,10 +1881,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 "
diff --git a/package/mac80211/patches/532-ath9k_aggr_baw_init.patch b/package/mac80211/patches/532-ath9k_aggr_baw_init.patch
new file mode 100644 (file)
index 0000000..0b9edd3
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -858,6 +858,9 @@ int ath_tx_aggr_start(struct ath_softc *
+       txtid->paused = true;
+       *ssn = txtid->seq_start = txtid->seq_next;
++      memset(txtid->tx_buf, 0, sizeof(txtid->tx_buf));
++      txtid->baw_head = txtid->baw_tail = 0;
++
+       return 0;
+ }
diff --git a/package/mac80211/patches/540-ath9k_bb_hang_check_fix.patch b/package/mac80211/patches/540-ath9k_bb_hang_check_fix.patch
new file mode 100644 (file)
index 0000000..19c6abd
--- /dev/null
@@ -0,0 +1,30 @@
+
+--- a/drivers/net/wireless/ath/ath9k/main.c
++++ b/drivers/net/wireless/ath/ath9k/main.c
+@@ -251,6 +251,9 @@ int ath_set_channel(struct ath_softc *sc
+       if (!ath_stoprecv(sc))
+               stopped = false;
++      if (!ath9k_hw_check_alive(ah))
++              stopped = false;
++
+       /* XXX: do not flush receive queue here. We don't want
+        * to flush data frames already in queue because of
+        * changing channel. */
+@@ -602,7 +605,15 @@ void ath9k_tasklet(unsigned long data)
+       spin_lock(&sc->sc_pcu_lock);
+-      if (!ath9k_hw_check_alive(ah))
++      /*
++       * Only run the baseband hang check if beacons stop working in AP or
++       * IBSS mode, because it has a high false positive rate. For station
++       * mode it should not be necessary, since the upper layers will detect
++       * this through a beacon miss automatically and the following channel
++       * change will trigger a hardware reset anyway
++       */
++      if (ath9k_hw_numtxpending(ah, sc->beacon.beaconq) != 0 &&
++          !ath9k_hw_check_alive(ah))
+               ieee80211_queue_work(sc->hw, &sc->hw_check_work);
+       if (ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)
diff --git a/package/mac80211/patches/540-mac80211_tx_optimization.patch b/package/mac80211/patches/540-mac80211_tx_optimization.patch
deleted file mode 100644 (file)
index a322078..0000000
+++ /dev/null
@@ -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,
diff --git a/package/mac80211/patches/541-mac80211_fix_skb_copy_crash.patch b/package/mac80211/patches/541-mac80211_fix_skb_copy_crash.patch
deleted file mode 100644 (file)
index 810df58..0000000
+++ /dev/null
@@ -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;
diff --git a/package/mac80211/patches/542-mac80211_fix_duplicate_skb_data_copy.patch b/package/mac80211/patches/542-mac80211_fix_duplicate_skb_data_copy.patch
deleted file mode 100644 (file)
index e66eee2..0000000
+++ /dev/null
@@ -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) {
diff --git a/package/mac80211/patches/550-ath9k_intr_mitigation_tweak.patch b/package/mac80211/patches/550-ath9k_intr_mitigation_tweak.patch
deleted file mode 100644 (file)
index be17062..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
---- 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
-       REG_WRITE(ah, AR_OBS, 8);
-       if (ah->config.rx_intr_mitigation) {
--              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
--              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 2000);
-+              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 250);
-+              REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_FIRST, 500);
-       }
-       if (ah->config.tx_intr_mitigation) {
index 86578724dd4a3ee245214ba6628249890c13df6d..eebda2ad6c6213ac01462cb156aaab0b5e9e6a6f 100644 (file)
@@ -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 "