mac80211: upgrade to wireless-testing 2010-09-14, replace the external carl9170 with...
authorFelix Fietkau <nbd@openwrt.org>
Tue, 14 Sep 2010 22:53:54 +0000 (22:53 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Tue, 14 Sep 2010 22:53:54 +0000 (22:53 +0000)
SVN-Revision: 23061

37 files changed:
package/carl9170/Makefile [deleted file]
package/carl9170/patches/100-request_firmware_compat.patch [deleted file]
package/carl9170/patches/110-ht_default.patch [deleted file]
package/carl9170/patches/120-2.6.35-compat.patch [deleted file]
package/mac80211/Makefile
package/mac80211/patches/000-compile_fix.patch [deleted file]
package/mac80211/patches/001-disable_b44.patch
package/mac80211/patches/002-disable_rfkill.patch
package/mac80211/patches/003-disable_bt.patch
package/mac80211/patches/005-disable_ssb_build.patch
package/mac80211/patches/007-remove_misc_drivers.patch
package/mac80211/patches/008-led_default.patch
package/mac80211/patches/009-remove_mac80211_module_dependence.patch
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-carl9170_addr_backport.patch [new file with mode: 0644]
package/mac80211/patches/018-list_for_each_continue_backport.patch [new file with mode: 0644]
package/mac80211/patches/020-wext-fix.patch [deleted file]
package/mac80211/patches/130-printk_debug_revert.patch
package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch
package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch
package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch
package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch
package/mac80211/patches/500-ath9k_use_minstrel.patch
package/mac80211/patches/510-ath9k_baw_fix.patch [new file with mode: 0644]
package/mac80211/patches/510-ath9k_handle_keymiss.patch [deleted file]
package/mac80211/patches/520-ath9k_aggr_start_fix.patch [new file with mode: 0644]
package/mac80211/patches/520-ath9k_baw_fix.patch [deleted file]
package/mac80211/patches/530-ath9k_aggr_start_fix.patch [deleted file]
package/mac80211/patches/530-ath9k_eeprom_debugfs.patch [new file with mode: 0644]
package/mac80211/patches/540-ath9k_eeprom_debugfs.patch [deleted file]
package/mac80211/patches/550-ath9k_bssid_mask_fix.patch [deleted file]
package/mac80211/patches/810-b43_no_pio.patch [new file with mode: 0644]

diff --git a/package/carl9170/Makefile b/package/carl9170/Makefile
deleted file mode 100644 (file)
index 534f179..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-#
-# Copyright (C) 2010 OpenWrt.org
-#
-# This is free software, licensed under the GNU General Public License v2.
-# See /LICENSE for more information.
-#
-
-include $(TOPDIR)/rules.mk
-include $(INCLUDE_DIR)/kernel.mk
-
-PKG_NAME:=carl9170
-PKG_VERSION:=1.0.5.3
-PKG_RELEASE:=1
-
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
-PKG_SOURCE_URL:=@KERNEL/linux/kernel/people/chr/carl9170/$(PKG_VERSION) \
-       @KERNEL/linux/kernel/people/chr/carl9170/old/$(PKG_VERSION)
-PKG_MD5SUM:=91d714d1e5c5c62da1191ac5afd8bcb0
-
-PKG_CONFIG_DEPENDS:= \
-       CONFIG_PACKAGE_CARL9170_DEBUGFS \
-
-include $(INCLUDE_DIR)/package.mk
-
-DRV_PATH:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/carl9170
-
-define KernelPackage/carl9170
-  SUBMENU:=Wireless Drivers
-  TITLE:=Driver for Atheros AR9170 USB sticks
-  DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core
-  URL:=http://www.kernel.org/pub/linux/kernel/people/chr/carl9170
-  FILES:=$(DRV_PATH)/carl9170usb.ko
-  AUTOLOAD:=$(call AutoLoad,60,carl9170usb)
-  MENU:=1
-endef
-
-define KernelPackage/carl9170/config
-       menu "Configuration"
-               depends PACKAGE_kmod-carl9170
-
-       config PACKAGE_CARL9170_DEBUGFS
-               bool "Enable Debugging (DebugFS) Support"
-               depends PACKAGE_MAC80211_DEBUGFS
-               help
-                 Say Y if you need access to carl9170usb's statistics for QoS queue 
-                 status, rate control, etc...
-
-       endmenu
-endef
-
-define KernelPackage/carl9170/description
- This package contains a driver for Atheros AR9170 USB sticks using the free firmware
-endef
-
-define Build/Prepare
-       rm -rf $(PKG_BUILD_DIR)
-       mkdir -p $(PKG_BUILD_DIR)
-       $(HOST_TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(PKG_SOURCE)
-       $(HOST_TAR) -C $(PKG_BUILD_DIR) -xf $(PKG_BUILD_DIR)/$(PKG_VERSION)/driver/carl9170-driver-$(PKG_VERSION).tar
-       ln -s $(STAGING_DIR)/usr/include/mac80211/ath/*.h $(PKG_BUILD_DIR)/drivers/net/wireless/ath/
-       $(Build/Patch)
-endef
-
-BUILDFLAGS = \
-       CONFIG_CARL9170_USB=m \
-       CONFIG_CARL9170_LEDS=$(if $(CONFIG_LEDS_TRIGGERS),y) \
-       CONFIG_CARL9170_DEBUGFS=$(if $(CONFIG_PACKAGE_CARL9170_DEBUGFS),y) \
-       CONFIG_MAC80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
-
-EXTRA_CFLAGS = \
-       $(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD) \
-       $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_CARL9170_LEDS) \
-       $(if $(CONFIG_PACKAGE_CARL9170_DEBUGFS),-DCONFIG_CARL9170_DEBUGFS) \
-       $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS) \
-
-define Build/Compile
-       $(MAKE) -C $(LINUX_DIR) \
-               SUBDIRS="$(DRV_PATH)" \
-               ARCH="$(LINUX_KARCH)" \
-               CROSS_COMPILE="$(KERNEL_CROSS)" \
-               CC="$(TARGET_CC) -I$(STAGING_DIR)/usr/include/mac80211 $(EXTRA_CFLAGS)" \
-               $(BUILDFLAGS)
-endef
-
-define KernelPackage/carl9170/install
-       $(INSTALL_DIR) $(1)/lib/firmware
-       $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_VERSION)/firmware_build/carl9170-1.fw $(1)/lib/firmware/
-endef
-
-$(eval $(call KernelPackage,carl9170))
diff --git a/package/carl9170/patches/100-request_firmware_compat.patch b/package/carl9170/patches/100-request_firmware_compat.patch
deleted file mode 100644 (file)
index cc29239..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
---- a/drivers/net/wireless/ath/carl9170/usb.c
-+++ b/drivers/net/wireless/ath/carl9170/usb.c
-@@ -1000,11 +1000,28 @@ err_failed:
-       ar9170_usb_firmware_failed(aru);
- }
-+
-+
- static int ar9170_usb_request_firmware(struct ar9170_usb *aru)
- {
-+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33))
-+      const struct firmware *fw;
-+      int ret;
-+
-+      ret = request_firmware(&fw,
-+              ar9170_fws[aru->fw_load].files[aru->fw_files].name,
-+              &aru->udev->dev);
-+
-+      if (ret < 0)
-+              return ret;
-+
-+      ar9170_usb_firmware_step2(fw, aru);
-+      return 0;
-+#else
-       return request_firmware_nowait(THIS_MODULE, 1,
-               ar9170_fws[aru->fw_load].files[aru->fw_files].name,
-               &aru->udev->dev, GFP_KERNEL, aru, ar9170_usb_firmware_step2);
-+#endif
- }
- static void ar9170_usb_disconnect(struct usb_interface *intf)
diff --git a/package/carl9170/patches/110-ht_default.patch b/package/carl9170/patches/110-ht_default.patch
deleted file mode 100644 (file)
index 5e1c4bc..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/drivers/net/wireless/ath/carl9170/main.c
-+++ b/drivers/net/wireless/ath/carl9170/main.c
-@@ -51,7 +51,7 @@ static int modparam_nohwcrypt;
- module_param_named(nohwcrypt, modparam_nohwcrypt, bool, S_IRUGO);
- MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
--int modparam_ht;
-+int modparam_ht = 1;
- module_param_named(ht, modparam_ht, bool, S_IRUGO);
- MODULE_PARM_DESC(ht, "enable MPDU aggregation.");
diff --git a/package/carl9170/patches/120-2.6.35-compat.patch b/package/carl9170/patches/120-2.6.35-compat.patch
deleted file mode 100644 (file)
index e413edf..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
---- a/drivers/net/wireless/ath/carl9170/main.c
-+++ b/drivers/net/wireless/ath/carl9170/main.c
-@@ -591,21 +591,36 @@ out:
-       return err;
- }
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+static u64 ar9170_op_prepare_multicast(struct ieee80211_hw *hw,
-+                                     struct netdev_hw_addr_list *mclist)
-+#else
- static u64 ar9170_op_prepare_multicast(struct ieee80211_hw *hw, int mc_count,
-                                      struct dev_addr_list *mclist)
-+#endif
- {
-       u64 mchash;
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+      struct netdev_hw_addr *ha;
-+#else
-       int i;
-+#endif
-       /* always get broadcast frames */
-       mchash = 1ULL << (0xff >> 2);
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+      netdev_hw_addr_list_for_each(ha, mclist) {
-+              mchash |= 1ULL << (ha->addr[5] >> 2);
-+      }
-+#else
-       for (i = 0; i < mc_count; i++) {
-               if (WARN_ON(!mclist))
-                       break;
-               mchash |= 1ULL << (mclist->dmi_addr[5] >> 2);
-               mclist = mclist->next;
-       }
-+#endif
-       return mchash;
- }
---- a/drivers/net/wireless/ath/carl9170/usb.c
-+++ b/drivers/net/wireless/ath/carl9170/usb.c
-@@ -48,6 +48,11 @@
- #include "fwcmd.h"
- #include "usb.h"
-+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
-+#define usb_buffer_alloc(dev, size, mem_flags, dma)   usb_alloc_coherent(dev, size, mem_flags, dma)
-+#define usb_buffer_free(dev, size, addr, dma) usb_free_coherent(dev, size, addr, dma)
-+#endif
-+
- MODULE_AUTHOR("Johannes Berg <johannes@sipsolutions.net>");
- MODULE_AUTHOR("Christian Lamparter <chunkeey@googlemail.com>");
- MODULE_LICENSE("GPL");
index f3b441c..78220af 100644 (file)
@@ -10,12 +10,12 @@ include $(INCLUDE_DIR)/kernel.mk
 
 PKG_NAME:=mac80211
 
-PKG_VERSION:=2010-08-31
+PKG_VERSION:=2010-09-14
 PKG_RELEASE:=1
 PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
 #      http://www.orbit-lab.org/kernel/compat-wireless-2.6/2010/11 \
 #      http://wireless.kernel.org/download/compat-wireless-2.6
-PKG_MD5SUM:=5d720b6d8de97ae61a4c3e4ee10a6de1
+PKG_MD5SUM:=88511287e013ff0f2843b3679f52f335
 
 PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
 PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
@@ -28,6 +28,8 @@ PKG_CONFIG_DEPENDS:= \
        CONFIG_PACKAGE_ATH_DEBUG \
        CONFIG_ATH_USER_REGD \
 
+CARL9170_FW_VERSION:=1.8.8.2
+
 include $(INCLUDE_DIR)/package.mk
 
 WMENU:=Wireless Drivers
@@ -94,6 +96,7 @@ endef
 P54PCIFW:=2.13.12.0.arm
 P54USBFW:=2.13.24.0.lm87.arm
 P54SPIFW:=2.13.0.0.a.13.14.arm
+CARL9170_FW:=carl9170-1.fw
 
 define Download/p54usb
   FILE:=$(P54USBFW)
@@ -116,6 +119,13 @@ define Download/p54spi
 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
+endef
+$(eval $(call Download,carl9170))
+
 define KernelPackage/p54/Default
   $(call KernelPackage/mac80211/Default)
   TITLE:=Prism54 Drivers
@@ -447,6 +457,20 @@ define KernelPackage/ath9k/config
        endmenu
 endef
 
+define KernelPackage/carl9170
+  $(call KernelPackage/mac80211/Default)
+  TITLE:=Driver for Atheros AR9170 USB sticks
+  DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core
+  FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/carl9170/carl9170.ko
+  AUTOLOAD:=$(call AutoLoad,60,carl9170)
+endef
+
+define KernelPackage/carl9170/install
+       $(INSTALL_DIR) $(1)/lib/firmware
+       $(INSTALL_DATA) $(DL_DIR)/$(CARL9170_FW) $(1)/lib/firmware/
+endef
+
+
 USB8388FW_NAME:=usb8388
 USB8388FW_VERSION:=5.110.22.p23
 
@@ -496,19 +520,6 @@ define KernelPackage/libertas-sd
   AUTOLOAD:=$(call AutoLoad,27,libertas libertas_sdio)
 endef
 
-define KernelPackage/ar9170
-  $(call KernelPackage/mac80211/Default)
-  TITLE:=Atheros AR9170 802.11n USB support
-  URL:=http://wireless.kernel.org/en/users/Drivers/ar9170
-  DEPENDS+= @USB_SUPPORT @!LINUX_2_6_25 +kmod-ath +kmod-usb-core
-  FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ar9170/ar9170usb.ko
-  AUTOLOAD:=$(call AutoLoad,27,ar9170usb)
-endef
-
-define KernelPackage/ar9170/description
- This is a driver for the Atheros "otus" 802.11n USB devices.
-endef
-
 define KernelPackage/mac80211-hwsim
   $(call KernelPackage/mac80211/Default)
   TITLE:=mac80211 HW simulation device
@@ -821,7 +832,7 @@ BUILDFLAGS:= \
        $(if $(CONFIG_PCI),-DCONFIG_B43_PCI_AUTOSELECT -DCONFIG_B43_PCICORE_AUTOSELECT) \
        $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_B43_LEDS -DCONFIG_B43LEGACY_LEDS -DCONFIG_AR9170_LEDS) \
        -DCONFIG_B43_HWRNG -DCONFIG_B43LEGACY_HWRNG \
