Changeset 27431


Ignore:
Timestamp:
2011-07-04T03:55:04+02:00 (7 years ago)
Author:
nbd
Message:

mac80211: backport latest version from trunk as of r27395

Location:
branches/backfire/package/mac80211
Files:
19 added
8 deleted
31 edited
3 moved

Legend:

Unmodified
Added
Removed
  • branches/backfire/package/mac80211/Makefile

    r26763 r27431  
    1111PKG_NAME:=mac80211 
    1212 
    13 PKG_VERSION:=2011-04-19 
    14 PKG_RELEASE:=3 
     13PKG_VERSION:=2011-06-22 
     14PKG_RELEASE:=2 
    1515PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources 
    16 PKG_MD5SUM:=7b789b726927bcc8e3b06c7df40214d9 
     16PKG_MD5SUM:=3ffdd5cecedcf4236f599bdbc55ba10d 
    1717 
    1818PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2 
     
    105105endef 
    106106 
     107PKG_LINUX_FIRMWARE_NAME:=linux-firmware 
     108PKG_LINUX_FIRMWARE_VERSION:=97649b1e5449029c845ebf7500e780a8867c3e89 
     109PKG_LINUX_FIRMWARE_SOURCE:=$(PKG_LINUX_FIRMWARE_NAME)-$(PKG_LINUX_FIRMWARE_VERSION).tar.bz2 
     110PKG_LINUX_FIRMWARE_PROTO:=git 
     111PKG_LINUX_FIRMWARE_SOURCE_URL:=git://git.kernel.org/pub/scm/linux/kernel/git/dwmw2/linux-firmware.git 
     112PKG_LINUX_FIRMWARE_SUBDIR:=$(PKG_LINUX_FIRMWARE_NAME)-$(PKG_LINUX_FIRMWARE_VERSION) 
     113 
     114define Download/linux-firmware 
     115  FILE:=$(PKG_LINUX_FIRMWARE_SOURCE) 
     116  URL:=$(PKG_LINUX_FIRMWARE_SOURCE_URL) 
     117  MD5SUM:=$(PKG_LINUX_FIRMWARE_MD5SUM) 
     118  PROTO:=$(PKG_LINUX_FIRMWARE_PROTO) 
     119  VERSION:=$(PKG_LINUX_FIRMWARE_VERSION) 
     120  SUBDIR:=$(PKG_LINUX_FIRMWARE_SUBDIR) 
     121endef 
     122$(eval $(call Download,linux-firmware)) 
     123 
    107124# Prism54 drivers 
    108125P54PCIFW:=2.13.12.0.arm 
     
    180197endef 
    181198 
    182 # Ralink rt2x00 drivers 
    183 RT61FW:=RT61_Firmware_V1.2.zip 
    184 RT71FW:=RT71W_Firmware_V1.8.zip 
    185 RT2860FW:=RT2860_Firmware_V11.zip 
    186 RT2870FW:=RT2870_Firmware_V8.zip 
    187  
    188 define Download/rt61 
    189   FILE:=$(RT61FW) 
    190   URL:=http://www.ralinktech.com.tw/data/ 
    191   MD5SUM:=d4c690c93b470bc9a681297c2adc6281 
    192 endef 
    193 $(eval $(call Download,rt61)) 
    194  
    195 define Download/rt71w 
    196   FILE:=$(RT71FW) 
    197   URL:=http://www.ralinktech.com.tw/data/ 
    198   MD5SUM:=1e7a5dc574e0268574fcda3fd5cf52f7 
    199 endef 
    200 $(eval $(call Download,rt71w)) 
    201  
    202 define Download/rt2860 
    203   FILE:=$(RT2860FW) 
    204   URL:=http://www.ralinktech.com.tw/data/drivers 
    205   MD5SUM:=440a81756a52c53528f16faa41c40124 
    206 endef 
    207 $(eval $(call Download,rt2860)) 
    208  
    209 define Download/rt2870 
    210   FILE:=$(RT2870FW) 
    211   URL:=http://www.ralinktech.com.tw/data/drivers 
    212   MD5SUM:=a7aae1d8cfd68e4d86a73000df0b6584 
    213 endef 
    214 $(eval $(call Download,rt2870)) 
    215  
    216 AR9170FW:=ar9170.fw 
    217  
    218 define Download/ar9170 
    219   FILE:=$(AR9170FW) 
    220   URL:=http://www.kernel.org/pub/linux/kernel/people/mcgrof/firmware/ar9170 
    221   MD5SUM:=34feec4ec0eae3bb92c7c1ea2dfb4530 
    222 endef 
    223 $(eval $(call Download,ar9170)) 
    224  
    225199NEED_RT2X00_LIB_CRYPTO:=y 
    226200NEED_RT2X00_LIB_FIRMWARE:=y 
     201NEED_RT2X00_LIB_EEPROM:=y 
    227202NEED_RT2X00_LIB_HT:=y 
    228203NEED_RT2X00_LIB_LEDS:=y 
     
    417392  $(call KernelPackage/mac80211/Default) 
    418393  TITLE:=Atheros common driver part 
    419   DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT +kmod-mac80211 
     394  DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx +kmod-mac80211 
    420395  FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko 
    421396  AUTOLOAD:=$(call AutoLoad,26,ath) 
     
    445420  TITLE:=Atheros 802.11n wireless devices (common code for ath9k and ath9k_htc) 
    446421  URL:=http://linuxwireless.org/en/users/Drivers/ath9k 
    447   DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT 
     422  DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx +kmod-ath +@DRIVER_11N_SUPPORT 
    448423  FILES:= \ 
    449424        $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.ko \ 
     
    456431  TITLE:=Atheros 802.11n PCI wireless cards support 
    457432  URL:=http://linuxwireless.org/en/users/Drivers/ath9k 
    458   DEPENDS+= @PCI_SUPPORT +kmod-ath9k-common 
     433  DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx +kmod-ath9k-common 
    459434  FILES:= \ 
    460435        $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k.ko 
     
    466441Atheros IEEE 802.11n AR5008 and AR9001 family of chipsets. 
    467442endef 
    468  
    469 AR7010FW:=ar7010.fw 
    470 AR7010_1_1_FW:=ar7010_1_1.fw 
    471 AR9271FW:=ar9271.fw 
    472  
    473 define Download/ar9271 
    474   FILE:=$(AR9271FW) 
    475   URL:=http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=blob_plain;f=ar9271.fw;h=d0ee74a1c8dccb7cc21f5be90f1d4048fa9dbf9e;hb=HEAD;? 
    476   MD5SUM:=2e6f5045ec4c5a42bb93ced242bad0ba 
    477 endef 
    478 $(eval $(call Download,ar9271)) 
    479  
    480 define Download/ar7010 
    481   FILE:=$(AR7010FW) 
    482   URL:=http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=blob_plain;f=ar7010.fw;h=840005d0f0c81838c581b8cd5d76c8dd3843731c;hb=HEAD;? 
    483   MD5SUM:=59823b82b1f72bed9b044e8cc78ad65c 
    484 endef 
    485 $(eval $(call Download,ar7010)) 
    486  
    487 define Download/ar7010_1_1 
    488   FILE:=$(AR7010_1_1_FW) 
    489   URL:=http://git.kernel.org/?p=linux/kernel/git/dwmw2/linux-firmware.git;a=blob_plain;f=ar7010_1_1.fw;h=684d4cd1a8cac4f58305589e31f9d856d03a8ef0;hb=HEAD;? 
    490   MD5SUM:=544fcbe5a93cfa53c7e6d3ded2b05347 
    491 endef 
    492 $(eval $(call Download,ar7010_1_1)) 
    493443 
    494444define KernelPackage/ath9k-htc 
     
    520470endef 
    521471 
    522  
    523 USB8388FW_NAME:=usb8388 
    524 USB8388FW_VERSION:=5.110.22.p23 
    525  
    526 define Download/usb8388 
    527   URL:=http://dev.laptop.org/pub/firmware/libertas/ 
    528   FILE:=$(USB8388FW_NAME)-$(USB8388FW_VERSION).bin 
    529   MD5SUM=5e38f55719df3d0c58dd3bd02575a09c 
    530 endef 
    531 $(eval $(call Download,usb8388)) 
    532  
    533 SD8686FW_NAME:=sd8686 
    534 SD8686FW_VERSION:=9.70.7.p0 
    535  
    536 define Download/sd8686 
    537   URL:=http://dev.laptop.org/pub/firmware/libertas/ 
    538   FILE:=$(SD8686FW_NAME)-$(SD8686FW_VERSION).bin 
    539   MD5SUM=b4f8be61e19780a14836f146c538c5dd 
    540 endef 
    541 $(eval $(call Download,sd8686)) 
    542  
    543 SD8686HELPER_NAME:=sd8686_helper 
    544  
    545 define Download/sd8686_helper 
    546   URL:=http://dev.laptop.org/pub/firmware/libertas/ 
    547   FILE:=$(SD8686HELPER_NAME).bin 
    548   MD5SUM=2a4d8f4df198ce949c350df5674f4ac6 
    549 endef 
    550 $(eval $(call Download,sd8686_helper)) 
    551  
    552472define KernelPackage/libertas-usb 
    553473  $(call KernelPackage/mac80211/Default) 
     
    686606 Kernel modules for Hermes based PCMCIA adaptors 
    687607endef 
    688  
    689 IWL3945_NAME:=iwlwifi-3945-ucode 
    690 IWL3945_VERSION:=15.32.2.9 
    691 IWL3945_MD5SUM:=d99a75ab1305d1532a09471b2f9a547a 
    692 IWL4965_NAME:=iwlwifi-4965-ucode 
    693 IWL4965_VERSION:=228.61.2.24 
    694 IWL4965_MD5SUM:=2531028773cfc22aca5539c734f2a241 
    695 IWL5000_NAME:=iwlwifi-5000-ucode 
    696 IWL5000_VERSION:=8.83.5.1 
    697 IWL5000_MD5SUM:=da82465019b3c7d1ee5156474ab4931d 
    698 IWL5150_NAME:=iwlwifi-5150-ucode 
    699 IWL5150_VERSION:=8.24.2.2 
    700 IWL5150_MD5SUM:=f9cee16e455e8046b1bf62c93f882d5d 
    701 IWL1000_NAME:=iwlwifi-1000-ucode 
    702 IWL1000_VERSION:=39.31.5.1 
    703 IWL1000_MD5SUM:=8098503cb2abcdeffffb3ddd2d8d6f60 
    704 IWL6000_NAME:=iwlwifi-6000-ucode 
    705 IWL6000_VERSION:=9.221.4.1 
    706 IWL6000_MD5SUM:=c132a4c1946a9dbc0c36b41696e5c793 
    707 IWL6050_NAME:=iwlwifi-6050-ucode 
    708 IWL6050_VERSION:=41.28.5.1 
    709 IWL6050_MD5SUM:=cb484a65b9139666d4ddebf60598a87b 
    710 IWL6005_NAME:=iwlwifi-6000g2a-ucode 
    711 IWL6005_VERSION:=17.168.5.2 
    712 IWL6005_MD5SUM:=0b9579f4b8faf51c955295607a8e79a8 
    713 IWL6030_NAME:=iwlwifi-6000g2b-ucode 
    714 IWL6030_VERSION:=17.168.5.2 
    715 IWL6030_MD5SUM:=d87411296b4eeda0c91322228e9f8437 
    716 IWL100_NAME:=iwlwifi-100-ucode 
    717 IWL100_VERSION:=39.31.5.1 
    718 IWL100_MD5SUM:=b686f0ab94888ccca3ce74d2d6ee1133 
    719  
    720  
    721 define Download/iwl-fw/Default 
    722   URL:=http://intellinuxwireless.org/iwlwifi/downloads/ 
    723 endef 
    724  
    725 define Download/iwl3945-fw 
    726   $(call Download/iwl-fw/Default) 
    727   FILE:=$(IWL3945_NAME)-$(IWL3945_VERSION).tgz 
    728   MD5SUM:=$(IWL3945_MD5SUM) 
    729 endef 
    730 $(eval $(call Download,iwl3945-fw)) 
    731  
    732 define Download/iwl4965-fw 
    733   $(call Download/iwl-fw/Default) 
    734   FILE:=$(IWL4965_NAME)-$(IWL4965_VERSION).tgz 
    735   MD5SUM:=$(IWL4965_MD5SUM) 
    736 endef 
    737 $(eval $(call Download,iwl4965-fw)) 
    738  
    739 define Download/iwl5000-fw 
    740   $(call Download/iwl-fw/Default) 
    741   FILE:=$(IWL5000_NAME)-$(IWL5000_VERSION).tgz 
    742   MD5SUM:=$(IWL5000_MD5SUM) 
    743 endef 
    744 $(eval $(call Download,iwl5000-fw)) 
    745  
    746 define Download/iwl5150-fw 
    747   $(call Download/iwl-fw/Default) 
    748   FILE:=$(IWL5150_NAME)-$(IWL5150_VERSION).tgz 
    749   MD5SUM:=$(IWL5150_MD5SUM) 
    750 endef 
    751 $(eval $(call Download,iwl5150-fw)) 
    752  
    753 define Download/iwl1000-fw 
    754   $(call Download/iwl-fw/Default) 
    755   FILE:=$(IWL1000_NAME)-$(IWL1000_VERSION).tgz 
    756   MD5SUM:=$(IWL1000_MD5SUM) 
    757 endef 
    758 $(eval $(call Download,iwl1000-fw)) 
    759  
    760 define Download/iwl6000-fw 
    761   $(call Download/iwl-fw/Default) 
    762   FILE:=$(IWL6000_NAME)-$(IWL6000_VERSION).tgz 
    763   MD5SUM:=$(IWL6000_MD5SUM) 
    764 endef 
    765 $(eval $(call Download,iwl6000-fw)) 
    766  
    767 define Download/iwl6050-fw 
    768   $(call Download/iwl-fw/Default) 
    769   FILE:=$(IWL6050_NAME)-$(IWL6050_VERSION).tgz 
    770   MD5SUM:=$(IWL6050_MD5SUM) 
    771 endef 
    772 $(eval $(call Download,iwl6050-fw)) 
    773  
    774 define Download/iwl6005-fw 
    775   $(call Download/iwl-fw/Default) 
    776   FILE:=$(IWL6005_NAME)-$(IWL6005_VERSION).tgz 
    777   MD5SUM:=$(IWL6005_MD5SUM) 
    778 endef 
    779 $(eval $(call Download,iwl6005-fw)) 
    780  
    781 define Download/iwl6030-fw 
    782   $(call Download/iwl-fw/Default) 
    783   FILE:=$(IWL6030_NAME)-$(IWL6030_VERSION).tgz 
    784   MD5SUM:=$(IWL6030_MD5SUM) 
    785 endef 
    786 $(eval $(call Download,iwl6030-fw)) 
    787  
    788 define Download/iwl100-fw 
    789   $(call Download/iwl-fw/Default) 
    790   FILE:=$(IWL100_NAME)-$(IWL100_VERSION).tgz 
    791   MD5SUM:=$(IWL100_MD5SUM) 
    792 endef 
    793 $(eval $(call Download,iwl100-fw)) 
    794608 
    795609define KernelPackage/iwlagn 
     
    11981012        $(foreach opt,$(CONFOPTS),-DCONFIG_$(opt)) \ 
    11991013        $(if $(CONFIG_PCI),-DCONFIG_B43_PCI_AUTOSELECT -DCONFIG_B43_PCICORE_AUTOSELECT) \ 
    1200         $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_B43_LEDS -DCONFIG_B43LEGACY_LEDS -DCONFIG_AR9170_LEDS) \ 
     1014        $(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_B43_LEDS -DCONFIG_B43LEGACY_LEDS) \ 
    12011015        -DCONFIG_B43_HWRNG -DCONFIG_B43LEGACY_HWRNG \ 
    1202         -DCONFIG_ATH9K_PCI $(if $(CONFIG_TARGET_ar71xx),-DCONFIG_ATH9K_AHB) \ 
    1203         $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),-DCONFIG_MAC80211_DEBUGFS -DCONFIG_ATH9K_DEBUGFS -DCONFIG_CARL9170_DEBUGFS -DCONFIG_ATH9K_HTC_DEBUGFS -DCONFIG_ATH5K_DEBUG) \ 
     1016        $(if $(CONFIG_PCI),-DCONFIG_ATH9K_PCI) \ 
     1017        $(if $(CONFIG_TARGET_ar71xx),-DCONFIG_ATH9K_AHB) \ 
     1018        $(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS), -DCONFIG_CFG80211_DEBUGFS -DCONFIG_MAC80211_DEBUGFS -DCONFIG_ATH9K_DEBUGFS -DCONFIG_CARL9170_DEBUGFS -DCONFIG_ATH9K_HTC_DEBUGFS -DCONFIG_ATH5K_DEBUG) \ 
    12041019        $(if $(CONFIG_PACKAGE_ATH_DEBUG),-DCONFIG_ATH_DEBUG -DCONFIG_ATH9K_PKTLOG) \ 
    12051020        -D__CONFIG_MAC80211_RC_DEFAULT=minstrel \ 
     
    12141029        $(if $(NEED_RT2X00_LIB_CRYPTO),-DCONFIG_RT2X00_LIB_CRYPTO) \ 
    12151030        $(if $(NEED_RT2X00_LIB_FIRMWARE),-DCONFIG_RT2X00_LIB_FIRMWARE) \ 
     1031        $(if $(NEED_RT2X00_LIB_EEPROM),-DCONFIG_RT2X00_LIB_EEPROM) \ 
    12161032        $(if $(NEED_RT2X00_LIB_LEDS),-DCONFIG_RT2X00_LIB_LEDS) \ 
    12171033        $(if $(CONFIG_PACKAGE_kmod-rt2x00-pci),-DCONFIG_RT2X00_LIB_PCI) \ 
     
    12301046        CONFIG_MAC80211_RC_MINSTREL=y \ 
    12311047        CONFIG_MAC80211_LEDS=$(CONFIG_LEDS_TRIGGERS) \ 
     1048        CONFIG_CFG80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \ 
    12321049        CONFIG_MAC80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \ 
    12331050        CONFIG_B43_PCMCIA=n CONFIG_B43_PIO=n \ 
     
    12451062        CONFIG_ATH_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath),m) \ 
    12461063        CONFIG_ATH_DEBUG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \ 
    1247         CONFIG_ATH5K_DEBUG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \ 
    12481064        CONFIG_ATH9K_PKTLOG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \ 
    12491065        CONFIG_ATH5K=$(if $(CONFIG_PACKAGE_kmod-ath5k),m) \ 
     
    12521068        CONFIG_ATH5K_DEBUG=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \ 
    12531069        CONFIG_ATH9K=$(if $(CONFIG_PACKAGE_kmod-ath9k),m) \ 
    1254         CONFIG_ATH9K_PCI=y \ 
     1070        CONFIG_ATH9K_PCI=$(CONFIG_PCI) \ 
    12551071        CONFIG_ATH9K_AHB=$(if $(CONFIG_TARGET_ar71xx),y) \ 
    12561072        CONFIG_ATH9K_HTC=$(if $(CONFIG_PACKAGE_kmod-ath9k-htc),m) \ 
     1073        CONFIG_ATH9K_HTC_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \ 
    12571074        CONFIG_ATH9K_HW=$(if $(CONFIG_PACKAGE_kmod-ath9k-common),m) \ 
    12581075        CONFIG_ATH9K_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath9k-common),m) \ 
     
    12741091        CONFIG_RT2X00_LIB_CRYPTO=$(NEED_RT2X00_LIB_CRYPTO) \ 
    12751092        CONFIG_RT2X00_LIB_FIRMWARE=$(NEED_RT2X00_LIB_FIRMWARE) \ 
     1093        CONFIG_RT2X00_LIB_EEPROM=$(NEED_RT2X00_LIB_EEPROM) \ 
    12761094        CONFIG_RT2X00_LIB_HT=$(NEED_RT2X00_LIB_HT) \ 
    12771095        CONFIG_RT2X00_LIB_LEDS=$(NEED_RT2X00_LIB_LEDS) \ 
     
    13301148        CONFIG_PCMCIA_SPECTRUM= \ 
    13311149        CONFIG_ORINOCO_USB= \ 
    1332         CONFIG_AR9170_USB=$(if $(CONFIG_PACKAGE_kmod-ar9170),m) \ 
    1333         CONFIG_AR9170_LEDS=$(CONFIG_LEDS_TRIGGERS) \ 
    13341150        CONFIG_IWM= \ 
    13351151        CONFIG_MWIFIEX= \ 
    13361152        CONFIG_MAC80211_RC_MINSTREL_HT=y \ 
    13371153        MADWIFI= \ 
     1154        CONFIG_B44= \ 
     1155        CONFIG_ATL1= \ 
     1156        CONFIG_ATL2= \ 
     1157        CONFIG_ATL1E= \ 
     1158        CONFIG_ATL1C= \ 
    13381159        KLIB_BUILD="$(LINUX_DIR)" \ 
    13391160        MODPROBE=: \ 
     
    13511172        $(PKG_UNPACK) 
    13521173        $(Build/Patch) 
    1353         unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT61FW) 
    1354         unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT71FW) 
    1355         -unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT2860FW) 
    1356         -unzip -jod $(PKG_BUILD_DIR) $(DL_DIR)/$(RT2870FW) 
    13571174        $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IPW2100_NAME)-$(IPW2100_VERSION).tgz 
    13581175        $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IPW2200_NAME)-$(IPW2200_VERSION).tgz 
    1359         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL3945_NAME)-$(IWL3945_VERSION).tgz 
    1360         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL4965_NAME)-$(IWL4965_VERSION).tgz 
    1361         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL5000_NAME)-$(IWL5000_VERSION).tgz 
    1362         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL5150_NAME)-$(IWL5150_VERSION).tgz 
    1363         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL1000_NAME)-$(IWL1000_VERSION).tgz 
    1364         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL6000_NAME)-$(IWL6000_VERSION).tgz 
    1365         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL6050_NAME)-$(IWL6050_VERSION).tgz 
    1366         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL6005_NAME)-$(IWL6005_VERSION).tgz 
    1367         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL6030_NAME)-$(IWL6030_VERSION).tgz 
    1368         $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IWL100_NAME)-$(IWL100_VERSION).tgz 
    13691176        $(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2 
     1177        $(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(PKG_LINUX_FIRMWARE_SOURCE) 
    13701178        rm -rf $(PKG_BUILD_DIR)/include/linux/ssb 
    13711179        rm -f $(PKG_BUILD_DIR)/include/net/ieee80211.h 
    1372         rm $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h 
    13731180endef 
    13741181 
     
    13961203define KernelPackage/libertas-usb/install 
    13971204        $(INSTALL_DIR) $(1)/lib/firmware 
    1398         $(INSTALL_DATA) $(DL_DIR)/$(USB8388FW_NAME)-$(USB8388FW_VERSION).bin $(1)/lib/firmware/$(USB8388FW_NAME).bin 
     1205        $(INSTALL_DATA) \ 
     1206                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/usb8388_v9.bin \ 
     1207                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/usb8388_v5.bin \ 
     1208                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/usb8682.bin \ 
     1209                $(1)/lib/firmware/ 
    13991210endef 
    14001211 
    14011212define KernelPackage/libertas-sd/install 
    1402         echo "Libertas install: $(CONFIG_PACKAGE_kmod-libertas-sd)" 
    14031213        $(INSTALL_DIR) $(1)/lib/firmware 
    1404         $(INSTALL_DATA) $(DL_DIR)/$(SD8686FW_NAME)-$(SD8686FW_VERSION).bin $(1)/lib/firmware/$(SD8686FW_NAME).bin 
    1405         $(INSTALL_DATA) $(DL_DIR)/$(SD8686HELPER_NAME).bin $(1)/lib/firmware/$(SD8686HELPER_NAME).bin 
     1214        $(INSTALL_DATA) \ 
     1215                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8385_helper.bin \ 
     1216                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8385.bin \ 
     1217                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8686_v9_helper.bin \ 
     1218                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8686_v9.bin \ 
     1219                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8686_v8_helper.bin \ 
     1220                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8686_v8.bin \ 
     1221                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8688_helper.bin \ 
     1222                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/libertas/sd8688.bin \ 
     1223                $(1)/lib/firmware/ 
    14061224endef 
    14071225 
     
    14281246define KernelPackage/rt61-pci/install 
    14291247        $(INSTALL_DIR) $(1)/lib/firmware 
    1430         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt2?61*.bin $(1)/lib/firmware/ 
     1248        $(INSTALL_DATA) \ 
     1249                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2561.bin \ 
     1250                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2561s.bin \ 
     1251                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2661.bin \ 
     1252                $(1)/lib/firmware/ 
    14311253endef 
    14321254 
    14331255define KernelPackage/rt73-usb/install 
    14341256        $(INSTALL_DIR) $(1)/lib/firmware 
    1435         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt73.bin $(1)/lib/firmware/ 
     1257        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt73.bin $(1)/lib/firmware/ 
    14361258endef 
    14371259 
    14381260define KernelPackage/rt2800-pci/install 
    14391261        $(INSTALL_DIR) $(1)/lib/firmware 
    1440         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt2860.bin $(1)/lib/firmware/ 
     1262        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2860.bin $(1)/lib/firmware/ 
    14411263endef 
    14421264 
    14431265define KernelPackage/rt2800-usb/install 
    14441266        $(INSTALL_DIR) $(1)/lib/firmware 
    1445         $(INSTALL_DATA) $(PKG_BUILD_DIR)/rt2870.bin $(1)/lib/firmware/ 
     1267        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/rt2870.bin $(1)/lib/firmware/ 
    14461268endef 
    14471269 
     
    14511273endef 
    14521274 
    1453 define KernelPackage/ar9170/install 
    1454         $(INSTALL_DIR) $(1)/lib/firmware 
    1455         $(INSTALL_DATA) $(DL_DIR)/$(AR9170FW) $(1)/lib/firmware/ 
    1456 endef 
    1457  
    14581275define KernelPackage/ath9k-htc/install 
    14591276        $(INSTALL_DIR) $(1)/lib/firmware 
    14601277        $(INSTALL_DATA) \ 
    1461                 $(DL_DIR)/$(AR9271FW) \ 
    1462                 $(DL_DIR)/$(AR7010FW) \ 
    1463                 $(DL_DIR)/$(AR7010_1_1_FW) \ 
     1278                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/ar9271.fw \ 
     1279                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/ar7010.fw \ 
     1280                $(1)/lib/firmware/ 
     1281endef 
     1282 
     1283define KernelPackage/mwl8k/install 
     1284        $(INSTALL_DIR) $(1)/lib/firmware 
     1285        $(INSTALL_DATA) \ 
     1286                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8366_ap-2.fw \ 
     1287                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8366.fw \ 
     1288                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/helper_8366.fw \ 
     1289                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/fmimage_8687.fw \ 
     1290                $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/mwl8k/helper_8687.fw \ 
    14641291                $(1)/lib/firmware/ 
    14651292endef 
     
    14781305        $(INSTALL_DIR) $(1)/lib/firmware 
    14791306ifneq ($(CONFIG_IWL5000_FW),) 
    1480         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL5000_NAME)-$(IWL5000_VERSION)/iwlwifi-5000-*.ucode $(1)/lib/firmware 
     1307        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-5000-5.ucode $(1)/lib/firmware 
    14811308endif 
    14821309ifneq ($(CONFIG_IWL5150_FW),) 
    1483         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL5150_NAME)-$(IWL5150_VERSION)/iwlwifi-5150-*.ucode $(1)/lib/firmware 
     1310        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-5150-2.ucode $(1)/lib/firmware 
    14841311endif 
    14851312ifneq ($(CONFIG_IWL1000_FW),) 
    1486         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL1000_NAME)-$(IWL1000_VERSION)/iwlwifi-1000-*.ucode $(1)/lib/firmware 
     1313        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-1000-5.ucode $(1)/lib/firmware 
    14871314endif 
    14881315ifneq ($(CONFIG_IWL6000_FW),) 
    1489         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL6000_NAME)-$(IWL6000_VERSION)/iwlwifi-6000-*.ucode $(1)/lib/firmware 
     1316        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6000-4.ucode $(1)/lib/firmware 
    14901317endif 
    14911318ifneq ($(CONFIG_IWL6050_FW),) 
    1492         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL6050_NAME)-$(IWL6050_VERSION)/iwlwifi-6050-*.ucode $(1)/lib/firmware 
     1319        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6050-5.ucode $(1)/lib/firmware 
    14931320endif 
    14941321ifneq ($(CONFIG_IWL6005_FW),) 
    1495         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL6005_NAME)-$(IWL6005_VERSION)/iwlwifi-6000g2a-*.ucode $(1)/lib/firmware 
     1322        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6000g2a-5.ucode $(1)/lib/firmware 
    14961323endif 
    14971324ifneq ($(CONFIG_IWL6030_FW),) 
    1498         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL6030_NAME)-$(IWL6030_VERSION)/iwlwifi-6000g2b-*.ucode $(1)/lib/firmware 
     1325        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-6000g2b-5.ucode $(1)/lib/firmware 
    14991326endif 
    15001327ifneq ($(CONFIG_IWL100_FW),) 
    1501         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL100_NAME)-$(IWL100_VERSION)/iwlwifi-100-*.ucode $(1)/lib/firmware 
     1328        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-100-5.ucode $(1)/lib/firmware 
    15021329endif 
    15031330endef 
     
    15051332define KernelPackage/iwl3945/install 
    15061333        $(INSTALL_DIR) $(1)/lib/firmware 
    1507         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL3945_NAME)-$(IWL3945_VERSION)/iwlwifi-3945-*.ucode $(1)/lib/firmware 
     1334        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-3945-2.ucode $(1)/lib/firmware 
    15081335endef 
    15091336 
    15101337define KernelPackage/iwl4965/install 
    15111338        $(INSTALL_DIR) $(1)/lib/firmware 
    1512         $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IWL4965_NAME)-$(IWL4965_VERSION)/iwlwifi-4965-*.ucode $(1)/lib/firmware 
     1339        $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_LINUX_FIRMWARE_SUBDIR)/iwlwifi-4965-2.ucode $(1)/lib/firmware 
    15131340endef 
    15141341 
  • branches/backfire/package/mac80211/files/lib/wifi/mac80211.sh

    r26766 r27431  
    458458                                        } 
    459459 
    460                                         iw dev "$ifname" ibss join "$ssid" $freq \ 
     460                                        config_get htmode "$device" htmode 
     461                                        case "$htmode" in 
     462                                                HT20|HT40+|HT40-) ;; 
     463                                                *) htmode= ;; 
     464                                        esac 
     465 
     466                                        iw dev "$ifname" ibss join "$ssid" $freq $htmode \ 
    461467                                                ${fixed:+fixed-freq} $bssid \ 
    462468                                                ${beacon_int:+beacon-interval $beacon_int} \ 
  • branches/backfire/package/mac80211/patches/001-disable_b44.patch

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -311,8 +311,8 @@ endif #CONFIG_SSB 
     3@@ -337,8 +337,8 @@ CONFIG_BCMA_HOST_PCI=y 
    44  
    55 CONFIG_P54_PCI=m 
  • branches/backfire/package/mac80211/patches/002-disable_rfkill.patch

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -74,7 +74,7 @@ endif # build check 
     3@@ -87,7 +87,7 @@ endif # build check 
    44 endif # kernel Makefile check 
    55  
     
    1010 ifeq ($(CONFIG_MAC80211),y) 
    1111 $(error "ERROR: you have MAC80211 compiled into the kernel, CONFIG_MAC80211=y, as such you cannot replace its mac80211 driver. You need this set to CONFIG_MAC80211=m. If you are using Fedora upgrade your kernel as later version should this set as modular. For further information on Fedora see https://bugzilla.redhat.com/show_bug.cgi?id=470143. If you are using your own kernel recompile it and make mac80211 modular") 
    12 @@ -614,10 +614,10 @@ endif #CONFIG_COMPAT_KERNEL_27 
     12@@ -646,10 +646,10 @@ endif #CONFIG_COMPAT_KERNEL_2_6_27 
    1313 # We need the backported rfkill module on kernel < 2.6.31. 
    1414 # In more recent kernel versions use the in kernel rfkill module. 
    15  ifdef CONFIG_COMPAT_KERNEL_31 
     15 ifdef CONFIG_COMPAT_KERNEL_2_6_31 
    1616-CONFIG_RFKILL_BACKPORT=m 
    1717+# CONFIG_RFKILL_BACKPORT=m 
     
    2222-CONFIG_RFKILL_BACKPORT_INPUT=y 
    2323+# CONFIG_RFKILL_BACKPORT_INPUT=y 
    24  endif #CONFIG_COMPAT_KERNEL_31 
     24 endif #CONFIG_COMPAT_KERNEL_2_6_31 
    2525  
    2626--- a/include/linux/rfkill.h 
  • branches/backfire/package/mac80211/patches/003-disable_bt.patch

    r23107 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -96,8 +96,8 @@ ifndef CONFIG_COMPAT_KERNEL_27 
     3@@ -109,8 +109,8 @@ ifndef CONFIG_COMPAT_KERNEL_2_6_27 
    44 ifeq ($(CONFIG_BT),y) 
    55 # we'll ignore compiling bluetooth 
     
    1010+# CONFIG_COMPAT_BLUETOOTH_MODULES=m 
    1111 endif 
    12  endif #CONFIG_COMPAT_KERNEL_27 
     12 endif #CONFIG_COMPAT_KERNEL_2_6_27 
    1313  
  • branches/backfire/package/mac80211/patches/005-disable_ssb_build.patch

    r26763 r27431  
    55  
    66 obj-$(CONFIG_COMPAT_NETWORK_MODULES) += drivers/net/ 
    7 -obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/ssb/ drivers/misc/eeprom/ 
    8 +obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/misc/eeprom/ 
     7-obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/ssb/ drivers/bcma/ drivers/misc/eeprom/ 
     8+obj-$(CONFIG_COMPAT_VAR_MODULES) +=  drivers/bcma/ drivers/misc/eeprom/ 
    99  
    1010 ifeq ($(CONFIG_STAGING_EXCLUDE_BUILD),) 
     
    2020 include $(KLIB_BUILD)/.config 
    2121 endif 
    22 @@ -295,19 +294,18 @@ CONFIG_IPW2200_QOS=y 
     22@@ -314,7 +313,8 @@ CONFIG_IPW2200_QOS=y 
    2323 # % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface 
    2424 endif #CONFIG_WIRELESS_EXT 
    2525  
    2626-ifdef CONFIG_SSB 
    27 -# Sonics Silicon Backplane 
    28 -CONFIG_SSB_SPROM=y 
    29 - 
    30 -CONFIG_SSB_BLOCKIO=y 
    31 -CONFIG_SSB_PCIHOST=y 
    32 -CONFIG_SSB_B43_PCI_BRIDGE=y 
    33 -ifdef CONFIG_PCMCIA 
    34 -CONFIG_SSB_PCMCIAHOST=y 
    35 -endif #CONFIG_PCMCIA 
    36 -# CONFIG_SSB_DEBUG=y 
    37 -CONFIG_SSB_DRIVER_PCICORE=y 
     27+# disabled 
     28+ifdef __CONFIG_SSB 
     29 # Sonics Silicon Backplane 
     30 CONFIG_SSB_SPROM=y 
     31  
     32@@ -327,7 +327,7 @@ endif #CONFIG_PCMCIA 
     33 # CONFIG_SSB_DEBUG=y 
     34 CONFIG_SSB_DRIVER_PCICORE=y 
     35 CONFIG_B43_SSB=y 
    3836-endif #CONFIG_SSB 
    39 +# ifdef CONFIG_SSB 
    40 +# # Sonics Silicon Backplane 
    41 +# CONFIG_SSB_SPROM=y 
    42 +# CONFIG_SSB_BLOCKIO=y 
    43 +# CONFIG_SSB_PCIHOST=y 
    44 +# CONFIG_SSB_B43_PCI_BRIDGE=y 
    45 +# ifdef CONFIG_PCMCIA 
    46 +# CONFIG_SSB_PCMCIAHOST=y 
    47 +# endif #CONFIG_PCMCIA 
    48 +# # CONFIG_SSB_DEBUG=y 
    49 +# CONFIG_SSB_DRIVER_PCICORE=y 
    50 +# endif #CONFIG_SSB 
     37+endif #__CONFIG_SSB 
    5138  
    52  CONFIG_P54_PCI=m 
    53   
    54 @@ -502,7 +500,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
     39 CONFIG_BCMA=m 
     40 CONFIG_BCMA_BLOCKIO=y 
     41@@ -534,7 +534,6 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
    5542  
    5643 ifdef CONFIG_MMC 
  • branches/backfire/package/mac80211/patches/007-remove_misc_drivers.patch

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -199,7 +199,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT 
     3@@ -212,7 +212,7 @@ $(warning "WARNING: CONFIG_CFG80211_WEXT 
    44 endif #CONFIG_WIRELESS_EXT 
    55  
    66 ifdef CONFIG_STAGING 
    7 -CONFIG_COMPAT_STAGING=y 
    8 +# CONFIG_COMPAT_STAGING=y 
     7-CONFIG_COMPAT_STAGING=m 
     8+# CONFIG_COMPAT_STAGING=m 
    99 endif #CONFIG_STAGING 
    1010  
    1111 # mac80211 test driver 
    12 @@ -337,13 +337,13 @@ endif #CONFIG_CRC_ITU_T 
     12@@ -365,13 +365,13 @@ endif #CONFIG_CRC_ITU_T 
    1313 CONFIG_MWL8K=m 
    1414  
     
    2020+# CONFIG_ATL2=m 
    2121+# CONFIG_ATL1E=m 
    22  ifdef CONFIG_COMPAT_KERNEL_27 
     22 ifdef CONFIG_COMPAT_KERNEL_2_6_27 
    2323-CONFIG_ATL1C=n 
    2424+# CONFIG_ATL1C=n 
    25  else #CONFIG_COMPAT_KERNEL_27 
     25 else #CONFIG_COMPAT_KERNEL_2_6_27 
    2626-CONFIG_ATL1C=m 
    2727+# CONFIG_ATL1C=m 
    28  endif #CONFIG_COMPAT_KERNEL_27 
     28 endif #CONFIG_COMPAT_KERNEL_2_6_27 
    2929  
    3030 ifdef CONFIG_WIRELESS_EXT 
    31 @@ -398,21 +398,21 @@ endif #CONFIG_COMPAT_KERNEL_29 
     31@@ -431,21 +431,21 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 
    3232 # Note: this depends on CONFIG_USB_NET_RNDIS_HOST and CONFIG_USB_NET_CDCETHER 
    3333 # it also requires new RNDIS_HOST and CDC_ETHER modules which we add 
    34  ifdef CONFIG_COMPAT_KERNEL_29 
     34 ifdef CONFIG_COMPAT_KERNEL_2_6_29 
    3535-CONFIG_USB_COMPAT_USBNET=n 
    3636-CONFIG_USB_NET_COMPAT_RNDIS_HOST=n 
     
    4141+# CONFIG_USB_NET_COMPAT_RNDIS_WLAN=n 
    4242+# CONFIG_USB_NET_COMPAT_CDCETHER=n 
    43  else #CONFIG_COMPAT_KERNEL_29 
     43 else #CONFIG_COMPAT_KERNEL_2_6_29 
    4444-CONFIG_USB_COMPAT_USBNET=m 
    4545+# CONFIG_USB_COMPAT_USBNET=m 
     
    5858-CONFIG_USB_NET_COMPAT_CDCETHER=m 
    5959+# CONFIG_USB_NET_COMPAT_CDCETHER=m 
    60  endif #CONFIG_COMPAT_KERNEL_29 
     60 endif #CONFIG_COMPAT_KERNEL_2_6_29 
    6161  
    6262  
  • branches/backfire/package/mac80211/patches/009-remove_mac80211_module_dependence.patch

    r23107 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -42,23 +42,6 @@ $(error "ERROR: Your 2.6.27 kernel has C 
     3@@ -50,23 +50,6 @@ $(error "ERROR: Your 2.6.27 kernel has C 
    44 endif 
    55 endif 
     
    1616-# In kernel 2.6.32 both attributes were removed. 
    1717-# 
    18 -ifeq ($(shell test $(KERNEL_SUBLEVEL) -ge 27 -a $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes) 
     18-ifeq ($(shell test $(KERNEL_VERSION) -eq 2 -a $(KERNEL_SUBLEVEL) -ge 27 -a $(KERNEL_SUBLEVEL) -le 31 && echo yes),yes) 
    1919-ifeq ($(CONFIG_MAC80211),) 
    2020-$(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.") 
     
    2424 ifneq ($(KERNELRELEASE),) # This prevents a warning 
    2525  
    26  ifeq ($(CONFIG_NET_SCHED),) 
     26 # We will warn when you don't have MQ support or NET_SCHED enabled. 
  • branches/backfire/package/mac80211/patches/010-no_pcmcia.patch

    r26763 r27431  
    1010 include $(KLIB_BUILD)/.config 
    1111 endif 
    12 @@ -229,7 +229,7 @@ CONFIG_B43=m 
     12@@ -247,7 +247,7 @@ CONFIG_B43=m 
    1313 CONFIG_B43_HWRNG=y 
    1414 CONFIG_B43_PCI_AUTOSELECT=y 
  • branches/backfire/package/mac80211/patches/011-no_sdio.patch

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -483,7 +483,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
     3@@ -517,7 +517,7 @@ endif #CONFIG_SPI_MASTER end of SPI driv 
    44  
    55 ifdef CONFIG_MMC 
  • branches/backfire/package/mac80211/patches/013-disable_b43_nphy.patch

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -235,7 +235,7 @@ ifdef CONFIG_MAC80211_LEDS 
     3@@ -253,7 +253,7 @@ ifdef CONFIG_MAC80211_LEDS 
    44 CONFIG_B43_LEDS=y 
    55 endif #CONFIG_MAC80211_LEDS 
     
    77-CONFIG_B43_PHY_N=y 
    88+# CONFIG_B43_PHY_N=y 
     9 # CONFIG_B43_PHY_HT=y 
    910 # CONFIG_B43_FORCE_PIO=y 
    1011 # CONFIG_B43_DEBUG=y 
    11   
  • branches/backfire/package/mac80211/patches/015-remove-rt2x00-options.patch

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -299,7 +299,7 @@ CONFIG_RTL8180=m 
     3@@ -327,7 +327,7 @@ CONFIG_RTL8180=m 
    44  
    55 CONFIG_ADM8211=m 
     
    1010 CONFIG_RT2500PCI=m 
    1111 ifdef CONFIG_CRC_CCITT 
    12 @@ -432,7 +432,7 @@ CONFIG_RT2800USB=m 
    13  # CONFIG_RT2800USB_RT35XX=y 
     12@@ -466,7 +466,7 @@ CONFIG_RT2800USB_RT35XX=y 
     13 # CONFIG_RT2800USB_RT53XX=y 
    1414 CONFIG_RT2800USB_UNKNOWN=y 
    1515 endif #CONFIG_CRC_CCITT 
  • branches/backfire/package/mac80211/patches/016-remove_pid_algo.patch

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

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -202,7 +202,7 @@ CONFIG_ATH9K_COMMON=m 
     3@@ -219,7 +219,7 @@ CONFIG_ATH9K_COMMON=m 
    44 # as default once we get minstrel properly tested and blessed by 
    55 # our systems engineering team. CCK rates also need to be used 
  • branches/backfire/package/mac80211/patches/018-revert_printk_va_format.patch

    r25693 r27431  
    11--- a/drivers/net/wireless/b43/main.c 
    22+++ b/drivers/net/wireless/b43/main.c 
    3 @@ -322,83 +322,59 @@ static int b43_ratelimit(struct b43_wl * 
     3@@ -334,83 +334,59 @@ static int b43_ratelimit(struct b43_wl * 
    44  
    55 void b43info(struct b43_wl *wl, const char *fmt, ...) 
  • branches/backfire/package/mac80211/patches/019-remove_ath5k_pci_option.patch

    r26763 r27431  
    11--- a/config.mk 
    22+++ b/config.mk 
    3 @@ -207,7 +207,7 @@ CONFIG_ATH9K_COMMON=m 
     3@@ -224,7 +224,7 @@ CONFIG_ATH9K_COMMON=m 
    44 # PCI Drivers 
    55 ifdef CONFIG_PCI 
     
    77-CONFIG_ATH5K_PCI=y 
    88+# CONFIG_ATH5K_PCI=y 
    9  CONFIG_ATH9K=m 
     9 CONFIG_ATH9K_PCI=y 
    1010  
    1111 CONFIG_IWLAGN=m 
  • branches/backfire/package/mac80211/patches/030-disable_tty_set_termios.patch

    r26536 r27431  
    11--- a/compat/compat-2.6.39.c 
    22+++ b/compat/compat-2.6.39.c 
    3 @@ -11,6 +11,7 @@ 
    4  #include <linux/compat.h> 
     3@@ -12,6 +12,7 @@ 
    54 #include <linux/tty.h> 
     5 #include <linux/sched.h> 
    66  
    77+#ifdef CONFIG_COMPAT_BLUETOOTH 
     
    99 /* 
    1010  *             Termios Helper Methods 
    11 @@ -110,4 +111,4 @@ int tty_set_termios(struct tty_struct *t 
     11@@ -111,4 +112,4 @@ int tty_set_termios(struct tty_struct *t 
    1212 } 
    1313 EXPORT_SYMBOL_GPL(tty_set_termios); 
  • branches/backfire/package/mac80211/patches/110-disable_usb_compat.patch

    r26763 r27431  
    3434--- a/config.mk 
    3535+++ b/config.mk 
    36 @@ -419,7 +419,7 @@ endif #CONFIG_COMPAT_KERNEL_29 
     36@@ -452,7 +452,7 @@ endif #CONFIG_COMPAT_KERNEL_2_6_29 
    3737 # This activates a threading fix for usb urb. 
    3838 # this is mainline commit: b3e670443b7fb8a2d29831b62b44a039c283e351 
  • branches/backfire/package/mac80211/patches/120-pr_fmt_warnings.patch

    r25966 r27431  
    9999  
    100100 #include <linux/kernel.h> 
     101--- a/drivers/net/wireless/libertas/cfg.c 
     102+++ b/drivers/net/wireless/libertas/cfg.c 
     103@@ -6,6 +6,7 @@ 
     104  * 
     105  */ 
     106  
     107+#undef pr_fmt 
     108 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     109  
     110 #include <linux/sched.h> 
     111--- a/drivers/net/wireless/libertas/if_cs.c 
     112+++ b/drivers/net/wireless/libertas/if_cs.c 
     113@@ -21,6 +21,7 @@ 
     114  
     115 */ 
     116  
     117+#undef pr_fmt 
     118 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     119  
     120 #include <linux/module.h> 
     121--- a/drivers/net/wireless/libertas/if_sdio.c 
     122+++ b/drivers/net/wireless/libertas/if_sdio.c 
     123@@ -26,6 +26,7 @@ 
     124  * if_sdio_card_to_host() to pad the data. 
     125  */ 
     126  
     127+#undef pr_fmt 
     128 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     129  
     130 #include <linux/kernel.h> 
     131--- a/drivers/net/wireless/libertas/if_spi.c 
     132+++ b/drivers/net/wireless/libertas/if_spi.c 
     133@@ -17,6 +17,7 @@ 
     134  * (at your option) any later version. 
     135  */ 
     136  
     137+#undef pr_fmt 
     138 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     139  
     140 #include <linux/moduleparam.h> 
     141--- a/drivers/net/wireless/libertas/if_usb.c 
     142+++ b/drivers/net/wireless/libertas/if_usb.c 
     143@@ -2,6 +2,7 @@ 
     144  * This file contains functions used in USB interface module. 
     145  */ 
     146  
     147+#undef pr_fmt 
     148 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     149  
     150 #include <linux/delay.h> 
     151--- a/drivers/net/wireless/libertas/main.c 
     152+++ b/drivers/net/wireless/libertas/main.c 
     153@@ -4,6 +4,7 @@ 
     154  * thread etc.. 
     155  */ 
     156  
     157+#undef pr_fmt 
     158 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     159  
     160 #include <linux/moduleparam.h> 
     161--- a/drivers/net/wireless/libertas/mesh.c 
     162+++ b/drivers/net/wireless/libertas/mesh.c 
     163@@ -1,3 +1,4 @@ 
     164+#undef pr_fmt 
     165 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     166  
     167 #include <linux/delay.h> 
     168--- a/drivers/net/wireless/libertas/rx.c 
     169+++ b/drivers/net/wireless/libertas/rx.c 
     170@@ -2,6 +2,7 @@ 
     171  * This file contains the handling of RX in wlan driver. 
     172  */ 
     173  
     174+#undef pr_fmt 
     175 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 
     176  
     177 #include <linux/etherdevice.h> 
  • branches/backfire/package/mac80211/patches/300-pending_work.patch

    r26820 r27431  
    1 --- a/net/wireless/reg.c 
    2 +++ b/net/wireless/reg.c 
    3 @@ -1456,7 +1456,8 @@ static void reg_process_hint(struct regu 
    4          * We only time out user hints, given that they should be the only 
    5          * source of bogus requests. 
     1--- a/net/mac80211/agg-rx.c 
     2+++ b/net/mac80211/agg-rx.c 
     3@@ -176,6 +176,8 @@ static void ieee80211_send_addba_resp(st 
     4                memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN); 
     5        else if (sdata->vif.type == NL80211_IFTYPE_STATION) 
     6                memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN); 
     7+       else if (sdata->vif.type == NL80211_IFTYPE_WDS) 
     8+               memcpy(mgmt->bssid, da, ETH_ALEN); 
     9  
     10        mgmt->frame_control = cpu_to_le16(IEEE80211_FTYPE_MGMT | 
     11                                          IEEE80211_STYPE_ACTION); 
     12@@ -262,7 +264,11 @@ void ieee80211_process_addba_request(str 
     13                                "%pM on tid %u\n", 
     14                                mgmt->sa, tid); 
     15 #endif /* CONFIG_MAC80211_HT_DEBUG */ 
     16-               goto end; 
     17+ 
     18+               /* delete existing Rx BA session on the same tid */ 
     19+               ___ieee80211_stop_rx_ba_session(sta, tid, WLAN_BACK_RECIPIENT, 
     20+                                               WLAN_STATUS_UNSPECIFIED_QOS, 
     21+                                               false); 
     22        } 
     23  
     24        /* prepare A-MPDU MLME for Rx aggregation */ 
     25--- a/net/mac80211/agg-tx.c 
     26+++ b/net/mac80211/agg-tx.c 
     27@@ -79,7 +79,8 @@ static void ieee80211_send_addba_request 
     28        memcpy(mgmt->da, da, ETH_ALEN); 
     29        memcpy(mgmt->sa, sdata->vif.addr, ETH_ALEN); 
     30        if (sdata->vif.type == NL80211_IFTYPE_AP || 
     31-           sdata->vif.type == NL80211_IFTYPE_AP_VLAN) 
     32+           sdata->vif.type == NL80211_IFTYPE_AP_VLAN || 
     33+           sdata->vif.type == NL80211_IFTYPE_WDS) 
     34                memcpy(mgmt->bssid, sdata->vif.addr, ETH_ALEN); 
     35        else if (sdata->vif.type == NL80211_IFTYPE_STATION) 
     36                memcpy(mgmt->bssid, sdata->u.mgd.bssid, ETH_ALEN); 
     37@@ -398,7 +399,8 @@ int ieee80211_start_tx_ba_session(struct 
    638         */ 
    7 -       if (reg_request->initiator == NL80211_REGDOM_SET_BY_USER) 
    8 +       if (r != -EALREADY && 
    9 +           reg_request->initiator == NL80211_REGDOM_SET_BY_USER) 
    10                 schedule_delayed_work(&reg_timeout, msecs_to_jiffies(3142)); 
     39        if (sdata->vif.type != NL80211_IFTYPE_STATION && 
     40            sdata->vif.type != NL80211_IFTYPE_AP_VLAN && 
     41-           sdata->vif.type != NL80211_IFTYPE_AP) 
     42+           sdata->vif.type != NL80211_IFTYPE_AP && 
     43+           sdata->vif.type != NL80211_IFTYPE_WDS) 
     44                return -EINVAL; 
     45  
     46        if (test_sta_flags(sta, WLAN_STA_BLOCK_BA)) { 
     47--- a/net/mac80211/debugfs_sta.c 
     48+++ b/net/mac80211/debugfs_sta.c 
     49@@ -59,7 +59,7 @@ static ssize_t sta_flags_read(struct fil 
     50        char buf[100]; 
     51        struct sta_info *sta = file->private_data; 
     52        u32 staflags = get_sta_flags(sta); 
     53-       int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s%s", 
     54+       int res = scnprintf(buf, sizeof(buf), "%s%s%s%s%s%s%s%s", 
     55                staflags & WLAN_STA_AUTH ? "AUTH\n" : "", 
     56                staflags & WLAN_STA_ASSOC ? "ASSOC\n" : "", 
     57                staflags & WLAN_STA_PS_STA ? "PS (sta)\n" : "", 
     58@@ -67,7 +67,6 @@ static ssize_t sta_flags_read(struct fil 
     59                staflags & WLAN_STA_AUTHORIZED ? "AUTHORIZED\n" : "", 
     60                staflags & WLAN_STA_SHORT_PREAMBLE ? "SHORT PREAMBLE\n" : "", 
     61                staflags & WLAN_STA_WME ? "WME\n" : "", 
     62-               staflags & WLAN_STA_WDS ? "WDS\n" : "", 
     63                staflags & WLAN_STA_MFP ? "MFP\n" : ""); 
     64        return simple_read_from_buffer(userbuf, count, ppos, buf, res); 
    1165 } 
    12   
    13 --- a/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
    14 +++ b/drivers/net/wireless/ath/ath9k/ar9003_calib.c 
    15 @@ -18,13 +18,13 @@ 
    16  #include "hw-ops.h" 
    17  #include "ar9003_phy.h" 
    18   
    19 -#define MPASS  3 
    20  #define MAX_MEASUREMENT        8 
    21 -#define MAX_DIFFERENCE 10 
    22 +#define MAX_MAG_DELTA  11 
    23 +#define MAX_PHS_DELTA  10 
    24   
    25  struct coeff { 
    26 -       int mag_coeff[AR9300_MAX_CHAINS][MAX_MEASUREMENT][MPASS]; 
    27 -       int phs_coeff[AR9300_MAX_CHAINS][MAX_MEASUREMENT][MPASS]; 
    28 +       int mag_coeff[AR9300_MAX_CHAINS][MAX_MEASUREMENT]; 
    29 +       int phs_coeff[AR9300_MAX_CHAINS][MAX_MEASUREMENT]; 
    30         int iqc_coeff[2]; 
    31  }; 
    32   
    33 @@ -608,36 +608,48 @@ static bool ar9003_hw_calc_iq_corr(struc 
    34         return true; 
    35  } 
    36   
    37 -static bool ar9003_hw_compute_closest_pass_and_avg(int *mp_coeff, int *mp_avg) 
    38 +static void ar9003_hw_detect_outlier(int *mp_coeff, int nmeasurement, 
    39 +                                    int max_delta) 
     66--- a/net/mac80211/iface.c 
     67+++ b/net/mac80211/iface.c 
     68@@ -178,7 +178,6 @@ static int ieee80211_do_open(struct net_ 
    4069 { 
    41 -       int diff[MPASS]; 
    42 - 
    43 -       diff[0] = abs(mp_coeff[0] - mp_coeff[1]); 
    44 -       diff[1] = abs(mp_coeff[1] - mp_coeff[2]); 
    45 -       diff[2] = abs(mp_coeff[2] - mp_coeff[0]); 
    46 - 
    47 -       if (diff[0] > MAX_DIFFERENCE && 
    48 -           diff[1] > MAX_DIFFERENCE && 
    49 -           diff[2] > MAX_DIFFERENCE) 
    50 -               return false; 
    51 - 
    52 -       if (diff[0] <= diff[1] && diff[0] <= diff[2]) 
    53 -               *mp_avg = (mp_coeff[0] + mp_coeff[1]) / 2; 
    54 -       else if (diff[1] <= diff[2]) 
    55 -               *mp_avg = (mp_coeff[1] + mp_coeff[2]) / 2; 
    56 -       else 
    57 -               *mp_avg = (mp_coeff[2] + mp_coeff[0]) / 2; 
    58 +       int mp_max = -64, max_idx = 0; 
    59 +       int mp_min = 63, min_idx = 0; 
    60 +       int mp_avg = 0, i, outlier_idx = 0; 
    61 + 
    62 +       /* find min/max mismatch across all calibrated gains */ 
    63 +       for (i = 0; i < nmeasurement; i++) { 
    64 +               mp_avg += mp_coeff[i]; 
    65 +               if (mp_coeff[i] > mp_max) { 
    66 +                       mp_max = mp_coeff[i]; 
    67 +                       max_idx = i; 
    68 +               } else if (mp_coeff[i] < mp_min) { 
    69 +                       mp_min = mp_coeff[i]; 
    70 +                       min_idx = i; 
    71 +               } 
    72 +       } 
    73   
    74 -       return true; 
    75 +       /* find average (exclude max abs value) */ 
    76 +       for (i = 0; i < nmeasurement; i++) { 
    77 +               if ((abs(mp_coeff[i]) < abs(mp_max)) || 
    78 +                   (abs(mp_coeff[i]) < abs(mp_min))) 
    79 +                       mp_avg += mp_coeff[i]; 
    80 +       } 
    81 +       mp_avg /= (nmeasurement - 1); 
    82 + 
    83 +       /* detect outlier */ 
    84 +       if (abs(mp_max - mp_min) > max_delta) { 
    85 +               if (abs(mp_max - mp_avg) > abs(mp_min - mp_avg)) 
    86 +                       outlier_idx = max_idx; 
    87 +               else 
    88 +                       outlier_idx = min_idx; 
    89 +       } 
    90 +       mp_coeff[outlier_idx] = mp_avg; 
    91  } 
    92   
    93  static void ar9003_hw_tx_iqcal_load_avg_2_passes(struct ath_hw *ah, 
    94                                                  u8 num_chains, 
    95                                                  struct coeff *coeff) 
    96  { 
    97 -       struct ath_common *common = ath9k_hw_common(ah); 
    98         int i, im, nmeasurement; 
    99 -       int magnitude, phase; 
    100         u32 tx_corr_coeff[MAX_MEASUREMENT][AR9300_MAX_CHAINS]; 
    101   
    102         memset(tx_corr_coeff, 0, sizeof(tx_corr_coeff)); 
    103 @@ -657,37 +669,28 @@ static void ar9003_hw_tx_iqcal_load_avg_ 
    104   
    105         /* Load the average of 2 passes */ 
    106         for (i = 0; i < num_chains; i++) { 
    107 -               if (AR_SREV_9485(ah)) 
    108 -                       nmeasurement = REG_READ_FIELD(ah, 
    109 -                                       AR_PHY_TX_IQCAL_STATUS_B0_9485, 
    110 -                                       AR_PHY_CALIBRATED_GAINS_0); 
    111 -               else 
    112 -                       nmeasurement = REG_READ_FIELD(ah, 
    113 -                                       AR_PHY_TX_IQCAL_STATUS_B0, 
    114 -                                       AR_PHY_CALIBRATED_GAINS_0); 
    115 +               nmeasurement = REG_READ_FIELD(ah, 
    116 +                               AR_PHY_TX_IQCAL_STATUS_B0, 
    117 +                               AR_PHY_CALIBRATED_GAINS_0); 
    118   
    119                 if (nmeasurement > MAX_MEASUREMENT) 
    120                         nmeasurement = MAX_MEASUREMENT; 
    121   
    122 -               for (im = 0; im < nmeasurement; im++) { 
    123 -                       /* 
    124 -                        * Determine which 2 passes are closest and compute avg 
    125 -                        * magnitude 
    126 -                        */ 
    127 -                       if (!ar9003_hw_compute_closest_pass_and_avg(coeff->mag_coeff[i][im], 
    128 -                                                                   &magnitude)) 
    129 -                               goto disable_txiqcal; 
    130 +               /* detect outlier only if nmeasurement > 1 */ 
    131 +               if (nmeasurement > 1) { 
    132 +                       /* Detect magnitude outlier */ 
    133 +                       ar9003_hw_detect_outlier(coeff->mag_coeff[i], 
    134 +                                       nmeasurement, MAX_MAG_DELTA); 
    135 + 
    136 +                       /* Detect phase outlier */ 
    137 +                       ar9003_hw_detect_outlier(coeff->phs_coeff[i], 
    138 +                                       nmeasurement, MAX_PHS_DELTA); 
    139 +               } 
    140   
    141 -                       /* 
    142 -                        * Determine which 2 passes are closest and compute avg 
    143 -                        * phase 
    144 -                        */ 
    145 -                       if (!ar9003_hw_compute_closest_pass_and_avg(coeff->phs_coeff[i][im], 
    146 -                                                                   &phase)) 
    147 -                               goto disable_txiqcal; 
    148 +               for (im = 0; im < nmeasurement; im++) { 
    149   
    150 -                       coeff->iqc_coeff[0] = (magnitude & 0x7f) | 
    151 -                                             ((phase & 0x7f) << 7); 
    152 +                       coeff->iqc_coeff[0] = (coeff->mag_coeff[i][im] & 0x7f) | 
    153 +                               ((coeff->phs_coeff[i][im] & 0x7f) << 7); 
    154   
    155                         if ((im % 2) == 0) 
    156                                 REG_RMW_FIELD(ah, tx_corr_coeff[im][i], 
    157 @@ -707,141 +710,37 @@ static void ar9003_hw_tx_iqcal_load_avg_ 
    158   
    159         return; 
    160   
    161 -disable_txiqcal: 
    162 -       REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_3, 
    163 -                     AR_PHY_TX_IQCAL_CONTROL_3_IQCORR_EN, 0x0); 
    164 -       REG_RMW_FIELD(ah, AR_PHY_RX_IQCAL_CORR_B0, 
    165 -                     AR_PHY_RX_IQCAL_CORR_B0_LOOPBACK_IQCORR_EN, 0x0); 
    166 - 
    167 -       ath_dbg(common, ATH_DBG_CALIBRATE, "TX IQ Cal disabled\n"); 
    168  } 
    169   
    170 -static void ar9003_hw_tx_iq_cal(struct ath_hw *ah) 
    171 +static bool ar9003_hw_tx_iq_cal_run(struct ath_hw *ah) 
    172  { 
    173         struct ath_common *common = ath9k_hw_common(ah); 
    174 -       static const u32 txiqcal_status[AR9300_MAX_CHAINS] = { 
    175 -               AR_PHY_TX_IQCAL_STATUS_B0, 
    176 -               AR_PHY_TX_IQCAL_STATUS_B1, 
    177 -               AR_PHY_TX_IQCAL_STATUS_B2, 
    178 -       }; 
    179 -       static const u32 chan_info_tab[] = { 
    180 -               AR_PHY_CHAN_INFO_TAB_0, 
    181 -               AR_PHY_CHAN_INFO_TAB_1, 
    182 -               AR_PHY_CHAN_INFO_TAB_2, 
    183 -       }; 
    184 -       struct coeff coeff; 
    185 -       s32 iq_res[6]; 
    186 -       s32 i, j, ip, im, nmeasurement; 
    187 -       u8 nchains = get_streams(common->tx_chainmask); 
    188 - 
    189 -       for (ip = 0; ip < MPASS; ip++) { 
    190 -               REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_1, 
    191 -                             AR_PHY_TX_IQCAQL_CONTROL_1_IQCORR_I_Q_COFF_DELPT, 
    192 -                             DELPT); 
    193 -               REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_START, 
    194 -                             AR_PHY_TX_IQCAL_START_DO_CAL, 
    195 -                             AR_PHY_TX_IQCAL_START_DO_CAL); 
    196 - 
    197 -               if (!ath9k_hw_wait(ah, AR_PHY_TX_IQCAL_START, 
    198 -                                  AR_PHY_TX_IQCAL_START_DO_CAL, 
    199 -                                  0, AH_WAIT_TIMEOUT)) { 
    200 -                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    201 -                               "Tx IQ Cal not complete.\n"); 
    202 -                       goto TX_IQ_CAL_FAILED; 
     70        struct ieee80211_sub_if_data *sdata = IEEE80211_DEV_TO_SUB_IF(dev); 
     71        struct ieee80211_local *local = sdata->local; 
     72-       struct sta_info *sta; 
     73        u32 changed = 0; 
     74        int res; 
     75        u32 hw_reconf_flags = 0; 
     76@@ -290,27 +289,6 @@ static int ieee80211_do_open(struct net_ 
     77  
     78        set_bit(SDATA_STATE_RUNNING, &sdata->state); 
     79  
     80-       if (sdata->vif.type == NL80211_IFTYPE_WDS) { 
     81-               /* Create STA entry for the WDS peer */ 
     82-               sta = sta_info_alloc(sdata, sdata->u.wds.remote_addr, 
     83-                                    GFP_KERNEL); 
     84-               if (!sta) { 
     85-                       res = -ENOMEM; 
     86-                       goto err_del_interface; 
    20387-               } 
    20488- 
    205 -               nmeasurement = REG_READ_FIELD(ah, AR_PHY_TX_IQCAL_STATUS_B0, 
    206 -                                             AR_PHY_CALIBRATED_GAINS_0); 
    207 -                       if (nmeasurement > MAX_MEASUREMENT) 
    208 -                               nmeasurement = MAX_MEASUREMENT; 
     89-               /* no locking required since STA is not live yet */ 
     90-               sta->flags |= WLAN_STA_AUTHORIZED; 
    20991- 
    210 -               for (i = 0; i < nchains; i++) { 
    211 -                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    212 -                               "Doing Tx IQ Cal for chain %d.\n", i); 
    213 -                       for (im = 0; im < nmeasurement; im++) { 
    214 -                               if (REG_READ(ah, txiqcal_status[i]) & 
    215 -                                            AR_PHY_TX_IQCAL_STATUS_FAILED) { 
    216 -                                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    217 -                                               "Tx IQ Cal failed for chain %d.\n", i); 
    218 -                                       goto TX_IQ_CAL_FAILED; 
    219 -                               } 
     92-               res = sta_info_insert(sta); 
     93-               if (res) { 
     94-                       /* STA has been freed */ 
     95-                       goto err_del_interface; 
     96-               } 
    22097- 
    221 -                               for (j = 0; j < 3; j++) { 
    222 -                                       u8 idx = 2 * j, 
    223 -                                          offset = 4 * (3 * im + j); 
    224 - 
    225 -                                       REG_RMW_FIELD(ah, AR_PHY_CHAN_INFO_MEMORY, 
    226 -                                                     AR_PHY_CHAN_INFO_TAB_S2_READ, 
    227 -                                                     0); 
    228 - 
    229 -                                       /* 32 bits */ 
    230 -                                       iq_res[idx] = REG_READ(ah, 
    231 -                                                       chan_info_tab[i] + 
    232 -                                                       offset); 
    233 - 
    234 -                                       REG_RMW_FIELD(ah, AR_PHY_CHAN_INFO_MEMORY, 
    235 -                                                     AR_PHY_CHAN_INFO_TAB_S2_READ, 
    236 -                                                     1); 
    237 - 
    238 -                                       /* 16 bits */ 
    239 -                                       iq_res[idx+1] = 0xffff & REG_READ(ah, 
    240 -                                                               chan_info_tab[i] + 
    241 -                                                               offset); 
    242 - 
    243 -                                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    244 -                                               "IQ RES[%d]=0x%x IQ_RES[%d]=0x%x\n", 
    245 -                                               idx, iq_res[idx], idx+1, iq_res[idx+1]); 
    246 -                               } 
    247 - 
    248 -                               if (!ar9003_hw_calc_iq_corr(ah, i, iq_res, 
    249 -                                                           coeff.iqc_coeff)) { 
    250 -                                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    251 -                                               "Failed in calculation of IQ correction.\n"); 
    252 -                                       goto TX_IQ_CAL_FAILED; 
    253 -                               } 
    254 -                               coeff.mag_coeff[i][im][ip] = 
    255 -                                               coeff.iqc_coeff[0] & 0x7f; 
    256 -                               coeff.phs_coeff[i][im][ip] = 
    257 -                                               (coeff.iqc_coeff[0] >> 7) & 0x7f; 
    258 - 
    259 -                               if (coeff.mag_coeff[i][im][ip] > 63) 
    260 -                                       coeff.mag_coeff[i][im][ip] -= 128; 
    261 -                               if (coeff.phs_coeff[i][im][ip] > 63) 
    262 -                                       coeff.phs_coeff[i][im][ip] -= 128; 
    263 - 
    264 -                       } 
    265 -               } 
     98-               rate_control_rate_init(sta); 
    26699-       } 
    267100- 
    268 -       ar9003_hw_tx_iqcal_load_avg_2_passes(ah, nchains, &coeff); 
    269 - 
    270 -       return; 
    271 - 
    272 -TX_IQ_CAL_FAILED: 
    273 -       ath_dbg(common, ATH_DBG_CALIBRATE, "Tx IQ Cal failed\n"); 
    274 -} 
    275 - 
    276 -static void ar9003_hw_tx_iq_cal_run(struct ath_hw *ah) 
    277 -{ 
    278         u8 tx_gain_forced; 
    279   
    280 -       REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_1_9485, 
    281 -                     AR_PHY_TX_IQCAQL_CONTROL_1_IQCORR_I_Q_COFF_DELPT, DELPT); 
    282         tx_gain_forced = REG_READ_FIELD(ah, AR_PHY_TX_FORCED_GAIN, 
    283                                         AR_PHY_TXGAIN_FORCE); 
    284         if (tx_gain_forced) 
    285                 REG_RMW_FIELD(ah, AR_PHY_TX_FORCED_GAIN, 
    286                               AR_PHY_TXGAIN_FORCE, 0); 
    287   
    288 -       REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_START_9485, 
    289 -                     AR_PHY_TX_IQCAL_START_DO_CAL_9485, 1); 
    290 +       REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_START, 
    291 +                     AR_PHY_TX_IQCAL_START_DO_CAL, 1); 
    292 + 
    293 +       if (!ath9k_hw_wait(ah, AR_PHY_TX_IQCAL_START, 
    294 +                       AR_PHY_TX_IQCAL_START_DO_CAL, 0, 
    295 +                       AH_WAIT_TIMEOUT)) { 
    296 +               ath_dbg(common, ATH_DBG_CALIBRATE, 
    297 +                       "Tx IQ Cal is not completed.\n"); 
    298 +               return false; 
     101        /* 
     102         * set_multicast_list will be invoked by the networking core 
     103         * which will check whether any increments here were done in 
     104@@ -344,8 +322,7 @@ static int ieee80211_do_open(struct net_ 
     105        netif_tx_start_all_queues(dev); 
     106  
     107        return 0; 
     108- err_del_interface: 
     109-       drv_remove_interface(local, &sdata->vif); 
     110+ 
     111  err_stop: 
     112        if (!local->open_count) 
     113                drv_stop(local); 
     114@@ -718,6 +695,70 @@ static void ieee80211_if_setup(struct ne 
     115        dev->destructor = free_netdev; 
     116 } 
     117  
     118+static void ieee80211_wds_rx_queued_mgmt(struct ieee80211_sub_if_data *sdata, 
     119+                                        struct sk_buff *skb) 
     120+{ 
     121+       struct ieee80211_local *local = sdata->local; 
     122+       struct ieee80211_rx_status *rx_status; 
     123+       struct ieee802_11_elems elems; 
     124+       struct ieee80211_mgmt *mgmt; 
     125+       struct sta_info *sta; 
     126+       size_t baselen; 
     127+       u32 rates = 0; 
     128+       u16 stype; 
     129+       bool new = false; 
     130+       enum ieee80211_band band = local->hw.conf.channel->band; 
     131+       struct ieee80211_supported_band *sband = local->hw.wiphy->bands[band]; 
     132+ 
     133+       rx_status = IEEE80211_SKB_RXCB(skb); 
     134+       mgmt = (struct ieee80211_mgmt *) skb->data; 
     135+       stype = le16_to_cpu(mgmt->frame_control) & IEEE80211_FCTL_STYPE; 
     136+ 
     137+       if (stype != IEEE80211_STYPE_BEACON) 
     138+               return; 
     139+ 
     140+       baselen = (u8 *) mgmt->u.probe_resp.variable - (u8 *) mgmt; 
     141+       if (baselen > skb->len) 
     142+               return; 
     143+ 
     144+       ieee802_11_parse_elems(mgmt->u.probe_resp.variable, 
     145+                              skb->len - baselen, &elems); 
     146+ 
     147+       rates = ieee80211_sta_get_rates(local, &elems, band); 
     148+ 
     149+       rcu_read_lock(); 
     150+ 
     151+       sta = sta_info_get(sdata, sdata->u.wds.remote_addr); 
     152+ 
     153+       if (!sta) { 
     154+               rcu_read_unlock(); 
     155+               sta = sta_info_alloc(sdata, sdata->u.wds.remote_addr, 
     156+                                    GFP_KERNEL); 
     157+               if (!sta) 
     158+                       return; 
     159+ 
     160+               new = true; 
    299161+       } 
    300 +       return true; 
     162+ 
     163+       sta->last_rx = jiffies; 
     164+       sta->sta.supp_rates[local->hw.conf.channel->band] = rates; 
     165+ 
     166+       if (elems.ht_cap_elem) 
     167+               ieee80211_ht_cap_ie_to_sta_ht_cap(sband, 
     168+                               elems.ht_cap_elem, &sta->sta.ht_cap); 
     169+ 
     170+       if (elems.wmm_param) 
     171+               set_sta_flags(sta, WLAN_STA_WME); 
     172+ 
     173+       if (new) { 
     174+               sta->flags = WLAN_STA_AUTHORIZED; 
     175+               rate_control_rate_init(sta); 
     176+               sta_info_insert_rcu(sta); 
     177+       } 
     178+ 
     179+       rcu_read_unlock(); 
     180+} 
     181+ 
     182 static void ieee80211_iface_work(struct work_struct *work) 
     183 { 
     184        struct ieee80211_sub_if_data *sdata = 
     185@@ -822,6 +863,9 @@ static void ieee80211_iface_work(struct  
     186                                break; 
     187                        ieee80211_mesh_rx_queued_mgmt(sdata, skb); 
     188                        break; 
     189+               case NL80211_IFTYPE_WDS: 
     190+                       ieee80211_wds_rx_queued_mgmt(sdata, skb); 
     191+                       break; 
     192                default: 
     193                        WARN(1, "frame for unexpected interface type"); 
     194                        break; 
     195--- a/net/mac80211/rx.c 
     196+++ b/net/mac80211/rx.c 
     197@@ -2137,7 +2137,8 @@ ieee80211_rx_h_action(struct ieee80211_r 
     198                 */ 
     199                if (sdata->vif.type != NL80211_IFTYPE_STATION && 
     200                    sdata->vif.type != NL80211_IFTYPE_AP_VLAN && 
     201-                   sdata->vif.type != NL80211_IFTYPE_AP) 
     202+                   sdata->vif.type != NL80211_IFTYPE_AP && 
     203+                   sdata->vif.type != NL80211_IFTYPE_WDS) 
     204                        break; 
     205  
     206                /* verify action_code is present */ 
     207@@ -2335,13 +2336,14 @@ ieee80211_rx_h_mgmt(struct ieee80211_rx_ 
     208  
     209        if (!ieee80211_vif_is_mesh(&sdata->vif) && 
     210            sdata->vif.type != NL80211_IFTYPE_ADHOC && 
     211-           sdata->vif.type != NL80211_IFTYPE_STATION) 
     212+           sdata->vif.type != NL80211_IFTYPE_STATION && 
     213+           sdata->vif.type != NL80211_IFTYPE_WDS) 
     214                return RX_DROP_MONITOR; 
     215  
     216        switch (stype) { 
     217        case cpu_to_le16(IEEE80211_STYPE_BEACON): 
     218        case cpu_to_le16(IEEE80211_STYPE_PROBE_RESP): 
     219-               /* process for all: mesh, mlme, ibss */ 
     220+               /* process for all: mesh, mlme, ibss, wds */ 
     221                break; 
     222        case cpu_to_le16(IEEE80211_STYPE_DEAUTH): 
     223        case cpu_to_le16(IEEE80211_STYPE_DISASSOC): 
     224@@ -2680,10 +2682,16 @@ static int prepare_for_handlers(struct i 
     225                } 
     226                break; 
     227        case NL80211_IFTYPE_WDS: 
     228-               if (bssid || !ieee80211_is_data(hdr->frame_control)) 
     229-                       return 0; 
     230                if (compare_ether_addr(sdata->u.wds.remote_addr, hdr->addr2)) 
     231                        return 0; 
     232+ 
     233+               if (ieee80211_is_data(hdr->frame_control) || 
     234+                   ieee80211_is_action(hdr->frame_control)) { 
     235+                       if (compare_ether_addr(sdata->vif.addr, hdr->addr1)) 
     236+                               return 0; 
     237+               } else if (!ieee80211_is_beacon(hdr->frame_control)) 
     238+                       return 0; 
     239+ 
     240                break; 
     241        default: 
     242                /* should never get here */ 
     243--- a/net/mac80211/sta_info.h 
     244+++ b/net/mac80211/sta_info.h 
     245@@ -31,7 +31,6 @@ 
     246  *     frames. 
     247  * @WLAN_STA_ASSOC_AP: We're associated to that station, it is an AP. 
     248  * @WLAN_STA_WME: Station is a QoS-STA. 
     249- * @WLAN_STA_WDS: Station is one of our WDS peers. 
     250  * @WLAN_STA_CLEAR_PS_FILT: Clear PS filter in hardware (using the 
     251  *     IEEE80211_TX_CTL_CLEAR_PS_FILT control flag) when the next 
     252  *     frame to this station is transmitted. 
     253@@ -54,7 +53,6 @@ enum ieee80211_sta_info_flags { 
     254        WLAN_STA_SHORT_PREAMBLE = 1<<4, 
     255        WLAN_STA_ASSOC_AP       = 1<<5, 
     256        WLAN_STA_WME            = 1<<6, 
     257-       WLAN_STA_WDS            = 1<<7, 
     258        WLAN_STA_CLEAR_PS_FILT  = 1<<9, 
     259        WLAN_STA_MFP            = 1<<10, 
     260        WLAN_STA_BLOCK_BA       = 1<<11, 
     261--- a/drivers/net/wireless/ath/ath9k/beacon.c 
     262+++ b/drivers/net/wireless/ath/ath9k/beacon.c 
     263@@ -384,7 +384,9 @@ void ath_beacon_tasklet(unsigned long da 
     264                        ath_dbg(common, ATH_DBG_BSTUCK, 
     265                                "beacon is officially stuck\n"); 
     266                        sc->sc_flags |= SC_OP_TSF_RESET; 
     267+                       spin_lock(&sc->sc_pcu_lock); 
     268                        ath_reset(sc, true); 
     269+                       spin_unlock(&sc->sc_pcu_lock); 
     270                } 
     271  
     272                return; 
     273--- a/drivers/net/wireless/ath/ath9k/main.c 
     274+++ b/drivers/net/wireless/ath/ath9k/main.c 
     275@@ -617,8 +617,11 @@ void ath_hw_check(struct work_struct *wo 
     276        ath_dbg(common, ATH_DBG_RESET, "Possible baseband hang, " 
     277                "busy=%d (try %d)\n", busy, sc->hw_busy_count + 1); 
     278        if (busy >= 99) { 
     279-               if (++sc->hw_busy_count >= 3) 
     280+               if (++sc->hw_busy_count >= 3) { 
     281+                       spin_lock_bh(&sc->sc_pcu_lock); 
     282                        ath_reset(sc, true); 
     283+                       spin_unlock_bh(&sc->sc_pcu_lock); 
     284+               } 
     285        } else if (busy >= 0) 
     286                sc->hw_busy_count = 0; 
     287  
     288@@ -637,7 +640,9 @@ static void ath_hw_pll_rx_hang_check(str 
     289                        /* Rx is hung for more than 500ms. Reset it */ 
     290                        ath_dbg(common, ATH_DBG_RESET, 
     291                                "Possible RX hang, resetting"); 
     292+                       spin_lock_bh(&sc->sc_pcu_lock); 
     293                        ath_reset(sc, true); 
     294+                       spin_unlock_bh(&sc->sc_pcu_lock); 
     295                        count = 0; 
     296                } 
     297        } else 
     298@@ -674,7 +679,9 @@ void ath9k_tasklet(unsigned long data) 
     299  
     300        if ((status & ATH9K_INT_FATAL) || 
     301            (status & ATH9K_INT_BB_WATCHDOG)) { 
     302+               spin_lock(&sc->sc_pcu_lock); 
     303                ath_reset(sc, true); 
     304+               spin_unlock(&sc->sc_pcu_lock); 
     305                return; 
     306        } 
     307  
     308@@ -980,7 +987,6 @@ int ath_reset(struct ath_softc *sc, bool 
     309        del_timer_sync(&common->ani.timer); 
     310  
     311        ath9k_ps_wakeup(sc); 
     312-       spin_lock_bh(&sc->sc_pcu_lock); 
     313  
     314        ieee80211_stop_queues(hw); 
     315  
     316@@ -1023,7 +1029,6 @@ int ath_reset(struct ath_softc *sc, bool 
     317        } 
     318  
     319        ieee80211_wake_queues(hw); 
     320-       spin_unlock_bh(&sc->sc_pcu_lock); 
     321  
     322        /* Start ANI */ 
     323        if (!common->disable_ani) 
     324@@ -2326,9 +2331,9 @@ static void ath9k_flush(struct ieee80211 
     325        ath9k_ps_wakeup(sc); 
     326        spin_lock_bh(&sc->sc_pcu_lock); 
     327        drain_txq = ath_drain_all_txq(sc, false); 
     328-       spin_unlock_bh(&sc->sc_pcu_lock); 
     329        if (!drain_txq) 
     330                ath_reset(sc, false); 
     331+       spin_unlock_bh(&sc->sc_pcu_lock); 
     332        ath9k_ps_restore(sc); 
     333        ieee80211_wake_queues(hw); 
     334  
     335--- a/drivers/net/wireless/ath/ath9k/xmit.c 
     336+++ b/drivers/net/wireless/ath/ath9k/xmit.c 
     337@@ -565,11 +565,8 @@ static void ath_tx_complete_aggr(struct  
     338  
     339        rcu_read_unlock(); 
     340  
     341-       if (needreset) { 
     342-               spin_unlock_bh(&sc->sc_pcu_lock); 
     343+       if (needreset) 
     344                ath_reset(sc, false); 
     345-               spin_lock_bh(&sc->sc_pcu_lock); 
     346-       } 
    301347 } 
    302348  
    303  static void ar9003_hw_tx_iq_cal_post_proc(struct ath_hw *ah) 
     349 static u32 ath_lookup_rate(struct ath_softc *sc, struct ath_buf *bf, 
     350@@ -664,7 +661,8 @@ static int ath_compute_num_delims(struct 
     351         * TODO - this could be improved to be dependent on the rate. 
     352         *      The hardware can keep up at lower rates, but not higher rates 
     353         */ 
     354-       if (fi->keyix != ATH9K_TXKEYIX_INVALID) 
     355+       if ((fi->keyix != ATH9K_TXKEYIX_INVALID) && 
     356+           !(sc->sc_ah->caps.hw_caps & ATH9K_HW_CAP_EDMA)) 
     357                ndelim += ATH_AGGR_ENCRYPTDELIM; 
     358  
     359        /* 
     360@@ -2169,7 +2167,9 @@ static void ath_tx_complete_poll_work(st 
     361        if (needreset) { 
     362                ath_dbg(ath9k_hw_common(sc->sc_ah), ATH_DBG_RESET, 
     363                        "tx hung, resetting the chip\n"); 
     364+               spin_lock_bh(&sc->sc_pcu_lock); 
     365                ath_reset(sc, true); 
     366+               spin_unlock_bh(&sc->sc_pcu_lock); 
     367        } 
     368  
     369        ieee80211_queue_delayed_work(sc->hw, &sc->tx_complete_work, 
     370--- a/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 
     371+++ b/drivers/net/wireless/ath/ath9k/ar9003_paprd.c 
     372@@ -236,7 +236,7 @@ static void ar9003_paprd_get_gain_table( 
     373        memset(entry, 0, sizeof(ah->paprd_gain_table_entries)); 
     374        memset(index, 0, sizeof(ah->paprd_gain_table_index)); 
     375  
     376-       for (i = 0; i < 32; i++) { 
     377+       for (i = 0; i < PAPRD_GAIN_TABLE_ENTRIES; i++) { 
     378                entry[i] = REG_READ(ah, reg); 
     379                index[i] = (entry[i] >> 24) & 0xff; 
     380                reg += 4; 
     381@@ -246,13 +246,13 @@ static void ar9003_paprd_get_gain_table( 
     382 static unsigned int ar9003_get_desired_gain(struct ath_hw *ah, int chain, 
     383                                            int target_power) 
    304384 { 
    305         struct ath_common *common = ath9k_hw_common(ah); 
    306         const u32 txiqcal_status[AR9300_MAX_CHAINS] = { 
    307 -               AR_PHY_TX_IQCAL_STATUS_B0_9485, 
    308 +               AR_PHY_TX_IQCAL_STATUS_B0, 
    309                 AR_PHY_TX_IQCAL_STATUS_B1, 
    310                 AR_PHY_TX_IQCAL_STATUS_B2, 
    311         }; 
    312 @@ -853,7 +752,7 @@ static void ar9003_hw_tx_iq_cal_post_pro 
    313         struct coeff coeff; 
    314         s32 iq_res[6]; 
    315         u8 num_chains = 0; 
    316 -       int i, ip, im, j; 
    317 +       int i, im, j; 
    318         int nmeasurement; 
    319   
    320         for (i = 0; i < AR9300_MAX_CHAINS; i++) { 
    321 @@ -861,71 +760,69 @@ static void ar9003_hw_tx_iq_cal_post_pro 
    322                         num_chains++; 
    323         } 
    324   
    325 -       for (ip = 0; ip < MPASS; ip++) { 
    326 -               for (i = 0; i < num_chains; i++) { 
    327 -                       nmeasurement = REG_READ_FIELD(ah, 
    328 -                                       AR_PHY_TX_IQCAL_STATUS_B0_9485, 
    329 -                                       AR_PHY_CALIBRATED_GAINS_0); 
    330 -                       if (nmeasurement > MAX_MEASUREMENT) 
    331 -                               nmeasurement = MAX_MEASUREMENT; 
    332 +       for (i = 0; i < num_chains; i++) { 
    333 +               nmeasurement = REG_READ_FIELD(ah, 
    334 +                               AR_PHY_TX_IQCAL_STATUS_B0, 
    335 +                               AR_PHY_CALIBRATED_GAINS_0); 
    336 +               if (nmeasurement > MAX_MEASUREMENT) 
    337 +                       nmeasurement = MAX_MEASUREMENT; 
    338 + 
    339 +               for (im = 0; im < nmeasurement; im++) { 
    340 +                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    341 +                               "Doing Tx IQ Cal for chain %d.\n", i); 
    342   
    343 -                       for (im = 0; im < nmeasurement; im++) { 
    344 +                       if (REG_READ(ah, txiqcal_status[i]) & 
    345 +                                       AR_PHY_TX_IQCAL_STATUS_FAILED) { 
    346                                 ath_dbg(common, ATH_DBG_CALIBRATE, 
    347 -                                       "Doing Tx IQ Cal for chain %d.\n", i); 
    348 - 
    349 -                               if (REG_READ(ah, txiqcal_status[i]) & 
    350 -                                   AR_PHY_TX_IQCAL_STATUS_FAILED) { 
    351 -                                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    352                                         "Tx IQ Cal failed for chain %d.\n", i); 
    353 -                                       goto tx_iqcal_fail; 
    354 -                               } 
    355 +                               goto tx_iqcal_fail; 
    356 +                       } 
    357   
    358 -                               for (j = 0; j < 3; j++) { 
    359 -                                       u32 idx = 2 * j, offset = 4 * (3 * im + j); 
    360 +                       for (j = 0; j < 3; j++) { 
    361 +                               u32 idx = 2 * j, offset = 4 * (3 * im + j); 
    362   
    363 -                                       REG_RMW_FIELD(ah, 
    364 +                               REG_RMW_FIELD(ah, 
    365                                                 AR_PHY_CHAN_INFO_MEMORY, 
    366                                                 AR_PHY_CHAN_INFO_TAB_S2_READ, 
    367                                                 0); 
    368   
    369 -                                       /* 32 bits */ 
    370 -                                       iq_res[idx] = REG_READ(ah, 
    371 -                                                       chan_info_tab[i] + 
    372 -                                                       offset); 
    373 +                               /* 32 bits */ 
    374 +                               iq_res[idx] = REG_READ(ah, 
    375 +                                               chan_info_tab[i] + 
    376 +                                               offset); 
    377   
    378 -                                       REG_RMW_FIELD(ah, 
    379 +                               REG_RMW_FIELD(ah, 
    380                                                 AR_PHY_CHAN_INFO_MEMORY, 
    381                                                 AR_PHY_CHAN_INFO_TAB_S2_READ, 
    382                                                 1); 
    383   
    384 -                                       /* 16 bits */ 
    385 -                                       iq_res[idx + 1] = 0xffff & REG_READ(ah, 
    386 -                                                         chan_info_tab[i] + offset); 
    387 - 
    388 -                                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    389 -                                               "IQ RES[%d]=0x%x" 
    390 -                                               "IQ_RES[%d]=0x%x\n", 
    391 -                                               idx, iq_res[idx], idx + 1, 
    392 -                                               iq_res[idx + 1]); 
    393 -                               } 
    394 +                               /* 16 bits */ 
    395 +                               iq_res[idx + 1] = 0xffff & REG_READ(ah, 
    396 +                                               chan_info_tab[i] + offset); 
    397   
    398 -                               if (!ar9003_hw_calc_iq_corr(ah, i, iq_res, 
    399 -                                                           coeff.iqc_coeff)) { 
    400 -                                       ath_dbg(common, ATH_DBG_CALIBRATE, 
    401 -                                        "Failed in calculation of IQ correction.\n"); 
    402 -                                       goto tx_iqcal_fail; 
    403 -                               } 
    404 +                               ath_dbg(common, ATH_DBG_CALIBRATE, 
    405 +                                       "IQ RES[%d]=0x%x" 
    406 +                                       "IQ_RES[%d]=0x%x\n", 
    407 +                                       idx, iq_res[idx], idx + 1, 
    408 +                                       iq_res[idx + 1]); 
    409 +                       } 
    410   
    411 -                               coeff.mag_coeff[i][im][ip] = 
    412 -                                               coeff.iqc_coeff[0] & 0x7f; 
    413 -                               coeff.phs_coeff[i][im][ip] = 
    414 -                                               (coeff.iqc_coeff[0] >> 7) & 0x7f; 
    415 - 
    416 -                               if (coeff.mag_coeff[i][im][ip] > 63) 
    417 -                                       coeff.mag_coeff[i][im][ip] -= 128; 
    418 -                               if (coeff.phs_coeff[i][im][ip] > 63) 
    419 -                                       coeff.phs_coeff[i][im][ip] -= 128; 
    420 +                       if (!ar9003_hw_calc_iq_corr(ah, i, iq_res, 
    421 +                                               coeff.iqc_coeff)) { 
    422 +                               ath_dbg(common, ATH_DBG_CALIBRATE, 
    423 +                                       "Failed in calculation of \ 
    424 +                                       IQ correction.\n"); 
    425 +                               goto tx_iqcal_fail; 
    426                         } 
    427 + 
    428 +                       coeff.mag_coeff[i][im] = coeff.iqc_coeff[0] & 0x7f; 
    429 +                       coeff.phs_coeff[i][im] = 
    430 +                               (coeff.iqc_coeff[0] >> 7) & 0x7f; 
    431 + 
    432 +                       if (coeff.mag_coeff[i][im] > 63) 
    433 +                               coeff.mag_coeff[i][im] -= 128; 
    434 +                       if (coeff.phs_coeff[i][im] > 63) 
    435 +                               coeff.phs_coeff[i][im] -= 128; 
    436                 } 
    437         } 
    438         ar9003_hw_tx_iqcal_load_avg_2_passes(ah, num_chains, &coeff); 
    439 @@ -941,6 +838,7 @@ static bool ar9003_hw_init_cal(struct at 
    440  { 
    441         struct ath_common *common = ath9k_hw_common(ah); 
    442         int val; 
    443 +       bool txiqcal_done = false; 
    444   
    445         val = REG_READ(ah, AR_ENT_OTP); 
    446         ath_dbg(common, ATH_DBG_CALIBRATE, "ath9k: AR_ENT_OTP 0x%x\n", val); 
    447 @@ -957,14 +855,22 @@ static bool ar9003_hw_init_cal(struct at 
    448                 ar9003_hw_set_chain_masks(ah, 0x7, 0x7); 
    449   
    450         /* Do Tx IQ Calibration */ 
    451 -       if (AR_SREV_9485(ah)) 
    452 -               ar9003_hw_tx_iq_cal_run(ah); 
     385-       int olpc_gain_delta = 0; 
     386+       int olpc_gain_delta = 0, cl_gain_mod; 
     387        int alpha_therm, alpha_volt; 
     388        int therm_cal_value, volt_cal_value; 
     389        int therm_value, volt_value; 
     390        int thermal_gain_corr, voltage_gain_corr; 
     391        int desired_scale, desired_gain = 0; 
     392-       u32 reg; 
     393+       u32 reg_olpc  = 0, reg_cl_gain  = 0; 
     394  
     395        REG_CLR_BIT(ah, AR_PHY_PAPRD_TRAINER_STAT1, 
     396                    AR_PHY_PAPRD_TRAINER_STAT1_PAPRD_TRAIN_DONE); 
     397@@ -271,15 +271,29 @@ static unsigned int ar9003_get_desired_g 
     398        volt_value = REG_READ_FIELD(ah, AR_PHY_BB_THERM_ADC_4, 
     399                                    AR_PHY_BB_THERM_ADC_4_LATEST_VOLT_VALUE); 
     400  
     401-       if (chain == 0) 
     402-               reg = AR_PHY_TPC_11_B0; 
     403-       else if (chain == 1) 
     404-               reg = AR_PHY_TPC_11_B1; 
    453405-       else 
    454 -               ar9003_hw_tx_iq_cal(ah); 
    455 +       REG_RMW_FIELD(ah, AR_PHY_TX_IQCAL_CONTROL_1, 
    456 +                     AR_PHY_TX_IQCAL_CONTROL_1_IQCORR_I_Q_COFF_DELPT, 
    457 +                     DELPT); 
    458   
    459 -       REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS); 
    460 -       udelay(5); 
    461 -       REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN); 
    462 +       /* 
    463 +        * For AR9485 or later chips, TxIQ cal runs as part of 
    464 +        * AGC calibration 
    465 +        */ 
    466 +       if (AR_SREV_9485_OR_LATER(ah)) 
    467 +               txiqcal_done = true; 
    468 +       else { 
    469 +               txiqcal_done = ar9003_hw_tx_iq_cal_run(ah); 
    470 +               REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_DIS); 
    471 +               udelay(5); 
    472 +               REG_WRITE(ah, AR_PHY_ACTIVE, AR_PHY_ACTIVE_EN); 
     406-               reg = AR_PHY_TPC_11_B2; 
     407+       switch (chain) { 
     408+       case 0: 
     409+               reg_olpc = AR_PHY_TPC_11_B0; 
     410+               reg_cl_gain = AR_PHY_CL_TAB_0; 
     411+               break; 
     412+       case 1: 
     413+               reg_olpc = AR_PHY_TPC_11_B1; 
     414+               reg_cl_gain = AR_PHY_CL_TAB_1; 
     415+               break; 
     416+       case 2: 
     417+               reg_olpc = AR_PHY_TPC_11_B2; 
     418+               reg_cl_gain = AR_PHY_CL_TAB_2; 
     419+               break; 
     420+       default: 
     421+               ath_dbg(ath9k_hw_common(ah), ATH_DBG_CALIBRATE, 
     422+               "Invalid chainmask: %d\n", chain); 
     423+               break; 
    473424+       } 
    474425  
    475         /* Calibrate the AGC */ 
    476         REG_WRITE(ah, AR_PHY_AGC_CONTROL, 
    477 @@ -979,7 +885,7 @@ static bool ar9003_hw_init_cal(struct at 
    478                 return false; 
    479         } 
    480   
    481 -       if (AR_SREV_9485(ah)) 
    482 +       if (txiqcal_done) 
    483                 ar9003_hw_tx_iq_cal_post_proc(ah); 
    484   
    485         /* Revert chainmasks to their original values before NF cal */ 
     426-       olpc_gain_delta = REG_READ_FIELD(ah, reg, 
     427+       olpc_gain_delta = REG_READ_FIELD(ah, reg_olpc, 
     428                                         AR_PHY_TPC_11_OLPC_GAIN_DELTA); 
     429+       cl_gain_mod = REG_READ_FIELD(ah, reg_cl_gain, 
     430+                                        AR_PHY_CL_TAB_CL_GAIN_MOD); 
     431  
     432        if (olpc_gain_delta >= 128) 
     433                olpc_gain_delta = olpc_gain_delta - 256; 
     434@@ -289,7 +303,7 @@ static unsigned int ar9003_get_desired_g 
     435        voltage_gain_corr = (alpha_volt * (volt_value - volt_cal_value) + 
     436                             (128 / 2)) / 128; 
     437        desired_gain = target_power - olpc_gain_delta - thermal_gain_corr - 
     438-           voltage_gain_corr + desired_scale; 
     439+           voltage_gain_corr + desired_scale + cl_gain_mod; 
     440  
     441        return desired_gain; 
     442 } 
     443@@ -727,7 +741,7 @@ int ar9003_paprd_setup_gain_table(struct 
     444        desired_gain = ar9003_get_desired_gain(ah, chain, train_power); 
     445  
     446        gain_index = 0; 
     447-       for (i = 0; i < 32; i++) { 
     448+       for (i = 0; i < PAPRD_GAIN_TABLE_ENTRIES; i++) { 
     449                if (ah->paprd_gain_table_index[i] >= desired_gain) 
     450                        break; 
     451                gain_index++; 
    486452--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.h 
    487453+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.h 
    488 @@ -548,15 +548,12 @@ 
    489   
    490  #define AR_PHY_TXGAIN_TABLE      (AR_SM_BASE + 0x300) 
    491   
    492 -#define AR_PHY_TX_IQCAL_START_9485             (AR_SM_BASE + 0x3c4) 
    493 -#define AR_PHY_TX_IQCAL_START_DO_CAL_9485      0x80000000 
    494 -#define AR_PHY_TX_IQCAL_START_DO_CAL_9485_S    31 
    495 -#define AR_PHY_TX_IQCAL_CONTROL_1_9485         (AR_SM_BASE + 0x3c8) 
    496 -#define AR_PHY_TX_IQCAL_STATUS_B0_9485         (AR_SM_BASE + 0x3f0) 
    497 - 
    498 -#define AR_PHY_TX_IQCAL_CONTROL_1   (AR_SM_BASE + 0x448) 
    499 -#define AR_PHY_TX_IQCAL_START       (AR_SM_BASE + 0x440) 
    500 -#define AR_PHY_TX_IQCAL_STATUS_B0   (AR_SM_BASE + 0x48c) 
    501 +#define AR_PHY_TX_IQCAL_CONTROL_1   (AR_SM_BASE + AR_SREV_9485(ah) ? \ 
    502 +                                                0x3c8 : 0x448) 
    503 +#define AR_PHY_TX_IQCAL_START       (AR_SM_BASE + AR_SREV_9485(ah) ? \ 
    504 +                                                0x3c4 : 0x440) 
    505 +#define AR_PHY_TX_IQCAL_STATUS_B0   (AR_SM_BASE + AR_SREV_9485(ah) ? \ 
    506 +                                                0x3f0 : 0x48c) 
    507  #define AR_PHY_TX_IQCAL_CORR_COEFF_B0(_i)    (AR_SM_BASE + \ 
    508                                              (AR_SREV_9485(ah) ? \ 
    509                                               0x3d0 : 0x450) + ((_i) << 2)) 
    510 @@ -758,10 +755,10 @@ 
    511  #define AR_PHY_SPECTRAL_SCAN_SHORT_REPEAT   0x01000000 
    512  #define AR_PHY_SPECTRAL_SCAN_SHORT_REPEAT_S 24 
    513  #define AR_PHY_CHANNEL_STATUS_RX_CLEAR      0x00000004 
    514 -#define AR_PHY_TX_IQCAQL_CONTROL_1_IQCORR_I_Q_COFF_DELPT             0x01fc0000 
    515 -#define AR_PHY_TX_IQCAQL_CONTROL_1_IQCORR_I_Q_COFF_DELPT_S                   18 
    516 -#define AR_PHY_TX_IQCAL_START_DO_CAL        0x00000001 
    517 -#define AR_PHY_TX_IQCAL_START_DO_CAL_S      0 
    518 +#define AR_PHY_TX_IQCAL_CONTROL_1_IQCORR_I_Q_COFF_DELPT             0x01fc0000 
    519 +#define AR_PHY_TX_IQCAL_CONTROL_1_IQCORR_I_Q_COFF_DELPT_S                   18 
    520 +#define AR_PHY_TX_IQCAL_START_DO_CAL       0x00000001 
    521 +#define AR_PHY_TX_IQCAL_START_DO_CAL_S     0 
    522   
    523  #define AR_PHY_TX_IQCAL_STATUS_FAILED    0x00000001 
    524  #define AR_PHY_CALIBRATED_GAINS_0       0x3e 
    525 --- a/drivers/net/wireless/ath/ath9k/ath9k.h 
    526 +++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
    527 @@ -453,6 +453,7 @@ void ath9k_btcoex_timer_pause(struct ath 
    528   
    529  #define ATH_LED_PIN_DEF                1 
    530  #define ATH_LED_PIN_9287               8 
    531 +#define ATH_LED_PIN_9300               10 
    532  #define ATH_LED_PIN_9485               6 
    533   
    534  #ifdef CONFIG_MAC80211_LEDS 
    535 --- a/drivers/net/wireless/ath/ath9k/gpio.c 
    536 +++ b/drivers/net/wireless/ath/ath9k/gpio.c 
    537 @@ -46,6 +46,8 @@ void ath_init_leds(struct ath_softc *sc) 
    538                         sc->sc_ah->led_pin = ATH_LED_PIN_9287; 
    539                 else if (AR_SREV_9485(sc->sc_ah)) 
    540                         sc->sc_ah->led_pin = ATH_LED_PIN_9485; 
    541 +               else if (AR_SREV_9300(sc->sc_ah)) 
    542 +                       sc->sc_ah->led_pin = ATH_LED_PIN_9300; 
    543                 else 
    544                         sc->sc_ah->led_pin = ATH_LED_PIN_DEF; 
    545         } 
    546 --- a/drivers/net/wireless/ath/ath9k/reg.h 
    547 +++ b/drivers/net/wireless/ath/ath9k/reg.h 
    548 @@ -868,6 +868,8 @@ 
    549  #define AR_SREV_9485_11(_ah) \ 
    550         (AR_SREV_9485(_ah) && \ 
    551          ((_ah)->hw_version.macRev == AR_SREV_REVISION_9485_11)) 
    552 +#define AR_SREV_9485_OR_LATER(_ah) \ 
    553 +       (((_ah)->hw_version.macVersion >= AR_SREV_VERSION_9485)) 
    554   
    555  #define AR_SREV_9285E_20(_ah) \ 
    556      (AR_SREV_9285_12_OR_LATER(_ah) && \ 
    557 --- a/net/mac80211/rx.c 
    558 +++ b/net/mac80211/rx.c 
    559 @@ -652,7 +652,7 @@ static void ieee80211_sta_reorder_releas 
    560   set_release_timer: 
    561   
    562                 mod_timer(&tid_agg_rx->reorder_timer, 
    563 -                         tid_agg_rx->reorder_time[j] + 
    564 +                         tid_agg_rx->reorder_time[j] + 1 + 
    565                           HT_RX_REORDER_BUF_TIMEOUT); 
    566         } else { 
    567                 del_timer(&tid_agg_rx->reorder_timer); 
    568 --- a/drivers/net/wireless/ath/ath9k/calib.c 
    569 +++ b/drivers/net/wireless/ath/ath9k/calib.c 
    570 @@ -69,15 +69,21 @@ static void ath9k_hw_update_nfcal_hist_b 
    571                                               int16_t *nfarray) 
    572  { 
    573         struct ath_common *common = ath9k_hw_common(ah); 
    574 +       struct ieee80211_conf *conf = &common->hw->conf; 
    575         struct ath_nf_limits *limit; 
    576         struct ath9k_nfcal_hist *h; 
    577         bool high_nf_mid = false; 
    578 +       u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; 
    579         int i; 
    580   
    581         h = cal->nfCalHist; 
    582         limit = ath9k_hw_get_nf_limits(ah, ah->curchan); 
    583   
    584         for (i = 0; i < NUM_NF_READINGS; i++) { 
    585 +               if (!(chainmask & (1 << i)) || 
    586 +                   ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf))) 
    587 +                       continue; 
    588 + 
    589                 h[i].nfCalBuffer[h[i].currIndex] = nfarray[i]; 
    590   
    591                 if (++h[i].currIndex >= ATH9K_NF_CAL_HIST_MAX) 
    592 @@ -225,6 +231,7 @@ void ath9k_hw_loadnf(struct ath_hw *ah,  
    593         int32_t val; 
    594         u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; 
    595         struct ath_common *common = ath9k_hw_common(ah); 
    596 +       struct ieee80211_conf *conf = &common->hw->conf; 
    597         s16 default_nf = ath9k_hw_get_default_nf(ah, chan); 
    598   
    599         if (ah->caldata) 
    600 @@ -234,6 +241,9 @@ void ath9k_hw_loadnf(struct ath_hw *ah,  
    601                 if (chainmask & (1 << i)) { 
    602                         s16 nfval; 
    603   
    604 +                       if ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf)) 
    605 +                               continue; 
    606 + 
    607                         if (h) 
    608                                 nfval = h[i].privNF; 
    609                         else 
    610 @@ -293,6 +303,9 @@ void ath9k_hw_loadnf(struct ath_hw *ah,  
    611         ENABLE_REGWRITE_BUFFER(ah); 
    612         for (i = 0; i < NUM_NF_READINGS; i++) { 
    613                 if (chainmask & (1 << i)) { 
    614 +                       if ((i >= AR5416_MAX_CHAINS) && !conf_is_ht40(conf)) 
    615 +                               continue; 
    616 + 
    617                         val = REG_READ(ah, ah->nf_regs[i]); 
    618                         val &= 0xFFFFFE00; 
    619                         val |= (((u32) (-50) << 1) & 0x1ff); 
     454@@ -1121,6 +1121,9 @@ 
     455 #define AR_PHY_POWERTX_RATE8_POWERTXHT40_5     0x3F00 
     456 #define AR_PHY_POWERTX_RATE8_POWERTXHT40_5_S   8 
     457  
     458+#define AR_PHY_CL_TAB_CL_GAIN_MOD              0x1f 
     459+#define AR_PHY_CL_TAB_CL_GAIN_MOD_S            0 
     460+ 
     461 void ar9003_hw_set_chain_masks(struct ath_hw *ah, u8 rx, u8 tx); 
     462  
     463 #endif  /* AR9003_PHY_H */ 
  • branches/backfire/package/mac80211/patches/403-ath9k-fix-invalid-mac-address-handling.patch

    r26536 r27431  
    99  
    1010 #include "hw.h" 
    11 @@ -423,8 +424,16 @@ static int ath9k_hw_init_macaddr(struct  
     11@@ -443,8 +444,16 @@ static int ath9k_hw_init_macaddr(struct  
    1212                common->macaddr[2 * i] = eeval >> 8; 
    1313                common->macaddr[2 * i + 1] = eeval & 0xff; 
  • branches/backfire/package/mac80211/patches/406-regd_no_assoc_hints.patch

    r26916 r27431  
    11--- a/net/wireless/reg.c 
    22+++ b/net/wireless/reg.c 
    3 @@ -1645,6 +1645,8 @@ void regulatory_hint_11d(struct wiphy *w 
     3@@ -1643,6 +1643,8 @@ void regulatory_hint_11d(struct wiphy *w 
    44        enum environment_cap env = ENVIRON_ANY; 
    55        struct regulatory_request *request; 
     
    1010  
    1111        if (unlikely(!last_request)) 
    12 @@ -1851,6 +1853,8 @@ static void restore_regulatory_settings( 
     12@@ -1849,6 +1851,8 @@ static void restore_regulatory_settings( 
    1313  
    1414 void regulatory_hint_disconnect(void) 
  • branches/backfire/package/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch

    r26763 r27431  
    11--- a/drivers/net/wireless/ath/ath9k/main.c 
    22+++ b/drivers/net/wireless/ath/ath9k/main.c 
    3 @@ -1439,15 +1439,6 @@ static int ath9k_add_interface(struct ie 
     3@@ -1495,15 +1495,6 @@ static int ath9k_add_interface(struct ie 
    44                } 
    55        } 
     
    1717                "Attach a VIF of type: %d\n", vif->type); 
    1818  
    19 @@ -1473,15 +1464,6 @@ static int ath9k_change_interface(struct 
     19@@ -1529,15 +1520,6 @@ static int ath9k_change_interface(struct 
    2020        mutex_lock(&sc->mutex); 
    2121        ath9k_ps_wakeup(sc); 
  • branches/backfire/package/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch

    r26763 r27431  
    11--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c 
    22+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c 
    3 @@ -97,13 +97,8 @@ ath5k_add_interface(struct ieee80211_hw  
     3@@ -95,13 +95,8 @@ ath5k_add_interface(struct ieee80211_hw  
    44                goto end; 
    55        } 
     
    1919--- a/drivers/net/wireless/ath/ath5k/base.c 
    2020+++ b/drivers/net/wireless/ath/ath5k/base.c 
    21 @@ -1880,7 +1880,7 @@ ath5k_beacon_send(struct ath5k_softc *sc 
     21@@ -1883,7 +1883,7 @@ ath5k_beacon_send(struct ath5k_softc *sc 
    2222                sc->bmisscount = 0; 
    2323        } 
     
    2828                u64 tsf = ath5k_hw_get_tsf64(ah); 
    2929                u32 tsftu = TSF_TO_TU(tsf); 
    30 @@ -1958,7 +1958,7 @@ ath5k_beacon_update_timers(struct ath5k_ 
     30@@ -1961,7 +1961,7 @@ ath5k_beacon_update_timers(struct ath5k_ 
    3131        u64 hw_tsf; 
    3232  
  • branches/backfire/package/mac80211/patches/420-mac80211_ignore_invalid_ccmp_rx_pn.patch

    r26796 r27431  
    1111--- a/net/mac80211/wpa.c 
    1212+++ b/net/mac80211/wpa.c 
    13 @@ -407,6 +407,13 @@ ieee80211_crypto_ccmp_encrypt(struct iee 
     13@@ -441,6 +441,13 @@ ieee80211_crypto_ccmp_encrypt(struct iee 
    1414        return TX_CONTINUE; 
    1515 } 
     
    2525 ieee80211_rx_result 
    2626 ieee80211_crypto_ccmp_decrypt(struct ieee80211_rx_data *rx) 
    27 @@ -419,6 +426,7 @@ ieee80211_crypto_ccmp_decrypt(struct iee 
     27@@ -453,6 +460,7 @@ ieee80211_crypto_ccmp_decrypt(struct iee 
    2828        u8 pn[CCMP_PN_LEN]; 
    2929        int data_len; 
     
    3333        hdrlen = ieee80211_hdrlen(hdr->frame_control); 
    3434  
    35 @@ -452,6 +460,11 @@ ieee80211_crypto_ccmp_decrypt(struct iee 
     35@@ -486,6 +494,11 @@ ieee80211_crypto_ccmp_decrypt(struct iee 
    3636                        return RX_DROP_UNUSABLE; 
    3737        } 
  • branches/backfire/package/mac80211/patches/500-ath9k_eeprom_debugfs.patch

    r26763 r27431  
    11--- a/drivers/net/wireless/ath/ath9k/debug.c 
    22+++ b/drivers/net/wireless/ath/ath9k/debug.c 
    3 @@ -1115,6 +1115,53 @@ static const struct file_operations fops 
     3@@ -1181,6 +1181,53 @@ static const struct file_operations fops 
    44        .llseek = default_llseek,/* read accesses f_pos */ 
    55 }; 
     
    5555 { 
    5656        struct ath_common *common = ath9k_hw_common(ah); 
    57 @@ -1163,6 +1210,9 @@ int ath9k_init_debug(struct ath_hw *ah) 
     57@@ -1231,6 +1278,9 @@ int ath9k_init_debug(struct ath_hw *ah) 
    5858        debugfs_create_u32("gpio_val", S_IRUSR | S_IWUSR, 
    5959                           sc->debug.debugfs_phy, &sc->sc_ah->gpio_val); 
  • branches/backfire/package/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch

    r26763 r27431  
    11--- a/drivers/net/wireless/ath/ath9k/hw.c 
    22+++ b/drivers/net/wireless/ath/ath9k/hw.c 
    3 @@ -1450,8 +1450,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st 
     3@@ -1591,8 +1591,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st 
    44        REG_WRITE(ah, AR_OBS, 8); 
    55  
  • branches/backfire/package/mac80211/patches/511-ath9k_increase_bcbuf.patch

    r26763 r27431  
    11--- a/drivers/net/wireless/ath/ath9k/ath9k.h 
    22+++ b/drivers/net/wireless/ath/ath9k/ath9k.h 
    3 @@ -367,7 +367,7 @@ struct ath_vif { 
     3@@ -363,7 +363,7 @@ struct ath_vif { 
    44  * number of beacon intervals, the game's up. 
    55  */ 
     
    1212--- a/drivers/net/wireless/ath/ath9k/hw.c 
    1313+++ b/drivers/net/wireless/ath/ath9k/hw.c 
    14 @@ -344,8 +344,8 @@ static void ath9k_hw_init_config(struct  
     14@@ -364,8 +364,8 @@ static void ath9k_hw_init_config(struct  
    1515 { 
    1616        int i; 
  • branches/backfire/package/mac80211/patches/521-mac80211_ht_change_rate_update.patch

    r27430 r27431  
    11--- a/net/mac80211/main.c 
    22+++ b/net/mac80211/main.c 
    3 @@ -245,7 +245,9 @@ void ieee80211_bss_info_change_notify(st 
     3@@ -239,7 +239,9 @@ void ieee80211_bss_info_change_notify(st 
    44                                      u32 changed) 
    55 { 
     
    1111        if (!changed) 
    1212                return; 
    13 @@ -275,6 +277,22 @@ void ieee80211_bss_info_change_notify(st 
     13@@ -269,6 +271,22 @@ void ieee80211_bss_info_change_notify(st 
    1414  
    1515        switch (sdata->vif.type) { 
  • branches/backfire/package/mac80211/patches/530-ath9k_noise_dbm_fixup.patch

    r27430 r27431  
    11--- a/drivers/net/wireless/ath/ath9k/calib.c 
    22+++ b/drivers/net/wireless/ath/ath9k/calib.c 
    3 @@ -378,6 +378,7 @@ bool ath9k_hw_getnf(struct ath_hw *ah, s 
     3@@ -63,6 +63,19 @@ static s16 ath9k_hw_get_default_nf(struc 
     4        return ath9k_hw_get_nf_limits(ah, chan)->nominal; 
     5 } 
     6  
     7+s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan) 
     8+{ 
     9+       s8 noise = ATH_DEFAULT_NOISE_FLOOR; 
     10+ 
     11+       if (chan && chan->noisefloor) { 
     12+               s8 delta = chan->noisefloor - 
     13+                          ath9k_hw_get_default_nf(ah, chan); 
     14+               if (delta > 0) 
     15+                       noise += delta; 
     16+       } 
     17+       return noise; 
     18+} 
     19+EXPORT_SYMBOL(ath9k_hw_getchan_noise); 
     20  
     21 static void ath9k_hw_update_nfcal_hist_buffer(struct ath_hw *ah, 
     22                                              struct ath9k_hw_cal_data *cal, 
     23@@ -378,6 +391,7 @@ bool ath9k_hw_getnf(struct ath_hw *ah, s 
    424  
    525        if (!caldata) { 
     
    929        } 
    1030  
    11 @@ -385,6 +386,7 @@ bool ath9k_hw_getnf(struct ath_hw *ah, s 
     31@@ -385,6 +399,7 @@ bool ath9k_hw_getnf(struct ath_hw *ah, s 
    1232        caldata->nfcal_pending = false; 
    1333        ath9k_hw_update_nfcal_hist_buffer(ah, caldata, nfarray); 
     
    1737 } 
    1838  
    19 @@ -411,10 +413,15 @@ void ath9k_init_nfcal_hist_buffer(struct 
    20   
    21  s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan) 
    22  { 
    23 -       if (!ah->curchan || !ah->curchan->noisefloor) 
    24 -               return ath9k_hw_get_default_nf(ah, chan); 
    25 +       s8 noise = ATH_DEFAULT_NOISE_FLOOR; 
    26   
    27 -       return ah->curchan->noisefloor; 
    28 +       if (chan && chan->noisefloor) { 
    29 +               s8 delta = chan->noisefloor - 
    30 +                          ath9k_hw_get_default_nf(ah, chan); 
    31 +               if (delta > 0) 
    32 +                       noise += delta; 
    33 +       } 
    34 +       return noise; 
    35  } 
    36  EXPORT_SYMBOL(ath9k_hw_getchan_noise); 
    37   
    3839--- a/drivers/net/wireless/ath/ath9k/hw.c 
    3940+++ b/drivers/net/wireless/ath/ath9k/hw.c 
    40 @@ -1286,6 +1286,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st 
     41@@ -1427,6 +1427,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st 
    4142                memset(caldata, 0, sizeof(*caldata)); 
    4243                ath9k_init_nfcal_hist_buffer(ah, chan); 
     
    4849--- a/drivers/net/wireless/ath/ath9k/hw.h 
    4950+++ b/drivers/net/wireless/ath/ath9k/hw.h 
    50 @@ -677,6 +677,7 @@ struct ath_hw { 
     51@@ -688,6 +688,7 @@ struct ath_hw { 
    5152        enum nl80211_iftype opmode; 
    5253        enum ath9k_power_mode power_mode; 
     
    5859--- a/drivers/net/wireless/ath/ath9k/main.c 
    5960+++ b/drivers/net/wireless/ath/ath9k/main.c 
    60 @@ -165,7 +165,7 @@ static void ath_update_survey_nf(struct  
     61@@ -163,7 +163,7 @@ static void ath_update_survey_nf(struct  
    6162  
    6263        if (chan->noisefloor) { 
     
    6970--- a/drivers/net/wireless/ath/ath9k/recv.c 
    7071+++ b/drivers/net/wireless/ath/ath9k/recv.c 
    71 @@ -956,6 +956,8 @@ static int ath9k_rx_skb_preprocess(struc 
     72@@ -986,6 +986,8 @@ static int ath9k_rx_skb_preprocess(struc 
    7273                                   struct ieee80211_rx_status *rx_status, 
    7374                                   bool *decrypt_error) 
     
    7879  
    7980        /* 
    80 @@ -976,7 +978,7 @@ static int ath9k_rx_skb_preprocess(struc 
     81@@ -1006,7 +1008,7 @@ static int ath9k_rx_skb_preprocess(struc 
    8182  
    8283        rx_status->band = hw->conf.channel->band; 
     
    8788        rx_status->flag |= RX_FLAG_MACTIME_MPDU; 
    8889  
     90--- a/drivers/net/wireless/ath/ath9k/calib.h 
     91+++ b/drivers/net/wireless/ath/ath9k/calib.h 
     92@@ -108,6 +108,7 @@ void ath9k_init_nfcal_hist_buffer(struct 
     93 void ath9k_hw_bstuck_nfcal(struct ath_hw *ah); 
     94 void ath9k_hw_reset_calibration(struct ath_hw *ah, 
     95                                struct ath9k_cal_list *currCal); 
     96+s16 ath9k_hw_getchan_noise(struct ath_hw *ah, struct ath9k_channel *chan); 
     97  
     98  
     99 #endif /* CALIB_H */ 
  • branches/backfire/package/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch

    r26763 r27431  
    11--- a/drivers/net/wireless/mwl8k.c 
    22+++ b/drivers/net/wireless/mwl8k.c 
    3 @@ -5165,6 +5165,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") 
     3@@ -5194,6 +5194,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") 
    44 MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API)); 
    55  
  • branches/backfire/package/mac80211/patches/800-b43-gpio-mask-module-option.patch

    r25966 r27431  
    11--- a/drivers/net/wireless/b43/b43.h 
    22+++ b/drivers/net/wireless/b43/b43.h 
    3 @@ -718,6 +718,7 @@ struct b43_wldev { 
     3@@ -740,6 +740,7 @@ struct b43_wldev { 
    44        bool qos_enabled;               /* TRUE, if QoS is used. */ 
    55        bool hwcrypto_enabled;          /* TRUE, if HW crypto acceleration is enabled. */ 
     
    1111--- a/drivers/net/wireless/b43/main.c 
    1212+++ b/drivers/net/wireless/b43/main.c 
    13 @@ -75,6 +75,11 @@ MODULE_FIRMWARE("b43/ucode15.fw"); 
     13@@ -76,6 +76,11 @@ MODULE_FIRMWARE("b43/ucode16_mimo.fw"); 
    1414 MODULE_FIRMWARE("b43/ucode5.fw"); 
    1515 MODULE_FIRMWARE("b43/ucode9.fw"); 
     
    2323 module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444); 
    2424 MODULE_PARM_DESC(bad_frames_preempt, 
    25 @@ -2542,10 +2547,10 @@ static int b43_gpio_init(struct b43_wlde 
     25@@ -2575,10 +2580,10 @@ static int b43_gpio_init(struct b43_wlde 
    2626                    & ~B43_MACCTL_GPOUTSMSK); 
    2727  
     
    3333-       set = 0x0000000F; 
    3434+       set = modparam_gpiomask; 
    35         if (dev->dev->bus->chip_id == 0x4301) { 
     35        if (dev->dev->chip_id == 0x4301) { 
    3636                mask |= 0x0060; 
    3737                set |= 0x0060; 
    38 @@ -5100,10 +5105,10 @@ static void b43_print_driverinfo(void) 
     38@@ -5137,10 +5142,10 @@ static void b43_print_driverinfo(void) 
    3939        feat_sdio = "S"; 
    4040 #endif 
  • branches/backfire/package/mac80211/patches/810-b43_no_pio.patch

    r26763 r27431  
    11--- a/drivers/net/wireless/b43/Makefile 
    22+++ b/drivers/net/wireless/b43/Makefile 
    3 @@ -14,7 +14,7 @@ b43-y                         += xmit.o 
     3@@ -17,7 +17,7 @@ b43-y                         += xmit.o 
    44 b43-y                          += lo.o 
    55 b43-y                          += wa.o 
     
    1212--- a/drivers/net/wireless/b43/main.c 
    1313+++ b/drivers/net/wireless/b43/main.c 
    14 @@ -1812,9 +1812,11 @@ static void b43_do_interrupt_thread(stru 
     14@@ -1834,9 +1834,11 @@ static void b43_do_interrupt_thread(stru 
    1515                               dma_reason[4], dma_reason[5]); 
    1616                        b43err(dev->wl, "This device does not support DMA " 
Note: See TracChangeset for help on using the changeset viewer.