Changeset 30742


Ignore:
Timestamp:
2012-02-27T17:23:43+01:00 (6 years ago)
Author:
nbd
Message:

mac80211: update to wireless-testing 2012-02-23

Location:
trunk/package/mac80211
Files:
3 deleted
29 edited
2 moved

Legend:

Unmodified
Added
Removed
  • trunk/package/mac80211/Makefile

    r30673 r30742  
    1111PKG_NAME:=mac80211 
    1212 
    13 PKG_VERSION:=2012-02-06 
    14 PKG_RELEASE:=4 
     13PKG_VERSION:=2012-02-23 
     14PKG_RELEASE:=1 
    1515PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources 
    16 PKG_MD5SUM:=fae71c35ee3f3de6329f2db7aed6d265 
     16PKG_MD5SUM:=dc01b316954e7c9f2ea50c09bb68138e 
    1717 
    1818PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 
     
    13041304 define Build/Compile/kmod 
    13051305        rm -rf $(PKG_BUILD_DIR)/modules 
    1306         $(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" $(MAKE_OPTS) all 
     1306        $(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" $(MAKE_OPTS) modules 
    13071307 endef 
    13081308endif 
  • trunk/package/mac80211/patches/000-disable_ethernet.patch

    r30346 r30742  
    11--- a/Makefile 
    22+++ b/Makefile 
    3 @@ -32,9 +32,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += 
     3@@ -26,9 +26,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += 
    44  
    55 obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/ 
  • trunk/package/mac80211/patches/001-disable_b44.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -380,8 +380,8 @@ CONFIG_B43_BCMA_EXTRA=y 
     3@@ -368,8 +368,8 @@ CONFIG_B43_BCMA_EXTRA=y 
    44  
    55 CONFIG_P54_PCI=m 
  • trunk/package/mac80211/patches/002-disable_rfkill.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -95,7 +95,7 @@ endif # build check 
     3@@ -83,7 +83,7 @@ endif # build check 
    44 endif # kernel Makefile check 
    55  
     
    1010 ifeq ($(CONFIG_MAC80211),y) 
    1111 $(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") 
    12 @@ -684,10 +684,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 
     12@@ -674,10 +674,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 
    1313 # We need the backported rfkill module on kernel < 2.6.31. 
    1414 # In more recent kernel versions use the in kernel rfkill module. 
  • trunk/package/mac80211/patches/003-disable_bt.patch

    r29436 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -117,8 +117,8 @@ ifndef CONFIG_COMPAT_KERNEL_2_6_27 
     3@@ -105,8 +105,8 @@ ifndef CONFIG_COMPAT_KERNEL_2_6_27 
    44 ifeq ($(CONFIG_BT),y) 
    55 # we'll ignore compiling bluetooth 
  • trunk/package/mac80211/patches/005-disable_ssb_build.patch

    r30346 r30742  
    11--- a/Makefile 
    22+++ b/Makefile 
    3 @@ -32,7 +32,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += 
     3@@ -26,7 +26,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += 
    44  
    55 obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/ 
     
    1919 include $(KLIB_BUILD)/.config 
    2020 endif 
    21 @@ -356,7 +355,8 @@ CONFIG_IPW2200_QOS=y 
     21@@ -344,7 +343,8 @@ CONFIG_IPW2200_QOS=y 
    2222 # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface 
    2323 endif #CONFIG_WIRELESS_EXT 
     
    2929 CONFIG_SSB_SPROM=y 
    3030  
    31 @@ -369,7 +369,7 @@ endif #CONFIG_PCMCIA 
     31@@ -357,7 +357,7 @@ endif #CONFIG_PCMCIA 
    3232 # CONFIG_SSB_DEBUG=y 
    3333 CONFIG_SSB_DRIVER_PCICORE=y 
     
    3838 CONFIG_BCMA=m 
    3939 CONFIG_BCMA_BLOCKIO=y 
    40 @@ -578,7 +578,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
     40@@ -568,7 +568,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
    4141  
    4242 ifdef CONFIG_MMC 
  • trunk/package/mac80211/patches/006-disable_bcma_build.patch

    r30346 r30742  
    11--- a/Makefile 
    22+++ b/Makefile 
    3 @@ -32,7 +32,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += 
     3@@ -26,7 +26,6 @@ obj-$(CONFIG_COMPAT_WIRELESS_MODULES) += 
    44  
    55 obj-$(CONFIG_COMPAT_NET_USB_MODULES) += drivers/net/usb/ 
     
    1111--- a/config.mk 
    1212+++ b/config.mk 
    13 @@ -371,12 +371,12 @@ CONFIG_SSB_DRIVER_PCICORE=y 
     13@@ -359,12 +359,12 @@ CONFIG_SSB_DRIVER_PCICORE=y 
    1414 CONFIG_B43_SSB=y 
    1515 endif #__CONFIG_SSB 
  • trunk/package/mac80211/patches/007-remove_misc_drivers.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -254,7 +254,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT 
     3@@ -242,7 +242,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT 
    44 endif #CONFIG_WIRELESS_EXT 
    55  
     
    1010  
    1111 # mac80211 test driver 
    12 @@ -408,13 +408,13 @@ endif #CONFIG_CRC_ITU_T 
     12@@ -396,15 +396,15 @@ endif #CONFIG_CRC_ITU_T 
    1313 CONFIG_MWL8K=m 
    1414  
     
    2222 ifdef CONFIG_COMPAT_KERNEL_2_6_27 
    2323-CONFIG_ATL1C=n 
     24-CONFIG_ALX=m 
    2425+# CONFIG_ATL1C=n 
     26+# CONFIG_ALX=m 
    2527 else #CONFIG_COMPAT_KERNEL_2_6_27 
    26 -CONFIG_ATL1C=m 
    27 +# CONFIG_ATL1C=m 
     28-CONFIG_ATL1C=n 
     29-CONFIG_ALX=m 
     30+# CONFIG_ATL1C=n 
     31+# CONFIG_ALX=m 
    2832 endif #CONFIG_COMPAT_KERNEL_2_6_27 
    2933  
    3034 ifdef CONFIG_WIRELESS_EXT 
    31 @@ -475,21 +475,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 
     35@@ -465,21 +465,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 
    3236 # Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER 
    3337 # it also requires new RNDIS_HOST and CDC_ETHER modules which we add 
  • trunk/package/mac80211/patches/008-disable_mesh.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -192,7 +192,7 @@ CONFIG_MAC80211_LEDS=y 
     3@@ -180,7 +180,7 @@ CONFIG_MAC80211_LEDS=y 
    44 endif #CONFIG_LEDS_TRIGGERS 
    55  
  • trunk/package/mac80211/patches/009-remove_mac80211_module_dependence.patch

    r29436 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -58,23 +58,6 @@ $(error "ERROR: Your 2.6.27 kernel has C 
     3@@ -58,7 +58,7 @@ endif 
     4 ifeq ($(KERNEL_VERSION),2) 
     5 ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_26SUBLEVEL) -ge 27 -a $(KERNEL_26SUBLEVEL) -le 31 && echo yes),yes) 
     6 ifeq ($(CONFIG_MAC80211),) 
     7-$(error "ERROR: Your >=2.6.27 and <= 2.6.31 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.") 
     8+# $(error "ERROR: Your >=2.6.27 and <= 2.6.31 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.") 
    49 endif 
    510 endif 
    6   
    7 -# This is because with CONFIG_MAC80211 include/linux/skbuff.h will 
    8 -# enable on 2.6.27 a new attribute: 
    9 -# 
    10 -# skb->do_not_encrypt 
    11 -# 
    12 -# and on 2.6.28 another new attribute: 
    13 -# 
    14 -# skb->requeue 
    15 -# 
    16 -# In kernel 2.6.32 both attributes were removed. 
    17 -# 
    18 -ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_SUBLEVEL) -ge 27 -a $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes) 
    19 -ifeq ($(CONFIG_MAC80211),) 
    20 -$(error "ERROR: Your >=2.6.27 and <= 2.6.31 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.") 
    21 -endif 
    22 -endif 
    23 - 
    24  ifneq ($(KERNELRELEASE),) # This prevents a warning 
    25   
    26  # We will warn when you don't have MQ support or NET_SCHED enabled. 
     11 endif 
  • trunk/package/mac80211/patches/010-no_pcmcia.patch

    r30346 r30742  
    1010 include $(KLIB_BUILD)/.config 
    1111 endif 
    12 @@ -289,7 +289,7 @@ CONFIG_B43=m 
     12@@ -294,7 +294,7 @@ CONFIG_B43=m 
    1313 CONFIG_B43_HWRNG=y 
    1414 CONFIG_B43_PCI_AUTOSELECT=y 
  • trunk/package/mac80211/patches/011-no_sdio.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -561,7 +561,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
     3@@ -568,7 +568,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
    44  
    55 ifdef CONFIG_MMC 
  • trunk/package/mac80211/patches/013-disable_b43_nphy.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -295,8 +295,8 @@ ifdef CONFIG_MAC80211_LEDS 
     3@@ -300,8 +300,8 @@ ifdef CONFIG_MAC80211_LEDS 
    44 CONFIG_B43_LEDS=y 
    55 endif #CONFIG_MAC80211_LEDS 
  • trunk/package/mac80211/patches/015-remove-rt2x00-options.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -370,7 +370,7 @@ CONFIG_RTL8180=m 
     3@@ -375,7 +375,7 @@ CONFIG_RTL8180=m 
    44  
    55 CONFIG_ADM8211=m 
     
    1010 CONFIG_RT2500PCI=m 
    1111 ifdef CONFIG_CRC_CCITT 
    12 @@ -510,7 +510,7 @@ CONFIG_RT2800USB_RT35XX=y 
     12@@ -517,7 +517,7 @@ CONFIG_RT2800USB_RT35XX=y 
    1313 CONFIG_RT2800USB_RT53XX=y 
    1414 CONFIG_RT2800USB_UNKNOWN=y 
  • trunk/package/mac80211/patches/016-remove_pid_algo.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -167,7 +167,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y 
     3@@ -172,7 +172,7 @@ CONFIG_MAC80211_RC_DEFAULT_MINSTREL=y 
    44 # This is the one used by our compat-wireless net/mac80211/rate.c 
    55 # in case you have and old kernel which is overriding this to pid. 
  • trunk/package/mac80211/patches/017-remove_ath9k_rc.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -261,7 +261,7 @@ CONFIG_ATH9K_COMMON=m 
     3@@ -266,7 +266,7 @@ CONFIG_ATH9K_COMMON=m 
    44 # as default once we get minstrel properly tested and blessed by 
    55 # our systems engineering team. CCK rates also need to be used 
  • trunk/package/mac80211/patches/019-remove_ath5k_pci_option.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -268,7 +268,7 @@ CONFIG_ATH9K_BTCOEX_SUPPORT=y 
     3@@ -273,7 +273,7 @@ CONFIG_ATH9K_BTCOEX_SUPPORT=y 
    44 # PCI Drivers 
    55 ifdef CONFIG_PCI 
  • trunk/package/mac80211/patches/100-disable_pcmcia_compat.patch

    r29436 r30742  
    3232--- a/include/linux/compat-2.6.28.h 
    3333+++ b/include/linux/compat-2.6.28.h 
    34 @@ -27,7 +27,7 @@ 
     34@@ -44,7 +44,7 @@ typedef u32 phys_addr_t; 
    3535 }) 
    3636 #endif /* From include/asm-generic/bug.h */ 
  • trunk/package/mac80211/patches/110-disable_usb_compat.patch

    r30346 r30742  
    2323--- a/include/linux/compat-2.6.28.h 
    2424+++ b/include/linux/compat-2.6.28.h 
    25 @@ -52,7 +52,7 @@ int pcmcia_loop_config(struct pcmcia_dev 
     25@@ -69,7 +69,7 @@ int pcmcia_loop_config(struct pcmcia_dev 
    2626 /* USB anchors were added as of 2.6.23 */ 
    2727 #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,23)) 
     
    3434--- a/config.mk 
    3535+++ b/config.mk 
    36 @@ -496,7 +496,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 
     36@@ -503,7 +503,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 
    3737 # This activates a threading fix for usb urb. 
    3838 # this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351 
  • trunk/package/mac80211/patches/300-pending_work.patch

    r30551 r30742  
     1--- a/drivers/net/wireless/ath/ath9k/ar9001_initvals.h 
     2+++ b/drivers/net/wireless/ath/ath9k/ar9001_initvals.h 
     3@@ -459,97 +459,6 @@ static const u32 ar5416Common_9100[][2]  
     4        {0x0000a3e0, 0x000001ce}, 
     5 }; 
     6  
     7-static const u32 ar5416Bank0_9100[][2] = { 
     8-       /* Addr      allmodes  */ 
     9-       {0x000098b0, 0x1e5795e5}, 
     10-       {0x000098e0, 0x02008020}, 
     11-}; 
     12- 
     13-static const u32 ar5416BB_RfGain_9100[][3] = { 
     14-       /* Addr      5G_HT20     5G_HT40   */ 
     15-       {0x00009a00, 0x00000000, 0x00000000}, 
     16-       {0x00009a04, 0x00000040, 0x00000040}, 
     17-       {0x00009a08, 0x00000080, 0x00000080}, 
     18-       {0x00009a0c, 0x000001a1, 0x00000141}, 
     19-       {0x00009a10, 0x000001e1, 0x00000181}, 
     20-       {0x00009a14, 0x00000021, 0x000001c1}, 
     21-       {0x00009a18, 0x00000061, 0x00000001}, 
     22-       {0x00009a1c, 0x00000168, 0x00000041}, 
     23-       {0x00009a20, 0x000001a8, 0x000001a8}, 
     24-       {0x00009a24, 0x000001e8, 0x000001e8}, 
     25-       {0x00009a28, 0x00000028, 0x00000028}, 
     26-       {0x00009a2c, 0x00000068, 0x00000068}, 
     27-       {0x00009a30, 0x00000189, 0x000000a8}, 
     28-       {0x00009a34, 0x000001c9, 0x00000169}, 
     29-       {0x00009a38, 0x00000009, 0x000001a9}, 
     30-       {0x00009a3c, 0x00000049, 0x000001e9}, 
     31-       {0x00009a40, 0x00000089, 0x00000029}, 
     32-       {0x00009a44, 0x00000170, 0x00000069}, 
     33-       {0x00009a48, 0x000001b0, 0x00000190}, 
     34-       {0x00009a4c, 0x000001f0, 0x000001d0}, 
     35-       {0x00009a50, 0x00000030, 0x00000010}, 
     36-       {0x00009a54, 0x00000070, 0x00000050}, 
     37-       {0x00009a58, 0x00000191, 0x00000090}, 
     38-       {0x00009a5c, 0x000001d1, 0x00000151}, 
     39-       {0x00009a60, 0x00000011, 0x00000191}, 
     40-       {0x00009a64, 0x00000051, 0x000001d1}, 
     41-       {0x00009a68, 0x00000091, 0x00000011}, 
     42-       {0x00009a6c, 0x000001b8, 0x00000051}, 
     43-       {0x00009a70, 0x000001f8, 0x00000198}, 
     44-       {0x00009a74, 0x00000038, 0x000001d8}, 
     45-       {0x00009a78, 0x00000078, 0x00000018}, 
     46-       {0x00009a7c, 0x00000199, 0x00000058}, 
     47-       {0x00009a80, 0x000001d9, 0x00000098}, 
     48-       {0x00009a84, 0x00000019, 0x00000159}, 
     49-       {0x00009a88, 0x00000059, 0x00000199}, 
     50-       {0x00009a8c, 0x00000099, 0x000001d9}, 
     51-       {0x00009a90, 0x000000d9, 0x00000019}, 
     52-       {0x00009a94, 0x000000f9, 0x00000059}, 
     53-       {0x00009a98, 0x000000f9, 0x00000099}, 
     54-       {0x00009a9c, 0x000000f9, 0x000000d9}, 
     55-       {0x00009aa0, 0x000000f9, 0x000000f9}, 
     56-       {0x00009aa4, 0x000000f9, 0x000000f9}, 
     57-       {0x00009aa8, 0x000000f9, 0x000000f9}, 
     58-       {0x00009aac, 0x000000f9, 0x000000f9}, 
     59-       {0x00009ab0, 0x000000f9, 0x000000f9}, 
     60-       {0x00009ab4, 0x000000f9, 0x000000f9}, 
     61-       {0x00009ab8, 0x000000f9, 0x000000f9}, 
     62-       {0x00009abc, 0x000000f9, 0x000000f9}, 
     63-       {0x00009ac0, 0x000000f9, 0x000000f9}, 
     64-       {0x00009ac4, 0x000000f9, 0x000000f9}, 
     65-       {0x00009ac8, 0x000000f9, 0x000000f9}, 
     66-       {0x00009acc, 0x000000f9, 0x000000f9}, 
     67-       {0x00009ad0, 0x000000f9, 0x000000f9}, 
     68-       {0x00009ad4, 0x000000f9, 0x000000f9}, 
     69-       {0x00009ad8, 0x000000f9, 0x000000f9}, 
     70-       {0x00009adc, 0x000000f9, 0x000000f9}, 
     71-       {0x00009ae0, 0x000000f9, 0x000000f9}, 
     72-       {0x00009ae4, 0x000000f9, 0x000000f9}, 
     73-       {0x00009ae8, 0x000000f9, 0x000000f9}, 
     74-       {0x00009aec, 0x000000f9, 0x000000f9}, 
     75-       {0x00009af0, 0x000000f9, 0x000000f9}, 
     76-       {0x00009af4, 0x000000f9, 0x000000f9}, 
     77-       {0x00009af8, 0x000000f9, 0x000000f9}, 
     78-       {0x00009afc, 0x000000f9, 0x000000f9}, 
     79-}; 
     80- 
     81-static const u32 ar5416Bank1_9100[][2] = { 
     82-       /* Addr      allmodes  */ 
     83-       {0x000098b0, 0x02108421}, 
     84-       {0x000098ec, 0x00000008}, 
     85-}; 
     86- 
     87-static const u32 ar5416Bank2_9100[][2] = { 
     88-       /* Addr      allmodes  */ 
     89-       {0x000098b0, 0x0e73ff17}, 
     90-       {0x000098e0, 0x00000420}, 
     91-}; 
     92- 
     93-static const u32 ar5416Bank3_9100[][3] = { 
     94-       /* Addr      5G_HT20     5G_HT40   */ 
     95-       {0x000098f0, 0x01400018, 0x01c00018}, 
     96-}; 
     97- 
     98 static const u32 ar5416Bank6_9100[][3] = { 
     99        /* Addr      5G_HT20     5G_HT40   */ 
     100        {0x0000989c, 0x00000000, 0x00000000}, 
     101@@ -624,13 +533,6 @@ static const u32 ar5416Bank6TPC_9100[][3 
     102        {0x000098d0, 0x0000000f, 0x0010000f}, 
     103 }; 
     104  
     105-static const u32 ar5416Bank7_9100[][2] = { 
     106-       /* Addr      allmodes  */ 
     107-       {0x0000989c, 0x00000500}, 
     108-       {0x0000989c, 0x00000800}, 
     109-       {0x000098cc, 0x0000000e}, 
     110-}; 
     111- 
     112 static const u32 ar5416Addac_9100[][2] = { 
     113        /* Addr      allmodes  */ 
     114        {0x0000989c, 0x00000000}, 
     115@@ -1113,178 +1015,6 @@ static const u32 ar5416Common_9160[][2]  
     116        {0x0000a3e0, 0x000001ce}, 
     117 }; 
     118  
     119-static const u32 ar5416Bank0_9160[][2] = { 
     120-       /* Addr      allmodes  */ 
     121-       {0x000098b0, 0x1e5795e5}, 
     122-       {0x000098e0, 0x02008020}, 
     123-}; 
     124- 
     125-static const u32 ar5416BB_RfGain_9160[][3] = { 
     126-       /* Addr      5G_HT20     5G_HT40   */ 
     127-       {0x00009a00, 0x00000000, 0x00000000}, 
     128-       {0x00009a04, 0x00000040, 0x00000040}, 
     129-       {0x00009a08, 0x00000080, 0x00000080}, 
     130-       {0x00009a0c, 0x000001a1, 0x00000141}, 
     131-       {0x00009a10, 0x000001e1, 0x00000181}, 
     132-       {0x00009a14, 0x00000021, 0x000001c1}, 
     133-       {0x00009a18, 0x00000061, 0x00000001}, 
     134-       {0x00009a1c, 0x00000168, 0x00000041}, 
     135-       {0x00009a20, 0x000001a8, 0x000001a8}, 
     136-       {0x00009a24, 0x000001e8, 0x000001e8}, 
     137-       {0x00009a28, 0x00000028, 0x00000028}, 
     138-       {0x00009a2c, 0x00000068, 0x00000068}, 
     139-       {0x00009a30, 0x00000189, 0x000000a8}, 
     140-       {0x00009a34, 0x000001c9, 0x00000169}, 
     141-       {0x00009a38, 0x00000009, 0x000001a9}, 
     142-       {0x00009a3c, 0x00000049, 0x000001e9}, 
     143-       {0x00009a40, 0x00000089, 0x00000029}, 
     144-       {0x00009a44, 0x00000170, 0x00000069}, 
     145-       {0x00009a48, 0x000001b0, 0x00000190}, 
     146-       {0x00009a4c, 0x000001f0, 0x000001d0}, 
     147-       {0x00009a50, 0x00000030, 0x00000010}, 
     148-       {0x00009a54, 0x00000070, 0x00000050}, 
     149-       {0x00009a58, 0x00000191, 0x00000090}, 
     150-       {0x00009a5c, 0x000001d1, 0x00000151}, 
     151-       {0x00009a60, 0x00000011, 0x00000191}, 
     152-       {0x00009a64, 0x00000051, 0x000001d1}, 
     153-       {0x00009a68, 0x00000091, 0x00000011}, 
     154-       {0x00009a6c, 0x000001b8, 0x00000051}, 
     155-       {0x00009a70, 0x000001f8, 0x00000198}, 
     156-       {0x00009a74, 0x00000038, 0x000001d8}, 
     157-       {0x00009a78, 0x00000078, 0x00000018}, 
     158-       {0x00009a7c, 0x00000199, 0x00000058}, 
     159-       {0x00009a80, 0x000001d9, 0x00000098}, 
     160-       {0x00009a84, 0x00000019, 0x00000159}, 
     161-       {0x00009a88, 0x00000059, 0x00000199}, 
     162-       {0x00009a8c, 0x00000099, 0x000001d9}, 
     163-       {0x00009a90, 0x000000d9, 0x00000019}, 
     164-       {0x00009a94, 0x000000f9, 0x00000059}, 
     165-       {0x00009a98, 0x000000f9, 0x00000099}, 
     166-       {0x00009a9c, 0x000000f9, 0x000000d9}, 
     167-       {0x00009aa0, 0x000000f9, 0x000000f9}, 
     168-       {0x00009aa4, 0x000000f9, 0x000000f9}, 
     169-       {0x00009aa8, 0x000000f9, 0x000000f9}, 
     170-       {0x00009aac, 0x000000f9, 0x000000f9}, 
     171-       {0x00009ab0, 0x000000f9, 0x000000f9}, 
     172-       {0x00009ab4, 0x000000f9, 0x000000f9}, 
     173-       {0x00009ab8, 0x000000f9, 0x000000f9}, 
     174-       {0x00009abc, 0x000000f9, 0x000000f9}, 
     175-       {0x00009ac0, 0x000000f9, 0x000000f9}, 
     176-       {0x00009ac4, 0x000000f9, 0x000000f9}, 
     177-       {0x00009ac8, 0x000000f9, 0x000000f9}, 
     178-       {0x00009acc, 0x000000f9, 0x000000f9}, 
     179-       {0x00009ad0, 0x000000f9, 0x000000f9}, 
     180-       {0x00009ad4, 0x000000f9, 0x000000f9}, 
     181-       {0x00009ad8, 0x000000f9, 0x000000f9}, 
     182-       {0x00009adc, 0x000000f9, 0x000000f9}, 
     183-       {0x00009ae0, 0x000000f9, 0x000000f9}, 
     184-       {0x00009ae4, 0x000000f9, 0x000000f9}, 
     185-       {0x00009ae8, 0x000000f9, 0x000000f9}, 
     186-       {0x00009aec, 0x000000f9, 0x000000f9}, 
     187-       {0x00009af0, 0x000000f9, 0x000000f9}, 
     188-       {0x00009af4, 0x000000f9, 0x000000f9}, 
     189-       {0x00009af8, 0x000000f9, 0x000000f9}, 
     190-       {0x00009afc, 0x000000f9, 0x000000f9}, 
     191-}; 
     192- 
     193-static const u32 ar5416Bank1_9160[][2] = { 
     194-       /* Addr      allmodes  */ 
     195-       {0x000098b0, 0x02108421}, 
     196-       {0x000098ec, 0x00000008}, 
     197-}; 
     198- 
     199-static const u32 ar5416Bank2_9160[][2] = { 
     200-       /* Addr      allmodes  */ 
     201-       {0x000098b0, 0x0e73ff17}, 
     202-       {0x000098e0, 0x00000420}, 
     203-}; 
     204- 
     205-static const u32 ar5416Bank3_9160[][3] = { 
     206-       /* Addr      5G_HT20     5G_HT40   */ 
     207-       {0x000098f0, 0x01400018, 0x01c00018}, 
     208-}; 
     209- 
     210-static const u32 ar5416Bank6_9160[][3] = { 
     211-       /* Addr      5G_HT20     5G_HT40   */ 
     212-       {0x0000989c, 0x00000000, 0x00000000}, 
     213-       {0x0000989c, 0x00000000, 0x00000000}, 
     214-       {0x0000989c, 0x00000000, 0x00000000}, 
     215-       {0x0000989c, 0x00e00000, 0x00e00000}, 
     216-       {0x0000989c, 0x005e0000, 0x005e0000}, 
     217-       {0x0000989c, 0x00120000, 0x00120000}, 
     218-       {0x0000989c, 0x00620000, 0x00620000}, 
     219-       {0x0000989c, 0x00020000, 0x00020000}, 
     220-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     221-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     222-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     223-       {0x0000989c, 0x40ff0000, 0x40ff0000}, 
     224-       {0x0000989c, 0x005f0000, 0x005f0000}, 
     225-       {0x0000989c, 0x00870000, 0x00870000}, 
     226-       {0x0000989c, 0x00f90000, 0x00f90000}, 
     227-       {0x0000989c, 0x007b0000, 0x007b0000}, 
     228-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     229-       {0x0000989c, 0x00f50000, 0x00f50000}, 
     230-       {0x0000989c, 0x00dc0000, 0x00dc0000}, 
     231-       {0x0000989c, 0x00110000, 0x00110000}, 
     232-       {0x0000989c, 0x006100a8, 0x006100a8}, 
     233-       {0x0000989c, 0x004210a2, 0x004210a2}, 
     234-       {0x0000989c, 0x0014008f, 0x0014008f}, 
     235-       {0x0000989c, 0x00c40003, 0x00c40003}, 
     236-       {0x0000989c, 0x003000f2, 0x003000f2}, 
     237-       {0x0000989c, 0x00440016, 0x00440016}, 
     238-       {0x0000989c, 0x00410040, 0x00410040}, 
     239-       {0x0000989c, 0x0001805e, 0x0001805e}, 
     240-       {0x0000989c, 0x0000c0ab, 0x0000c0ab}, 
     241-       {0x0000989c, 0x000000f1, 0x000000f1}, 
     242-       {0x0000989c, 0x00002081, 0x00002081}, 
     243-       {0x0000989c, 0x000000d4, 0x000000d4}, 
     244-       {0x000098d0, 0x0000000f, 0x0010000f}, 
     245-}; 
     246- 
     247-static const u32 ar5416Bank6TPC_9160[][3] = { 
     248-       /* Addr      5G_HT20     5G_HT40   */ 
     249-       {0x0000989c, 0x00000000, 0x00000000}, 
     250-       {0x0000989c, 0x00000000, 0x00000000}, 
     251-       {0x0000989c, 0x00000000, 0x00000000}, 
     252-       {0x0000989c, 0x00e00000, 0x00e00000}, 
     253-       {0x0000989c, 0x005e0000, 0x005e0000}, 
     254-       {0x0000989c, 0x00120000, 0x00120000}, 
     255-       {0x0000989c, 0x00620000, 0x00620000}, 
     256-       {0x0000989c, 0x00020000, 0x00020000}, 
     257-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     258-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     259-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     260-       {0x0000989c, 0x40ff0000, 0x40ff0000}, 
     261-       {0x0000989c, 0x005f0000, 0x005f0000}, 
     262-       {0x0000989c, 0x00870000, 0x00870000}, 
     263-       {0x0000989c, 0x00f90000, 0x00f90000}, 
     264-       {0x0000989c, 0x007b0000, 0x007b0000}, 
     265-       {0x0000989c, 0x00ff0000, 0x00ff0000}, 
     266-       {0x0000989c, 0x00f50000, 0x00f50000}, 
     267-       {0x0000989c, 0x00dc0000, 0x00dc0000}, 
     268-       {0x0000989c, 0x00110000, 0x00110000}, 
     269-       {0x0000989c, 0x006100a8, 0x006100a8}, 
     270-       {0x0000989c, 0x00423022, 0x00423022}, 
     271-       {0x0000989c, 0x2014008f, 0x2014008f}, 
     272-       {0x0000989c, 0x00c40002, 0x00c40002}, 
     273-       {0x0000989c, 0x003000f2, 0x003000f2}, 
     274-       {0x0000989c, 0x00440016, 0x00440016}, 
     275-       {0x0000989c, 0x00410040, 0x00410040}, 
     276-       {0x0000989c, 0x0001805e, 0x0001805e}, 
     277-       {0x0000989c, 0x0000c0ab, 0x0000c0ab}, 
     278-       {0x0000989c, 0x000000e1, 0x000000e1}, 
     279-       {0x0000989c, 0x00007080, 0x00007080}, 
     280-       {0x0000989c, 0x000000d4, 0x000000d4}, 
     281-       {0x000098d0, 0x0000000f, 0x0010000f}, 
     282-}; 
     283- 
     284-static const u32 ar5416Bank7_9160[][2] = { 
     285-       /* Addr      allmodes  */ 
     286-       {0x0000989c, 0x00000500}, 
     287-       {0x0000989c, 0x00000800}, 
     288-       {0x000098cc, 0x0000000e}, 
     289-}; 
     290- 
     291 static const u32 ar5416Addac_9160[][2] = { 
     292        /* Addr      allmodes  */ 
     293        {0x0000989c, 0x00000000}, 
     294--- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c 
     295+++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c 
     296@@ -35,11 +35,11 @@ static void ar9002_hw_init_mode_regs(str 
     297                INIT_INI_ARRAY(&ah->iniCommon, ar9271Common_9271, 
     298                               ARRAY_SIZE(ar9271Common_9271), 2); 
     299                INIT_INI_ARRAY(&ah->iniCommon_normal_cck_fir_coeff_9271, 
     300-                              ar9271Common_normal_cck_fir_coeff_9271, 
     301-                              ARRAY_SIZE(ar9271Common_normal_cck_fir_coeff_9271), 2); 
     302+                              ar9287Common_normal_cck_fir_coeff_9287_1_1, 
     303+                              ARRAY_SIZE(ar9287Common_normal_cck_fir_coeff_9287_1_1), 2); 
     304                INIT_INI_ARRAY(&ah->iniCommon_japan_2484_cck_fir_coeff_9271, 
     305-                              ar9271Common_japan_2484_cck_fir_coeff_9271, 
     306-                              ARRAY_SIZE(ar9271Common_japan_2484_cck_fir_coeff_9271), 2); 
     307+                              ar9287Common_japan_2484_cck_fir_coeff_9287_1_1, 
     308+                              ARRAY_SIZE(ar9287Common_japan_2484_cck_fir_coeff_9287_1_1), 2); 
     309                INIT_INI_ARRAY(&ah->iniModes_9271_1_0_only, 
     310                               ar9271Modes_9271_1_0_only, 
     311                               ARRAY_SIZE(ar9271Modes_9271_1_0_only), 5); 
     312@@ -54,53 +54,31 @@ static void ar9002_hw_init_mode_regs(str 
     313                return; 
     314        } 
     315  
     316+       if (ah->config.pcie_clock_req) 
     317+               INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     318+                          ar9280PciePhy_clkreq_off_L1_9280, 
     319+                          ARRAY_SIZE(ar9280PciePhy_clkreq_off_L1_9280), 2); 
     320+       else 
     321+               INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     322+                          ar9280PciePhy_clkreq_always_on_L1_9280, 
     323+                          ARRAY_SIZE(ar9280PciePhy_clkreq_always_on_L1_9280), 2); 
     324+ 
     325        if (AR_SREV_9287_11_OR_LATER(ah)) { 
     326                INIT_INI_ARRAY(&ah->iniModes, ar9287Modes_9287_1_1, 
     327                                ARRAY_SIZE(ar9287Modes_9287_1_1), 5); 
     328                INIT_INI_ARRAY(&ah->iniCommon, ar9287Common_9287_1_1, 
     329                                ARRAY_SIZE(ar9287Common_9287_1_1), 2); 
     330-               if (ah->config.pcie_clock_req) 
     331-                       INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     332-                       ar9287PciePhy_clkreq_off_L1_9287_1_1, 
     333-                       ARRAY_SIZE(ar9287PciePhy_clkreq_off_L1_9287_1_1), 2); 
     334-               else 
     335-                       INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     336-                       ar9287PciePhy_clkreq_always_on_L1_9287_1_1, 
     337-                       ARRAY_SIZE(ar9287PciePhy_clkreq_always_on_L1_9287_1_1), 
     338-                                       2); 
     339        } else if (AR_SREV_9285_12_OR_LATER(ah)) { 
     340- 
     341- 
     342                INIT_INI_ARRAY(&ah->iniModes, ar9285Modes_9285_1_2, 
     343                               ARRAY_SIZE(ar9285Modes_9285_1_2), 5); 
     344                INIT_INI_ARRAY(&ah->iniCommon, ar9285Common_9285_1_2, 
     345                               ARRAY_SIZE(ar9285Common_9285_1_2), 2); 
     346- 
     347-               if (ah->config.pcie_clock_req) { 
     348-                       INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     349-                       ar9285PciePhy_clkreq_off_L1_9285_1_2, 
     350-                       ARRAY_SIZE(ar9285PciePhy_clkreq_off_L1_9285_1_2), 2); 
     351-               } else { 
     352-                       INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     353-                       ar9285PciePhy_clkreq_always_on_L1_9285_1_2, 
     354-                       ARRAY_SIZE(ar9285PciePhy_clkreq_always_on_L1_9285_1_2), 
     355-                                 2); 
     356-               } 
     357        } else if (AR_SREV_9280_20_OR_LATER(ah)) { 
     358                INIT_INI_ARRAY(&ah->iniModes, ar9280Modes_9280_2, 
     359                               ARRAY_SIZE(ar9280Modes_9280_2), 5); 
     360                INIT_INI_ARRAY(&ah->iniCommon, ar9280Common_9280_2, 
     361                               ARRAY_SIZE(ar9280Common_9280_2), 2); 
     362  
     363-               if (ah->config.pcie_clock_req) { 
     364-                       INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     365-                              ar9280PciePhy_clkreq_off_L1_9280, 
     366-                              ARRAY_SIZE(ar9280PciePhy_clkreq_off_L1_9280), 2); 
     367-               } else { 
     368-                       INIT_INI_ARRAY(&ah->iniPcieSerdes, 
     369-                              ar9280PciePhy_clkreq_always_on_L1_9280, 
     370-                              ARRAY_SIZE(ar9280PciePhy_clkreq_always_on_L1_9280), 2); 
     371-               } 
     372                INIT_INI_ARRAY(&ah->iniModesAdditional, 
     373                               ar9280Modes_fast_clock_9280_2, 
     374                               ARRAY_SIZE(ar9280Modes_fast_clock_9280_2), 3); 
     375@@ -109,22 +87,6 @@ static void ar9002_hw_init_mode_regs(str 
     376                               ARRAY_SIZE(ar5416Modes_9160), 5); 
     377                INIT_INI_ARRAY(&ah->iniCommon, ar5416Common_9160, 
     378                               ARRAY_SIZE(ar5416Common_9160), 2); 
     379-               INIT_INI_ARRAY(&ah->iniBank0, ar5416Bank0_9160, 
     380-                              ARRAY_SIZE(ar5416Bank0_9160), 2); 
     381-               INIT_INI_ARRAY(&ah->iniBB_RfGain, ar5416BB_RfGain_9160, 
     382-                              ARRAY_SIZE(ar5416BB_RfGain_9160), 3); 
     383-               INIT_INI_ARRAY(&ah->iniBank1, ar5416Bank1_9160, 
     384-                              ARRAY_SIZE(ar5416Bank1_9160), 2); 
     385-               INIT_INI_ARRAY(&ah->iniBank2, ar5416Bank2_9160, 
     386-                              ARRAY_SIZE(ar5416Bank2_9160), 2); 
     387-               INIT_INI_ARRAY(&ah->iniBank3, ar5416Bank3_9160, 
     388-                              ARRAY_SIZE(ar5416Bank3_9160), 3); 
     389-               INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6_9160, 
     390-                              ARRAY_SIZE(ar5416Bank6_9160), 3); 
     391-               INIT_INI_ARRAY(&ah->iniBank6TPC, ar5416Bank6TPC_9160, 
     392-                              ARRAY_SIZE(ar5416Bank6TPC_9160), 3); 
     393-               INIT_INI_ARRAY(&ah->iniBank7, ar5416Bank7_9160, 
     394-                              ARRAY_SIZE(ar5416Bank7_9160), 2); 
     395                if (AR_SREV_9160_11(ah)) { 
     396                        INIT_INI_ARRAY(&ah->iniAddac, 
     397                                       ar5416Addac_9160_1_1, 
     398@@ -138,22 +100,8 @@ static void ar9002_hw_init_mode_regs(str 
     399                               ARRAY_SIZE(ar5416Modes_9100), 5); 
     400                INIT_INI_ARRAY(&ah->iniCommon, ar5416Common_9100, 
     401                               ARRAY_SIZE(ar5416Common_9100), 2); 
     402-               INIT_INI_ARRAY(&ah->iniBank0, ar5416Bank0_9100, 
     403-                              ARRAY_SIZE(ar5416Bank0_9100), 2); 
     404-               INIT_INI_ARRAY(&ah->iniBB_RfGain, ar5416BB_RfGain_9100, 
     405-                              ARRAY_SIZE(ar5416BB_RfGain_9100), 3); 
     406-               INIT_INI_ARRAY(&ah->iniBank1, ar5416Bank1_9100, 
     407-                              ARRAY_SIZE(ar5416Bank1_9100), 2); 
     408-               INIT_INI_ARRAY(&ah->iniBank2, ar5416Bank2_9100, 
     409-                              ARRAY_SIZE(ar5416Bank2_9100), 2); 
     410-               INIT_INI_ARRAY(&ah->iniBank3, ar5416Bank3_9100, 
     411-                              ARRAY_SIZE(ar5416Bank3_9100), 3); 
     412                INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6_9100, 
     413                               ARRAY_SIZE(ar5416Bank6_9100), 3); 
     414-               INIT_INI_ARRAY(&ah->iniBank6TPC, ar5416Bank6TPC_9100, 
     415-                              ARRAY_SIZE(ar5416Bank6TPC_9100), 3); 
     416-               INIT_INI_ARRAY(&ah->iniBank7, ar5416Bank7_9100, 
     417-                              ARRAY_SIZE(ar5416Bank7_9100), 2); 
     418                INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac_9100, 
     419                               ARRAY_SIZE(ar5416Addac_9100), 2); 
     420        } else { 
     421@@ -161,24 +109,37 @@ static void ar9002_hw_init_mode_regs(str 
     422                               ARRAY_SIZE(ar5416Modes), 5); 
     423                INIT_INI_ARRAY(&ah->iniCommon, ar5416Common, 
     424                               ARRAY_SIZE(ar5416Common), 2); 
     425-               INIT_INI_ARRAY(&ah->iniBank0, ar5416Bank0, 
     426-                              ARRAY_SIZE(ar5416Bank0), 2); 
     427+               INIT_INI_ARRAY(&ah->iniBank6TPC, ar5416Bank6TPC, 
     428+                              ARRAY_SIZE(ar5416Bank6TPC), 3); 
     429+               INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac, 
     430+                              ARRAY_SIZE(ar5416Addac), 2); 
     431+       } 
     432+ 
     433+       if (!AR_SREV_9280_20_OR_LATER(ah)) { 
     434+               /* Common for AR5416, AR913x, AR9160 */ 
     435                INIT_INI_ARRAY(&ah->iniBB_RfGain, ar5416BB_RfGain, 
     436                               ARRAY_SIZE(ar5416BB_RfGain), 3); 
     437+ 
     438+               INIT_INI_ARRAY(&ah->iniBank0, ar5416Bank0, 
     439+                              ARRAY_SIZE(ar5416Bank0), 2); 
     440                INIT_INI_ARRAY(&ah->iniBank1, ar5416Bank1, 
     441                               ARRAY_SIZE(ar5416Bank1), 2); 
     442                INIT_INI_ARRAY(&ah->iniBank2, ar5416Bank2, 
     443                               ARRAY_SIZE(ar5416Bank2), 2); 
     444                INIT_INI_ARRAY(&ah->iniBank3, ar5416Bank3, 
     445                               ARRAY_SIZE(ar5416Bank3), 3); 
     446-               INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6, 
     447-                              ARRAY_SIZE(ar5416Bank6), 3); 
     448-               INIT_INI_ARRAY(&ah->iniBank6TPC, ar5416Bank6TPC, 
     449-                              ARRAY_SIZE(ar5416Bank6TPC), 3); 
     450                INIT_INI_ARRAY(&ah->iniBank7, ar5416Bank7, 
     451                               ARRAY_SIZE(ar5416Bank7), 2); 
     452-               INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac, 
     453-                              ARRAY_SIZE(ar5416Addac), 2); 
     454+ 
     455+               /* Common for AR5416, AR9160 */ 
     456+               if (!AR_SREV_9100(ah)) 
     457+                       INIT_INI_ARRAY(&ah->iniBank6, ar5416Bank6, 
     458+                                      ARRAY_SIZE(ar5416Bank6), 3); 
     459+ 
     460+               /* Common for AR913x, AR9160 */ 
     461+               if (!AR_SREV_5416(ah)) 
     462+                       INIT_INI_ARRAY(&ah->iniBank6TPC, ar5416Bank6TPC_9100, 
     463+                                      ARRAY_SIZE(ar5416Bank6TPC_9100), 3); 
     464        } 
     465  
     466        /* iniAddac needs to be modified for these chips */ 
     467--- a/drivers/net/wireless/ath/ath9k/ar9002_initvals.h 
     468+++ b/drivers/net/wireless/ath/ath9k/ar9002_initvals.h 
     469@@ -925,34 +925,6 @@ static const u32 ar9280PciePhy_clkreq_al 
     470        {0x00004044, 0x00000000}, 
     471 }; 
     472  
     473-static const u32 ar9285PciePhy_clkreq_always_on_L1_9285[][2] = { 
     474-       /* Addr      allmodes  */ 
     475-       {0x00004040, 0x9248fd00}, 
     476-       {0x00004040, 0x24924924}, 
     477-       {0x00004040, 0xa8000019}, 
     478-       {0x00004040, 0x13160820}, 
     479-       {0x00004040, 0xe5980560}, 
     480-       {0x00004040, 0xc01dcffd}, 
     481-       {0x00004040, 0x1aaabe41}, 
     482-       {0x00004040, 0xbe105554}, 
     483-       {0x00004040, 0x00043007}, 
     484-       {0x00004044, 0x00000000}, 
     485-}; 
     486- 
     487-static const u32 ar9285PciePhy_clkreq_off_L1_9285[][2] = { 
     488-       /* Addr      allmodes  */ 
     489-       {0x00004040, 0x9248fd00}, 
     490-       {0x00004040, 0x24924924}, 
     491-       {0x00004040, 0xa8000019}, 
     492-       {0x00004040, 0x13160820}, 
     493-       {0x00004040, 0xe5980560}, 
     494-       {0x00004040, 0xc01dcffc}, 
     495-       {0x00004040, 0x1aaabe41}, 
     496-       {0x00004040, 0xbe105554}, 
     497-       {0x00004040, 0x00043007}, 
     498-       {0x00004044, 0x00000000}, 
     499-}; 
     500- 
     501 static const u32 ar9285Modes_9285_1_2[][5] = { 
     502        /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ 
     503        {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160}, 
     504@@ -1743,34 +1715,6 @@ static const u32 ar9285Modes_XE2_0_high_ 
     505        {0x0000a3e0, 0x000000e7, 0x000000e7, 0x000000e7, 0x000000e7}, 
     506 }; 
     507  
     508-static const u32 ar9285PciePhy_clkreq_always_on_L1_9285_1_2[][2] = { 
     509-       /* Addr      allmodes  */ 
     510-       {0x00004040, 0x9248fd00}, 
     511-       {0x00004040, 0x24924924}, 
     512-       {0x00004040, 0xa8000019}, 
     513-       {0x00004040, 0x13160820}, 
     514-       {0x00004040, 0xe5980560}, 
     515-       {0x00004040, 0xc01dcffd}, 
     516-       {0x00004040, 0x1aaabe41}, 
     517-       {0x00004040, 0xbe105554}, 
     518-       {0x00004040, 0x00043007}, 
     519-       {0x00004044, 0x00000000}, 
     520-}; 
     521- 
     522-static const u32 ar9285PciePhy_clkreq_off_L1_9285_1_2[][2] = { 
     523-       /* Addr      allmodes  */ 
     524-       {0x00004040, 0x9248fd00}, 
     525-       {0x00004040, 0x24924924}, 
     526-       {0x00004040, 0xa8000019}, 
     527-       {0x00004040, 0x13160820}, 
     528-       {0x00004040, 0xe5980560}, 
     529-       {0x00004040, 0xc01dcffc}, 
     530-       {0x00004040, 0x1aaabe41}, 
     531-       {0x00004040, 0xbe105554}, 
     532-       {0x00004040, 0x00043007}, 
     533-       {0x00004044, 0x00000000}, 
     534-}; 
     535- 
     536 static const u32 ar9287Modes_9287_1_1[][5] = { 
     537        /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ 
     538        {0x00001030, 0x00000000, 0x00000000, 0x000002c0, 0x00000160}, 
     539@@ -2512,34 +2456,6 @@ static const u32 ar9287Modes_rx_gain_928 
     540        {0x0000a848, 0x00000000, 0x00000000, 0x00001067, 0x00001067}, 
     541 }; 
     542  
     543-static const u32 ar9287PciePhy_clkreq_always_on_L1_9287_1_1[][2] = { 
     544-       /* Addr      allmodes  */ 
     545-       {0x00004040, 0x9248fd00}, 
     546-       {0x00004040, 0x24924924}, 
     547-       {0x00004040, 0xa8000019}, 
     548-       {0x00004040, 0x13160820}, 
     549-       {0x00004040, 0xe5980560}, 
     550-       {0x00004040, 0xc01dcffd}, 
     551-       {0x00004040, 0x1aaabe41}, 
     552-       {0x00004040, 0xbe105554}, 
     553-       {0x00004040, 0x00043007}, 
     554-       {0x00004044, 0x00000000}, 
     555-}; 
     556- 
     557-static const u32 ar9287PciePhy_clkreq_off_L1_9287_1_1[][2] = { 
     558-       /* Addr      allmodes  */ 
     559-       {0x00004040, 0x9248fd00}, 
     560-       {0x00004040, 0x24924924}, 
     561-       {0x00004040, 0xa8000019}, 
     562-       {0x00004040, 0x13160820}, 
     563-       {0x00004040, 0xe5980560}, 
     564-       {0x00004040, 0xc01dcffc}, 
     565-       {0x00004040, 0x1aaabe41}, 
     566-       {0x00004040, 0xbe105554}, 
     567-       {0x00004040, 0x00043007}, 
     568-       {0x00004044, 0x00000000}, 
     569-}; 
     570- 
     571 static const u32 ar9271Modes_9271[][5] = { 
     572        /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ 
     573        {0x00001030, 0x00000230, 0x00000460, 0x000002c0, 0x00000160}, 
     574@@ -3176,20 +3092,6 @@ static const u32 ar9271Common_9271[][2]  
     575        {0x0000d384, 0xf3307ff0}, 
     576 }; 
     577  
     578-static const u32 ar9271Common_normal_cck_fir_coeff_9271[][2] = { 
     579-       /* Addr      allmodes  */ 
     580-       {0x0000a1f4, 0x00fffeff}, 
     581-       {0x0000a1f8, 0x00f5f9ff}, 
     582-       {0x0000a1fc, 0xb79f6427}, 
     583-}; 
     584- 
     585-static const u32 ar9271Common_japan_2484_cck_fir_coeff_9271[][2] = { 
     586-       /* Addr      allmodes  */ 
     587-       {0x0000a1f4, 0x00000000}, 
     588-       {0x0000a1f8, 0xefff0301}, 
     589-       {0x0000a1fc, 0xca9228ee}, 
     590-}; 
     591- 
     592 static const u32 ar9271Modes_9271_1_0_only[][5] = { 
     593        /* Addr      5G_HT20     5G_HT40     2G_HT40     2G_HT20   */ 
     594        {0x00009910, 0x30002311, 0x30002311, 0x30002311, 0x30002311}, 
    1595--- a/net/mac80211/agg-rx.c 
    2596+++ b/net/mac80211/agg-rx.c 
     
    95689        if (!local->open_count) 
    96690                drv_stop(local); 
    97 @@ -720,6 +696,70 @@ static void ieee80211_if_setup(struct ne 
     691@@ -654,6 +630,8 @@ static void ieee80211_teardown_sdata(str 
     692  
     693        if (ieee80211_vif_is_mesh(&sdata->vif)) 
     694                mesh_rmc_free(sdata); 
     695+       else if (sdata->vif.type == NL80211_IFTYPE_STATION) 
     696+               ieee80211_mgd_teardown(sdata); 
     697  
     698        flushed = sta_info_flush(local, sdata); 
     699        WARN_ON(flushed); 
     700@@ -720,6 +698,70 @@ static void ieee80211_if_setup(struct ne 
    98701        dev->destructor = free_netdev; 
    99702 } 
     
    166769 { 
    167770        struct ieee80211_sub_if_data *sdata = 
    168 @@ -824,6 +864,9 @@ static void ieee80211_iface_work(struct  
     771@@ -824,6 +866,9 @@ static void ieee80211_iface_work(struct  
    169772                                break; 
    170773                        ieee80211_mesh_rx_queued_mgmt(sdata, skb); 
     
    223826        default: 
    224827                /* should never get here */ 
    225 --- a/net/mac80211/sta_info.c 
    226 +++ b/net/mac80211/sta_info.c 
    227 @@ -1379,8 +1379,10 @@ int sta_info_move_state(struct sta_info  
    228                 return -EINVAL; 
    229         } 
    230   
    231 +#ifdef CONFIG_MAC80211_VERBOSE_DEBUG 
    232         printk(KERN_DEBUG "%s: moving STA %pM to state %d\n", 
    233                 sta->sdata->name, sta->sta.addr, new_state); 
    234 +#endif 
    235   
    236         /* 
    237          * notify the driver before the actual changes so it can 
    238828--- a/net/mac80211/sta_info.h 
    239829+++ b/net/mac80211/sta_info.h 
     
    254844        WLAN_STA_MFP, 
    255845        WLAN_STA_BLOCK_BA, 
    256 --- a/net/mac80211/rate.h 
    257 +++ b/net/mac80211/rate.h 
    258 @@ -37,7 +37,7 @@ static inline void rate_control_tx_statu 
    259         struct ieee80211_sta *ista = &sta->sta; 
    260         void *priv_sta = sta->rate_ctrl_priv; 
    261   
    262 -       if (!ref) 
    263 +       if (!ref || !test_sta_flag(sta, WLAN_STA_RATE_CONTROL)) 
    264                 return; 
    265   
    266         ref->ops->tx_status(ref->priv, sband, ista, priv_sta, skb); 
    267 --- a/net/mac80211/main.c 
    268 +++ b/net/mac80211/main.c 
    269 @@ -915,6 +915,8 @@ int ieee80211_register_hw(struct ieee802 
    270                 wiphy_debug(local->hw.wiphy, "Failed to initialize wep: %d\n", 
    271                             result); 
    272   
    273 +       ieee80211_led_init(local); 
    274 + 
    275         rtnl_lock(); 
    276   
    277         result = ieee80211_init_rate_ctrl_alg(local, 
    278 @@ -936,8 +938,6 @@ int ieee80211_register_hw(struct ieee802 
    279   
    280         rtnl_unlock(); 
    281   
    282 -       ieee80211_led_init(local); 
    283 - 
    284         local->network_latency_notifier.notifier_call = 
    285                 ieee80211_max_network_latency; 
    286         result = pm_qos_add_notifier(PM_QOS_NETWORK_LATENCY, 
    287 --- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c 
    288 +++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c 
    289 @@ -489,8 +489,6 @@ static int ar5008_hw_rf_alloc_ext_banks( 
    290         ATH_ALLOC_BANK(ah->analogBank6Data, ah->iniBank6.ia_rows); 
    291         ATH_ALLOC_BANK(ah->analogBank6TPCData, ah->iniBank6TPC.ia_rows); 
    292         ATH_ALLOC_BANK(ah->analogBank7Data, ah->iniBank7.ia_rows); 
    293 -       ATH_ALLOC_BANK(ah->addac5416_21, 
    294 -                      ah->iniAddac.ia_rows * ah->iniAddac.ia_columns); 
    295         ATH_ALLOC_BANK(ah->bank6Temp, ah->iniBank6.ia_rows); 
    296   
     846--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c 
     847+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c 
     848@@ -530,7 +530,11 @@ int ath9k_hw_process_rxdesc_edma(struct  
     849                 */ 
     850                if (rxsp->status11 & AR_CRCErr) 
     851                        rxs->rs_status |= ATH9K_RXERR_CRC; 
     852-               else if (rxsp->status11 & AR_PHYErr) { 
     853+               else if (rxsp->status11 & AR_DecryptCRCErr) 
     854+                       rxs->rs_status |= ATH9K_RXERR_DECRYPT; 
     855+               else if (rxsp->status11 & AR_MichaelErr) 
     856+                       rxs->rs_status |= ATH9K_RXERR_MIC; 
     857+               if (rxsp->status11 & AR_PHYErr) { 
     858                        phyerr = MS(rxsp->status11, AR_PHYErrCode); 
     859                        /* 
     860                         * If we reach a point here where AR_PostDelimCRCErr is 
     861@@ -552,11 +556,7 @@ int ath9k_hw_process_rxdesc_edma(struct  
     862                                rxs->rs_status |= ATH9K_RXERR_PHY; 
     863                                rxs->rs_phyerr = phyerr; 
     864                        } 
     865- 
     866-               } else if (rxsp->status11 & AR_DecryptCRCErr) 
     867-                       rxs->rs_status |= ATH9K_RXERR_DECRYPT; 
     868-               else if (rxsp->status11 & AR_MichaelErr) 
     869-                       rxs->rs_status |= ATH9K_RXERR_MIC; 
     870+               }; 
     871        } 
     872  
     873        if (rxsp->status11 & AR_KeyMiss) 
     874--- a/drivers/net/wireless/ath/carl9170/tx.c 
     875+++ b/drivers/net/wireless/ath/carl9170/tx.c 
     876@@ -1236,6 +1236,7 @@ static bool carl9170_tx_ps_drop(struct a 
     877 { 
     878        struct ieee80211_sta *sta; 
     879        struct carl9170_sta_info *sta_info; 
     880+       struct ieee80211_tx_info *tx_info; 
     881  
     882        rcu_read_lock(); 
     883        sta = __carl9170_get_tx_sta(ar, skb); 
     884@@ -1243,12 +1244,13 @@ static bool carl9170_tx_ps_drop(struct a 
     885                goto out_rcu; 
     886  
     887        sta_info = (void *) sta->drv_priv; 
     888-       if (unlikely(sta_info->sleeping)) { 
     889-               struct ieee80211_tx_info *tx_info; 
     890+       tx_info = IEEE80211_SKB_CB(skb); 
     891  
     892+       if (unlikely(sta_info->sleeping) && 
     893+           !(tx_info->flags & (IEEE80211_TX_CTL_NO_PS_BUFFER | 
     894+                               IEEE80211_TX_CTL_CLEAR_PS_FILT))) { 
     895                rcu_read_unlock(); 
     896  
     897-               tx_info = IEEE80211_SKB_CB(skb); 
     898                if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) 
     899                        atomic_dec(&ar->tx_ampdu_upload); 
     900  
     901--- a/drivers/net/wireless/iwlegacy/4965-mac.c 
     902+++ b/drivers/net/wireless/iwlegacy/4965-mac.c 
     903@@ -1694,7 +1694,7 @@ il4965_tx_skb(struct il_priv *il, struct 
     904                sta_priv = (void *)sta->drv_priv; 
     905  
     906        if (sta_priv && sta_priv->asleep && 
     907-           (info->flags & IEEE80211_TX_CTL_POLL_RESPONSE)) { 
     908+           (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER)) { 
     909                /* 
     910                 * This sends an asynchronous command to the device, 
     911                 * but we can rely on it being processed before the 
     912--- a/drivers/net/wireless/iwlwifi/iwl-agn-tx.c 
     913+++ b/drivers/net/wireless/iwlwifi/iwl-agn-tx.c 
     914@@ -322,7 +322,7 @@ int iwlagn_tx_skb(struct iwl_priv *priv, 
     915                sta_priv = (void *)info->control.sta->drv_priv; 
     916  
     917        if (sta_priv && sta_priv->asleep && 
     918-           (info->flags & IEEE80211_TX_CTL_POLL_RESPONSE)) { 
     919+           (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER)) { 
     920                /* 
     921                 * This sends an asynchronous command to the device, 
     922                 * but we can rely on it being processed before the 
     923@@ -331,6 +331,10 @@ int iwlagn_tx_skb(struct iwl_priv *priv, 
     924                 * counter. 
     925                 * For now set the counter to just 1 since we do not 
     926                 * support uAPSD yet. 
     927+                * 
     928+                * FIXME: If we get two non-bufferable frames one 
     929+                * after the other, we might only send out one of 
     930+                * them because this is racy. 
     931                 */ 
     932                iwl_sta_modify_sleep_tx_count(priv, sta_id, 1); 
     933        } 
     934--- a/drivers/net/wireless/p54/txrx.c 
     935+++ b/drivers/net/wireless/p54/txrx.c 
     936@@ -690,7 +690,7 @@ static void p54_tx_80211_header(struct p 
     937        if (!(info->flags & IEEE80211_TX_CTL_ASSIGN_SEQ)) 
     938                *flags |= P54_HDR_FLAG_DATA_OUT_SEQNR; 
     939  
     940-       if (info->flags & IEEE80211_TX_CTL_POLL_RESPONSE) 
     941+       if (info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER) 
     942                *flags |= P54_HDR_FLAG_DATA_OUT_NOCANCEL; 
     943  
     944        if (info->flags & IEEE80211_TX_CTL_CLEAR_PS_FILT) 
     945--- a/include/net/mac80211.h 
     946+++ b/include/net/mac80211.h 
     947@@ -341,9 +341,9 @@ struct ieee80211_bss_conf { 
     948  *     used to indicate that a frame was already retried due to PS 
     949  * @IEEE80211_TX_INTFL_DONT_ENCRYPT: completely internal to mac80211, 
     950  *     used to indicate frame should not be encrypted 
     951- * @IEEE80211_TX_CTL_POLL_RESPONSE: This frame is a response to a poll 
     952- *     frame (PS-Poll or uAPSD) and should be sent although the station 
     953- *     is in powersave mode. 
     954+ * @IEEE80211_TX_CTL_NO_PS_BUFFER: This frame is a response to a poll 
     955+ *     frame (PS-Poll or uAPSD) or a non-bufferable MMPDU and must 
     956+ *     be sent although the station is in powersave mode. 
     957  * @IEEE80211_TX_CTL_MORE_FRAMES: More frames will be passed to the 
     958  *     transmit function after the current frame, this can be used 
     959  *     by drivers to kick the DMA queue only if unset or when the 
     960@@ -399,7 +399,7 @@ enum mac80211_tx_control_flags { 
     961        IEEE80211_TX_INTFL_NEED_TXPROCESSING    = BIT(14), 
     962        IEEE80211_TX_INTFL_RETRIED              = BIT(15), 
     963        IEEE80211_TX_INTFL_DONT_ENCRYPT         = BIT(16), 
     964-       IEEE80211_TX_CTL_POLL_RESPONSE          = BIT(17), 
     965+       IEEE80211_TX_CTL_NO_PS_BUFFER           = BIT(17), 
     966        IEEE80211_TX_CTL_MORE_FRAMES            = BIT(18), 
     967        IEEE80211_TX_INTFL_RETRANSMISSION       = BIT(19), 
     968        /* hole at 20, use later */ 
     969@@ -425,7 +425,7 @@ enum mac80211_tx_control_flags { 
     970        IEEE80211_TX_CTL_SEND_AFTER_DTIM | IEEE80211_TX_CTL_AMPDU |           \ 
     971        IEEE80211_TX_STAT_TX_FILTERED | IEEE80211_TX_STAT_ACK |               \ 
     972        IEEE80211_TX_STAT_AMPDU | IEEE80211_TX_STAT_AMPDU_NO_BACK |           \ 
     973-       IEEE80211_TX_CTL_RATE_CTRL_PROBE | IEEE80211_TX_CTL_POLL_RESPONSE |   \ 
     974+       IEEE80211_TX_CTL_RATE_CTRL_PROBE | IEEE80211_TX_CTL_NO_PS_BUFFER |    \ 
     975        IEEE80211_TX_CTL_MORE_FRAMES | IEEE80211_TX_CTL_LDPC |                \ 
     976        IEEE80211_TX_CTL_STBC | IEEE80211_TX_STATUS_EOSP) 
     977  
     978@@ -1634,7 +1634,7 @@ void ieee80211_free_txskb(struct ieee802 
     979  * the station sends a PS-Poll or a uAPSD trigger frame, mac80211 
     980  * will inform the driver of this with the @allow_buffered_frames 
     981  * callback; this callback is optional. mac80211 will then transmit 
     982- * the frames as usual and set the %IEEE80211_TX_CTL_POLL_RESPONSE 
     983+ * the frames as usual and set the %IEEE80211_TX_CTL_NO_PS_BUFFER 
     984  * on each frame. The last frame in the service period (or the only 
     985  * response to a PS-Poll) also has %IEEE80211_TX_STATUS_EOSP set to 
     986  * indicate that it ends the service period; as this frame must have 
     987@@ -1642,6 +1642,9 @@ void ieee80211_free_txskb(struct ieee802 
     988  * When TX status is reported for this frame, the service period is 
     989  * marked has having ended and a new one can be started by the peer. 
     990  * 
     991+ * Additionally, non-bufferable MMPDUs can also be transmitted by 
     992+ * mac80211 with the %IEEE80211_TX_CTL_NO_PS_BUFFER set in them. 
     993+ * 
     994  * Another race condition can happen on some devices like iwlwifi 
     995  * when there are frames queued for the station and it wakes up 
     996  * or polls; the frames that are already queued could end up being 
     997@@ -2140,7 +2143,7 @@ enum ieee80211_frame_release_type { 
     998  * @allow_buffered_frames: Prepare device to allow the given number of frames 
     999  *     to go out to the given station. The frames will be sent by mac80211 
     1000  *     via the usual TX path after this call. The TX information for frames 
     1001- *     released will also have the %IEEE80211_TX_CTL_POLL_RESPONSE flag set 
     1002+ *     released will also have the %IEEE80211_TX_CTL_NO_PS_BUFFER flag set 
     1003  *     and the last one will also have %IEEE80211_TX_STATUS_EOSP set. In case 
     1004  *     frames from multiple TIDs are released and the driver might reorder 
     1005  *     them between the TIDs, it must set the %IEEE80211_TX_STATUS_EOSP flag 
     1006--- a/net/mac80211/ieee80211_i.h 
     1007+++ b/net/mac80211/ieee80211_i.h 
     1008@@ -1183,6 +1183,7 @@ void ieee80211_sta_rx_queued_mgmt(struct 
     1009                                  struct sk_buff *skb); 
     1010 void ieee80211_sta_reset_beacon_monitor(struct ieee80211_sub_if_data *sdata); 
     1011 void ieee80211_sta_reset_conn_monitor(struct ieee80211_sub_if_data *sdata); 
     1012+void ieee80211_mgd_teardown(struct ieee80211_sub_if_data *sdata); 
     1013  
     1014 /* IBSS code */ 
     1015 void ieee80211_ibss_notify_scan_completed(struct ieee80211_local *local); 
     1016--- a/net/mac80211/mlme.c 
     1017+++ b/net/mac80211/mlme.c 
     1018@@ -3496,6 +3496,19 @@ int ieee80211_mgd_disassoc(struct ieee80 
    2971019        return 0; 
    298 @@ -519,7 +517,6 @@ static void ar5008_hw_rf_free_ext_banks( 
    299         ATH_FREE_BANK(ah->analogBank6Data); 
    300         ATH_FREE_BANK(ah->analogBank6TPCData); 
    301         ATH_FREE_BANK(ah->analogBank7Data); 
    302 -       ATH_FREE_BANK(ah->addac5416_21); 
    303         ATH_FREE_BANK(ah->bank6Temp); 
    304   
    305  #undef ATH_FREE_BANK 
    306 @@ -805,27 +802,7 @@ static int ar5008_hw_process_ini(struct  
    307         if (ah->eep_ops->set_addac) 
    308                 ah->eep_ops->set_addac(ah, chan); 
    309   
    310 -       if (AR_SREV_5416_22_OR_LATER(ah)) { 
    311 -               REG_WRITE_ARRAY(&ah->iniAddac, 1, regWrites); 
    312 -       } else { 
    313 -               struct ar5416IniArray temp; 
    314 -               u32 addacSize = 
    315 -                       sizeof(u32) * ah->iniAddac.ia_rows * 
    316 -                       ah->iniAddac.ia_columns; 
    317 - 
    318 -               /* For AR5416 2.0/2.1 */ 
    319 -               memcpy(ah->addac5416_21, 
    320 -                      ah->iniAddac.ia_array, addacSize); 
    321 - 
    322 -               /* override CLKDRV value at [row, column] = [31, 1] */ 
    323 -               (ah->addac5416_21)[31 * ah->iniAddac.ia_columns + 1] = 0; 
    324 - 
    325 -               temp.ia_array = ah->addac5416_21; 
    326 -               temp.ia_columns = ah->iniAddac.ia_columns; 
    327 -               temp.ia_rows = ah->iniAddac.ia_rows; 
    328 -               REG_WRITE_ARRAY(&temp, 1, regWrites); 
    329 -       } 
    330 - 
    331 +       REG_WRITE_ARRAY(&ah->iniAddac, 1, regWrites); 
    332         REG_WRITE(ah, AR_PHY_ADC_SERIAL_CTL, AR_PHY_SEL_INTERNAL_ADDAC); 
    333   
    334         ENABLE_REGWRITE_BUFFER(ah); 
    335 --- a/drivers/net/wireless/ath/ath9k/ar9002_hw.c 
    336 +++ b/drivers/net/wireless/ath/ath9k/ar9002_hw.c 
    337 @@ -180,6 +180,25 @@ static void ar9002_hw_init_mode_regs(str 
    338                 INIT_INI_ARRAY(&ah->iniAddac, ar5416Addac, 
    339                                ARRAY_SIZE(ar5416Addac), 2); 
     1020 } 
     1021  
     1022+void ieee80211_mgd_teardown(struct ieee80211_sub_if_data *sdata) 
     1023+{ 
     1024+       struct ieee80211_if_managed *ifmgd = &sdata->u.mgd; 
     1025+ 
     1026+       mutex_lock(&ifmgd->mtx); 
     1027+       if (ifmgd->assoc_data) 
     1028+               ieee80211_destroy_assoc_data(sdata, false); 
     1029+       if (ifmgd->auth_data) 
     1030+               ieee80211_destroy_auth_data(sdata, false); 
     1031+       del_timer_sync(&ifmgd->timer); 
     1032+       mutex_unlock(&ifmgd->mtx); 
     1033+} 
     1034+ 
     1035 void ieee80211_cqm_rssi_notify(struct ieee80211_vif *vif, 
     1036                               enum nl80211_cqm_rssi_threshold_event rssi_event, 
     1037                               gfp_t gfp) 
     1038--- a/net/mac80211/sta_info.c 
     1039+++ b/net/mac80211/sta_info.c 
     1040@@ -865,8 +865,10 @@ int sta_info_flush(struct ieee80211_loca 
     1041  
     1042        mutex_lock(&local->sta_mtx); 
     1043        list_for_each_entry_safe(sta, tmp, &local->sta_list, list) { 
     1044-               if (!sdata || sdata == sta->sdata) 
     1045+               if (!sdata || sdata == sta->sdata) { 
     1046                        WARN_ON(__sta_info_destroy(sta)); 
     1047+                       ret++; 
     1048+               } 
    3401049        } 
    341 + 
    342 +       /* iniAddac needs to be modified for these chips */ 
    343 +       if (AR_SREV_9160(ah) || !AR_SREV_5416_22_OR_LATER(ah)) { 
    344 +               struct ar5416IniArray *addac = &ah->iniAddac; 
    345 +               u32 size = sizeof(u32) * addac->ia_rows * addac->ia_columns; 
    346 +               u32 *data; 
    347 + 
    348 +               data = kmalloc(size, GFP_KERNEL); 
    349 +               if (!data) 
    350 +                       return; 
    351 + 
    352 +               memcpy(data, addac->ia_array, size); 
    353 +               addac->ia_array = data; 
    354 + 
    355 +               if (!AR_SREV_5416_22_OR_LATER(ah)) { 
    356 +                       /* override CLKDRV value */ 
    357 +                       INI_RA(addac, 31,1) = 0; 
     1050        mutex_unlock(&local->sta_mtx); 
     1051  
     1052@@ -1048,7 +1050,7 @@ static void ieee80211_send_null_response 
     1053         * exchange. Also set EOSP to indicate this packet 
     1054         * ends the poll/service period. 
     1055         */ 
     1056-       info->flags |= IEEE80211_TX_CTL_POLL_RESPONSE | 
     1057+       info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER | 
     1058                       IEEE80211_TX_STATUS_EOSP | 
     1059                       IEEE80211_TX_CTL_REQ_TX_STATUS; 
     1060  
     1061@@ -1175,7 +1177,7 @@ ieee80211_sta_ps_deliver_response(struct 
     1062                         * STA may still remain is PS mode after this frame 
     1063                         * exchange. 
     1064                         */ 
     1065-                       info->flags |= IEEE80211_TX_CTL_POLL_RESPONSE; 
     1066+                       info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER; 
     1067  
     1068                        /* 
     1069                         * Use MoreData flag to indicate whether there are 
     1070--- a/net/mac80211/tx.c 
     1071+++ b/net/mac80211/tx.c 
     1072@@ -448,18 +448,23 @@ ieee80211_tx_h_unicast_ps_buf(struct iee 
     1073        struct ieee80211_hdr *hdr = (struct ieee80211_hdr *)tx->skb->data; 
     1074        struct ieee80211_local *local = tx->local; 
     1075  
     1076-       if (unlikely(!sta || 
     1077-                    ieee80211_is_probe_resp(hdr->frame_control) || 
     1078-                    ieee80211_is_auth(hdr->frame_control) || 
     1079-                    ieee80211_is_assoc_resp(hdr->frame_control) || 
     1080-                    ieee80211_is_reassoc_resp(hdr->frame_control))) 
     1081+       if (unlikely(!sta)) 
     1082                return TX_CONTINUE; 
     1083  
     1084        if (unlikely((test_sta_flag(sta, WLAN_STA_PS_STA) || 
     1085                      test_sta_flag(sta, WLAN_STA_PS_DRIVER)) && 
     1086-                    !(info->flags & IEEE80211_TX_CTL_POLL_RESPONSE))) { 
     1087+                    !(info->flags & IEEE80211_TX_CTL_NO_PS_BUFFER))) { 
     1088                int ac = skb_get_queue_mapping(tx->skb); 
     1089  
     1090+               /* only deauth, disassoc and action are bufferable MMPDUs */ 
     1091+               if (ieee80211_is_mgmt(hdr->frame_control) && 
     1092+                   !ieee80211_is_deauth(hdr->frame_control) && 
     1093+                   !ieee80211_is_disassoc(hdr->frame_control) && 
     1094+                   !ieee80211_is_action(hdr->frame_control)) { 
     1095+                       info->flags |= IEEE80211_TX_CTL_NO_PS_BUFFER; 
     1096+                       return TX_CONTINUE; 
    3581097+               } 
    359 +       } 
    360  } 
    361   
    362  /* Support for Japan ch.14 (2484) spread */ 
    363 --- a/drivers/net/wireless/ath/ath9k/hw.h 
    364 +++ b/drivers/net/wireless/ath/ath9k/hw.h 
    365 @@ -940,7 +940,6 @@ struct ath_hw { 
    366         u32 *analogBank6Data; 
    367         u32 *analogBank6TPCData; 
    368         u32 *analogBank7Data; 
    369 -       u32 *addac5416_21; 
    370         u32 *bank6Temp; 
    371   
    372         u8 txpower_limit; 
     1098+ 
     1099 #ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG 
     1100                printk(KERN_DEBUG "STA %pM aid %d: PS buffer for AC %d\n", 
     1101                       sta->sta.addr, sta->sta.aid, ac); 
  • trunk/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch

    r30346 r30742  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1454,15 +1454,6 @@ static int ath9k_add_interface(struct ie 
     3@@ -1450,15 +1450,6 @@ static int ath9k_add_interface(struct ie 
    44                } 
    55        } 
     
    1717  
    1818        sc->nvifs++; 
    19 @@ -1487,15 +1478,6 @@ static int ath9k_change_interface(struct 
     19@@ -1483,15 +1474,6 @@ static int ath9k_change_interface(struct 
    2020        mutex_lock(&sc->mutex); 
    2121        ath9k_ps_wakeup(sc); 
  • trunk/package/mac80211/patches/513-ath9k_channelbw_debugfs.patch

    r30346 r30742  
    8282--- a/drivers/net/wireless/ath/ath9k/main.c 
    8383+++ b/drivers/net/wireless/ath/ath9k/main.c 
    84 @@ -1559,7 +1559,7 @@ static void ath9k_disable_ps(struct ath_ 
     84@@ -1555,7 +1555,7 @@ static void ath9k_disable_ps(struct ath_ 
    8585  
    8686 } 
     
    9191        struct ath_softc *sc = hw->priv; 
    9292        struct ath_hw *ah = sc->sc_ah; 
    93 @@ -1609,9 +1609,11 @@ static int ath9k_config(struct ieee80211 
     93@@ -1599,9 +1599,11 @@ static int ath9k_config(struct ieee80211 
    9494  
    9595        if (changed & IEEE80211_CONF_CHANGE_CHANNEL) { 
     
    103103                if (ah->curchan) 
    104104                        old_pos = ah->curchan - &ah->channels[0]; 
    105 @@ -1659,7 +1661,23 @@ static int ath9k_config(struct ieee80211 
     105@@ -1649,7 +1651,23 @@ static int ath9k_config(struct ieee80211 
    106106                        memset(&sc->survey[pos], 0, sizeof(struct survey_info)); 
    107107                } 
  • trunk/package/mac80211/patches/521-mac80211_reduce_txqueuelen.patch

    r30346 r30742  
    11--- a/net/mac80211/iface.c 
    22+++ b/net/mac80211/iface.c 
    3 @@ -686,6 +686,7 @@ static const struct net_device_ops ieee8 
     3@@ -688,6 +688,7 @@ static const struct net_device_ops ieee8 
    44 static void ieee80211_if_setup(struct net_device *dev) 
    55 { 
  • trunk/package/mac80211/patches/530-mac80211_cur_txpower.patch

    r30346 r30742  
    1212--- a/net/mac80211/cfg.c 
    1313+++ b/net/mac80211/cfg.c 
    14 @@ -1739,7 +1739,7 @@ static int ieee80211_get_tx_power(struct 
     14@@ -1711,7 +1711,7 @@ static int ieee80211_get_tx_power(struct 
    1515 { 
    1616        struct ieee80211_local *local = wiphy_priv(wiphy); 
  • trunk/package/mac80211/patches/531-ath9k_cur_txpower.patch

    r30346 r30742  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1683,6 +1683,8 @@ int ath9k_config(struct ieee80211_hw *hw 
     3@@ -1673,6 +1673,8 @@ int ath9k_config(struct ieee80211_hw *hw 
    44                        return -EINVAL; 
    55                } 
     
    1010                 * The most recent snapshot of channel->noisefloor for the old 
    1111                 * channel is only available after the hardware reset. Copy it to 
    12 @@ -1697,6 +1699,7 @@ int ath9k_config(struct ieee80211_hw *hw 
     12@@ -1687,6 +1689,7 @@ int ath9k_config(struct ieee80211_hw *hw 
    1313                sc->config.txpowlimit = 2 * conf->power_level; 
    1414                ath9k_cmn_update_txpow(ah, sc->curtxpow, 
  • trunk/package/mac80211/patches/551-ath9k_per_chain_signal_strength.patch

    r30346 r30742  
    7979--- a/include/net/cfg80211.h 
    8080+++ b/include/net/cfg80211.h 
    81 @@ -508,6 +508,8 @@ struct station_parameters { 
     81@@ -518,6 +518,8 @@ struct station_parameters { 
    8282  * @STATION_INFO_ASSOC_REQ_IES: @assoc_req_ies filled 
    8383  * @STATION_INFO_STA_FLAGS: @sta_flags filled 
     
    8888 enum station_info_flags { 
    8989        STATION_INFO_INACTIVE_TIME      = 1<<0, 
    90 @@ -529,7 +531,9 @@ enum station_info_flags { 
     90@@ -539,7 +541,9 @@ enum station_info_flags { 
    9191        STATION_INFO_CONNECTED_TIME     = 1<<16, 
    9292        STATION_INFO_ASSOC_REQ_IES      = 1<<17, 
     
    9999  
    100100 /** 
    101 @@ -609,6 +613,9 @@ struct sta_bss_parameters { 
     101@@ -619,6 +623,9 @@ struct sta_bss_parameters { 
    102102  * @plink_state: mesh peer link state 
    103103  * @signal: signal strength of last received packet in dBm 
     
    109109  * @rxrate: current unicast bitrate to this station 
    110110  * @rx_packets: packets received from this station 
    111 @@ -640,6 +647,11 @@ struct station_info { 
     111@@ -650,6 +657,11 @@ struct station_info { 
    112112        u8 plink_state; 
    113113        s8 signal; 
     
    272272--- a/include/linux/nl80211.h 
    273273+++ b/include/linux/nl80211.h 
    274 @@ -1657,6 +1657,8 @@ enum nl80211_sta_bss_param { 
     274@@ -1661,6 +1661,8 @@ enum nl80211_sta_bss_param { 
    275275  * @NL80211_STA_INFO_CONNECTED_TIME: time since the station is last connected 
    276276  * @NL80211_STA_INFO_STA_FLAGS: Contains a struct nl80211_sta_flag_update. 
     
    281281  * @NL80211_STA_INFO_MAX: highest possible station info attribute 
    282282  */ 
    283 @@ -1680,6 +1682,8 @@ enum nl80211_sta_info { 
     283@@ -1684,6 +1686,8 @@ enum nl80211_sta_info { 
    284284        NL80211_STA_INFO_CONNECTED_TIME, 
    285285        NL80211_STA_INFO_STA_FLAGS, 
     
    292292--- a/net/wireless/nl80211.c 
    293293+++ b/net/wireless/nl80211.c 
    294 @@ -2347,6 +2347,33 @@ nla_put_failure: 
     294@@ -2376,6 +2376,33 @@ nla_put_failure: 
    295295        return false; 
    296296 } 
     
    326326                                int flags, struct net_device *dev, 
    327327                                const u8 *mac_addr, struct station_info *sinfo) 
    328 @@ -2393,6 +2420,18 @@ static int nl80211_send_station(struct s 
     328@@ -2422,6 +2449,18 @@ static int nl80211_send_station(struct s 
    329329        if (sinfo->filled & STATION_INFO_SIGNAL_AVG) 
    330330                NLA_PUT_U8(msg, NL80211_STA_INFO_SIGNAL_AVG, 
  • trunk/package/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch

    r30346 r30742  
    110110        /* 
    111111         * Device initialization/deinitialization handlers. 
    112 @@ -705,6 +706,7 @@ enum rt2x00_capability_flags { 
     112@@ -706,6 +707,7 @@ enum rt2x00_capability_flags { 
    113113        REQUIRE_SW_SEQNO, 
    114114        REQUIRE_HT_TX_DESC, 
     
    118118        /* 
    119119         * Capabilities 
    120 @@ -961,6 +963,11 @@ struct rt2x00_dev { 
     120@@ -960,6 +962,11 @@ struct rt2x00_dev { 
    121121        const struct firmware *fw; 
    122122  
     
    240240--- a/drivers/net/wireless/rt2x00/rt2x00dev.c 
    241241+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c 
    242 @@ -1145,6 +1145,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de 
     242@@ -1157,6 +1157,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de 
    243243                    BIT(NL80211_IFTYPE_MESH_POINT) | 
    244244                    BIT(NL80211_IFTYPE_WDS); 
     
    251251         * Initialize work. 
    252252         */ 
    253 @@ -1261,6 +1265,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ 
    254          * Free queue structures. 
     253@@ -1280,6 +1284,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ 
    255254         */ 
    256         rt2x00queue_free(rt2x00dev); 
     255        if (rt2x00dev->drv_data) 
     256                kfree(rt2x00dev->drv_data); 
    257257+ 
    258258+       /* 
  • trunk/package/mac80211/patches/604-rt2x00-add-CONFIG_RT2X00_LIB_EEPROM-option.patch

    r30346 r30742  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -611,6 +611,7 @@ CONFIG_RT2X00=y 
     3@@ -618,6 +618,7 @@ CONFIG_RT2X00=y 
    44 CONFIG_RT2X00_LIB=m 
    55 CONFIG_RT2800_LIB=m 
  • trunk/package/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch

    r30741 r30742  
    3838--- a/drivers/net/wireless/rt2x00/rt2x00.h 
    3939+++ b/drivers/net/wireless/rt2x00/rt2x00.h 
    40 @@ -420,6 +420,7 @@ struct hw_mode_spec { 
     40@@ -419,6 +419,7 @@ struct hw_mode_spec { 
    4141        unsigned int supported_bands; 
    4242 #define SUPPORT_BAND_2GHZ      0x00000001 
  • trunk/package/mac80211/patches/820-b43-add-antenna-control.patch

    r30346 r30742  
    1010        ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL); 
    1111        /* We can't send beacons with short preamble. Would get PHY errors. */ 
    12 @@ -3031,8 +3031,8 @@ static int b43_chip_init(struct b43_wlde 
     12@@ -3033,8 +3033,8 @@ static int b43_chip_init(struct b43_wlde 
    1313  
    1414        /* Select the antennae */ 
     
    2121        if (phy->type == B43_PHYTYPE_B) { 
    2222                value16 = b43_read16(dev, 0x005E); 
    23 @@ -3775,7 +3775,6 @@ static int b43_op_config(struct ieee8021 
     23@@ -3777,7 +3777,6 @@ static int b43_op_config(struct ieee8021 
    2424        struct b43_wldev *dev; 
    2525        struct b43_phy *phy; 
     
    2929        bool reload_bss = false; 
    3030  
    31 @@ -3829,11 +3828,9 @@ static int b43_op_config(struct ieee8021 
     31@@ -3831,11 +3830,9 @@ static int b43_op_config(struct ieee8021 
    3232        } 
    3333  
     
    4343        if (wl->radio_enabled != phy->radio_on) { 
    4444                if (wl->radio_enabled) { 
    45 @@ -4905,6 +4902,47 @@ static int b43_op_get_survey(struct ieee 
     45@@ -4907,6 +4904,47 @@ static int b43_op_get_survey(struct ieee 
    4646        return 0; 
    4747 } 
     
    9191        .tx                     = b43_op_tx, 
    9292        .conf_tx                = b43_op_conf_tx, 
    93 @@ -4926,6 +4964,8 @@ static const struct ieee80211_ops b43_hw 
     93@@ -4928,6 +4966,8 @@ static const struct ieee80211_ops b43_hw 
    9494        .sw_scan_complete       = b43_op_sw_scan_complete_notifier, 
    9595        .get_survey             = b43_op_get_survey, 
     
    100100  
    101101 /* Hard-reset the chip. Do not call this directly. 
    102 @@ -5172,6 +5212,8 @@ static int b43_one_core_attach(struct b4 
     102@@ -5174,6 +5214,8 @@ static int b43_one_core_attach(struct b4 
    103103        if (!wldev) 
    104104                goto out; 
     
    109109        wldev->dev = dev; 
    110110        wldev->wl = wl; 
    111 @@ -5260,6 +5302,9 @@ static struct b43_wl *b43_wireless_init( 
     111@@ -5262,6 +5304,9 @@ static struct b43_wl *b43_wireless_init( 
    112112                BIT(NL80211_IFTYPE_WDS) | 
    113113                BIT(NL80211_IFTYPE_ADHOC); 
Note: See TracChangeset for help on using the changeset viewer.