-       $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS -DCONFIG_ATH9K_DEBUGFS) \
+       $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS -DCONFIG_ATH9K_DEBUGFS -DCONFIG_CARL9170_DEBUGFS) \
        $(if $(CONFIG_PACKAGE_ATH_DEBUG),-DCONFIG_ATH_DEBUG -DCONFIG_ATH9K_PKTLOG) \
        -D__CONFIG_MAC80211_RC_DEFAULT=minstrel \
        -DCONFIG_MAC80211_RC_MINSTREL_HT \
@@ -866,6 +877,8 @@ MAKE_OPTS:= \
        CONFIG_ATH9K_HW=$(if $(CONFIG_PACKAGE_kmod-ath9k),m) \
        CONFIG_ATH9K_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath9k),m) \
        CONFIG_ATH9K_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
+       CONFIG_CARL9170=$(if $(CONFIG_PACKAGE_kmod-carl9170),m) \
+       CONFIG_CARL9170_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
        CONFIG_ZD1211RW=$(if $(CONFIG_PACKAGE_kmod-zd1211rw),m) \
        CONFIG_P54_COMMON=$(if $(CONFIG_PACKAGE_kmod-p54-common),m) \
        CONFIG_P54_PCI=$(if $(CONFIG_PACKAGE_kmod-p54-pci),m) \
