summaryrefslogtreecommitdiff
path: root/package/mac80211/patches
diff options
context:
space:
mode:
Diffstat (limited to 'package/mac80211/patches')
-rw-r--r--package/mac80211/patches/000-compile_fix.patch11
-rw-r--r--package/mac80211/patches/001-disable_b44.patch2
-rw-r--r--package/mac80211/patches/002-disable_rfkill.patch4
-rw-r--r--package/mac80211/patches/003-disable_bt.patch2
-rw-r--r--package/mac80211/patches/005-disable_ssb_build.patch20
-rw-r--r--package/mac80211/patches/007-remove_misc_drivers.patch35
-rw-r--r--package/mac80211/patches/008-led_default.patch26
-rw-r--r--package/mac80211/patches/009-remove_mac80211_module_dependence.patch8
-rw-r--r--package/mac80211/patches/010-no_pcmcia.patch8
-rw-r--r--package/mac80211/patches/011-no_sdio.patch6
-rw-r--r--package/mac80211/patches/013-disable_b43_nphy.patch6
-rw-r--r--package/mac80211/patches/015-remove-rt2x00-options.patch10
-rw-r--r--package/mac80211/patches/016-remove_pid_algo.patch2
-rw-r--r--package/mac80211/patches/017-carl9170_addr_backport.patch38
-rw-r--r--package/mac80211/patches/018-list_for_each_continue_backport.patch15
-rw-r--r--package/mac80211/patches/020-wext-fix.patch15
-rw-r--r--package/mac80211/patches/130-printk_debug_revert.patch2
-rw-r--r--package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch4
-rw-r--r--package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch4
-rw-r--r--package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch2
-rw-r--r--package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch8
-rw-r--r--package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch2
-rw-r--r--package/mac80211/patches/500-ath9k_use_minstrel.patch2
-rw-r--r--package/mac80211/patches/510-ath9k_baw_fix.patch (renamed from package/mac80211/patches/520-ath9k_baw_fix.patch)0
-rw-r--r--package/mac80211/patches/510-ath9k_handle_keymiss.patch23
-rw-r--r--package/mac80211/patches/520-ath9k_aggr_start_fix.patch (renamed from package/mac80211/patches/530-ath9k_aggr_start_fix.patch)0
-rw-r--r--package/mac80211/patches/530-ath9k_eeprom_debugfs.patch (renamed from package/mac80211/patches/540-ath9k_eeprom_debugfs.patch)0
-rw-r--r--package/mac80211/patches/550-ath9k_bssid_mask_fix.patch117
-rw-r--r--package/mac80211/patches/810-b43_no_pio.patch70
29 files changed, 189 insertions, 253 deletions
diff --git a/package/mac80211/patches/000-compile_fix.patch b/package/mac80211/patches/000-compile_fix.patch
deleted file mode 100644
index 97ad8d9..0000000
--- a/package/mac80211/patches/000-compile_fix.patch
+++ /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
-
-
diff --git a/package/mac80211/patches/001-disable_b44.patch b/package/mac80211/patches/001-disable_b44.patch
index ad9c1ee..301148c 100644
--- a/package/mac80211/patches/001-disable_b44.patch
+++ b/package/mac80211/patches/001-disable_b44.patch
@@ -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
diff --git a/package/mac80211/patches/002-disable_rfkill.patch b/package/mac80211/patches/002-disable_rfkill.patch
index 2025797..979435f 100644
--- a/package/mac80211/patches/002-disable_rfkill.patch
+++ b/package/mac80211/patches/002-disable_rfkill.patch
@@ -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
diff --git a/package/mac80211/patches/003-disable_bt.patch b/package/mac80211/patches/003-disable_bt.patch
index 59d2197..50b9e98 100644
--- a/package/mac80211/patches/003-disable_bt.patch
+++ b/package/mac80211/patches/003-disable_bt.patch
@@ -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
diff --git a/package/mac80211/patches/005-disable_ssb_build.patch b/package/mac80211/patches/005-disable_ssb_build.patch
index e62d48f..301aa95 100644
--- a/package/mac80211/patches/005-disable_ssb_build.patch
+++ b/package/mac80211/patches/005-disable_ssb_build.patch
@@ -19,11 +19,11 @@
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
@@ -31,21 +31,21 @@
-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
diff --git a/package/mac80211/patches/007-remove_misc_drivers.patch b/package/mac80211/patches/007-remove_misc_drivers.patch
index 89757b0..6f7693f 100644
--- a/package/mac80211/patches/007-remove_misc_drivers.patch
+++ b/package/mac80211/patches/007-remove_misc_drivers.patch
@@ -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
@@ -54,26 +54,3 @@
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
-
diff --git a/package/mac80211/patches/008-led_default.patch b/package/mac80211/patches/008-led_default.patch
index a392e50..5f6eec0 100644
--- a/package/mac80211/patches/008-led_default.patch
+++ b/package/mac80211/patches/008-led_default.patch
@@ -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)
{
@@ -105,7 +105,7 @@
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;
diff --git a/package/mac80211/patches/009-remove_mac80211_module_dependence.patch b/package/mac80211/patches/009-remove_mac80211_module_dependence.patch
index d0998b1..6c421b0 100644
--- a/package/mac80211/patches/009-remove_mac80211_module_dependence.patch
+++ b/package/mac80211/patches/009-remove_mac80211_module_dependence.patch
@@ -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
@@ -13,9 +13,11 @@
-#
-# 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
-
diff --git a/package/mac80211/patches/010-no_pcmcia.patch b/package/mac80211/patches/010-no_pcmcia.patch
index 25d14c1..33f152e 100644
--- a/package/mac80211/patches/010-no_pcmcia.patch
+++ b/package/mac80211/patches/010-no_pcmcia.patch
@@ -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
diff --git a/package/mac80211/patches/011-no_sdio.patch b/package/mac80211/patches/011-no_sdio.patch
index cd39dd4..42792fb 100644
--- a/package/mac80211/patches/011-no_sdio.patch
+++ b/package/mac80211/patches/011-no_sdio.patch
@@ -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
diff --git a/package/mac80211/patches/013-disable_b43_nphy.patch b/package/mac80211/patches/013-disable_b43_nphy.patch
index 80c0fa9..2fa9354 100644
--- a/package/mac80211/patches/013-disable_b43_nphy.patch
+++ b/package/mac80211/patches/013-disable_b43_nphy.patch
@@ -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
diff --git a/package/mac80211/patches/015-remove-rt2x00-options.patch b/package/mac80211/patches/015-remove-rt2x00-options.patch
index 9cc04d0..31b4a65 100644
--- a/package/mac80211/patches/015-remove-rt2x00-options.patch
+++ b/package/mac80211/patches/015-remove-rt2x00-options.patch
@@ -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
diff --git a/package/mac80211/patches/016-remove_pid_algo.patch b/package/mac80211/patches/016-remove_pid_algo.patch
index 33b19cc..02527b6 100644
--- a/package/mac80211/patches/016-remove_pid_algo.patch
+++ b/package/mac80211/patches/016-remove_pid_algo.patch
@@ -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
index 0000000..0d3774b
--- /dev/null
+++ b/package/mac80211/patches/017-carl9170_addr_backport.patch
@@ -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
index 0000000..08f8eed
--- /dev/null
+++ b/package/mac80211/patches/018-list_for_each_continue_backport.patch
@@ -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
index 9cbbb43..0000000
--- a/package/mac80211/patches/020-wext-fix.patch
+++ /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 */"
diff --git a/package/mac80211/patches/130-printk_debug_revert.patch b/package/mac80211/patches/130-printk_debug_revert.patch
index 5483573..a1ceb66 100644
--- a/package/mac80211/patches/130-printk_debug_revert.patch
+++ b/package/mac80211/patches/130-printk_debug_revert.patch
@@ -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);
diff --git a/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch b/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
index 166c133..330503d 100644
--- a/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
+++ b/package/mac80211/patches/401-ath9k-dont-register-leds-on-ar9100.patch
@@ -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;
diff --git a/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch b/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch
index 77d1c7b..5048194 100644
--- a/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch
+++ b/package/mac80211/patches/406-ath9k-set-AH_USE_EEPROM-only-if-no-platform-data-present.patch
@@ -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;
diff --git a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch
index cf3f402..64481fc 100644
--- a/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch
+++ b/package/mac80211/patches/408-ath9k_tweak_rx_intr_mitigation.patch
@@ -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);
diff --git a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch
index bc336fa..5659ab8 100644
--- a/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch
+++ b/package/mac80211/patches/409-ath9k-add-wndr3700-antenna-initialization.patch
@@ -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;
diff --git a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch
index d69fd8f..f98056f 100644
--- a/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch
+++ b/package/mac80211/patches/410-ath9k-wndr3700-led-pin-fix.patch
@@ -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;
diff --git a/package/mac80211/patches/500-ath9k_use_minstrel.patch b/package/mac80211/patches/500-ath9k_use_minstrel.patch
index 9cb1293..61e01c1 100644
--- a/package/mac80211/patches/500-ath9k_use_minstrel.patch
+++ b/package/mac80211/patches/500-ath9k_use_minstrel.patch
@@ -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/520-ath9k_baw_fix.patch b/package/mac80211/patches/510-ath9k_baw_fix.patch
index 50e4b99..50e4b99 100644
--- a/package/mac80211/patches/520-ath9k_baw_fix.patch
+++ b/package/mac80211/patches/510-ath9k_baw_fix.patch
diff --git a/package/mac80211/patches/510-ath9k_handle_keymiss.patch b/package/mac80211/patches/510-ath9k_handle_keymiss.patch
deleted file mode 100644
index c63ad3f..0000000
--- a/package/mac80211/patches/510-ath9k_handle_keymiss.patch
+++ /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/530-ath9k_aggr_start_fix.patch b/package/mac80211/patches/520-ath9k_aggr_start_fix.patch
index 1dcac53..1dcac53 100644
--- a/package/mac80211/patches/530-ath9k_aggr_start_fix.patch
+++ b/package/mac80211/patches/520-ath9k_aggr_start_fix.patch
diff --git a/package/mac80211/patches/540-ath9k_eeprom_debugfs.patch b/package/mac80211/patches/530-ath9k_eeprom_debugfs.patch
index 62a5d31..62a5d31 100644
--- a/package/mac80211/patches/540-ath9k_eeprom_debugfs.patch
+++ b/package/mac80211/patches/530-ath9k_eeprom_debugfs.patch
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
index f448870..0000000
--- a/package/mac80211/patches/550-ath9k_bssid_mask_fix.patch
+++ /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
index 0000000..2aa426e
--- /dev/null
+++ b/package/mac80211/patches/810-b43_no_pio.patch
@@ -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_ */