From fc7fbe83490df97271a50ded051aa312a6260e51 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Tue, 14 Sep 2010 22:53:54 +0000 Subject: mac80211: upgrade to wireless-testing 2010-09-14, replace the external carl9170 with the recently merged upstream version SVN-Revision: 23061 --- package/mac80211/patches/000-compile_fix.patch | 11 -- package/mac80211/patches/001-disable_b44.patch | 2 +- package/mac80211/patches/002-disable_rfkill.patch | 4 +- package/mac80211/patches/003-disable_bt.patch | 2 +- .../mac80211/patches/005-disable_ssb_build.patch | 20 ++-- .../mac80211/patches/007-remove_misc_drivers.patch | 35 ++---- package/mac80211/patches/008-led_default.patch | 26 ++--- .../009-remove_mac80211_module_dependence.patch | 8 +- package/mac80211/patches/010-no_pcmcia.patch | 8 +- package/mac80211/patches/011-no_sdio.patch | 6 +- .../mac80211/patches/013-disable_b43_nphy.patch | 6 +- .../patches/015-remove-rt2x00-options.patch | 10 +- package/mac80211/patches/016-remove_pid_algo.patch | 2 +- .../patches/017-carl9170_addr_backport.patch | 38 +++++++ .../018-list_for_each_continue_backport.patch | 15 +++ package/mac80211/patches/020-wext-fix.patch | 15 --- .../mac80211/patches/130-printk_debug_revert.patch | 2 +- .../401-ath9k-dont-register-leds-on-ar9100.patch | 4 +- ...E_EEPROM-only-if-no-platform-data-present.patch | 4 +- .../408-ath9k_tweak_rx_intr_mitigation.patch | 2 +- ...ath9k-add-wndr3700-antenna-initialization.patch | 8 +- .../patches/410-ath9k-wndr3700-led-pin-fix.patch | 2 +- .../mac80211/patches/500-ath9k_use_minstrel.patch | 2 +- package/mac80211/patches/510-ath9k_baw_fix.patch | 36 +++++++ .../patches/510-ath9k_handle_keymiss.patch | 23 ---- .../patches/520-ath9k_aggr_start_fix.patch | 12 +++ package/mac80211/patches/520-ath9k_baw_fix.patch | 36 ------- .../patches/530-ath9k_aggr_start_fix.patch | 12 --- .../patches/530-ath9k_eeprom_debugfs.patch | 67 ++++++++++++ .../patches/540-ath9k_eeprom_debugfs.patch | 67 ------------ .../patches/550-ath9k_bssid_mask_fix.patch | 117 --------------------- package/mac80211/patches/810-b43_no_pio.patch | 70 ++++++++++++ 32 files changed, 304 insertions(+), 368 deletions(-) delete mode 100644 package/mac80211/patches/000-compile_fix.patch create mode 100644 package/mac80211/patches/017-carl9170_addr_backport.patch create mode 100644 package/mac80211/patches/018-list_for_each_continue_backport.patch delete mode 100644 package/mac80211/patches/020-wext-fix.patch create mode 100644 package/mac80211/patches/510-ath9k_baw_fix.patch delete mode 100644 package/mac80211/patches/510-ath9k_handle_keymiss.patch create mode 100644 package/mac80211/patches/520-ath9k_aggr_start_fix.patch delete mode 100644 package/mac80211/patches/520-ath9k_baw_fix.patch delete mode 100644 package/mac80211/patches/530-ath9k_aggr_start_fix.patch create mode 100644 package/mac80211/patches/530-ath9k_eeprom_debugfs.patch delete mode 100644 package/mac80211/patches/540-ath9k_eeprom_debugfs.patch delete mode 100644 package/mac80211/patches/550-ath9k_bssid_mask_fix.patch create mode 100644 package/mac80211/patches/810-b43_no_pio.patch (limited to 'package/mac80211/patches') diff --git a/package/mac80211/patches/000-compile_fix.patch b/package/mac80211/patches/000-compile_fix.patch deleted file mode 100644 index 97ad8d948e..0000000000 --- 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 ad9c1ee432..301148cfb9 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 20257972bc..979435f55b 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 59d2197e9c..50b9e98c02 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 e62d48f95d..301aa95251 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 89757b0644..6f7693fa38 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 a392e500ef..5f6eec0366 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 d0998b1205..6c421b022c 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 25d14c1783..33f152eb63 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 cd39dd4c66..42792fb57e 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 80c0fa9150..2fa9354ce4 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 9cc04d0adb..31b4a653f2 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 33b19cc67d..02527b6a86 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 0000000000..0d3774b5c0 --- /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 0000000000..08f8eed02d --- /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 9cbbb4377b..0000000000 --- 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 5483573b2b..a1ceb6689a 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 166c133a61..330503d236 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 77d1c7b6e9..5048194cb3 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 cf3f402c78..64481fcc34 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 bc336fabd7..5659ab85bc 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 d69fd8f76f..f98056f0d4 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 9cb1293090..61e01c1bc6 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/510-ath9k_baw_fix.patch b/package/mac80211/patches/510-ath9k_baw_fix.patch new file mode 100644 index 0000000000..50e4b99e45 --- /dev/null +++ b/package/mac80211/patches/510-ath9k_baw_fix.patch @@ -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 index c63ad3fcf0..0000000000 --- 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/520-ath9k_aggr_start_fix.patch b/package/mac80211/patches/520-ath9k_aggr_start_fix.patch new file mode 100644 index 0000000000..1dcac53e4e --- /dev/null +++ b/package/mac80211/patches/520-ath9k_aggr_start_fix.patch @@ -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 index 50e4b99e45..0000000000 --- a/package/mac80211/patches/520-ath9k_baw_fix.patch +++ /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 index 1dcac53e4e..0000000000 --- a/package/mac80211/patches/530-ath9k_aggr_start_fix.patch +++ /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 index 0000000000..62a5d31675 --- /dev/null +++ b/package/mac80211/patches/530-ath9k_eeprom_debugfs.patch @@ -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 index 62a5d31675..0000000000 --- a/package/mac80211/patches/540-ath9k_eeprom_debugfs.patch +++ /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 index f448870430..0000000000 --- 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 0000000000..2aa426e37a --- /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_ */ -- cgit v1.2.3