@@ -911,6 +924,7 @@ MAKE_OPTS:= \
        CONFIG_LIB80211_CRYPT_CCMP= \
        CONFIG_LIB80211_CRYPT_TKIP= \
        CONFIG_IWLWIFI= \
+       CONFIG_COMPAT_IWLWIFI= \
        CONFIG_IWLAGN= \
        CONFIG_MWL8K=$(if $(CONFIG_PACKAGE_kmod-mwl8k),m) \
        CONFIG_ATMEL= \
@@ -1121,7 +1135,7 @@ $(eval $(call KernelPackage,zd1211rw))
 $(eval $(call KernelPackage,mac80211-hwsim))
 $(eval $(call KernelPackage,ath9k))
 $(eval $(call KernelPackage,ath))
-$(eval $(call KernelPackage,ar9170))
+$(eval $(call KernelPackage,carl9170))
 $(eval $(call KernelPackage,b43))
 $(eval $(call KernelPackage,b43legacy))
 $(eval $(call KernelPackage,net-libipw))
diff --git a/package/mac80211/patches/000-compile_fix.patch b/package/mac80211/patches/000-compile_fix.patch
deleted file mode 100644 (file)
index 97ad8d9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
---- a/config.mk
-+++ b/config.mk
-@@ -502,7 +502,7 @@ CONFIG_ATH6KL_ENABLE_TARGET_DEBUG_PRINTS
- # CONFIG_ATH6KL_SKIP_ABI_VERSION_CHECK is not set
- CONFIG_ATH6KL_VIRTUAL_SCATTER_GATHER=y
- CONFIG_ATH6K_LEGACY=m
--endif
-+endif #CONFIG_COMPAT_KERNEL_32
- endif
index ad9c1ee..301148c 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -292,8 +292,8 @@ endif
+@@ -297,8 +297,8 @@ endif #CONFIG_SSB
  
  CONFIG_P54_PCI=m
  
index 2025797..979435f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -72,7 +72,7 @@ endif # build check
+@@ -74,7 +74,7 @@ endif # build check
  endif # kernel Makefile check
  
  # These both are needed by compat-wireless || compat-bluetooth so enable them
@@ -9,7 +9,7 @@
  
  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")
-@@ -557,8 +557,8 @@ endif #CONFIG_COMPAT_KERNEL_27
+@@ -572,8 +572,8 @@ 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
index 59d2197..50b9e98 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -94,8 +94,8 @@ ifndef CONFIG_COMPAT_KERNEL_27
+@@ -96,8 +96,8 @@ ifndef CONFIG_COMPAT_KERNEL_27
  ifeq ($(CONFIG_BT),y)
  # we'll ignore compiling bluetooth
  else
index e62d48f..301aa95 100644 (file)
  else
  include $(KLIB_BUILD)/.config
  endif
-@@ -275,21 +274,6 @@ CONFIG_IPW2200_QOS=y
- #
- # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
+@@ -280,21 +279,6 @@ endif #CONFIG_WEXT_PRIV
+ endif #CONFIG_WEXT_SPY
+ endif #CONFIG_WIRELESS_EXT
  
--ifneq ($(CONFIG_SSB),)
+-ifdef CONFIG_SSB
 -# Sonics Silicon Backplane
 -CONFIG_SSB_SPROM=y
 -# CONFIG_SSB_DEBUG=y
 -CONFIG_SSB_BLOCKIO=y
 -CONFIG_SSB_PCIHOST=y
 -CONFIG_SSB_B43_PCI_BRIDGE=y
--ifneq ($(CONFIG_PCMCIA),)
+-ifdef CONFIG_PCMCIA
 -CONFIG_SSB_PCMCIAHOST=y
--endif
+-endif #CONFIG_PCMCIA
 -# CONFIG_SSB_DEBUG=y
 -CONFIG_SSB_DRIVER_PCICORE=y
--endif
+-endif #CONFIG_SSB
 -
  CONFIG_P54_PCI=m
  
  # CONFIG_B44=m
-@@ -463,7 +447,6 @@ endif # end of SPI driver list
+@@ -474,7 +458,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv
  
- ifneq ($(CONFIG_MMC),)
+ ifdef CONFIG_MMC
  
 -CONFIG_SSB_SDIOHOST=y
  CONFIG_B43_SDIO=y
  
- ifneq ($(CONFIG_CRC7),)
+ ifdef CONFIG_CRC7
index 89757b0..6f7693f 100644 (file)
@@ -1,15 +1,15 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -196,7 +196,7 @@ ifneq ($(CONFIG_WIRELESS_EXT),)
- endif
+@@ -196,7 +196,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT
+ endif #CONFIG_WIRELESS_EXT
  
  ifneq ($(CONFIG_STAGING),)
--CONFIG_COMPAT_STAGING=m
+- CONFIG_COMPAT_STAGING=m
 +# CONFIG_COMPAT_STAGING=m
  endif
  
  # mac80211 test driver
-@@ -306,13 +306,13 @@ endif
+@@ -311,13 +311,13 @@ endif #CONFIG_CRC_ITU_T
  CONFIG_MWL8K=m
  
  # Ethernet drivers go here
@@ -27,8 +27,8 @@
 +# CONFIG_ATL1C=m
  endif #CONFIG_COMPAT_KERNEL_27
  
- CONFIG_HERMES=m
-@@ -361,17 +361,17 @@ CONFIG_ZD1211RW=m
+ ifdef CONFIG_WIRELESS_EXT
+@@ -372,17 +372,17 @@ 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
  endif #CONFIG_COMPAT_KERNEL_29
  
  
-@@ -474,17 +474,17 @@ CONFIG_BT_MRVL_SDIO=m
- ifneq ($(CONFIG_COMPAT_STAGING),)
- ifdef CONFIG_COMPAT_KERNEL_32
--CONFIG_ATH6KL_CFG80211=y
--CONFIG_ATH6KL_DEBUG=y
-+# CONFIG_ATH6KL_CFG80211=y
-+# CONFIG_ATH6KL_DEBUG=y
- # CONFIG_ATH6KL_DISABLE_TARGET_DBGLOGS is not set
- # CONFIG_ATH6KL_ENABLE_COEXISTENCE is not set
- # CONFIG_ATH6KL_ENABLE_HOST_DEBUG is not set
--CONFIG_ATH6KL_ENABLE_TARGET_DEBUG_PRINTS=y
-+# CONFIG_ATH6KL_ENABLE_TARGET_DEBUG_PRINTS=y
- # CONFIG_ATH6KL_HCI_BRIDGE is not set
- # CONFIG_ATH6KL_HTC_RAW_INTERFACE is not set
- # CONFIG_ATH6KL_SKIP_ABI_VERSION_CHECK is not set
--CONFIG_ATH6KL_VIRTUAL_SCATTER_GATHER=y
--CONFIG_ATH6K_LEGACY=m
-+# CONFIG_ATH6KL_VIRTUAL_SCATTER_GATHER=y
-+# CONFIG_ATH6K_LEGACY=m
- endif #CONFIG_COMPAT_KERNEL_32
- endif
index a392e50..5f6eec0 100644 (file)
@@ -1,7 +1,7 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -115,7 +115,7 @@ CONFIG_COMPAT_MAC80211_RC_DEFAULT=minstr
CONFIG_MAC80211_RC_PID=y
+@@ -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
@@ -9,16 +9,16 @@
  
  # enable mesh networking too
  CONFIG_MAC80211_MESH=y
-@@ -218,7 +218,7 @@ CONFIG_B43_PCI_AUTOSELECT=y
- ifneq ($(CONFIG_PCMCIA),)
CONFIG_B43_PCMCIA=y
- endif
+@@ -233,7 +233,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_NPHY is not set
+ CONFIG_B43_NPHY=y
  # CONFIG_B43_FORCE_PIO=y
-@@ -227,7 +227,7 @@ CONFIG_B43_PHY_LP=y
+@@ -242,7 +242,7 @@ CONFIG_B43_NPHY=y
  CONFIG_B43LEGACY=m
  CONFIG_B43LEGACY_HWRNG=y
  CONFIG_B43LEGACY_PCI_AUTOSELECT=y
@@ -27,7 +27,7 @@
  # CONFIG_B43LEGACY_DEBUG=y
  CONFIG_B43LEGACY_DMA=y
  CONFIG_B43LEGACY_PIO=y
-@@ -499,7 +499,7 @@ endif
+@@ -529,7 +529,7 @@ endif
  
  # p54
  CONFIG_P54_COMMON=m
@@ -81,7 +81,7 @@
  void ath_deinit_leds(struct ath_softc *sc)
 --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c
 +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c
-@@ -872,6 +872,7 @@ static void ath9k_led_brightness_work(st
+@@ -871,6 +871,7 @@ static void ath9k_led_brightness_work(st
        }
  }
  
@@ -89,7 +89,7 @@
  static void ath9k_led_brightness(struct led_classdev *led_cdev,
                                 enum led_brightness brightness)
  {
-@@ -883,6 +884,7 @@ static void ath9k_led_brightness(struct 
+@@ -882,6 +883,7 @@ static void ath9k_led_brightness(struct 
                ieee80211_queue_delayed_work(priv->hw,
                                             &led->brightness_work, 0);
  }
@@ -97,7 +97,7 @@
  
  static void ath9k_led_stop_brightness(struct ath9k_htc_priv *priv)
  {
-@@ -895,6 +897,7 @@ static void ath9k_led_stop_brightness(st
+@@ -894,6 +896,7 @@ static void ath9k_led_stop_brightness(st
  static int ath9k_register_led(struct ath9k_htc_priv *priv, struct ath_led *led,
                              char *trigger)
  {
        int ret;
  
        led->priv = priv;
-@@ -912,14 +915,19 @@ static int ath9k_register_led(struct ath
+@@ -911,14 +914,19 @@ static int ath9k_register_led(struct ath
        INIT_DELAYED_WORK(&led->brightness_work, ath9k_led_brightness_work);
  
        return ret;
index d0998b1..6c421b0 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -42,21 +42,6 @@ $(error "ERROR: Your 2.6.27 kernel has C
+@@ -42,23 +42,6 @@ $(error "ERROR: Your 2.6.27 kernel has C
  endif
  endif
  
 -#
 -# skb->requeue
 -#
--ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 27 && echo yes),yes)
+-# In kernel 2.6.32 both attributes were removed.
+-#
+-ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 27 -a $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes)
 -ifeq ($(CONFIG_MAC80211),)
--$(error "ERROR: Your >=2.6.27 kernel has CONFIG_MAC80211 disabled, you should have it CONFIG_MAC80211=m if you want to use this thing.")
+-$(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.")
 -endif
 -endif
 -
index 25d14c1..33f152e 100644 (file)
@@ -9,12 +9,12 @@
  else
  include $(KLIB_BUILD)/.config
  endif
-@@ -216,7 +216,7 @@ CONFIG_B43=m
+@@ -214,7 +214,7 @@ CONFIG_B43=m
  CONFIG_B43_HWRNG=y
  CONFIG_B43_PCI_AUTOSELECT=y
- ifneq ($(CONFIG_PCMCIA),)
+ ifdef CONFIG_PCMCIA
 -CONFIG_B43_PCMCIA=y
 +# CONFIG_B43_PCMCIA=y
- endif
- CONFIG_B43_LEDS=y
+ endif #CONFIG_PCMCIA
CONFIG_B43_LEDS=y
  CONFIG_B43_PHY_LP=y
index cd39dd4..42792fb 100644 (file)
@@ -1,11 +1,11 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -432,7 +432,7 @@ endif # end of SPI driver list
+@@ -441,7 +441,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv
  
- ifneq ($(CONFIG_MMC),)
+ ifdef CONFIG_MMC
  
 -CONFIG_B43_SDIO=y
 +# CONFIG_B43_SDIO=y
  
- ifneq ($(CONFIG_CRC7),)
+ ifdef CONFIG_CRC7
  CONFIG_WL1251_SDIO=m
index 80c0fa9..2fa9354 100644 (file)
@@ -1,8 +1,8 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -220,7 +220,7 @@ ifneq ($(CONFIG_PCMCIA),)
- endif
- CONFIG_B43_LEDS=y
+@@ -218,7 +218,7 @@ ifdef CONFIG_PCMCIA
+ endif #CONFIG_PCMCIA
CONFIG_B43_LEDS=y
  CONFIG_B43_PHY_LP=y
 -CONFIG_B43_NPHY=y
 +# CONFIG_B43_NPHY is not set
index 9cc04d0..31b4a65 100644 (file)
@@ -1,6 +1,6 @@
 --- a/config.mk
 +++ b/config.mk
-@@ -268,12 +268,12 @@ CONFIG_RTL8180=m
+@@ -271,12 +271,12 @@ CONFIG_RTL8180=m
  
  CONFIG_ADM8211=m
  
@@ -8,19 +8,19 @@
 +# CONFIG_RT2X00_LIB_PCI=m
  CONFIG_RT2400PCI=m
  CONFIG_RT2500PCI=m
- ifneq ($(CONFIG_CRC_CCITT),)
+ ifdef CONFIG_CRC_CCITT
  CONFIG_RT2800PCI=m
 -CONFIG_RT2800PCI_PCI=y
 +# CONFIG_RT2800PCI_PCI=y
  # CONFIG_RT2800PCI_RT30XX=y
  # CONFIG_RT2800PCI_RT35XX=y
  # CONFIG_RT2800PCI_SOC=y
-@@ -382,7 +382,7 @@ CONFIG_RT2800USB_RT30XX=y
+@@ -391,7 +391,7 @@ CONFIG_RT2800USB_RT30XX=y
  CONFIG_RT2800USB_RT35XX=y
  CONFIG_RT2800USB_UNKNOWN=y
- endif
+ endif #CONFIG_CRC_CCITT
 -CONFIG_RT2X00_LIB_USB=m
 +# CONFIG_RT2X00_LIB_USB=m
  NEED_RT2X00=y
  # RT73USB requires firmware
- ifneq ($(CONFIG_CRC_ITU_T),)
+ ifdef CONFIG_CRC_ITU_T
index 33b19cc..02527b6 100644 (file)
@@ -8,4 +8,4 @@
 +# CONFIG_MAC80211_RC_PID=y
  CONFIG_MAC80211_RC_MINSTREL=y
  CONFIG_MAC80211_RC_MINSTREL_HT=y
- CONFIG_MAC80211_LEDS=y
CONFIG_MAC80211_LEDS=y
diff --git a/package/mac80211/patches/017-carl9170_addr_backport.patch b/package/mac80211/patches/017-carl9170_addr_backport.patch
new file mode 100644 (file)
index 0000000..0d3774b
--- /dev/null
@@ -0,0 +1,38 @@
+--- a/drivers/net/wireless/ath/carl9170/main.c
++++ b/drivers/net/wireless/ath/carl9170/main.c
+@@ -811,16 +811,34 @@ out:
+ }
+ static u64 carl9170_op_prepare_multicast(struct ieee80211_hw *hw,
+-                                       struct netdev_hw_addr_list *mc_list)
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
++                                 struct netdev_hw_addr_list *mc_list)
++#else
++                                 int mc_count, struct dev_addr_list *ha)
++#endif
+ {
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+       struct netdev_hw_addr *ha;
++#else
++      int i;
++#endif
+       u64 mchash;
+       /* always get broadcast frames */
+       mchash = 1ULL << (0xff >> 2);
++#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
+       netdev_hw_addr_list_for_each(ha, mc_list)
+               mchash |= 1ULL << (ha->addr[5] >> 2);
++#else
++      for (i = 0; i < mc_count; i++) {
++              if (!ha)
++                      break;
++
++              mchash |= 1ULL << (ha->dmi_addr[5] >> 2);
++              ha = ha->next;
++      }
++#endif
+       return mchash;
+ }
diff --git a/package/mac80211/patches/018-list_for_each_continue_backport.patch b/package/mac80211/patches/018-list_for_each_continue_backport.patch
new file mode 100644 (file)
index 0000000..08f8eed
--- /dev/null
@@ -0,0 +1,15 @@
+--- a/include/linux/compat-2.6.33.h
++++ b/include/linux/compat-2.6.33.h
+@@ -98,6 +98,12 @@ int pccard_loop_tuple(struct pcmcia_sock
+ #define kfifo_out(a, b, c) __kfifo_get(*a, b, c)
+ #define kfifo_len(a) __kfifo_len(*a)
++#define list_for_each_entry_continue_rcu(pos, head, member)           \
++      for (pos = list_entry_rcu(pos->member.next, typeof(*pos), member); \
++           prefetch(pos->member.next), &pos->member != (head);        \
++           pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
++
++
+ #endif /* (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)) */
+ #endif /* LINUX_26_33_COMPAT_H */
diff --git a/package/mac80211/patches/020-wext-fix.patch b/package/mac80211/patches/020-wext-fix.patch
deleted file mode 100644 (file)
index 9cbbb43..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
---- a/scripts/gen-compat-autoconf.sh
-+++ b/scripts/gen-compat-autoconf.sh
-@@ -191,10 +191,8 @@ if [ -f $KLIB_BUILD/Makefile ]; then
-               echo CONFIG_NETDEVICES_MULTIQUEUE >> $MULT_DEP_FILE
-               define_config_multiple_deps CONFIG_MAC80211_QOS y $ALL_DEPS
-               rm -f $MULT_DEP_FILE
--              # Kernels >= 2.6.32 can disable WEXT :D
--              if [ $SUBLEVEL -le 32 ]; then
--                      define_config_dep CONFIG_CFG80211_WEXT 1 CONFIG_WIRELESS_EXT
--              fi
-+              # Up to kernel 2.6.35 we still need the following:
-+              define_config_dep CONFIG_CFG80211_WEXT 1 CONFIG_WIRELESS_EXT
-       fi
- fi
- echo "#endif /* COMPAT_AUTOCONF_INCLUDED */"
index 5483573..a1ceb66 100644 (file)
@@ -14,7 +14,7 @@
  #define wiphy_dbg(wiphy, format, args...)                     \
 --- a/net/wireless/core.c
 +++ b/net/wireless/core.c
-@@ -929,52 +929,3 @@ static void __exit cfg80211_exit(void)
+@@ -936,52 +936,3 @@ static void __exit cfg80211_exit(void)
        destroy_workqueue(cfg80211_wq);
  }
  module_exit(cfg80211_exit);
index 166c133..330503d 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/gpio.c
 +++ b/drivers/net/wireless/ath/ath9k/gpio.c
-@@ -120,6 +120,9 @@ static void ath_unregister_led(struct at
+@@ -128,6 +128,9 @@ static void ath_unregister_led(struct at
  
  void ath_deinit_leds(struct ath_softc *sc)
  {
@@ -10,7 +10,7 @@
        ath_unregister_led(&sc->assoc_led);
        sc->sc_flags &= ~SC_OP_LED_ASSOCIATED;
        ath_unregister_led(&sc->tx_led);
-@@ -133,6 +136,9 @@ void ath_init_leds(struct ath_softc *sc)
+@@ -141,6 +144,9 @@ void ath_init_leds(struct ath_softc *sc)
        char *trigger;
        int ret;
  
index 77d1c7b..5048194 100644 (file)
@@ -10,7 +10,7 @@
  
 --- a/drivers/net/wireless/ath/ath9k/init.c
 +++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -538,6 +538,7 @@ static int ath9k_init_softc(u16 devid, s
+@@ -540,6 +540,7 @@ static int ath9k_init_softc(u16 devid, s
  {
        struct ath_hw *ah = NULL;
        struct ath_common *common;
@@ -18,7 +18,7 @@
        int ret = 0, i;
        int csz = 0;
  
-@@ -549,6 +550,10 @@ static int ath9k_init_softc(u16 devid, s
+@@ -551,6 +552,10 @@ static int ath9k_init_softc(u16 devid, s
        ah->hw_version.subsysid = subsysid;
        sc->sc_ah = ah;
  
index cf3f402..64481fc 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/hw.c
 +++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -1425,7 +1425,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
+@@ -1427,7 +1427,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
  
        if (ah->config.rx_intr_mitigation) {
                REG_RMW_FIELD(ah, AR_RIMT, AR_RIMT_LAST, 500);
index bc336fa..5659ab8 100644 (file)
@@ -8,7 +8,7 @@
  #include "ath9k.h"
  
  static char *dev_info = "ath9k";
-@@ -553,6 +554,8 @@ static int ath9k_init_softc(u16 devid, s
+@@ -555,6 +556,8 @@ static int ath9k_init_softc(u16 devid, s
        pdata = (struct ath9k_platform_data *) sc->dev->platform_data;
        if (!pdata)
                ah->ah_flags |= AH_USE_EEPROM;
@@ -17,7 +17,7 @@
  
        common = ath9k_hw_common(ah);
        common->ops = &ath9k_common_ops;
-@@ -675,6 +678,24 @@ void ath9k_set_hw_capab(struct ath_softc
+@@ -677,6 +680,24 @@ void ath9k_set_hw_capab(struct ath_softc
        SET_IEEE80211_PERM_ADDR(hw, common->macaddr);
  }
  
@@ -42,7 +42,7 @@
  int ath9k_init_device(u16 devid, struct ath_softc *sc, u16 subsysid,
                    const struct ath_bus_ops *bus_ops)
  {
-@@ -693,6 +714,9 @@ int ath9k_init_device(u16 devid, struct 
+@@ -695,6 +716,9 @@ int ath9k_init_device(u16 devid, struct 
        common = ath9k_hw_common(ah);
        ath9k_set_hw_capab(sc, hw);
  
@@ -54,7 +54,7 @@
                              ath9k_reg_notifier);
 --- a/drivers/net/wireless/ath/ath9k/ath9k.h
 +++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -589,6 +589,8 @@ struct ath_softc {
+@@ -643,6 +643,8 @@ struct ath_softc {
  
        int beacon_interval;
  
index d69fd8f..f98056f 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/gpio.c
 +++ b/drivers/net/wireless/ath/ath9k/gpio.c
-@@ -139,7 +139,9 @@ void ath_init_leds(struct ath_softc *sc)
+@@ -147,7 +147,9 @@ void ath_init_leds(struct ath_softc *sc)
        if (AR_SREV_9100(sc->sc_ah))
                return;
  
index 9cb1293..61e01c1 100644 (file)
@@ -1,6 +1,6 @@
 --- a/drivers/net/wireless/ath/ath9k/init.c
 +++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -659,7 +659,11 @@ void ath9k_set_hw_capab(struct ath_softc
+@@ -661,7 +661,11 @@ void ath9k_set_hw_capab(struct ath_softc
        hw->sta_data_size = sizeof(struct ath_node);
        hw->vif_data_size = sizeof(struct ath_vif);
  
diff --git a/package/mac80211/patches/510-ath9k_baw_fix.patch b/package/mac80211/patches/510-ath9k_baw_fix.patch
new file mode 100644 (file)
index 0000000..50e4b99
--- /dev/null
@@ -0,0 +1,36 @@
+--- a/drivers/net/wireless/ath/ath9k/ath9k.h
++++ b/drivers/net/wireless/ath/ath9k/ath9k.h
+@@ -254,7 +254,7 @@ struct ath_atx_tid {
+       struct list_head buf_q;
+       struct ath_node *an;
+       struct ath_atx_ac *ac;
+-      struct ath_buf *tx_buf[ATH_TID_MAX_BUFS];
++      unsigned long tx_buf[BITS_TO_LONGS(ATH_TID_MAX_BUFS)];
+       u16 seq_start;
+       u16 seq_next;
+       u16 baw_size;
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -168,9 +168,9 @@ static void ath_tx_update_baw(struct ath
+       index  = ATH_BA_INDEX(tid->seq_start, seqno);
+       cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
+-      tid->tx_buf[cindex] = NULL;
++      __clear_bit(cindex, tid->tx_buf);
+-      while (tid->baw_head != tid->baw_tail && !tid->tx_buf[tid->baw_head]) {
++      while (tid->baw_head != tid->baw_tail && !test_bit(tid->baw_head, tid->tx_buf)) {
+               INCR(tid->seq_start, IEEE80211_SEQ_MAX);
+               INCR(tid->baw_head, ATH_TID_MAX_BUFS);
+       }
+@@ -186,9 +186,7 @@ static void ath_tx_addto_baw(struct ath_
+       index  = ATH_BA_INDEX(tid->seq_start, bf->bf_seqno);
+       cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
+-
+-      BUG_ON(tid->tx_buf[cindex] != NULL);
+-      tid->tx_buf[cindex] = bf;
++      __set_bit(cindex, tid->tx_buf);
+       if (index >= ((tid->baw_tail - tid->baw_head) &
+               (ATH_TID_MAX_BUFS - 1))) {
diff --git a/package/mac80211/patches/510-ath9k_handle_keymiss.patch b/package/mac80211/patches/510-ath9k_handle_keymiss.patch
deleted file mode 100644 (file)
index c63ad3f..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/mac.c
-+++ b/drivers/net/wireless/ath/ath9k/mac.c
-@@ -714,6 +714,8 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
-               else if ((ads.ds_rxstatus8 & AR_MichaelErr) &&
-                        rs->rs_keyix != ATH9K_RXKEYIX_INVALID)
-                       rs->rs_status |= ATH9K_RXERR_MIC;
-+              else if (ads.ds_rxstatus8 & AR_KeyMiss)
-+                      rs->rs_status |= ATH9K_RXERR_DECRYPT;
-       }
-       return 0;
---- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
-@@ -616,7 +616,8 @@ int ath9k_hw_process_rxdesc_edma(struct 
-                       rxs->rs_status |= ATH9K_RXERR_DECRYPT;
-               } else if (rxsp->status11 & AR_MichaelErr) {
-                       rxs->rs_status |= ATH9K_RXERR_MIC;
--              }
-+              } else if (rxsp->status11 & AR_KeyMiss)
-+                      rxs->rs_status |= ATH9K_RXERR_DECRYPT;
-       }
-       return 0;
diff --git a/package/mac80211/patches/520-ath9k_aggr_start_fix.patch b/package/mac80211/patches/520-ath9k_aggr_start_fix.patch
new file mode 100644 (file)
index 0000000..1dcac53
--- /dev/null
@@ -0,0 +1,12 @@
+--- a/drivers/net/wireless/ath/ath9k/xmit.c
++++ b/drivers/net/wireless/ath/ath9k/xmit.c
+@@ -124,7 +124,8 @@ static void ath_tx_resume_tid(struct ath
+ {
+       struct ath_txq *txq = &sc->tx.txq[tid->ac->qnum];
+-      WARN_ON(!tid->paused);
++      if (!tid->paused)
++              return;
+       spin_lock_bh(&txq->axq_lock);
+       tid->paused = false;
diff --git a/package/mac80211/patches/520-ath9k_baw_fix.patch b/package/mac80211/patches/520-ath9k_baw_fix.patch
deleted file mode 100644 (file)
index 50e4b99..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -254,7 +254,7 @@ struct ath_atx_tid {
-       struct list_head buf_q;
-       struct ath_node *an;
-       struct ath_atx_ac *ac;
--      struct ath_buf *tx_buf[ATH_TID_MAX_BUFS];
-+      unsigned long tx_buf[BITS_TO_LONGS(ATH_TID_MAX_BUFS)];
-       u16 seq_start;
-       u16 seq_next;
-       u16 baw_size;
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -168,9 +168,9 @@ static void ath_tx_update_baw(struct ath
-       index  = ATH_BA_INDEX(tid->seq_start, seqno);
-       cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
--      tid->tx_buf[cindex] = NULL;
-+      __clear_bit(cindex, tid->tx_buf);
--      while (tid->baw_head != tid->baw_tail && !tid->tx_buf[tid->baw_head]) {
-+      while (tid->baw_head != tid->baw_tail && !test_bit(tid->baw_head, tid->tx_buf)) {
-               INCR(tid->seq_start, IEEE80211_SEQ_MAX);
-               INCR(tid->baw_head, ATH_TID_MAX_BUFS);
-       }
-@@ -186,9 +186,7 @@ static void ath_tx_addto_baw(struct ath_
-       index  = ATH_BA_INDEX(tid->seq_start, bf->bf_seqno);
-       cindex = (tid->baw_head + index) & (ATH_TID_MAX_BUFS - 1);
--
--      BUG_ON(tid->tx_buf[cindex] != NULL);
--      tid->tx_buf[cindex] = bf;
-+      __set_bit(cindex, tid->tx_buf);
-       if (index >= ((tid->baw_tail - tid->baw_head) &
-               (ATH_TID_MAX_BUFS - 1))) {
diff --git a/package/mac80211/patches/530-ath9k_aggr_start_fix.patch b/package/mac80211/patches/530-ath9k_aggr_start_fix.patch
deleted file mode 100644 (file)
index 1dcac53..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/xmit.c
-+++ b/drivers/net/wireless/ath/ath9k/xmit.c
-@@ -124,7 +124,8 @@ static void ath_tx_resume_tid(struct ath
- {
-       struct ath_txq *txq = &sc->tx.txq[tid->ac->qnum];
--      WARN_ON(!tid->paused);
-+      if (!tid->paused)
-+              return;
-       spin_lock_bh(&txq->axq_lock);
-       tid->paused = false;
diff --git a/package/mac80211/patches/530-ath9k_eeprom_debugfs.patch b/package/mac80211/patches/530-ath9k_eeprom_debugfs.patch
new file mode 100644 (file)
index 0000000..62a5d31
--- /dev/null
@@ -0,0 +1,67 @@
+--- a/drivers/net/wireless/ath/ath9k/debug.c
++++ b/drivers/net/wireless/ath/ath9k/debug.c
+@@ -897,6 +897,53 @@ static const struct file_operations fops
+       .owner = THIS_MODULE
+ };
++static ssize_t read_file_eeprom(struct file *file, char __user *user_buf,
++                           size_t count, loff_t *ppos)
++{
++      struct ath_softc *sc = file->private_data;
++      struct ath_hw *ah = sc->sc_ah;
++      struct ath_common *common = ath9k_hw_common(ah);
++      int bytes = 0;
++      int pos = *ppos;
++      int size = 4096;
++      u16 val;
++      int i;
++
++      if (AR_SREV_9300_20_OR_LATER(ah))
++              size = 16384;
++
++      if (*ppos < 0)
++              return -EINVAL;
++
++      if (count > size - *ppos)
++              count = size - *ppos;
++
++      for (i = *ppos / 2; count > 0; count -= bytes, *ppos += bytes, i++) {
++              void *from = &val;
++
++              if (!common->bus_ops->eeprom_read(common, i, &val))
++                      val = 0xffff;
++
++              if (*ppos % 2) {
++                      from++;
++                      bytes = 1;
++              } else if (count == 1) {
++                      bytes = 1;
++              } else {
++                      bytes = 2;
++              }
++              copy_to_user(user_buf, from, bytes);
++              user_buf += bytes;
++      }
++      return *ppos - pos;
++}
++
++static const struct file_operations fops_eeprom = {
++      .read = read_file_eeprom,
++      .open = ath9k_debugfs_open,
++      .owner = THIS_MODULE
++};
++
+ int ath9k_init_debug(struct ath_hw *ah)
+ {
+       struct ath_common *common = ath9k_hw_common(ah);
+@@ -960,6 +1007,10 @@ int ath9k_init_debug(struct ath_hw *ah)
+                       sc->debug.debugfs_phy, &ah->config.cwm_ignore_extcca))
+               goto err;
++      if (!debugfs_create_file("eeprom", S_IRUSR,
++                      sc->debug.debugfs_phy, sc, &fops_eeprom))
++              goto err;
++
+       sc->debug.regidx = 0;
+       return 0;
+ err:
diff --git a/package/mac80211/patches/540-ath9k_eeprom_debugfs.patch b/package/mac80211/patches/540-ath9k_eeprom_debugfs.patch
deleted file mode 100644 (file)
index 62a5d31..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/debug.c
-+++ b/drivers/net/wireless/ath/ath9k/debug.c
-@@ -897,6 +897,53 @@ static const struct file_operations fops
-       .owner = THIS_MODULE
- };
-+static ssize_t read_file_eeprom(struct file *file, char __user *user_buf,
-+                           size_t count, loff_t *ppos)
-+{
-+      struct ath_softc *sc = file->private_data;
-+      struct ath_hw *ah = sc->sc_ah;
-+      struct ath_common *common = ath9k_hw_common(ah);
-+      int bytes = 0;
-+      int pos = *ppos;
-+      int size = 4096;
-+      u16 val;
-+      int i;
-+
-+      if (AR_SREV_9300_20_OR_LATER(ah))
-+              size = 16384;
-+
-+      if (*ppos < 0)
-+              return -EINVAL;
-+
-+      if (count > size - *ppos)
-+              count = size - *ppos;
-+
-+      for (i = *ppos / 2; count > 0; count -= bytes, *ppos += bytes, i++) {
-+              void *from = &val;
-+
-+              if (!common->bus_ops->eeprom_read(common, i, &val))
-+                      val = 0xffff;
-+
-+              if (*ppos % 2) {
-+                      from++;
-+                      bytes = 1;
-+              } else if (count == 1) {
-+                      bytes = 1;
-+              } else {
-+                      bytes = 2;
-+              }
-+              copy_to_user(user_buf, from, bytes);
-+              user_buf += bytes;
-+      }
-+      return *ppos - pos;
-+}
-+
-+static const struct file_operations fops_eeprom = {
-+      .read = read_file_eeprom,
-+      .open = ath9k_debugfs_open,
-+      .owner = THIS_MODULE
-+};
-+
- int ath9k_init_debug(struct ath_hw *ah)
- {
-       struct ath_common *common = ath9k_hw_common(ah);
-@@ -960,6 +1007,10 @@ int ath9k_init_debug(struct ath_hw *ah)
-                       sc->debug.debugfs_phy, &ah->config.cwm_ignore_extcca))
-               goto err;
-+      if (!debugfs_create_file("eeprom", S_IRUSR,
-+                      sc->debug.debugfs_phy, sc, &fops_eeprom))
-+              goto err;
-+
-       sc->debug.regidx = 0;
-       return 0;
- err:
diff --git a/package/mac80211/patches/550-ath9k_bssid_mask_fix.patch b/package/mac80211/patches/550-ath9k_bssid_mask_fix.patch
deleted file mode 100644 (file)
index f448870..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
---- a/drivers/net/wireless/ath/ath9k/virtual.c
-+++ b/drivers/net/wireless/ath/ath9k/virtual.c
-@@ -19,45 +19,36 @@
- #include "ath9k.h"
- struct ath9k_vif_iter_data {
--      int count;
--      u8 *addr;
-+      const u8 *hw_macaddr;
-+      u8 mask[ETH_ALEN];
- };
- static void ath9k_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif)
- {
-       struct ath9k_vif_iter_data *iter_data = data;
--      u8 *nbuf;
--
--      nbuf = krealloc(iter_data->addr, (iter_data->count + 1) * ETH_ALEN,
--                      GFP_ATOMIC);
--      if (nbuf == NULL)
--              return;
-+      int i;
--      memcpy(nbuf + iter_data->count * ETH_ALEN, mac, ETH_ALEN);
--      iter_data->addr = nbuf;
--      iter_data->count++;
-+      for (i = 0; i < ETH_ALEN; i++)
-+              iter_data->mask[i] &= ~(iter_data->hw_macaddr[i] ^ mac[i]);
- }
--void ath9k_set_bssid_mask(struct ieee80211_hw *hw)
-+void ath9k_set_bssid_mask(struct ieee80211_hw *hw, struct ieee80211_vif *vif)
- {
-       struct ath_wiphy *aphy = hw->priv;
-       struct ath_softc *sc = aphy->sc;
-       struct ath_common *common = ath9k_hw_common(sc->sc_ah);
-       struct ath9k_vif_iter_data iter_data;
--      int i, j;
--      u8 mask[ETH_ALEN];
-+      int i;
-       /*
--       * Add primary MAC address even if it is not in active use since it
--       * will be configured to the hardware as the starting point and the
--       * BSSID mask will need to be changed if another address is active.
-+       * Use the hardware MAC address as reference, the hardware uses it
-+       * together with the BSSID mask when matching addresses.
-        */
--      iter_data.addr = kmalloc(ETH_ALEN, GFP_ATOMIC);
--      if (iter_data.addr) {
--              memcpy(iter_data.addr, common->macaddr, ETH_ALEN);
--              iter_data.count = 1;
--      } else
--              iter_data.count = 0;
-+      iter_data.hw_macaddr = common->macaddr;
-+      memset(&iter_data.mask, 0xff, ETH_ALEN);
-+
-+      if (vif)
-+              ath9k_vif_iter(&iter_data, vif->addr, vif);
-       /* Get list of all active MAC addresses */
-       spin_lock_bh(&sc->wiphy_lock);
-@@ -71,31 +62,7 @@ void ath9k_set_bssid_mask(struct ieee802
-       }
-       spin_unlock_bh(&sc->wiphy_lock);
--      /* Generate an address mask to cover all active addresses */
--      memset(mask, 0, ETH_ALEN);
--      for (i = 0; i < iter_data.count; i++) {
--              u8 *a1 = iter_data.addr + i * ETH_ALEN;
--              for (j = i + 1; j < iter_data.count; j++) {
--                      u8 *a2 = iter_data.addr + j * ETH_ALEN;
--                      mask[0] |= a1[0] ^ a2[0];
--                      mask[1] |= a1[1] ^ a2[1];
--                      mask[2] |= a1[2] ^ a2[2];
--                      mask[3] |= a1[3] ^ a2[3];
--                      mask[4] |= a1[4] ^ a2[4];
--                      mask[5] |= a1[5] ^ a2[5];
--              }
--      }
--
--      kfree(iter_data.addr);
--
--      /* Invert the mask and configure hardware */
--      common->bssidmask[0] = ~mask[0];
--      common->bssidmask[1] = ~mask[1];
--      common->bssidmask[2] = ~mask[2];
--      common->bssidmask[3] = ~mask[3];
--      common->bssidmask[4] = ~mask[4];
--      common->bssidmask[5] = ~mask[5];
--
-+      memcpy(common->bssidmask, iter_data.mask, ETH_ALEN);
-       ath_hw_setbssidmask(common);
- }
---- a/drivers/net/wireless/ath/ath9k/ath9k.h
-+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
-@@ -666,7 +666,7 @@ static inline void ath_ahb_exit(void) {}
- void ath9k_ps_wakeup(struct ath_softc *sc);
- void ath9k_ps_restore(struct ath_softc *sc);
--void ath9k_set_bssid_mask(struct ieee80211_hw *hw);
-+void ath9k_set_bssid_mask(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
- int ath9k_wiphy_add(struct ath_softc *sc);
- int ath9k_wiphy_del(struct ath_wiphy *aphy);
- void ath9k_tx_status(struct ieee80211_hw *hw, struct sk_buff *skb);
---- a/drivers/net/wireless/ath/ath9k/main.c
-+++ b/drivers/net/wireless/ath/ath9k/main.c
-@@ -1416,7 +1416,7 @@ static int ath9k_add_interface(struct ie
-       sc->nvifs++;
-       if (ah->caps.hw_caps & ATH9K_HW_CAP_BSSIDMASK)
--              ath9k_set_bssid_mask(hw);
-+              ath9k_set_bssid_mask(hw, vif);
-       if (sc->nvifs > 1)
-               goto out; /* skip global settings for secondary vif */
diff --git a/package/mac80211/patches/810-b43_no_pio.patch b/package/mac80211/patches/810-b43_no_pio.patch
new file mode 100644 (file)
index 0000000..2aa426e
--- /dev/null
@@ -0,0 +1,70 @@
+--- a/drivers/net/wireless/b43/Makefile
++++ b/drivers/net/wireless/b43/Makefile
+@@ -12,7 +12,7 @@ b43-y                                += xmit.o
+ b43-y                         += lo.o
+ b43-y                         += wa.o
+ b43-y                         += dma.o
+-b43-y                         += pio.o
++# b43-y                               += pio.o
+ b43-y                         += rfkill.o
+ b43-$(CONFIG_B43_LEDS)                += leds.o
+ b43-$(CONFIG_B43_PCMCIA)      += pcmcia.o
+--- a/drivers/net/wireless/b43/main.c
++++ b/drivers/net/wireless/b43/main.c
+@@ -1810,9 +1810,11 @@ static void b43_do_interrupt_thread(stru
+                              dma_reason[4], dma_reason[5]);
+                       b43err(dev->wl, "This device does not support DMA "
+                              "on your system. It will now be switched to PIO.\n");
++#if 0
+                       /* Fall back to PIO transfers if we get fatal DMA errors! */
+                       dev->use_pio = 1;
+                       b43_controller_restart(dev, "DMA error");
++#endif
+                       return;
+               }
+               if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
+--- a/drivers/net/wireless/b43/pio.h
++++ b/drivers/net/wireless/b43/pio.h
+@@ -151,15 +151,34 @@ static inline void b43_piorx_write32(str
+ }
+-int b43_pio_init(struct b43_wldev *dev);
+-void b43_pio_free(struct b43_wldev *dev);
++static inline int b43_pio_init(struct b43_wldev *dev)
++{
++      return 0;
++}
++
++static inline void b43_pio_free(struct b43_wldev *dev)
++{
++}
++
++static inline int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb)
++{
++      return 0;
++}
+-int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb);
+-void b43_pio_handle_txstatus(struct b43_wldev *dev,
+-                           const struct b43_txstatus *status);
+-void b43_pio_rx(struct b43_pio_rxqueue *q);
++static inline void b43_pio_handle_txstatus(struct b43_wldev *dev,
++                                         const struct b43_txstatus *status)
++{
++}
++
++static inline void b43_pio_rx(struct b43_pio_rxqueue *q)
++{
++}
+-void b43_pio_tx_suspend(struct b43_wldev *dev);
+-void b43_pio_tx_resume(struct b43_wldev *dev);
++static inline void b43_pio_tx_suspend(struct b43_wldev *dev)
++{
++}
++static inline void b43_pio_tx_resume(struct b43_wldev *dev)
++{
++}
+ #endif /* B43_PIO_H_ */