mac80211: update to wireless-testing 2013-06-13 + latest backport infrastructure

Signed-off-by: Felix Fietkau <nbd@openwrt.org>

SVN-Revision: 36939
This commit is contained in:
Felix Fietkau 2013-06-15 20:14:06 +00:00
parent d3a7b5633c
commit 5ca4d24cd1
72 changed files with 875 additions and 6042 deletions

View file

@ -10,10 +10,10 @@ include $(INCLUDE_DIR)/kernel.mk
PKG_NAME:=mac80211
PKG_VERSION:=2013-04-16
PKG_RELEASE:=2
PKG_VERSION:=2013-06-13
PKG_RELEASE:=1
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
PKG_MD5SUM:=ec4cd40f0a8838aeea2ccff3ec5deb1a
PKG_MD5SUM:=986749f5fbc5ec9b963e49c7171be300
PKG_SOURCE:=compat-wireless-$(PKG_VERSION).tar.bz2
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
@ -196,12 +196,6 @@ define KernelPackage/p54-spi
AUTOLOAD:=$(call AutoLoad,31,p54spi)
endef
NEED_RT2X00_LIB_CRYPTO:=y
NEED_RT2X00_LIB_FIRMWARE:=y
NEED_RT2X00_LIB_EEPROM:=y
NEED_RT2X00_LIB_HT:=y
NEED_RT2X00_LIB_LEDS:=y
define KernelPackage/rt2x00/Default
$(call KernelPackage/mac80211/Default)
TITLE:=Ralink Drivers for RT2x00 cards
@ -1172,225 +1166,140 @@ define KernelPackage/brcmfmac/description
Kernel module for Broadcom IEEE802.11n USB Wireless cards
endef
BUILDFLAGS:= \
-I$(PKG_BUILD_DIR)/include \
-DCONFIG_CFG80211_INTERNAL_REGDB=y \
$(foreach opt,$(CONFOPTS),-DCONFIG_$(opt)) \
$(if $(CONFIG_PCI),-DCONFIG_B43_PCI_AUTOSELECT -DCONFIG_B43_PCICORE_AUTOSELECT) \
$(if $(CONFIG_LEDS_TRIGGERS), -DCONFIG_MAC80211_LEDS -DCONFIG_LEDS_TRIGGERS -DCONFIG_B43_LEDS -DCONFIG_B43LEGACY_LEDS) \
-DCONFIG_B43_HWRNG -DCONFIG_B43LEGACY_HWRNG \
$(if $(CONFIG_PCI),-DCONFIG_ATH9K_PCI) \
$(if $(CONFIG_TARGET_ar71xx),-DCONFIG_ATH9K_AHB) \
$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS), -DCONFIG_CFG80211_DEBUGFS -DCONFIG_MAC80211_DEBUGFS -DCONFIG_ATH9K_DEBUGFS -DCONFIG_CARL9170_DEBUGFS -DCONFIG_ATH9K_HTC_DEBUGFS -DCONFIG_ATH5K_DEBUG) \
$(if $(CONFIG_PACKAGE_MAC80211_MESH),-DCONFIG_MAC80211_MESH) \
$(if $(CONFIG_PACKAGE_ATH_DEBUG),-DCONFIG_ATH_DEBUG -DCONFIG_ATH9K_PKTLOG) \
-D__CONFIG_MAC80211_RC_DEFAULT=minstrel \
-DCONFIG_MAC80211_RC_MINSTREL_HT \
$(if $(CONFIG_ATH_USER_REGD),-DATH_USER_REGD=1) \
$(if $(CONFIG_PACKAGE_B43_DEBUG),-DCONFIG_B43_DEBUG) \
$(if $(CONFIG_PACKAGE_B43_PIO),-DCONFIG_B43_PIO) \
$(if $(CONFIG_PACKAGE_B43_PIO),-DCONFIG_B43_BCMA_PIO) \
$(if $(CONFIG_PACKAGE_B43_PHY_N),-DCONFIG_B43_PHY_N) \
$(if $(CONFIG_PACKAGE_B43_PHY_HT),-DCONFIG_B43_PHY_HT) \
$(if $(CONFIG_PACKAGE_B43_PHY_LCN),-DCONFIG_B43_PHY_LCN) \
-DCONFIG_B43_BCMA -DCONFIG_B43_BCMA_EXTRA \
-DCONFIG_B43_SSB \
$(if $(CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS),-DCONFIG_RT2X00_LIB_DEBUGFS) \
$(if $(CONFIG_PACKAGE_RT2X00_DEBUG),-DCONFIG_RT2X00_DEBUG) \
$(if $(NEED_RT2X00_LIB_HT),-DCONFIG_RT2X00_LIB_HT) \
$(if $(NEED_RT2X00_LIB_CRYPTO),-DCONFIG_RT2X00_LIB_CRYPTO) \
$(if $(NEED_RT2X00_LIB_FIRMWARE),-DCONFIG_RT2X00_LIB_FIRMWARE) \
$(if $(NEED_RT2X00_LIB_EEPROM),-DCONFIG_RT2X00_LIB_EEPROM) \
$(if $(NEED_RT2X00_LIB_LEDS),-DCONFIG_RT2X00_LIB_LEDS) \
$(if $(CONFIG_PACKAGE_kmod-rt2x00-pci),-DCONFIG_RT2X00_LIB_PCI) \
$(if $(CONFIG_PACKAGE_kmod-rt2x00-usb),-DCONFIG_RT2X00_LIB_USB) \
$(if $(CONFIG_PACKAGE_kmod-rt2x00-usb),-DCONFIG_RT2800USB_RT53XX) \
$(if $(CONFIG_PACKAGE_kmod-rt2x00-soc),-DCONFIG_RT2X00_LIB_SOC) \
$(if $(CONFIG_TARGET_atheros),-DCONFIG_ATH5K_AHB,-DCONFIG_ATH5K_PCI) \
$(if $(CONFIG_PACKAGE_kmod-iwl3945),-DCONFIG_IWL3945) \
$(if $(CONFIG_PACKAGE_kmod-iwl4965),-DCONFIG_COMPAT_IWL4965) \
$(if $(CONFIG_PACKAGE_kmod-wl12xx),-DCONFIG_WL12XX -DCONFIG_COMPAT_WL12XX_SDIO) \
$(if $(CONFIG_PACKAGE_BRCM80211_DEBUG),-DCONFIG_BRCMDBG) \
$(if $(CONFIG_PACKAGE_kmod-brcmfmac),-DCONFIG_BRCMFMAC_USB)
config_package=$(if $(CONFIG_PACKAGE_kmod-$(1)),m)
MAKE_OPTS:= \
config-y:= \
WLAN \
NL80211_TESTMODE \
CFG80211_WEXT \
CFG80211_INTERNAL_REGDB \
MAC80211_RC_MINSTREL \
MAC80211_RC_MINSTREL_HT \
MAC80211_RC_DEFAULT_MINSTREL \
config-$(call config_package,cfg80211) += CFG80211
config-$(call config_package,mac80211) += MAC80211
config-$(CONFIG_PACKAGE_MAC80211_MESH) += MAC80211_MESH
ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS
config-y += \
CFG80211_DEBUGFS \
MAC80211_DEBUGFS \
ATH9K_DEBUGFS \
ATH9K_HTC_DEBUGFS \
CARL9170_DEBUGFS \
ATH5K_DEBUG
endif
config-$(call config_package,lib80211) += LIB80211 LIB80211_CRYPT_WEP LIB80211_CRYPT_CCMP LIB80211_CRYPT_TKIP
config-$(call config_package,ath) += ATH_CARDS ATH_COMMON
config-$(CONFIG_PACKAGE_ATH_DEBUG) += ATH_DEBUG
config-$(call config_package,ath9k) += ATH9K
config-$(call config_package,ath9k-common) += ATH9K_COMMON
config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
config-$(CONFIG_PCI) += ATH9K_PCI
config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD
config-$(call config_package,ath9k-htc) += ATH9K_HTC
config-$(call config_package,ath5k) += ATH5K
ifdef CONFIG_TARGET_atheros
config-y += ATH5K_AHB
else
config-y += ATH5K_PCI
endif
config-$(call config_package,carl9170) += CARL9170
config-$(call config_package,b43) += B43
config-y += B43_SSB B43_BCMA B43_BCMA_EXTRA
config-$(CONFIG_PACKAGE_B43_PHY_N) += B43_PHY_N
config-$(CONFIG_PACKAGE_B43_PHY_LP) += B43_PHY_LP
config-$(CONFIG_PACKAGE_B43_PHY_HT) += B43_PHY_HT
config-$(CONFIG_PACKAGE_B43_PIO) += B43_PIO
config-$(CONFIG_PACKAGE_B43_DEBUG) += B43_DEBUG
config-$(call config_package,b43legacy) += B43LEGACY
config-y += B43LEGACY_DMA_MODE
config-$(call config_package,brcmutil) += BRCMUTIL
config-$(call config_package,brcmsmac) += BRCMSMAC
config-$(call config_package,brcmfmac) += BRCMFMAC BRCMFMAC_USB
config-$(CONFIG_PACKAGE_BRCM80211_DEBUG) += BRCMDBG
config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM
config-$(call config_package,rt2x00-lib) += RT2X00 RT2X00_LIB
config-$(call config_package,rt2x00-pci) += RT2X00_LIB_PCI RT2X00_LIB_MMIO
config-$(call config_package,rt2x00-usb) += RT2X00_LIB_USB
config-$(call config_package,rt2x00-soc) += RT2X00_LIB_SOC
config-$(CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS) += RT2X00_LIB_DEBUGFS
config-$(CONFIG_PACKAGE_RT2X00_DEBUG) += RT2X00_DEBUG
config-$(call config_package,rt2400-pci) += RT2400PCI
config-$(call config_package,rt2500-pci) += RT2500PCI
config-$(call config_package,rt2500-usb) += RT2500USB
config-$(call config_package,rt61-pci) += RT61PCI
config-$(call config_package,rt73-usb) += RT73USB
config-$(call config_package,rt2800-lib) += RT2800_LIB
config-y += RT2800PCI_RT33XX RT2800PCI_RT35XX RT2800PCI_RT53XX RT2800PCI_RT3290
config-$(call config_package,rt2800-pci) += RT2800PCI
config-$(call config_package,rt2800-usb) += RT2800USB
config-$(call config_package,iwl-legacy) += IWLEGACY
config-$(call config_package,iwl3945) += IWL3945
config-$(call config_package,iwl4965) += IWL4965
config-$(call config_package,iwlagn) += IWLWIFI
config-$(call config_package,net-libipw) += LIBIPW
config-$(call config_package,net-ipw2100) += IPW2100
config-$(call config_package,net-ipw2200) += IPW2200
config-$(call config_package,p54-common) += P54_COMMON
config-$(call config_package,p54-pci) += P54_PCI
config-$(call config_package,p54-usb) += P54_USB
config-$(call config_package,p54-spi) += P54_SPI
config-$(call config_package,net-hermes) += HERMES
config-$(call config_package,net-hermes-pci) += PCI_HERMES
config-$(call config_package,net-hermes-plx) += PLX_HERMES
config-$(call config_package,net-hermes-pcmcia) += PCMCIA_HERMES
config-y += HERMES_PRISM
config-$(call config_package,adm8211) += ADM8211
config-$(call config_package,libertas-sd) += LIBERTAS LIBERTAS_SDIO
config-$(call config_package,libertas-usb) += LIBERTAS LIBERTAS_USB
config-$(call config_package,mwl8k) += MWL8K
config-$(call config_package,rtl8180) += RTL8180
config-$(call config_package,rtl8187) += RTL8187
config-$(call config_package,wl12xx) += WL_TI WLCORE WLCORE_SDIO WL12XX
config-$(call config_package,zd1211rw) += ZD1211RW
config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS
MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
CROSS_COMPILE="$(KERNEL_CROSS)" \
ARCH="$(LINUX_KARCH)" \
EXTRA_CFLAGS="$(BUILDFLAGS)" \
$(foreach opt,$(CONFOPTS),CONFIG_$(opt)=m) \
CONFIG_CFG80211_INTERNAL_REGDB=y \
CONFIG_CFG80211=$(if $(CONFIG_PACKAGE_kmod-cfg80211),m) \
CONFIG_MAC80211=$(if $(CONFIG_PACKAGE_kmod-mac80211),m) \
CONFIG_MAC80211_RC_MINSTREL=y \
CONFIG_MAC80211_MESH=$(CONFIG_PACKAGE_MAC80211_MESH) \
CONFIG_MAC80211_LEDS=$(CONFIG_LEDS_TRIGGERS) \
CONFIG_CFG80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
CONFIG_MAC80211_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
CONFIG_B43_PCMCIA=n CONFIG_B43_PIO=n \
CONFIG_B43_PCI_AUTOSELECT=$(if $(CONFIG_PCI),y) \
CONFIG_B43_PCICORE_AUTOSELECT=$(if $(CONFIG_PCI),y) \
CONFIG_B43LEGACY_LEDS=$(CONFIG_LEDS_TRIGGERS) \
CONFIG_B43_LEDS=$(CONFIG_LEDS_TRIGGERS) \
CONFIG_B43_HWRNG=$(if $(CONFIG_HW_RANDOM),y) \
CONFIG_B43LEGACY_HWRNG=$(if $(CONFIG_HW_RANDOM),y) \
CONFIG_B43=$(if $(CONFIG_PACKAGE_kmod-b43),m) \
CONFIG_B43LEGACY=$(if $(CONFIG_PACKAGE_kmod-b43legacy),m) \
CONFIG_B43_DEBUG=$(if $(CONFIG_PACKAGE_B43_DEBUG),y) \
CONFIG_B43_PIO=$(if $(CONFIG_PACKAGE_B43_PIO),y) \
CONFIG_B43_BCMA_PIO=$(if $(CONFIG_PACKAGE_B43_PIO),y) \
CONFIG_B43_PHY_N=$(if $(CONFIG_PACKAGE_B43_PHY_N),y) \
CONFIG_B43_PHY_HT=$(if $(CONFIG_PACKAGE_B43_PHY_HT),y) \
CONFIG_B43_PHY_LCN=$(if $(CONFIG_PACKAGE_B43_PHY_LCN),y) \
CONFIG_B43_BCMA=y \
CONFIG_B43_SSB=y \
CONFIG_ATH_CARDS=$(if $(CONFIG_PACKAGE_kmod-ath),m) \
CONFIG_ATH_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath),m) \
CONFIG_ATH_DEBUG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \
CONFIG_ATH9K_PKTLOG=$(if $(CONFIG_PACKAGE_ATH_DEBUG),y) \
CONFIG_ATH5K=$(if $(CONFIG_PACKAGE_kmod-ath5k),m) \
CONFIG_ATH5K_PCI=$(if $(CONFIG_TARGET_atheros),,y) \
CONFIG_ATH5K_AHB=$(if $(CONFIG_TARGET_atheros),y) \
CONFIG_ATH5K_DEBUG=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
CONFIG_ATH9K=$(if $(CONFIG_PACKAGE_kmod-ath9k),m) \
CONFIG_ATH9K_PCI=$(CONFIG_PCI) \
CONFIG_ATH9K_AHB=$(if $(CONFIG_TARGET_ar71xx),y) \
CONFIG_ATH9K_HTC=$(if $(CONFIG_PACKAGE_kmod-ath9k-htc),m) \
CONFIG_ATH9K_HTC_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
CONFIG_ATH9K_HW=$(if $(CONFIG_PACKAGE_kmod-ath9k-common),m) \
CONFIG_ATH9K_COMMON=$(if $(CONFIG_PACKAGE_kmod-ath9k-common),m) \
CONFIG_ATH9K_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
CONFIG_AR5523= \
CONFIG_WIL6210= \
CONFIG_CARL9170=$(if $(CONFIG_PACKAGE_kmod-carl9170),m) \
CONFIG_CARL9170_DEBUGFS=$(if $(CONFIG_PACKAGE_MAC80211_DEBUGFS),y) \
CONFIG_COMPAT_ZD1211RW=$(if $(CONFIG_PACKAGE_kmod-zd1211rw),m) \
CONFIG_P54_COMMON=$(if $(CONFIG_PACKAGE_kmod-p54-common),m) \
CONFIG_P54_PCI=$(if $(CONFIG_PACKAGE_kmod-p54-pci),m) \
CONFIG_P54_USB=$(if $(CONFIG_PACKAGE_kmod-p54-usb),m) \
CONFIG_P54_SPI=$(if $(CONFIG_PACKAGE_kmod-p54-spi),m) \
CONFIG_P54_SPI_DEFAULT_EEPROM=n \
CONFIG_RT2X00=$(if $(CONFIG_PACKAGE_kmod-rt2x00-lib),m) \
CONFIG_RT2X00_LIB=$(if $(CONFIG_PACKAGE_kmod-rt2x00-lib),m) \
CONFIG_RT2X00_LIB_MMIO=$(if $(CONFIG_PACKAGE_kmod-rt2x00-pci),m) \
CONFIG_RT2X00_LIB_PCI=$(if $(CONFIG_PACKAGE_kmod-rt2x00-pci),m) \
CONFIG_RT2X00_LIB_USB=$(if $(CONFIG_PACKAGE_kmod-rt2x00-usb),m) \
CONFIG_RT2X00_LIB_SOC=$(if $(CONFIG_PACKAGE_kmod-rt2x00-soc),m) \
CONFIG_RT2X00_LIB_DEBUGFS=$(CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS) \
CONFIG_RT2X00_LIB_CRYPTO=$(NEED_RT2X00_LIB_CRYPTO) \
CONFIG_RT2X00_LIB_FIRMWARE=$(NEED_RT2X00_LIB_FIRMWARE) \
CONFIG_RT2X00_LIB_EEPROM=$(NEED_RT2X00_LIB_EEPROM) \
CONFIG_RT2X00_LIB_HT=$(NEED_RT2X00_LIB_HT) \
CONFIG_RT2X00_LIB_LEDS=$(NEED_RT2X00_LIB_LEDS) \
CONFIG_RT2400PCI=$(if $(CONFIG_PACKAGE_kmod-rt2400-pci),m) \
CONFIG_RT2500PCI=$(if $(CONFIG_PACKAGE_kmod-rt2500-pci),m) \
CONFIG_RT2500USB=$(if $(CONFIG_PACKAGE_kmod-rt2500-usb),m) \
CONFIG_RT61PCI=$(if $(CONFIG_PACKAGE_kmod-rt61-pci),m) \
CONFIG_RT73USB=$(if $(CONFIG_PACKAGE_kmod-rt73-usb),m) \
CONFIG_RT2800_LIB=$(if $(CONFIG_PACKAGE_kmod-rt2800-lib),m) \
CONFIG_RT2800PCI=$(if $(CONFIG_PACKAGE_kmod-rt2800-pci),m) \
CONFIG_RT2800USB=$(if $(CONFIG_PACKAGE_kmod-rt2800-usb),m) \
CONFIG_RTL8180=$(if $(CONFIG_PACKAGE_kmod-rtl8180),m) \
CONFIG_RTL8187=$(if $(CONFIG_PACKAGE_kmod-rtl8187),m) \
CONFIG_RTL8192CE= \
CONFIG_RTLWIFI= \
CONFIG_COMPAT_MAC80211_HWSIM=$(if $(CONFIG_PACKAGE_kmod-mac80211-hwsim),m) \
CONFIG_PCMCIA= \
CONFIG_LIBIPW=$(if $(CONFIG_PACKAGE_kmod-net-libipw),m) \
CONFIG_LIBERTAS=$(if $(CONFIG_PACKAGE_kmod-libertas-sd)$(CONFIG_PACKAGE_kmod-libertas-usb),m) \
CONFIG_LIBERTAS_CS= \
CONFIG_LIBERTAS_SPI= \
CONFIG_COMPAT_LIBERTAS_SDIO=$(if $(CONFIG_PACKAGE_kmod-libertas-sd),m) \
CONFIG_LIBERTAS_THINFIRM= \
CONFIG_LIBERTAS_USB=$(if $(CONFIG_PACKAGE_kmod-libertas-usb),m) \
CONFIG_IPW2100=$(if $(CONFIG_PACKAGE_kmod-net-ipw2100),m) \
CONFIG_IPW2200=$(if $(CONFIG_PACKAGE_kmod-net-ipw2200),m) \
CONFIG_NL80211=y \
CONFIG_LIB80211=$(if $(CONFIG_PACKAGE_kmod-lib80211),m) \
CONFIG_LIB80211_CRYPT_WEP=$(if $(CONFIG_PACKAGE_kmod-lib80211),m) \
CONFIG_LIB80211_CRYPT_CCMP=$(if $(CONFIG_PACKAGE_kmod-lib80211),m) \
CONFIG_LIB80211_CRYPT_TKIP=$(if $(CONFIG_PACKAGE_kmod-lib80211),m) \
CONFIG_IWLWIFI=$(if $(CONFIG_PACKAGE_kmod-iwlagn),m) \
CONFIG_IWLEGACY=$(if $(CONFIG_PACKAGE_kmod-iwl-legacy),m) \
CONFIG_COMPAT_IWL4965=$(if $(CONFIG_PACKAGE_kmod-iwl4965),m) \
CONFIG_IWL3945=$(if $(CONFIG_PACKAGE_kmod-iwl3945),m) \
CONFIG_MWL8K=$(if $(CONFIG_PACKAGE_kmod-mwl8k),m) \
CONFIG_ATMEL= \
CONFIG_PCMCIA_ATMEL= \
CONFIG_ADM8211=$(if $(CONFIG_PACKAGE_kmod-adm8211),m) \
CONFIG_USB_NET_RNDIS_HOST= \
CONFIG_USB_NET_RNDIS_WLAN= \
CONFIG_USB_NET_CDCETHER= \
CONFIG_USB_USBNET= \
CONFIG_AT76C50X_USB= \
CONFIG_WL_TI=$(if $(CONFIG_PACKAGE_kmod-wl12xx),m) \
CONFIG_WLCORE=$(if $(CONFIG_PACKAGE_kmod-wl12xx),m) \
CONFIG_WL12XX=$(if $(CONFIG_PACKAGE_kmod-wl12xx),m) \
CONFIG_WLCORE_SDIO=$(if $(CONFIG_PACKAGE_kmod-wl12xx),m) \
CONFIG_EEPROM_93CX6= \
CONFIG_HERMES=$(if $(CONFIG_PACKAGE_kmod-net-hermes),m) \
CONFIG_HERMES_CACHE_FW_ON_INIT= \
CONFIG_PCI_HERMES=$(if $(CONFIG_PACKAGE_kmod-net-hermes-pci),m) \
CONFIG_PLX_HERMES=$(if $(CONFIG_PACKAGE_kmod-net-hermes-plx),m) \
CONFIG_PCMCIA_HERMES=$(if $(CONFIG_PACKAGE_kmod-net-hermes-pcmcia),m) \
CONFIG_HERMES_PRISM= \
CONFIG_APPLE_AIRPORT= \
CONFIG_TMD_HERMES= \
CONFIG_NORTEL_HERMES= \
CONFIG_PCMCIA_SPECTRUM= \
CONFIG_ORINOCO_USB= \
CONFIG_IWM= \
CONFIG_MWIFIEX= \
CONFIG_ATH6KL= \
CONFIG_MAC80211_RC_MINSTREL_HT=y \
MADWIFI= \
CONFIG_BRCMUTIL=$(if $(CONFIG_PACKAGE_kmod-brcmutil),m) \
CONFIG_BRCMSMAC=$(if $(CONFIG_PACKAGE_kmod-brcmsmac),m) \
CONFIG_BRCMFMAC=$(if $(CONFIG_PACKAGE_kmod-brcmfmac),m) \
CONFIG_BRCMFMAC_USB=$(if $(CONFIG_PACKAGE_kmod-brcmfmac),y) \
CONFIG_BRCMDBG=$(if $(CONFIG_PACKAGE_BRCM80211_DEBUG),y) \
EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include" \
KLIB_BUILD="$(LINUX_DIR)" \
MODPROBE=true \
KLIB=$(TARGET_MODULES_DIR) \
KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
KBUILD_LDFLAGS_MODULE_PREREQ=
ifeq ($(CONFIG_PACKAGE_kmod-libertas-sd)$(CONFIG_PACKAGE_kmod-libertas-usb)$(CONFIG_PACKAGE_kmod-rt2x00-lib),)
MAKE_OPTS += CONFIG_COMPAT_KFIFO=
endif
DISABLE_CONFIG = \
COMPAT_BLUETOOTH.* \
COMPAT_CORDIC \
COMPAT_CRC8 \
COMPAT_MDIO \
COMPAT_NETWORK_MODULES \
COMPAT_NET_USB_MODULES \
COMPAT_VAR_MODULES \
COMPAT_RFKILL \
COMPAT_RFKILL_.* \
COMPAT_STAGING \
\
B43_PCMCIA \
B43_SDIO \
BCMA.* \
COMPAT_ATH9K_RATE_CONTROL \
HID_GENERIC \
MAC80211_RC_PID \
PCMCIA \
RFKILL_BACKPORT.* \
SSB \
SSB_SDIOHOST \
\
ATH5K_PCI \
ATH9K_BTCOEX_SUPPORT \
B43_PHY_N \
B43_PHY_HT \
B43_BCMA.* \
MAC80211_MESH \
RT2X00_LIB_PCI \
RT2X00_LIB_USB \
COMPAT_MWIFIEX
define ConfigVars
$(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
))
endef
define mac80211_config
$(call ConfigVars,m)$(call ConfigVars,y)
endef
$(eval $(call shexport,mac80211_config))
define Build/Prepare
rm -rf $(PKG_BUILD_DIR)
@ -1416,14 +1325,12 @@ define Build/Prepare
echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version
$(CP) ./files/regdb.txt $(PKG_BUILD_DIR)/net/wireless/db.txt
sed -i $(foreach config,$(DISABLE_CONFIG),-e 's,^\([ ]*export *CONFIG_$(config)=\),# \1,') $(PKG_BUILD_DIR)/config.mk
endef
ifneq ($(CONFIG_PACKAGE_kmod-cfg80211)$(CONFIG_PACKAGE_kmod-lib80211),)
define Build/Compile/kmod
rm -rf $(PKG_BUILD_DIR)/modules
+$(MAKE) $(PKG_JOBS) -C "$(PKG_BUILD_DIR)" $(MAKE_OPTS) modules
+$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules
endef
endif
@ -1431,6 +1338,8 @@ define Build/Configure
cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h
cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h
cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h
$(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config
$(MAKE) $(MAKE_OPTS) allnoconfig
endef
define Build/Compile

View file

@ -1,37 +0,0 @@
--- a/config.mk
+++ b/config.mk
@@ -724,34 +724,3 @@ endif #CONFIG_LEDS_TRIGGERS
# export CONFIG_RFKILL_BACKPORT_INPUT=y
endif #CONFIG_COMPAT_KERNEL_2_6_31
-# compilation has been tested down to 3.0 but run time
-# tests have only started on 3.2.
-ifndef CONFIG_COMPAT_KERNEL_3_2
-# Basic DRM support
-export CONFIG_COMPAT_VIDEO_MODULES=y
-export CONFIG_COMPAT_DRM=m
-export CONFIG_COMPAT_DRM_TTM=m
-export CONFIG_COMPAT_DRM_KMS_HELPER=m
-export CONFIG_COMPAT_DRM_LOAD_EDID_FIRMWARE=y
-# Intel i915
-export CONFIG_COMPAT_DRM_I915=m
-# ATI/AMD Radeon
-export CONFIG_COMPAT_DRM_RADEON=m
-export CONFIG_COMPAT_DRM_RADEON_KMS=y
-export CONFIG_COMPAT_DRM_NOUVEAU=m
-export CONFIG_COMPAT_DRM_NOUVEAU_BACKLIGHT=y
-export CONFIG_COMPAT_NOUVEAU_DEBUG=5
-export CONFIG_COMPAT_NOUVEAU_DEBUG_DEFAULT=3
-ifdef CONFIG_MEDIA_CONTROLLER
-export CONFIG_COMPAT_USB_VIDEO_CLASS=m
-endif #CONFIG_MEDIA_CONTROLLER
-export CONFIG_USB_VIDEO_CLASS=y
-endif #CONFIG_COMPAT_KERNEL_3_2
-
-ifndef CONFIG_COMPAT_KERNEL_3_2
-export CONFIG_COMPAT_MEDIA_MODULES=y
-export CONFIG_COMPAT_VIDEO_V4L2=m
-export CONFIG_COMPAT_VIDEOBUF2_CORE=m
-export CONFIG_COMPAT_VIDEOBUF2_VMALLOC=m
-export CONFIG_COMPAT_VIDEOBUF2_MEMOPS=m
-endif #CONFIG_COMPAT_KERNEL_3_2

View file

@ -0,0 +1,16 @@
--- a/kconf/Makefile
+++ b/kconf/Makefile
@@ -1,10 +1,10 @@
-CFLAGS=-Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer
+CFLAGS=-Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -DKBUILD_NO_NLS
LXDIALOG := lxdialog/checklist.o lxdialog/inputbox.o lxdialog/menubox.o lxdialog/textbox.o lxdialog/util.o lxdialog/yesno.o
conf: conf.o zconf.tab.o
-mconf: LDFLAGS = -Wl,--no-as-needed $(shell ./lxdialog/check-lxdialog.sh -ldflags $(CC))
-mconf: CFLAGS += -DCURSES_LOC="<ncurses.h>" -DLOCALE
+mconf: LDFLAGS = $(shell ./lxdialog/check-lxdialog.sh -ldflags $(CC))
+mconf: CFLAGS += -DCURSES_LOC="<ncurses.h>"
mconf: mconf.o zconf.tab.o $(LXDIALOG)
.PHONY: clean

View file

@ -1,13 +0,0 @@
--- a/include/linux/rfkill.h
+++ b/include/linux/rfkill.h
@@ -3,6 +3,10 @@
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,31))
+#undef CONFIG_RFKILL
+#undef CONFIG_RFKILL_LEDS
+#undef CONFIG_RFKILL_MODULE
+
#include_next <linux/rfkill.h>
#else

View file

@ -0,0 +1,156 @@
--- a/Makefile
+++ b/Makefile
@@ -19,6 +19,7 @@ KLIB_BUILD ?= $(KLIB)/build/
KERNEL_CONFIG := $(KLIB_BUILD)/.config
KERNEL_MAKEFILE := $(KLIB_BUILD)/Makefile
CONFIG_MD5 := $(shell md5sum $(KERNEL_CONFIG) 2>/dev/null | sed 's/\s.*//')
+STAMP_KERNEL_CONFIG := .kernel_config_md5_$(CONFIG_MD5)
export KLIB KLIB_BUILD BACKPORT_PWD KMODDIR KMODPATH_ARG
@@ -36,7 +37,8 @@ mrproper:
@rm -f .kernel_config_md5 Kconfig.versions Kconfig.kernel
@rm -f backport-include/backport/autoconf.h
-.DEFAULT:
+.SILENT: $(STAMP_KERNEL_CONFIG)
+$(STAMP_KERNEL_CONFIG):
@set -e ; test -f .local-symbols || ( \
echo "/--------------" ;\
echo "| You shouldn't run make in the backports tree, but only in" ;\
@@ -60,56 +62,60 @@ mrproper:
echo "| (that isn't currently running.)" ;\
echo "\\--" ;\
false)
- @set -e ; if [ "$$(cat .kernel_config_md5 2>/dev/null)" != "$(CONFIG_MD5)" ] ;\
- then \
- echo -n "Generating local configuration database from kernel ..." ;\
- grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \
- while read l ; do \
- if [ "$${l:0:7}" != "CONFIG_" ] ; then \
- continue ;\
- fi ;\
- l=$${l:7} ;\
- n=$${l%%=*} ;\
- v=$${l#*=} ;\
- if [ "$$v" = "m" ] ; then \
- echo config $$n ;\
- echo ' tristate' ;\
- elif [ "$$v" = "y" ] ; then \
- echo config $$n ;\
- echo ' bool' ;\
- else \
- continue ;\
- fi ;\
- echo " default $$v" ;\
- echo "" ;\
- done \
- ) > Kconfig.kernel ;\
- kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
- sed 's/^\(\(3\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
- test "$$kver" != "" || echo "Kernel version parse failed!" ;\
- test "$$kver" != "" ;\
- kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
- kvers="$$kvers $$(seq 0 99 | sed 's/^/3./')" ;\
- print=0 ;\
- for v in $$kvers ; do \
- if [ "$$print" = "1" ] ; then \
- echo config BACKPORT_KERNEL_$$(echo $$v | tr . _) ;\
- echo " def_bool y" ;\
- fi ;\
- if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
- done > Kconfig.versions ;\
- # RHEL as well, sadly we need to grep for it ;\
- RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
- sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
- RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
- sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
- for v in $$(seq 0 $$RHEL_MINOR) ; do \
- echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
- echo " def_bool y" ;\
- done >> Kconfig.versions ;\
- echo " done." ;\
- fi ;\
- echo "$(CONFIG_MD5)" > .kernel_config_md5
+ @rm -f .kernel_config_md5_*
+ @touch $@
+
+Kconfig.kernel: $(STAMP_KERNEL_CONFIG) .local-symbols
+ @printf "Generating local configuration database from kernel ..."
+ @grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \
+ while read l ; do \
+ if [ "$${l:0:7}" != "CONFIG_" ] ; then \
+ continue ;\
+ fi ;\
+ l=$${l:7} ;\
+ n=$${l%%=*} ;\
+ v=$${l#*=} ;\
+ if [ "$$v" = "m" ] ; then \
+ echo config $$n ;\
+ echo ' tristate' ;\
+ elif [ "$$v" = "y" ] ; then \
+ echo config $$n ;\
+ echo ' bool' ;\
+ else \
+ continue ;\
+ fi ;\
+ echo " default $$v" ;\
+ echo "" ;\
+ done \
+ ) > $@
+ @echo " done."
+
+Kconfig.versions: Kconfig.kernel
+ @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \
+ sed 's/^\(\(3\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\
+ test "$$kver" != "" || echo "Kernel version parse failed!" ;\
+ test "$$kver" != "" ;\
+ kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\
+ kvers="$$kvers $$(seq 0 99 | sed 's/^/3./')" ;\
+ print=0 ;\
+ for v in $$kvers ; do \
+ if [ "$$print" = "1" ] ; then \
+ echo config BACKPORT_KERNEL_$$(echo $$v | tr . _) ;\
+ echo " def_bool y" ;\
+ fi ;\
+ if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\
+ done > $@
+ @RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \
+ sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
+ RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \
+ sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\
+ for v in $$(seq 0 $$RHEL_MINOR) ; do \
+ echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\
+ echo " def_bool y" ;\
+ done >> $@
+
+.DEFAULT:
+ @$(MAKE) Kconfig.versions
@$(MAKE) -f Makefile.real "$@"
else
--- a/Makefile.real
+++ b/Makefile.real
@@ -54,7 +54,7 @@ defconfig-%::
backport-include/backport/autoconf.h: .config Kconfig.versions Kconfig.kernel
@$(MAKE) oldconfig
- @echo -n "Building backport-include/backport/autoconf.h ..."
+ @printf "Building backport-include/backport/autoconf.h ..."
@grep -f .local-symbols .config | ( \
echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\
echo "#define COMPAT_AUTOCONF_INCLUDED" ;\
@@ -75,7 +75,12 @@ backport-include/backport/autoconf.h: .c
esac ;\
done ;\
echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" ;\
- ) > backport-include/backport/autoconf.h
+ ) > $@.new
+ @if cmp -s $@ $@.new; then \
+ rm -f $@.new; \
+ else \
+ mv $@.new $@; \
+ fi
@echo " done."
.PHONY: modules

View file

@ -0,0 +1,44 @@
--- a/kconf/conf.c
+++ b/kconf/conf.c
@@ -578,40 +578,12 @@ int main(int ac, char **av)
case oldconfig:
case listnewconfig:
case olddefconfig:
- conf_read(NULL);
- break;
case allnoconfig:
case allyesconfig:
case allmodconfig:
case alldefconfig:
case randconfig:
- name = getenv("KCONFIG_ALLCONFIG");
- if (!name)
- break;
- if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) {
- if (conf_read_simple(name, S_DEF_USER)) {
- fprintf(stderr,
- _("*** Can't read seed configuration \"%s\"!\n"),
- name);
- exit(1);
- }
- break;
- }
- switch (input_mode) {
- case allnoconfig: name = "allno.config"; break;
- case allyesconfig: name = "allyes.config"; break;
- case allmodconfig: name = "allmod.config"; break;
- case alldefconfig: name = "alldef.config"; break;
- case randconfig: name = "allrandom.config"; break;
- default: break;
- }
- if (conf_read_simple(name, S_DEF_USER) &&
- conf_read_simple("all.config", S_DEF_USER)) {
- fprintf(stderr,
- _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"),
- name);
- exit(1);
- }
+ conf_read(NULL);
break;
default:
break;

View file

@ -1,21 +0,0 @@
--- a/config.mk
+++ b/config.mk
@@ -371,7 +371,8 @@ export CONFIG_IPW2200_QOS=y
# % echo 1 > /sys/bus/pci/drivers/ipw2200/*/rtap_iface
endif #CONFIG_WIRELESS_EXT
-ifdef CONFIG_SSB
+# disabled
+ifdef __CONFIG_SSB
# Sonics Silicon Backplane
export CONFIG_SSB_SPROM=y
@@ -384,7 +385,7 @@ endif #CONFIG_PCMCIA
# export CONFIG_SSB_DEBUG=y
export CONFIG_SSB_DRIVER_PCICORE=y
export CONFIG_B43_SSB=y
-endif #CONFIG_SSB
+endif #__CONFIG_SSB
# export CONFIG_BCMA=m
# export CONFIG_BCMA_BLOCKIO=y

View file

@ -1,19 +0,0 @@
--- a/compat/scripts/gen-compat-config.sh
+++ b/compat/scripts/gen-compat-config.sh
@@ -66,16 +66,3 @@ if [[ ${CONFIG_COMPAT_KERNEL_2_6_36} = "
echo "export CONFIG_COMPAT_KFIFO=y"
fi
fi
-
-if [[ ${CONFIG_COMPAT_KERNEL_3_5} = "y" ]]; then
- # We don't have 2.6.24 backport support yet for Codel / FQ CoDel
- # For those who want to try this is what is required that I can tell
- # so far:
- # * struct Qdisc_ops
- # - init and change callback ops use a different argument dataype
- # - you need to parse data received from userspace differently
- if [[ ${CONFIG_COMPAT_KERNEL_2_6_25} != "y" ]]; then
- echo "export CONFIG_COMPAT_NET_SCH_CODEL=m"
- echo "export CONFIG_COMPAT_NET_SCH_FQ_CODEL=m"
- fi
-fi

View file

@ -1,8 +0,0 @@
--- a/compat/scripts/gen-compat-config.sh
+++ b/compat/scripts/gen-compat-config.sh
@@ -1,4 +1,4 @@
-#!/bin/bash
+#!/usr/bin/env bash
# Copyright 2012 Luis R. Rodriguez <mcgrof@frijolero.org>
# Copyright 2012 Hauke Mehrtens <hauke@hauke-m.de>
#

View file

@ -1,11 +0,0 @@
--- a/include/linux/compat-3.0.h
+++ b/include/linux/compat-3.0.h
@@ -38,6 +38,8 @@ static inline struct page *shmem_read_ma
#endif
+#include <linux/mod_devicetable.h>
+
/*
* since commit 1c5cae815d19ffe02bdfda1260949ef2b1806171
* "net: call dev_alloc_name from register_netdevice" dev_alloc_name is

View file

@ -0,0 +1,13 @@
--- a/backport-include/linux/rfkill.h
+++ b/backport-include/linux/rfkill.h
@@ -43,6 +43,10 @@ struct rfkill_ops {
};
#endif
+#undef CONFIG_RFKILL
+#undef CONFIG_RFKILL_LEDS
+#undef CONFIG_RFKILL_MODULE
+
/* this changes infrequently, backport manually */
enum rfkill_type {
RFKILL_TYPE_ALL = 0,

View file

@ -1,14 +1,14 @@
--- a/compat/compat-2.6.39.c
+++ b/compat/compat-2.6.39.c
@@ -12,6 +12,7 @@
#include <linux/tty.h>
@@ -13,6 +13,7 @@
#include <linux/sched.h>
#include <linux/module.h>
+#ifdef CONFIG_COMPAT_BLUETOOTH
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
/*
* Termios Helper Methods
@@ -111,4 +112,4 @@ int tty_set_termios(struct tty_struct *t
@@ -112,4 +113,4 @@ int tty_set_termios(struct tty_struct *t
}
EXPORT_SYMBOL_GPL(tty_set_termios);
#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27)) */

View file

@ -0,0 +1,33 @@
--- a/drivers/net/wireless/rt2x00/Kconfig
+++ b/drivers/net/wireless/rt2x00/Kconfig
@@ -202,25 +202,25 @@ config RT2800USB_UNKNOWN
endif
config RT2800_LIB
- tristate
+ tristate "RT2800 USB/PCI support"
depends on m
config RT2X00_LIB_MMIO
- tristate
+ tristate "RT2x00 MMIO support"
depends on m
config RT2X00_LIB_PCI
- tristate
+ tristate "RT2x00 PCI support"
depends on m
select RT2X00_LIB
config RT2X00_LIB_SOC
- tristate
+ tristate "RT2x00 SoC support"
depends on m
select RT2X00_LIB
config RT2X00_LIB_USB
- tristate
+ tristate "RT2x00 USB support"
depends on m
select RT2X00_LIB

View file

@ -1,18 +0,0 @@
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
@@ -951,6 +951,15 @@ static int cfg80211_netdev_notifier_call
wdev->sme_state = CFG80211_SME_IDLE;
mutex_unlock(&rdev->devlist_mtx);
#ifdef CONFIG_CFG80211_WEXT
+#ifdef CONFIG_WIRELESS_EXT
+ if (!dev->wireless_handlers)
+ dev->wireless_handlers = &cfg80211_wext_handler;
+#else
+ printk_once(KERN_WARNING "cfg80211: wext will not work because "
+ "kernel was compiled with CONFIG_WIRELESS_EXT=n. "
+ "Tools using wext interface, like iwconfig will "
+ "not work.\n");
+#endif
wdev->wext.default_key = -1;
wdev->wext.default_mgmt_key = -1;
wdev->wext.connect.auth_type = NL80211_AUTHTYPE_AUTOMATIC;

View file

@ -0,0 +1,9 @@
--- a/drivers/net/wireless/brcm80211/Kconfig
+++ b/drivers/net/wireless/brcm80211/Kconfig
@@ -1,5 +1,5 @@
config BRCMUTIL
- tristate
+ tristate "Broadcom 802.11 driver utility functions"
depends on m
config BRCMSMAC

View file

@ -1,66 +0,0 @@
From e00adf39134028d65023c327b427074728c18f7e Mon Sep 17 00:00:00 2001
From: Akinobu Mita <akinobu.mita@gmail.com>
Date: Tue, 7 May 2013 16:18:15 -0700
Subject: [PATCH] drivers/net: rename random32() to prandom_u32()
Use preferable function name which implies using a pseudo-random number
generator.
[akpm@linux-foundation.org: convert team_mode_random.c]
Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Acked-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
Acked-by: Bing Zhao <bzhao@marvell.com> [mwifiex]
Cc: "David S. Miller" <davem@davemloft.net>
Cc: Michael Chan <mchan@broadcom.com>
Cc: Thomas Sailer <t.sailer@alumni.ethz.ch>
Cc: Jean-Paul Roubelat <jpr@f6fbb.org>
Cc: Bing Zhao <bzhao@marvell.com>
Cc: Brett Rudley <brudley@broadcom.com>
Cc: Arend van Spriel <arend@broadcom.com>
Cc: "Franky (Zhenhui) Lin" <frankyl@broadcom.com>
Cc: Hante Meuleman <meuleman@broadcom.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
---
drivers/net/wireless/brcm80211/brcmfmac/p2p.c | 2 +-
drivers/net/wireless/mwifiex/cfg80211.c | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
index 2b90da0..e7a1a47 100644
--- a/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/p2p.c
@@ -1117,7 +1117,7 @@ static void brcmf_p2p_afx_handler(struct work_struct *work)
if (afx_hdl->is_listen && afx_hdl->my_listen_chan)
/* 100ms ~ 300ms */
err = brcmf_p2p_discover_listen(p2p, afx_hdl->my_listen_chan,
- 100 * (1 + (random32() % 3)));
+ 100 * (1 + prandom_u32() % 3));
else
err = brcmf_p2p_act_frm_search(p2p, afx_hdl->peer_listen_chan);
diff --git a/drivers/net/wireless/mwifiex/cfg80211.c b/drivers/net/wireless/mwifiex/cfg80211.c
index a0cb077..d3c8ece 100644
--- a/drivers/net/wireless/mwifiex/cfg80211.c
+++ b/drivers/net/wireless/mwifiex/cfg80211.c
@@ -216,7 +216,7 @@ mwifiex_cfg80211_mgmt_tx(struct wiphy *wiphy, struct wireless_dev *wdev,
mwifiex_form_mgmt_frame(skb, buf, len);
mwifiex_queue_tx_pkt(priv, skb);
- *cookie = random32() | 1;
+ *cookie = prandom_u32() | 1;
cfg80211_mgmt_tx_status(wdev, *cookie, buf, len, true, GFP_ATOMIC);
wiphy_dbg(wiphy, "info: management frame transmitted\n");
@@ -271,7 +271,7 @@ mwifiex_cfg80211_remain_on_channel(struct wiphy *wiphy,
duration);
if (!ret) {
- *cookie = random32() | 1;
+ *cookie = prandom_u32() | 1;
priv->roc_cfg.cookie = *cookie;
priv->roc_cfg.chan = *chan;
--
1.7.10.4

View file

@ -0,0 +1,30 @@
--- a/net/wireless/Kconfig
+++ b/net/wireless/Kconfig
@@ -123,7 +123,7 @@ config CFG80211_WEXT
extensions with cfg80211-based drivers.
config LIB80211
- tristate
+ tristate "lib80211"
depends on m
default n
help
@@ -133,15 +133,15 @@ config LIB80211
Drivers should select this themselves if needed.
config LIB80211_CRYPT_WEP
- tristate
+ tristate "lib80211 WEP support"
depends on m
config LIB80211_CRYPT_CCMP
- tristate
+ tristate "lib80211 CCMP support"
depends on m
config LIB80211_CRYPT_TKIP
- tristate
+ tristate "lib80211 TKIP support"
depends on m
config LIB80211_DEBUG

View file

@ -0,0 +1,68 @@
--- a/.local-symbols
+++ b/.local-symbols
@@ -365,42 +365,6 @@ USB_CDC_PHONET=
USB_IPHETH=
USB_SIERRA_NET=
USB_VL600=
-SSB_POSSIBLE=
-SSB=
-SSB_SPROM=
-SSB_BLOCKIO=
-SSB_PCIHOST_POSSIBLE=
-SSB_PCIHOST=
-SSB_B43_PCI_BRIDGE=
-SSB_PCMCIAHOST_POSSIBLE=
-SSB_PCMCIAHOST=
-SSB_SDIOHOST_POSSIBLE=
-SSB_SDIOHOST=
-SSB_SILENT=
-SSB_DEBUG=
-SSB_SERIAL=
-SSB_DRIVER_PCICORE_POSSIBLE=
-SSB_DRIVER_PCICORE=
-SSB_PCICORE_HOSTMODE=
-SSB_DRIVER_MIPS=
-SSB_SFLASH=
-SSB_EMBEDDED=
-SSB_DRIVER_EXTIF=
-SSB_DRIVER_GIGE=
-SSB_DRIVER_GPIO=
-BCMA_POSSIBLE=
-BCMA=
-BCMA_BLOCKIO=
-BCMA_HOST_PCI_POSSIBLE=
-BCMA_HOST_PCI=
-BCMA_DRIVER_PCI_HOSTMODE=
-BCMA_HOST_SOC=
-BCMA_DRIVER_MIPS=
-BCMA_SFLASH=
-BCMA_NFLASH=
-BCMA_DRIVER_GMAC_CMN=
-BCMA_DRIVER_GPIO=
-BCMA_DEBUG=
DRM=
DRM_USB=
DRM_KMS_HELPER=
--- a/Kconfig
+++ b/Kconfig
@@ -31,9 +31,6 @@ source drivers/net/wireless/Kconfig
source drivers/net/ethernet/Kconfig
source drivers/net/usb/Kconfig
-source drivers/ssb/Kconfig
-source drivers/bcma/Kconfig
-
source drivers/gpu/drm/Kconfig
source net/nfc/Kconfig
--- a/Makefile.kernel
+++ b/Makefile.kernel
@@ -26,8 +26,6 @@ obj-$(CPTCFG_MAC80211) += net/mac80211/
obj-$(CPTCFG_WLAN) += drivers/net/wireless/
obj-$(CPTCFG_BT) += net/bluetooth/
obj-$(CPTCFG_BT) += drivers/bluetooth/
-obj-$(CPTCFG_SSB) += drivers/ssb/
-obj-$(CPTCFG_BCMA) += drivers/bcma/
obj-$(CPTCFG_ETHERNET) += drivers/net/ethernet/
obj-$(CPTCFG_USB_NET_RNDIS_WLAN) += drivers/net/usb/
obj-$(CPTCFG_DRM) += drivers/gpu/drm/

View file

@ -1,40 +0,0 @@
From 16f4984678b93c03fc3fe31ed7c2bda491574ea7 Mon Sep 17 00:00:00 2001
From: Jonas Gorski <jogo@openwrt.org>
Date: Sat, 18 May 2013 02:05:30 +0200
Subject: [PATCH 1/2] compat: add missing include in #else for compat-3.10.h
When compiling against 3.10-rc1, the build fails as follows:
CC [M] compat/main.o
In file included from include/linux/compat-2.6.h:75:0,
from <command-line>:0:
include/linux/compat-3.10.h:91:52: warning: 'struct fb_info' declared inside parameter list [enabled by default]
include/linux/compat-3.10.h:91:52: warning: its scope is only this definition or declaration, which is probably not what you want [enabled by default]
include/linux/compat-3.10.h: In function 'backport_fb_enable_skip_vt_switch':
include/linux/compat-3.10.h:93:6: error: dereferencing pointer to incomplete type
Fix this adding the missing include to the else branch to stay true to
the original commit, instead of pulling it out of the #if #else #endif
block.
Signed-off-by: Jonas Gorski <jogo@openwrt.org>
---
include/linux/compat-3.10.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/linux/compat-3.10.h b/include/linux/compat-3.10.h
index f972203..9d6e55c 100644
--- a/include/linux/compat-3.10.h
+++ b/include/linux/compat-3.10.h
@@ -87,6 +87,8 @@ static inline void fb_enable_skip_vt_switch(struct fb_info *info)
* clash on the backport for 3.12 as the routine would
* already be defined *but* we'd need it for 3.11.
*/
+#include <linux/fb.h>
+
#define fb_enable_skip_vt_switch LINUX_BACKPORT(fb_enable_skip_vt_switch)
static inline void fb_enable_skip_vt_switch(struct fb_info *info)
{
--
1.7.10.4

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath5k/initvals.c
+++ b/drivers/net/wireless/ath/ath5k/initvals.c
@@ -65,8 +65,14 @@ static const struct ath5k_ini ar5210_ini
@@ -62,8 +62,14 @@ static const struct ath5k_ini ar5210_ini
{ AR5K_IMR, 0 },
{ AR5K_IER, AR5K_IER_DISABLE },
{ AR5K_BSR, 0, AR5K_INI_READ },
@ -17,7 +17,7 @@
{ AR5K_RXNOFRM, 8 },
--- a/drivers/net/wireless/ath/ath5k/dma.c
+++ b/drivers/net/wireless/ath/ath5k/dma.c
@@ -863,10 +863,18 @@ ath5k_hw_dma_init(struct ath5k_hw *ah)
@@ -860,10 +860,18 @@ ath5k_hw_dma_init(struct ath5k_hw *ah)
* guess we can tweak it and see how it goes ;-)
*/
if (ah->ah_version != AR5K_AR5210) {

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2081,7 +2081,7 @@ static int ieee80211_scan(struct wiphy *
@@ -2092,7 +2092,7 @@ static int ieee80211_scan(struct wiphy *
* the frames sent while scanning on other channel will be
* lost)
*/

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/Makefile
+++ b/drivers/net/wireless/ath/Makefile
@@ -10,7 +10,7 @@ obj-$(CONFIG_ATH_COMMON) += ath.o
@@ -11,7 +11,7 @@ obj-$(CPTCFG_ATH_COMMON) += ath.o
ath-objs := main.o \
regd.o \
hw.o \
@ -8,15 +8,15 @@
+ key.o \
+ debug.o
-ath-$(CONFIG_ATH_DEBUG) += debug.o
-ath-$(CPTCFG_ATH_DEBUG) += debug.o
ccflags-y += -D__CHECK_ENDIAN__
--- a/drivers/net/wireless/ath/ath.h
+++ b/drivers/net/wireless/ath/ath.h
@@ -281,13 +281,6 @@ void _ath_dbg(struct ath_common *common,
#endif /* CONFIG_ATH_DEBUG */
#endif /* CPTCFG_ATH_DEBUG */
/** Returns string describing opmode, or NULL if unknown mode. */
-#ifdef CONFIG_ATH_DEBUG
-#ifdef CPTCFG_ATH_DEBUG
const char *ath_opmode_to_string(enum nl80211_iftype opmode);
-#else
-static inline const char *ath_opmode_to_string(enum nl80211_iftype opmode)

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -46,7 +46,7 @@ int ath9k_modparam_nohwcrypt;
@@ -45,7 +45,7 @@ int ath9k_modparam_nohwcrypt;
module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444);
MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption");

View file

@ -8,7 +8,7 @@
#include <asm/unaligned.h>
#include "hw.h"
@@ -519,8 +520,16 @@ static int ath9k_hw_init_macaddr(struct
@@ -518,8 +519,16 @@ static int ath9k_hw_init_macaddr(struct
common->macaddr[2 * i] = eeval >> 8;
common->macaddr[2 * i + 1] = eeval & 0xff;
}

View file

@ -1,46 +1,58 @@
--- a/drivers/net/wireless/ath/regd.c
+++ b/drivers/net/wireless/ath/regd.c
@@ -198,6 +198,10 @@ ath_reg_apply_beaconing_flags(struct wip
@@ -196,6 +196,10 @@ ath_reg_apply_beaconing_flags(struct wip
struct ieee80211_channel *ch;
unsigned int i;
+#ifdef ATH_USER_REGD
+#ifdef CPTCFG_ATH_USER_REGD
+ return;
+#endif
+
for (band = 0; band < IEEE80211_NUM_BANDS; band++) {
if (!wiphy->bands[band])
@@ -252,6 +256,10 @@ ath_reg_apply_active_scan_flags(struct w
@@ -250,6 +254,10 @@ ath_reg_apply_active_scan_flags(struct w
struct ieee80211_channel *ch;
const struct ieee80211_reg_rule *reg_rule;
+#ifdef ATH_USER_REGD
+#ifdef CPTCFG_ATH_USER_REGD
+ return;
+#endif
+
sband = wiphy->bands[IEEE80211_BAND_2GHZ];
if (!sband)
return;
@@ -301,6 +309,10 @@ static void ath_reg_apply_radar_flags(st
@@ -299,6 +307,10 @@ static void ath_reg_apply_radar_flags(st
struct ieee80211_channel *ch;
unsigned int i;
+#ifdef ATH_USER_REGD
+#ifdef CPTCFG_ATH_USER_REGD
+ return;
+#endif
+
if (!wiphy->bands[IEEE80211_BAND_5GHZ])
return;
@@ -505,6 +517,10 @@ ath_regd_init_wiphy(struct ath_regulator
@@ -503,6 +515,10 @@ ath_regd_init_wiphy(struct ath_regulator
{
const struct ieee80211_regdomain *regd;
+#ifdef ATH_USER_REGD
+#ifdef CPTCFG_ATH_USER_REGD
+ return 0;
+#endif
+
wiphy->reg_notifier = reg_notifier;
wiphy->flags |= WIPHY_FLAG_STRICT_REGULATORY;
--- a/drivers/net/wireless/ath/Kconfig
+++ b/drivers/net/wireless/ath/Kconfig
@@ -21,6 +21,9 @@ menuconfig ATH_CARDS
if ATH_CARDS
+config ATH_USER_REGD
+ bool "Do not enforce EEPROM regulatory restrictions"
+
config ATH_DEBUG
bool "Atheros wireless debugging"
---help---

View file

@ -1,16 +1,16 @@
--- a/drivers/net/wireless/ath/regd.c
+++ b/drivers/net/wireless/ath/regd.c
@@ -44,7 +44,8 @@ static int __ath_regd_init(struct ath_re
@@ -42,7 +42,8 @@ static int __ath_regd_init(struct ath_re
NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM)
/* We allow IBSS on these on a case by case basis by regulatory domain */
-#define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5350+10, 40, 0, 30,\
+#define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5250, 40, 0, 30, 0), \
+ REG_RULE(5250, 5350+10, 40, 0, 30,\
-#define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5350+10, 80, 0, 30,\
+#define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5250, 80, 0, 30, 0), \
+ REG_RULE(5250, 5350+10, 80, 0, 30,\
NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS)
#define ATH9K_5GHZ_5470_5850 REG_RULE(5470-10, 5850+10, 40, 0, 30,\
#define ATH9K_5GHZ_5470_5850 REG_RULE(5470-10, 5850+10, 80, 0, 30,\
NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_IBSS)
@@ -62,57 +63,56 @@ static int __ath_regd_init(struct ath_re
@@ -60,57 +61,56 @@ static int __ath_regd_init(struct ath_re
#define ATH9K_5GHZ_NO_MIDBAND ATH9K_5GHZ_5150_5350, \
ATH9K_5GHZ_5725_5850

View file

@ -1,15 +1,15 @@
--- a/net/wireless/reg.c
+++ b/net/wireless/reg.c
@@ -1730,6 +1730,8 @@ void regulatory_hint_11d(struct wiphy *w
@@ -1696,6 +1696,8 @@ void regulatory_hint_11d(struct wiphy *w
enum environment_cap env = ENVIRON_ANY;
struct regulatory_request *request, *lr;
struct regulatory_request *request = NULL, *lr;
+ return;
+
mutex_lock(&reg_mutex);
lr = get_last_request();
@@ -1926,6 +1928,7 @@ static void restore_regulatory_settings(
/* IE len must be evenly divisible by 2 */
if (country_ie_len & 0x01)
return;
@@ -1890,6 +1892,7 @@ static void restore_regulatory_settings(
void regulatory_hint_disconnect(void)
{

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -733,6 +733,7 @@ static const struct ieee80211_iface_limi
@@ -729,6 +729,7 @@ static const struct ieee80211_iface_limi
#endif
BIT(NL80211_IFTYPE_AP) |
BIT(NL80211_IFTYPE_P2P_GO) },

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
@@ -89,13 +89,8 @@ ath5k_add_interface(struct ieee80211_hw
@@ -86,13 +86,8 @@ ath5k_add_interface(struct ieee80211_hw
goto end;
}
@ -18,7 +18,7 @@
goto end;
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
@@ -1868,7 +1868,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
@@ -1916,7 +1916,7 @@ ath5k_beacon_send(struct ath5k_hw *ah)
}
if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs +
@ -27,7 +27,7 @@
ah->opmode == NL80211_IFTYPE_MESH_POINT) {
u64 tsf = ath5k_hw_get_tsf64(ah);
u32 tsftu = TSF_TO_TU(tsf);
@@ -1954,7 +1954,7 @@ ath5k_beacon_update_timers(struct ath5k_
@@ -2002,7 +2002,7 @@ ath5k_beacon_update_timers(struct ath5k_
intval = ah->bintval & AR5K_BEACON_PERIOD;
if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs
@ -36,7 +36,7 @@
intval /= ATH_BCBUF; /* staggered multi-bss beacons */
if (intval < 15)
ATH5K_WARN(ah, "intval %u is too low, min 15\n",
@@ -2418,6 +2418,7 @@ static const struct ieee80211_iface_limi
@@ -2469,6 +2469,7 @@ static const struct ieee80211_iface_limi
BIT(NL80211_IFTYPE_MESH_POINT) |
#endif
BIT(NL80211_IFTYPE_AP) },

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath5k/reset.c
+++ b/drivers/net/wireless/ath/ath5k/reset.c
@@ -1156,6 +1156,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
@@ -1154,6 +1154,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
tsf_lo = 0;
mode = 0;
@ -8,7 +8,7 @@
/*
* Sanity check for fast flag
* Fast channel change only available
@@ -1163,6 +1164,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
@@ -1161,6 +1162,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum
*/
if (fast && (ah->ah_radio != AR5K_RF2413) &&
(ah->ah_radio != AR5K_RF5413))

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath5k/pci.c
+++ b/drivers/net/wireless/ath/ath5k/pci.c
@@ -23,6 +23,7 @@
@@ -21,6 +21,7 @@
#include <linux/pci-aspm.h>
#include <linux/etherdevice.h>
#include <linux/module.h>
@ -8,7 +8,7 @@
#include "../ath.h"
#include "ath5k.h"
#include "debug.h"
@@ -74,7 +75,7 @@ static void ath5k_pci_read_cachesize(str
@@ -72,7 +73,7 @@ static void ath5k_pci_read_cachesize(str
}
/*
@ -17,7 +17,7 @@
*/
static bool
ath5k_pci_eeprom_read(struct ath_common *common, u32 offset, u16 *data)
@@ -82,6 +83,19 @@ ath5k_pci_eeprom_read(struct ath_common
@@ -80,6 +81,19 @@ ath5k_pci_eeprom_read(struct ath_common
struct ath5k_hw *ah = (struct ath5k_hw *) common->ah;
u32 status, timeout;
@ -37,7 +37,7 @@
/*
* Initialize EEPROM access
*/
@@ -125,6 +139,16 @@ static int ath5k_pci_eeprom_read_mac(str
@@ -123,6 +137,16 @@ static int ath5k_pci_eeprom_read_mac(str
u16 data;
int octet;

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath5k/pci.c
+++ b/drivers/net/wireless/ath/ath5k/pci.c
@@ -50,6 +50,8 @@ static DEFINE_PCI_DEVICE_TABLE(ath5k_pci
@@ -48,6 +48,8 @@ static DEFINE_PCI_DEVICE_TABLE(ath5k_pci
{ PCI_VDEVICE(ATHEROS, 0x001b) }, /* 5413 Eagle */
{ PCI_VDEVICE(ATHEROS, 0x001c) }, /* PCI-E cards */
{ PCI_VDEVICE(ATHEROS, 0x001d) }, /* 2417 Nala */

View file

@ -11,7 +11,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
--- a/drivers/net/wireless/ath/ath5k/debug.c
+++ b/drivers/net/wireless/ath/ath5k/debug.c
@@ -813,6 +813,89 @@ static const struct file_operations fops
@@ -811,6 +811,89 @@ static const struct file_operations fops
.llseek = default_llseek,
};
@ -101,7 +101,7 @@ drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++
/* debugfs: queues etc */
@@ -904,6 +987,9 @@ ath5k_debug_init_device(struct ath5k_hw
@@ -902,6 +985,9 @@ ath5k_debug_init_device(struct ath5k_hw
debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah,
&fops_beacon);

View file

@ -1,7 +1,7 @@
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -2012,6 +2012,53 @@ void ath9k_get_et_stats(struct ieee80211
WARN_ON(i != ATH9K_SSTATS_LEN);
@@ -1735,6 +1735,53 @@ void ath9k_deinit_debug(struct ath_softc
}
}
+static ssize_t read_file_eeprom(struct file *file, char __user *user_buf,
@ -54,7 +54,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -2029,6 +2076,8 @@ int ath9k_init_debug(struct ath_hw *ah)
@@ -1752,6 +1799,8 @@ int ath9k_init_debug(struct ath_hw *ah)
ath9k_dfs_init_debug(sc);

View file

@ -71,7 +71,7 @@
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -739,6 +739,7 @@ enum ath_cal_list {
@@ -735,6 +735,7 @@ enum ath_cal_list {
#define AH_USE_EEPROM 0x1
#define AH_UNPLUGGED 0x2 /* The card has been physically removed. */
#define AH_FASTCC 0x4
@ -81,7 +81,7 @@
struct ath_ops reg_ops;
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -593,6 +593,8 @@ static int ath9k_init_softc(u16 devid, s
@@ -592,6 +592,8 @@ static int ath9k_init_softc(u16 devid, s
ah->is_clk_25mhz = pdata->is_clk_25mhz;
ah->get_mac_revision = pdata->get_mac_revision;
ah->external_reset = pdata->external_reset;

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -990,23 +990,23 @@ static int __init ath9k_init(void)
@@ -984,23 +984,23 @@ static int __init ath9k_init(void)
goto err_out;
}

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -2018,8 +2018,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
@@ -2010,8 +2010,8 @@ int ath9k_hw_reset(struct ath_hw *ah, st
REG_WRITE(ah, AR_OBS, 8);
if (ah->config.rx_intr_mitigation) {

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/ath9k.h
+++ b/drivers/net/wireless/ath/ath9k/ath9k.h
@@ -695,6 +695,7 @@ struct ath_softc {
@@ -696,6 +696,7 @@ struct ath_softc {
struct ieee80211_hw *hw;
struct device *dev;
@ -18,7 +18,7 @@
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -2059,6 +2059,50 @@ static const struct file_operations fops
@@ -1782,6 +1782,50 @@ static const struct file_operations fops
.owner = THIS_MODULE
};
@ -69,7 +69,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -2078,6 +2122,8 @@ int ath9k_init_debug(struct ath_hw *ah)
@@ -1801,6 +1845,8 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc,
&fops_eeprom);
@ -80,7 +80,7 @@
debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1140,7 +1140,7 @@ int ath9k_spectral_scan_config(struct ie
@@ -1139,7 +1139,7 @@ int ath9k_spectral_scan_config(struct ie
return 0;
}
@ -89,7 +89,7 @@
{
struct ath_softc *sc = hw->priv;
struct ath_hw *ah = sc->sc_ah;
@@ -1196,9 +1196,11 @@ static int ath9k_config(struct ieee80211
@@ -1195,9 +1195,11 @@ static int ath9k_config(struct ieee80211
struct ieee80211_channel *curchan = hw->conf.chandef.chan;
enum nl80211_channel_type channel_type =
cfg80211_get_chandef_type(&conf->chandef);
@ -101,7 +101,7 @@
if (ah->curchan)
old_pos = ah->curchan - &ah->channels[0];
@@ -1241,7 +1243,23 @@ static int ath9k_config(struct ieee80211
@@ -1233,7 +1235,23 @@ static int ath9k_config(struct ieee80211
memset(&sc->survey[pos], 0, sizeof(struct survey_info));
}

View file

@ -1,6 +1,6 @@
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -1608,6 +1608,7 @@ struct ieee80211_hw {
@@ -1614,6 +1614,7 @@ struct ieee80211_hw {
u8 max_tx_aggregation_subframes;
u8 offchannel_tx_hw_queue;
u8 radiotap_mcs_details;
@ -10,7 +10,7 @@
u8 uapsd_queues;
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2262,7 +2262,9 @@ static int ieee80211_get_tx_power(struct
@@ -2273,7 +2273,9 @@ static int ieee80211_get_tx_power(struct
struct ieee80211_local *local = wiphy_priv(wiphy);
struct ieee80211_sub_if_data *sdata = IEEE80211_WDEV_TO_SUB_IF(wdev);

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1266,6 +1266,8 @@ int ath9k_config(struct ieee80211_hw *hw
@@ -1258,6 +1258,8 @@ int ath9k_config(struct ieee80211_hw *hw
return -EINVAL;
}
@ -9,7 +9,7 @@
/*
* The most recent snapshot of channel->noisefloor for the old
* channel is only available after the hardware reset. Copy it to
@@ -1302,6 +1304,7 @@ int ath9k_config(struct ieee80211_hw *hw
@@ -1294,6 +1296,7 @@ int ath9k_config(struct ieee80211_hw *hw
sc->config.txpowlimit = 2 * conf->power_level;
ath9k_cmn_update_txpow(ah, sc->curtxpow,
sc->config.txpowlimit, &sc->curtxpow);

View file

@ -17,7 +17,7 @@
u8 rs_num_delims;
--- a/drivers/net/wireless/ath/ath9k/recv.c
+++ b/drivers/net/wireless/ath/ath9k/recv.c
@@ -950,6 +950,7 @@ static int ath9k_rx_skb_preprocess(struc
@@ -939,6 +939,7 @@ static int ath9k_rx_skb_preprocess(struc
struct ath_hw *ah = sc->sc_ah;
struct ath_common *common = ath9k_hw_common(ah);
bool discard_current = sc->rx.discard_next;
@ -25,7 +25,7 @@
sc->rx.discard_next = rx_stats->rs_more;
if (discard_current)
@@ -979,6 +980,21 @@ static int ath9k_rx_skb_preprocess(struc
@@ -968,6 +969,21 @@ static int ath9k_rx_skb_preprocess(struc
if (rx_stats->rs_moreaggr)
rx_status->flag |= RX_FLAG_NO_SIGNAL_VAL;
@ -47,7 +47,7 @@
sc->rx.discard_next = false;
return 0;
}
@@ -1088,7 +1104,7 @@ static int ath_process_fft(struct ath_so
@@ -1077,7 +1093,7 @@ static int ath_process_fft(struct ath_so
fft_sample.tlv.length = __cpu_to_be16(length);
fft_sample.freq = __cpu_to_be16(ah->curchan->chan->center_freq);
@ -58,7 +58,7 @@
switch (len - SPECTRAL_HT20_TOTAL_DATA_LEN) {
--- a/drivers/net/wireless/ath/ath9k/ar9003_mac.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_mac.c
@@ -475,12 +475,12 @@ int ath9k_hw_process_rxdesc_edma(struct
@@ -476,12 +476,12 @@ int ath9k_hw_process_rxdesc_edma(struct
/* XXX: Keycache */
rxs->rs_rssi = MS(rxsp->status5, AR_RxRSSICombined);
@ -79,7 +79,7 @@
rxs->rs_keyix = MS(rxsp->status11, AR_KeyIdx);
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -553,25 +553,25 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
@@ -554,25 +554,25 @@ int ath9k_hw_rxprocdesc(struct ath_hw *a
if (ads.ds_rxstatus8 & AR_PostDelimCRCErr) {
rs->rs_rssi = ATH9K_RSSI_BAD;
@ -117,30 +117,9 @@
AR_RxRSSIAnt12);
}
if (ads.ds_rxstatus8 & AR_RxKeyIdxValid)
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -943,12 +943,12 @@ void ath_debug_stat_rx(struct ath_softc
#ifdef CONFIG_ATH9K_MAC_DEBUG
spin_lock(&sc->debug.samp_lock);
RX_SAMP_DBG(jiffies) = jiffies;
- RX_SAMP_DBG(rssi_ctl0) = rs->rs_rssi_ctl0;
- RX_SAMP_DBG(rssi_ctl1) = rs->rs_rssi_ctl1;
- RX_SAMP_DBG(rssi_ctl2) = rs->rs_rssi_ctl2;
- RX_SAMP_DBG(rssi_ext0) = rs->rs_rssi_ext0;
- RX_SAMP_DBG(rssi_ext1) = rs->rs_rssi_ext1;
- RX_SAMP_DBG(rssi_ext2) = rs->rs_rssi_ext2;
+ RX_SAMP_DBG(rssi_ctl0) = rs->rs_rssi_ctl[0];
+ RX_SAMP_DBG(rssi_ctl1) = rs->rs_rssi_ctl[1];
+ RX_SAMP_DBG(rssi_ctl2) = rs->rs_rssi_ctl[2];
+ RX_SAMP_DBG(rssi_ext0) = rs->rs_rssi_ext[0];
+ RX_SAMP_DBG(rssi_ext1) = rs->rs_rssi_ext[1];
+ RX_SAMP_DBG(rssi_ext2) = rs->rs_rssi_ext[2];
RX_SAMP_DBG(antenna) = rs->rs_antenna;
RX_SAMP_DBG(rssi) = rs->rs_rssi;
RX_SAMP_DBG(rate) = rs->rs_rate;
--- a/drivers/net/wireless/ath/ath9k/dfs.c
+++ b/drivers/net/wireless/ath/ath9k/dfs.c
@@ -164,8 +164,8 @@ void ath9k_dfs_process_phyerr(struct ath
@@ -158,8 +158,8 @@ void ath9k_dfs_process_phyerr(struct ath
return;
}

View file

@ -1,6 +1,6 @@
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
@@ -991,6 +991,7 @@ enum ieee80211_smps_mode {
@@ -997,6 +997,7 @@ enum ieee80211_smps_mode {
*
* @power_level: requested transmit power (in dBm), backward compatibility
* value only that is set to the minimum of all interfaces
@ -8,7 +8,7 @@
*
* @chandef: the channel definition to tune to
* @radar_enabled: whether radar detection is enabled
@@ -1012,6 +1013,7 @@ struct ieee80211_conf {
@@ -1018,6 +1019,7 @@ struct ieee80211_conf {
u32 flags;
int power_level, dynamic_ps_timeout;
int max_sleep_period;
@ -18,7 +18,7 @@
u8 ps_dtim_period;
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -1110,6 +1110,7 @@ struct ieee80211_local {
@@ -1126,6 +1126,7 @@ struct ieee80211_local {
int dynamic_ps_forced_timeout;
int user_power_level; /* in dBm, for all interfaces */
@ -28,9 +28,9 @@
--- a/include/uapi/linux/nl80211.h
+++ b/include/uapi/linux/nl80211.h
@@ -1709,6 +1709,8 @@ enum nl80211_attrs {
NL80211_ATTR_MDID,
NL80211_ATTR_IE_RIC,
@@ -1736,6 +1736,8 @@ enum nl80211_attrs {
NL80211_ATTR_PEER_AID,
+ NL80211_ATTR_WIPHY_ANTENNA_GAIN,
+
@ -39,15 +39,15 @@
__NL80211_ATTR_AFTER_LAST,
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
@@ -378,6 +378,7 @@ static const struct nla_policy nl80211_p
[NL80211_ATTR_MDID] = { .type = NLA_U16 },
@@ -349,6 +349,7 @@ static const struct nla_policy nl80211_p
[NL80211_ATTR_IE_RIC] = { .type = NLA_BINARY,
.len = IEEE80211_MAX_DATA_LEN },
[NL80211_ATTR_PEER_AID] = { .type = NLA_U16 },
+ [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 },
};
/* policy for the key attributes */
@@ -1990,6 +1991,22 @@ static int nl80211_set_wiphy(struct sk_b
@@ -1953,6 +1954,22 @@ static int nl80211_set_wiphy(struct sk_b
goto bad_res;
}
@ -72,7 +72,7 @@
u32 tx_ant, rx_ant;
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -2272,6 +2272,19 @@ static int ieee80211_get_tx_power(struct
@@ -2283,6 +2283,19 @@ static int ieee80211_get_tx_power(struct
return 0;
}
@ -92,7 +92,7 @@
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
const u8 *addr)
{
@@ -3462,6 +3475,7 @@ struct cfg80211_ops mac80211_config_ops
@@ -3484,6 +3497,7 @@ struct cfg80211_ops mac80211_config_ops
.set_wiphy_params = ieee80211_set_wiphy_params,
.set_tx_power = ieee80211_set_tx_power,
.get_tx_power = ieee80211_get_tx_power,
@ -102,7 +102,7 @@
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
@@ -1922,6 +1922,7 @@ struct cfg80211_update_ft_ies_params {
@@ -1942,6 +1942,7 @@ struct cfg80211_update_ft_ies_params {
* (as advertised by the nl80211 feature flag.)
* @get_tx_power: store the current TX power into the dbm variable;
* return 0 if successful
@ -110,7 +110,7 @@
*
* @set_wds_peer: set the WDS peer for a WDS interface
*
@@ -2135,6 +2136,7 @@ struct cfg80211_ops {
@@ -2161,6 +2162,7 @@ struct cfg80211_ops {
enum nl80211_tx_power_setting type, int mbm);
int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev,
int *dbm);

View file

@ -10,7 +10,7 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -2860,7 +2860,7 @@ void ath9k_hw_apply_txpower(struct ath_h
@@ -2847,7 +2847,7 @@ void ath9k_hw_apply_txpower(struct ath_h
channel = chan->chan;
chan_pwr = min_t(int, channel->max_power * 2, MAX_RATE_POWER);
new_pwr = min_t(int, chan_pwr, reg->power_limit);
@ -21,7 +21,7 @@
if (ant_gain > max_gain)
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -1300,7 +1300,10 @@ int ath9k_config(struct ieee80211_hw *hw
@@ -1292,7 +1292,10 @@ int ath9k_config(struct ieee80211_hw *hw
}
if (changed & IEEE80211_CONF_CHANGE_POWER) {

View file

@ -10,7 +10,7 @@
#else
static inline void ath_init_leds(struct ath_softc *sc)
{
@@ -691,6 +694,13 @@ enum spectral_mode {
@@ -692,6 +695,13 @@ enum spectral_mode {
SPECTRAL_CHANSCAN,
};
@ -24,10 +24,10 @@
struct ath_softc {
struct ieee80211_hw *hw;
struct device *dev;
@@ -732,9 +742,8 @@ struct ath_softc {
@@ -733,9 +743,8 @@ struct ath_softc {
struct ieee80211_supported_band sbands[IEEE80211_NUM_BANDS];
#ifdef CONFIG_MAC80211_LEDS
#ifdef CPTCFG_MAC80211_LEDS
- bool led_registered;
- char led_name[32];
- struct led_classdev led_cdev;
@ -162,9 +162,9 @@
void ath_fill_led_pin(struct ath_softc *sc)
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -895,7 +895,7 @@ int ath9k_init_device(u16 devid, struct
@@ -891,7 +891,7 @@ int ath9k_init_device(u16 devid, struct
#ifdef CONFIG_MAC80211_LEDS
#ifdef CPTCFG_MAC80211_LEDS
/* must be initialized before ieee80211_register_hw */
- sc->led_cdev.default_trigger = ieee80211_create_tpt_led_trigger(sc->hw,
+ sc->led_default_trigger = ieee80211_create_tpt_led_trigger(sc->hw,
@ -173,7 +173,7 @@
#endif
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -1489,6 +1489,61 @@ static const struct file_operations fops
@@ -1825,6 +1825,61 @@ static const struct file_operations fops
.llseek = default_llseek,
};
@ -232,10 +232,10 @@
+
+#endif
+
#ifdef CONFIG_ATH9K_MAC_DEBUG
void ath9k_debug_samp_bb_mac(struct ath_softc *sc)
@@ -2124,6 +2179,10 @@ int ath9k_init_debug(struct ath_hw *ah)
int ath9k_init_debug(struct ath_hw *ah)
{
@@ -1847,6 +1902,10 @@ int ath9k_init_debug(struct ath_hw *ah)
&fops_eeprom);
debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy,
sc, &fops_chanbw);

View file

@ -12,14 +12,14 @@
#endif /* _LINUX_ATH9K_PLATFORM_H */
--- a/drivers/net/wireless/ath/ath9k/gpio.c
+++ b/drivers/net/wireless/ath/ath9k/gpio.c
@@ -14,6 +14,7 @@
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
@@ -15,6 +15,7 @@
*/
+#include <linux/ath9k_platform.h>
#include "ath9k.h"
+#include <linux/ath9k_platform.h>
/********************************/
/* LED functions */
@@ -88,6 +89,24 @@ int ath_create_gpio_led(struct ath_softc
return ret;
}

View file

@ -1,11 +1,11 @@
--- a/drivers/net/wireless/ath/ath9k/ani.h
+++ b/drivers/net/wireless/ath/ath9k/ani.h
@@ -51,7 +51,7 @@
@@ -34,7 +34,7 @@
#define ATH9K_ANI_PERIOD 300
/* in ms */
-#define ATH9K_ANI_POLLINTERVAL 1000
+#define ATH9K_ANI_POLLINTERVAL 300
#define HAL_NOISE_IMMUNE_MAX 4
#define HAL_SPUR_IMMUNE_MAX 7
#define ATH9K_SIG_FIRSTEP_SETTING_MIN 0
#define ATH9K_SIG_FIRSTEP_SETTING_MAX 20

View file

@ -1,19 +0,0 @@
--- a/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
+++ b/drivers/net/wireless/ath/ath9k/ar9003_2p2_initvals.h
@@ -958,11 +958,11 @@ static const u32 ar9300Common_rx_gain_ta
{0x0000a074, 0x00000000},
{0x0000a078, 0x00000000},
{0x0000a07c, 0x00000000},
- {0x0000a080, 0x1a1a1a1a},
- {0x0000a084, 0x1a1a1a1a},
- {0x0000a088, 0x1a1a1a1a},
- {0x0000a08c, 0x1a1a1a1a},
- {0x0000a090, 0x171a1a1a},
+ {0x0000a080, 0x22222229},
+ {0x0000a084, 0x1d1d1d1d},
+ {0x0000a088, 0x1d1d1d1d},
+ {0x0000a08c, 0x1d1d1d1d},
+ {0x0000a090, 0x171d1d1d},
{0x0000a094, 0x11111717},
{0x0000a098, 0x00030311},
{0x0000a09c, 0x00000000},

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/mac.c
+++ b/drivers/net/wireless/ath/ath9k/mac.c
@@ -697,7 +697,7 @@ bool ath9k_hw_stopdmarecv(struct ath_hw
@@ -705,7 +705,7 @@ bool ath9k_hw_stopdmarecv(struct ath_hw
{
#define AH_RX_STOP_DMA_TIMEOUT 10000 /* usec */
struct ath_common *common = ath9k_hw_common(ah);
@ -9,7 +9,7 @@
int i;
/* Enable access to the DMA observation bus */
@@ -727,6 +727,16 @@ bool ath9k_hw_stopdmarecv(struct ath_hw
@@ -735,6 +735,16 @@ bool ath9k_hw_stopdmarecv(struct ath_hw
}
if (i == 0) {

View file

@ -1,7 +1,7 @@
--- a/drivers/net/wireless/ath/ath9k/debug.c
+++ b/drivers/net/wireless/ath/ath9k/debug.c
@@ -2158,6 +2158,50 @@ static const struct file_operations fops
};
@@ -1881,6 +1881,50 @@ static const struct file_operations fops
#endif
+static ssize_t read_file_diag(struct file *file, char __user *user_buf,
@ -51,7 +51,7 @@
int ath9k_init_debug(struct ath_hw *ah)
{
struct ath_common *common = ath9k_hw_common(ah);
@@ -2183,6 +2227,8 @@ int ath9k_init_debug(struct ath_hw *ah)
@@ -1906,6 +1950,8 @@ int ath9k_init_debug(struct ath_hw *ah)
debugfs_create_file("gpio_led", S_IWUSR,
sc->debug.debugfs_phy, sc, &fops_gpio_led);
#endif
@ -62,7 +62,7 @@
debugfs_create_file("interrupt", S_IRUSR, sc->debug.debugfs_phy, sc,
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -499,6 +499,12 @@ enum {
@@ -495,6 +495,12 @@ enum {
ATH9K_RESET_COLD,
};
@ -75,7 +75,7 @@
struct ath9k_hw_version {
u32 magic;
u16 devid;
@@ -777,6 +783,8 @@ struct ath_hw {
@@ -773,6 +779,8 @@ struct ath_hw {
u32 rfkill_polarity;
u32 ah_flags;
@ -84,17 +84,17 @@
bool reset_power_on;
bool htc_reset_init;
@@ -1027,6 +1035,7 @@ void ath9k_hw_set_sta_beacon_timers(stru
@@ -1020,6 +1028,7 @@ void ath9k_hw_set_sta_beacon_timers(stru
bool ath9k_hw_check_alive(struct ath_hw *ah);
bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode);
+void ath9k_hw_update_diag(struct ath_hw *ah);
#ifdef CONFIG_ATH9K_DEBUGFS
#ifdef CPTCFG_ATH9K_DEBUGFS
void ath9k_debug_sync_cause(struct ath_common *common, u32 sync_cause);
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -1862,6 +1862,20 @@ fail:
@@ -1853,6 +1853,20 @@ fail:
return -EINVAL;
}
@ -115,7 +115,7 @@
int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan,
struct ath9k_hw_cal_data *caldata, bool fastcc)
{
@@ -2063,6 +2077,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
@@ -2055,6 +2069,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st
}
ath9k_hw_apply_gpio_override(ah);
@ -125,7 +125,7 @@
REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV, AR_BTCOEX_WL_LNADIV_FORCE_ON);
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -463,6 +463,11 @@ irqreturn_t ath_isr(int irq, void *dev)
@@ -462,6 +462,11 @@ irqreturn_t ath_isr(int irq, void *dev)
ath9k_hw_getisr(ah, &status); /* NB: clears ISR too */
status &= ah->imask; /* discard unasked-for bits */

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c
+++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c
@@ -1076,6 +1076,10 @@ static bool ar9003_hw_ani_control(struct
@@ -1136,6 +1136,10 @@ skip_ws_det:
* is_on == 0 means MRC CCK is OFF (more noise imm)
*/
bool is_on = param ? 1 : 0;

View file

@ -12,7 +12,7 @@
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
@@ -2456,17 +2456,25 @@ int ath9k_hw_fill_cap_info(struct ath_hw
@@ -2448,17 +2448,25 @@ int ath9k_hw_fill_cap_info(struct ath_hw
}
eeval = ah->eep_ops->get_eeprom(ah, EEP_OP_MODE);
@ -48,7 +48,7 @@
AR_SREV_9285(ah) ||
--- a/drivers/net/wireless/ath/ath9k/hw.h
+++ b/drivers/net/wireless/ath/ath9k/hw.h
@@ -947,6 +947,8 @@ struct ath_hw {
@@ -940,6 +940,8 @@ struct ath_hw {
bool is_clk_25mhz;
int (*get_mac_revision)(void);
int (*external_reset)(void);
@ -59,7 +59,7 @@
};
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
@@ -593,6 +593,8 @@ static int ath9k_init_softc(u16 devid, s
@@ -592,6 +592,8 @@ static int ath9k_init_softc(u16 devid, s
ah->is_clk_25mhz = pdata->is_clk_25mhz;
ah->get_mac_revision = pdata->get_mac_revision;
ah->external_reset = pdata->external_reset;

View file

@ -6,8 +6,8 @@
+#ifdef CONFIG_PCI_SET_MWI
if (pci_set_mwi(pci_dev))
ERROR_PROBE("MWI not available.\n");
rt2x00_probe_err("MWI not available\n");
+#endif
if (dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(32))) {
ERROR_PROBE("PCI DMA not supported.\n");
rt2x00_probe_err("PCI DMA not supported\n");

View file

@ -41,30 +41,30 @@
+
+ ee_name = rt2x00dev->ops->lib->get_eeprom_file_name(rt2x00dev);
+ if (!ee_name) {
+ ERROR(rt2x00dev,
+ "Invalid EEPROM filename.\n"
+ "Please file bug report to %s.\n", DRV_PROJECT);
+ rt2x00_err(rt2x00dev,
+ "Invalid EEPROM filename.\n"
+ "Please file bug report to %s.\n", DRV_PROJECT);
+ return -EINVAL;
+ }
+
+ INFO(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name);
+ rt2x00_info(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name);
+
+ retval = request_firmware(&ee, ee_name, rt2x00dev->dev);
+ if (retval) {
+ ERROR(rt2x00dev, "Failed to request EEPROM.\n");
+ rt2x00_err(rt2x00dev, "Failed to request EEPROM.\n");
+ return retval;
+ }
+
+ if (!ee || !ee->size || !ee->data) {
+ ERROR(rt2x00dev, "Failed to read EEPROM file.\n");
+ rt2x00_err(rt2x00dev, "Failed to read EEPROM file.\n");
+ retval = -ENOENT;
+ goto err_exit;
+ }
+
+ if (ee->size != rt2x00dev->ops->eeprom_size) {
+ ERROR(rt2x00dev,
+ "EEPROM file size is invalid, it should be %d bytes\n",
+ rt2x00dev->ops->eeprom_size);
+ rt2x00_err(rt2x00dev,
+ "EEPROM file size is invalid, it should be %d bytes\n",
+ rt2x00dev->ops->eeprom_size);
+ retval = -EINVAL;
+ goto err_release_ee;
+ }
@ -101,7 +101,7 @@
+}
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -560,6 +560,7 @@ struct rt2x00lib_ops {
@@ -549,6 +549,7 @@ struct rt2x00lib_ops {
const u8 *data, const size_t len);
int (*load_firmware) (struct rt2x00_dev *rt2x00dev,
const u8 *data, const size_t len);
@ -109,7 +109,7 @@
/*
* Device initialization/deinitialization handlers.
@@ -720,6 +721,7 @@ enum rt2x00_capability_flags {
@@ -705,6 +706,7 @@ enum rt2x00_capability_flags {
REQUIRE_SW_SEQNO,
REQUIRE_HT_TX_DESC,
REQUIRE_PS_AUTOWAKE,
@ -117,7 +117,7 @@
/*
* Capabilities
@@ -989,6 +991,11 @@ struct rt2x00_dev {
@@ -974,6 +976,11 @@ struct rt2x00_dev {
const struct firmware *fw;
/*
@ -132,12 +132,12 @@
--- a/drivers/net/wireless/rt2x00/rt2x00lib.h
+++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
@@ -322,6 +322,22 @@ static inline void rt2x00lib_free_firmwa
#endif /* CONFIG_RT2X00_LIB_FIRMWARE */
#endif /* CPTCFG_RT2X00_LIB_FIRMWARE */
/*
+ * EEPROM file handlers.
+ */
+#ifdef CONFIG_RT2X00_LIB_EEPROM
+#ifdef CPTCFG_RT2X00_LIB_EEPROM
+int rt2x00lib_load_eeprom_file(struct rt2x00_dev *rt2x00dev);
+void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev);
+#else
@ -148,23 +148,23 @@
+static inline void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev)
+{
+}
+#endif /* CONFIG_RT2X00_LIB_EEPROM_FILE */
+#endif /* CPTCFG_RT2X00_LIB_EEPROM */
+
+/*
* Debugfs handlers.
*/
#ifdef CONFIG_RT2X00_LIB_DEBUGFS
#ifdef CPTCFG_RT2X00_LIB_DEBUGFS
--- a/drivers/net/wireless/rt2x00/Kconfig
+++ b/drivers/net/wireless/rt2x00/Kconfig
@@ -64,6 +64,7 @@ config RT2800PCI
@@ -69,6 +69,7 @@ config RT2800PCI
select RT2X00_LIB_PCI if PCI
select RT2X00_LIB_SOC if SOC_RT288X || SOC_RT305X
select RT2X00_LIB_FIRMWARE
+ select RT2X00_LIB_EEPROM
select RT2X00_LIB_CRYPTO
select CRC_CCITT
select EEPROM_93CX6
@@ -221,6 +222,9 @@ config RT2X00_LIB_FIRMWARE
depends on CRC_CCITT
depends on EEPROM_93CX6
@@ -235,6 +236,9 @@ config RT2X00_LIB_FIRMWARE
config RT2X00_LIB_CRYPTO
boolean
@ -172,18 +172,18 @@
+ boolean
+
config RT2X00_LIB_LEDS
depends on !BACKPORT_KERNEL_2_6_25
boolean
default y if (RT2X00_LIB=y && LEDS_CLASS=y) || (RT2X00_LIB=m && LEDS_CLASS!=n)
--- a/drivers/net/wireless/rt2x00/Makefile
+++ b/drivers/net/wireless/rt2x00/Makefile
@@ -7,6 +7,7 @@ rt2x00lib-$(CONFIG_RT2X00_LIB_DEBUGFS) +
rt2x00lib-$(CONFIG_RT2X00_LIB_CRYPTO) += rt2x00crypto.o
rt2x00lib-$(CONFIG_RT2X00_LIB_FIRMWARE) += rt2x00firmware.o
rt2x00lib-$(CONFIG_RT2X00_LIB_LEDS) += rt2x00leds.o
+rt2x00lib-$(CONFIG_RT2X00_LIB_EEPROM) += rt2x00eeprom.o
@@ -7,6 +7,7 @@ rt2x00lib-$(CPTCFG_RT2X00_LIB_DEBUGFS) +
rt2x00lib-$(CPTCFG_RT2X00_LIB_CRYPTO) += rt2x00crypto.o
rt2x00lib-$(CPTCFG_RT2X00_LIB_FIRMWARE) += rt2x00firmware.o
rt2x00lib-$(CPTCFG_RT2X00_LIB_LEDS) += rt2x00leds.o
+rt2x00lib-$(CPTCFG_RT2X00_LIB_EEPROM) += rt2x00eeprom.o
obj-$(CONFIG_RT2X00_LIB) += rt2x00lib.o
obj-$(CONFIG_RT2X00_LIB_MMIO) += rt2x00mmio.o
obj-$(CPTCFG_RT2X00_LIB) += rt2x00lib.o
obj-$(CPTCFG_RT2X00_LIB_MMIO) += rt2x00mmio.o
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -90,25 +90,11 @@ static void rt2800pci_mcu_status(struct
@ -234,7 +234,7 @@
* Initialization functions.
*/
static bool rt2800pci_get_entry_state(struct queue_entry *entry)
@@ -1162,6 +1162,7 @@ static const struct rt2x00lib_ops rt2800
@@ -1155,6 +1155,7 @@ static const struct rt2x00lib_ops rt2800
.get_firmware_name = rt2800pci_get_firmware_name,
.check_firmware = rt2800_check_firmware,
.load_firmware = rt2800_load_firmware,
@ -244,18 +244,18 @@
.get_entry_state = rt2800pci_get_entry_state,
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -1318,6 +1318,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
rt2x00dev->hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;
@@ -1325,6 +1325,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup);
INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep);
+ retval = rt2x00lib_load_eeprom_file(rt2x00dev);
+ if (retval)
+ goto exit;
+
/*
* Initialize work.
* Let the driver probe the device to detect the capabilities.
*/
@@ -1442,6 +1446,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
@@ -1455,6 +1459,11 @@ void rt2x00lib_remove_dev(struct rt2x00_
*/
if (rt2x00dev->drv_data)
kfree(rt2x00dev->drv_data);
@ -277,3 +277,13 @@
rt2x00_set_chip_intf(rt2x00dev, RT2X00_CHIP_INTF_SOC);
--- a/.local-symbols
+++ b/.local-symbols
@@ -272,6 +272,7 @@ RT2X00_LIB_FIRMWARE=
RT2X00_LIB_CRYPTO=
RT2X00_LIB_LEDS=
RT2X00_LIB_DEBUGFS=
+RT2X00_LIB_EEPROM=
RT2X00_DEBUG=
RTLWIFI=
RTLWIFI_DEBUG=

View file

@ -1,10 +0,0 @@
--- a/config.mk
+++ b/config.mk
@@ -647,6 +647,7 @@ export CONFIG_RT2X00=y
export CONFIG_RT2X00_LIB=m
export CONFIG_RT2800_LIB=m
export CONFIG_RT2X00_LIB_FIRMWARE=y
+export CONFIG_RT2X00_LIB_EEPROM=y
export CONFIG_RT2X00_LIB_CRYPTO=y
# export CONFIG_RT2X00_LIB_SOC=y
ifdef CONFIG_COMPAT_KERNEL_2_6_25

View file

@ -9,7 +9,7 @@
{
memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, EEPROM_SIZE);
return 0;
@@ -1099,8 +1099,9 @@ static int rt2800pci_read_eeprom(struct
@@ -1092,8 +1092,9 @@ static int rt2800pci_read_eeprom(struct
{
int retval;
@ -31,7 +31,7 @@
struct rt2x00_dev *rt2x00dev;
int retval;
u16 chip;
@@ -123,6 +124,12 @@ int rt2x00pci_probe(struct pci_dev *pci_
@@ -125,6 +126,12 @@ int rt2x00pci_probe(struct pci_dev *pci_
rt2x00dev->irq = pci_dev->irq;
rt2x00dev->name = pci_name(pci_dev);

View file

@ -24,7 +24,7 @@ Helmut
--- a/drivers/net/wireless/rt2x00/rt2x00queue.c
+++ b/drivers/net/wireless/rt2x00/rt2x00queue.c
@@ -162,36 +162,14 @@ void rt2x00queue_align_frame(struct sk_b
@@ -163,36 +163,14 @@ void rt2x00queue_align_frame(struct sk_b
void rt2x00queue_insert_l2pad(struct sk_buff *skb, unsigned int header_length)
{
unsigned int payload_length = skb->len - header_length;

View file

@ -12,7 +12,7 @@
#endif /* _RT2X00_PLATFORM_H */
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -939,6 +939,22 @@ static int rt2x00lib_probe_hw_modes(stru
@@ -938,6 +938,22 @@ static int rt2x00lib_probe_hw_modes(stru
unsigned int num_rates;
unsigned int i;
@ -27,7 +27,7 @@
+ }
+
+ if ((spec->supported_bands & SUPPORT_BAND_BOTH) == 0) {
+ ERROR(rt2x00dev, "No supported bands\n");
+ rt2x00_err(rt2x00dev, "No supported bands\n");
+ return -EINVAL;
+ }
+
@ -37,7 +37,7 @@
num_rates += 4;
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -425,6 +425,7 @@ struct hw_mode_spec {
@@ -414,6 +414,7 @@ struct hw_mode_spec {
unsigned int supported_bands;
#define SUPPORT_BAND_2GHZ 0x00000001
#define SUPPORT_BAND_5GHZ 0x00000002

View file

@ -10,7 +10,7 @@
int disable_5ghz;
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
@@ -930,6 +930,18 @@ static void rt2x00lib_rate(struct ieee80
@@ -929,6 +929,18 @@ static void rt2x00lib_rate(struct ieee80
entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE;
}
@ -31,7 +31,7 @@
{
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -1337,6 +1337,7 @@ static inline void rt2x00debug_dump_fram
@@ -1326,6 +1326,7 @@ static inline void rt2x00debug_dump_fram
*/
u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev,
struct ieee80211_vif *vif);
@ -41,7 +41,7 @@
* Interrupt context handlers.
--- a/drivers/net/wireless/rt2x00/rt61pci.c
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
@@ -2396,6 +2396,7 @@ static int rt61pci_validate_eeprom(struc
@@ -2395,6 +2395,7 @@ static int rt61pci_validate_eeprom(struc
u32 reg;
u16 word;
u8 *mac;
@ -49,7 +49,7 @@
s8 value;
rt2x00mmio_register_read(rt2x00dev, E2PROM_CSR, &reg);
@@ -2416,7 +2417,11 @@ static int rt61pci_validate_eeprom(struc
@@ -2415,7 +2416,11 @@ static int rt61pci_validate_eeprom(struc
/*
* Start validation of the data that has been read.
*/
@ -60,4 +60,4 @@
+
if (!is_valid_ether_addr(mac)) {
eth_random_addr(mac);
EEPROM(rt2x00dev, "MAC: %pM\n", mac);
rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac);

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -2622,15 +2622,18 @@ static void rt2800_config_channel(struct
@@ -2631,15 +2631,18 @@ static void rt2800_config_channel(struct
/*
* Change BBP settings
*/
@ -22,15 +22,7 @@
rt2800_bbp_write(rt2x00dev, 86, 0);
}
@@ -4203,6 +4206,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 120, 0x50);
if (rt2x00_rt(rt2x00dev, RT3290) ||
+ rt2x00_rt(rt2x00dev, RT3352) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 128, 0x12);
@@ -4507,6 +4511,12 @@ static void rt2800_init_rfcsr_3290(struc
@@ -4948,6 +4951,12 @@ static void rt2800_init_rfcsr_3290(struc
static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
{
@ -40,10 +32,10 @@
+ &rt2x00dev->cap_flags);
+ u8 rfcsr;
+
rt2800_rf_init_calibration(rt2x00dev, 30);
rt2800_rfcsr_write(rt2x00dev, 0, 0xf0);
rt2800_rfcsr_write(rt2x00dev, 1, 0x23);
rt2800_rfcsr_write(rt2x00dev, 2, 0x50);
@@ -4540,15 +4550,30 @@ static void rt2800_init_rfcsr_3352(struc
@@ -4983,15 +4992,30 @@ static void rt2800_init_rfcsr_3352(struc
rt2800_rfcsr_write(rt2x00dev, 31, 0x80);
rt2800_rfcsr_write(rt2x00dev, 32, 0x80);
rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
@ -53,7 +45,7 @@
+ rt2x00_set_field8(&rfcsr, RFCSR34_TX0_EXT_PA, 1);
+ if (!tx1_int_pa)
+ rt2x00_set_field8(&rfcsr, RFCSR34_TX1_EXT_PA, 1);
+ rt2800_rfcsr_write(rt2x00dev, 34, rfcsr );
+ rt2800_rfcsr_write(rt2x00dev, 34, rfcsr);
rt2800_rfcsr_write(rt2x00dev, 35, 0x03);
rt2800_rfcsr_write(rt2x00dev, 36, 0xbd);
rt2800_rfcsr_write(rt2x00dev, 37, 0x3c);
@ -77,7 +69,7 @@
rt2800_rfcsr_write(rt2x00dev, 43, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 44, 0xdb);
rt2800_rfcsr_write(rt2x00dev, 45, 0xdb);
@@ -4556,15 +4581,20 @@ static void rt2800_init_rfcsr_3352(struc
@@ -4999,15 +5023,20 @@ static void rt2800_init_rfcsr_3352(struc
rt2800_rfcsr_write(rt2x00dev, 47, 0x0d);
rt2800_rfcsr_write(rt2x00dev, 48, 0x14);
rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
@ -107,7 +99,15 @@
rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
@@ -5534,7 +5564,8 @@ static int rt2800_init_eeprom(struct rt2
@@ -5692,6 +5721,7 @@ static int rt2800_init_eeprom(struct rt2
* RT53xx: defined in "EEPROM_CHIP_ID" field
*/
if (rt2x00_rt(rt2x00dev, RT3290) ||
+ rt2x00_rt(rt2x00dev, RT3352) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
@@ -5781,7 +5811,8 @@ static int rt2800_init_eeprom(struct rt2
/*
* Detect if this device has Bluetooth co-existence.
*/
@ -117,7 +117,7 @@
__set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags);
/*
@@ -5563,6 +5594,22 @@ static int rt2800_init_eeprom(struct rt2
@@ -5810,6 +5841,22 @@ static int rt2800_init_eeprom(struct rt2
EIRP_MAX_TX_POWER_LIMIT)
__set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags);
@ -203,7 +203,7 @@
* EEPROM frequency
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -741,6 +741,8 @@ enum rt2x00_capability_flags {
@@ -726,6 +726,8 @@ enum rt2x00_capability_flags {
CAPABILITY_DOUBLE_ANTENNA,
CAPABILITY_BT_COEXIST,
CAPABILITY_VCO_RECALIBRATION,

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -5886,6 +5886,27 @@ static const struct rf_channel rf_vals_5
@@ -6133,6 +6133,27 @@ static const struct rf_channel rf_vals_5
{196, 83, 0, 12, 1},
};
@ -28,7 +28,7 @@
static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
{
struct hw_mode_spec *spec = &rt2x00dev->spec;
@@ -5964,7 +5985,6 @@ static int rt2800_probe_hw_mode(struct r
@@ -6211,7 +6232,6 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF3022) ||
rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3320) ||
@ -36,7 +36,7 @@
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) ||
@@ -5972,6 +5992,12 @@ static int rt2800_probe_hw_mode(struct r
@@ -6219,6 +6239,12 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF5392)) {
spec->num_channels = 14;
spec->channels = rf_vals_3x;
@ -49,7 +49,7 @@
} else if (rt2x00_rf(rt2x00dev, RF3052)) {
spec->supported_bands |= SUPPORT_BAND_5GHZ;
spec->num_channels = ARRAY_SIZE(rf_vals_3x);
@@ -6120,6 +6146,19 @@ static int rt2800_probe_rt(struct rt2x00
@@ -6366,6 +6392,19 @@ static int rt2800_probe_rt(struct rt2x00
return 0;
}
@ -69,7 +69,7 @@
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
{
int retval;
@@ -6149,6 +6188,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
@@ -6395,6 +6434,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r
rt2800_register_write(rt2x00dev, GPIO_CTRL, reg);
/*
@ -87,7 +87,7 @@
retval = rt2800_probe_hw_mode(rt2x00dev);
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -420,6 +420,7 @@ static inline struct rt2x00_intf* vif_to
@@ -409,6 +409,7 @@ static inline struct rt2x00_intf* vif_to
* @channels: Device/chipset specific channel values (See &struct rf_channel).
* @channels_info: Additional information for channels (See &struct channel_info).
* @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap).
@ -95,7 +95,7 @@
*/
struct hw_mode_spec {
unsigned int supported_bands;
@@ -436,6 +437,7 @@ struct hw_mode_spec {
@@ -425,6 +426,7 @@ struct hw_mode_spec {
const struct channel_info *channels_info;
struct ieee80211_sta_ht_cap ht;

View file

@ -13,7 +13,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -1301,11 +1301,18 @@ static int rt2800soc_probe(struct platfo
@@ -1308,11 +1308,18 @@ static int rt2800soc_probe(struct platfo
return rt2x00soc_probe(pdev, &rt2800pci_ops);
}

View file

@ -1,6 +1,14 @@
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
@@ -323,11 +323,17 @@ static int rt2800pci_write_firmware(stru
@@ -39,6 +39,7 @@
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/eeprom_93cx6.h>
+#include <linux/of.h>
#include "rt2x00.h"
#include "rt2x00mmio.h"
@@ -323,11 +324,17 @@ static int rt2800pci_write_firmware(stru
static char *rt2800pci_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev)
{
struct rt2x00_platform_data *pdata;

View file

@ -8,7 +8,7 @@
#include "rt2x00.h"
#include "rt2800lib.h"
@@ -6148,13 +6149,14 @@ static int rt2800_probe_rt(struct rt2x00
@@ -6394,13 +6395,14 @@ static int rt2800_probe_rt(struct rt2x00
int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev)
{

View file

@ -10,7 +10,7 @@
#define RF5372 0x5372
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
@@ -2132,6 +2132,15 @@ static void rt2800_config_channel_rf53xx
@@ -2141,6 +2141,15 @@ static void rt2800_config_channel_rf53xx
if (rf->channel <= 14) {
int idx = rf->channel-1;
@ -26,7 +26,7 @@
if (test_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags)) {
if (rt2x00_rt_rev_gte(rt2x00dev, RT5390, REV_RT5390F)) {
/* r55/r59 value array of channel 1~14 */
@@ -2589,6 +2598,7 @@ static void rt2800_config_channel(struct
@@ -2598,6 +2607,7 @@ static void rt2800_config_channel(struct
case RF3322:
rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
break;
@ -34,7 +34,7 @@
case RF5360:
case RF5370:
case RF5372:
@@ -2605,6 +2615,7 @@ static void rt2800_config_channel(struct
@@ -2614,6 +2624,7 @@ static void rt2800_config_channel(struct
if (rt2x00_rf(rt2x00dev, RF3290) ||
rt2x00_rf(rt2x00dev, RF3322) ||
@ -42,7 +42,7 @@
rt2x00_rf(rt2x00dev, RF5360) ||
rt2x00_rf(rt2x00dev, RF5370) ||
rt2x00_rf(rt2x00dev, RF5372) ||
@@ -2746,7 +2757,8 @@ static void rt2800_config_channel(struct
@@ -2755,7 +2766,8 @@ static void rt2800_config_channel(struct
/*
* Clear update flag
*/
@ -52,7 +52,7 @@
rt2800_bbp_read(rt2x00dev, 49, &bbp);
rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0);
rt2800_bbp_write(rt2x00dev, 49, bbp);
@@ -3185,6 +3197,7 @@ void rt2800_vco_calibration(struct rt2x0
@@ -3201,6 +3213,7 @@ void rt2800_vco_calibration(struct rt2x0
rt2800_rfcsr_write(rt2x00dev, 7, rfcsr);
break;
case RF3290:
@ -60,7 +60,7 @@
case RF5360:
case RF5370:
case RF5372:
@@ -3524,7 +3537,8 @@ static int rt2800_init_registers(struct
@@ -3540,7 +3553,8 @@ static int rt2800_init_registers(struct
} else if (rt2x00_rt(rt2x00dev, RT3572)) {
rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000400);
rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
@ -70,182 +70,64 @@
rt2x00_rt(rt2x00dev, RT5392) ||
rt2x00_rt(rt2x00dev, RT5592)) {
rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
@@ -4043,6 +4057,10 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 4, 0x50);
}
+ if (rt2x00_rt(rt2x00dev, RT5350)) {
+ rt2800_bbp_write(rt2x00dev, 4, 0x50);
+ }
+
if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
@@ -4052,11 +4070,13 @@ static int rt2800_init_bbp(struct rt2x00
rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
rt2x00_rt(rt2x00dev, RT3572) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 31, 0x08);
- if (rt2x00_rt(rt2x00dev, RT3352))
+ if (rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350))
rt2800_bbp_write(rt2x00dev, 47, 0x48);
rt2800_bbp_write(rt2x00dev, 65, 0x2c);
@@ -4064,6 +4084,7 @@ static int rt2800_init_bbp(struct rt2x00
if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 68, 0x0b);
@@ -4073,6 +4094,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 73, 0x12);
} else if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) {
rt2800_bbp_write(rt2x00dev, 69, 0x12);
@@ -4109,7 +4131,8 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 79, 0x18);
rt2800_bbp_write(rt2x00dev, 80, 0x09);
rt2800_bbp_write(rt2x00dev, 81, 0x33);
- } else if (rt2x00_rt(rt2x00dev, RT3352)) {
+ } else if (rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350)) {
rt2800_bbp_write(rt2x00dev, 78, 0x0e);
rt2800_bbp_write(rt2x00dev, 80, 0x08);
rt2800_bbp_write(rt2x00dev, 81, 0x37);
@@ -4119,6 +4142,7 @@ static int rt2800_init_bbp(struct rt2x00
@@ -4193,9 +4207,13 @@ static void rt2800_init_bbp_3352(struct
rt2800_bbp_write(rt2x00dev, 82, 0x62);
if (rt2x00_rt(rt2x00dev, RT3290) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 83, 0x7a);
@@ -4128,6 +4152,7 @@ static int rt2800_init_bbp(struct rt2x00
if (rt2x00_rt_rev(rt2x00dev, RT2860, REV_RT2860D))
rt2800_bbp_write(rt2x00dev, 84, 0x19);
else if (rt2x00_rt(rt2x00dev, RT3290) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 84, 0x9a);
@@ -4136,6 +4161,7 @@ static int rt2800_init_bbp(struct rt2x00
if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 86, 0x38);
@@ -4150,6 +4176,7 @@ static int rt2800_init_bbp(struct rt2x00
- rt2800_bbp_write(rt2x00dev, 83, 0x6a);
-
- rt2800_bbp_write(rt2x00dev, 84, 0x99);
+ if (rt2x00_rt(rt2x00dev, RT5350)) {
+ rt2800_bbp_write(rt2x00dev, 83, 0x7a);
+ rt2800_bbp_write(rt2x00dev, 84, 0x9a);
+ } else {
+ rt2800_bbp_write(rt2x00dev, 83, 0x6a);
+ rt2800_bbp_write(rt2x00dev, 84, 0x99);
+ }
if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 92, 0x02);
@@ -4168,6 +4195,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
rt2x00_rt(rt2x00dev, RT3572) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392) ||
rt2800_is_305x_soc(rt2x00dev))
@@ -4177,6 +4205,7 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 86, 0x38);
if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 104, 0x92);
@@ -4187,13 +4216,15 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 105, 0x1c);
else if (rt2x00_rt(rt2x00dev, RT3352))
rt2800_bbp_write(rt2x00dev, 105, 0x34);
- else if (rt2x00_rt(rt2x00dev, RT5390) ||
+ else if (rt2x00_rt(rt2x00dev, RT5350) ||
+ rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 105, 0x3c);
else
rt2800_bbp_write(rt2x00dev, 105, 0x05);
@@ -4209,9 +4227,13 @@ static void rt2800_init_bbp_3352(struct
if (rt2x00_rt(rt2x00dev, RT3290) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390))
rt2800_bbp_write(rt2x00dev, 106, 0x03);
else if (rt2x00_rt(rt2x00dev, RT3352))
@@ -4203,11 +4234,13 @@ static int rt2800_init_bbp(struct rt2x00
else
rt2800_bbp_write(rt2x00dev, 106, 0x35);
rt2800_bbp_write(rt2x00dev, 104, 0x92);
- if (rt2x00_rt(rt2x00dev, RT3352))
+ if (rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350))
rt2800_bbp_write(rt2x00dev, 120, 0x50);
- rt2800_bbp_write(rt2x00dev, 105, 0x34);
-
- rt2800_bbp_write(rt2x00dev, 106, 0x05);
+ if (rt2x00_rt(rt2x00dev, RT5350)) {
+ rt2800_bbp_write(rt2x00dev, 105, 0x3c);
+ rt2800_bbp_write(rt2x00dev, 106, 0x03);
+ } else {
+ rt2800_bbp_write(rt2x00dev, 105, 0x34);
+ rt2800_bbp_write(rt2x00dev, 106, 0x05);
+ }
if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2800_bbp_write(rt2x00dev, 128, 0x12);
@@ -4217,13 +4250,15 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 135, 0xf6);
}
rt2800_bbp_write(rt2x00dev, 120, 0x50);
- if (rt2x00_rt(rt2x00dev, RT3352))
+ if (rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350))
rt2800_bbp_write(rt2x00dev, 137, 0x0f);
if (rt2x00_rt(rt2x00dev, RT3071) ||
rt2x00_rt(rt2x00dev, RT3090) ||
rt2x00_rt(rt2x00dev, RT3390) ||
rt2x00_rt(rt2x00dev, RT3572) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) {
rt2800_bbp_read(rt2x00dev, 138, &value);
@@ -4260,7 +4295,8 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 3, value);
}
- if (rt2x00_rt(rt2x00dev, RT3352)) {
+ if (rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350)) {
rt2800_bbp_write(rt2x00dev, 163, 0xbd);
/* Set ITxBF timeout to 0x9c40=1000msec */
rt2800_bbp_write(rt2x00dev, 179, 0x02);
@@ -4282,6 +4318,14 @@ static int rt2800_init_bbp(struct rt2x00
rt2800_bbp_write(rt2x00dev, 148, 0xc8);
}
@@ -4236,6 +4258,13 @@ static void rt2800_init_bbp_3352(struct
rt2800_bbp_write(rt2x00dev, 143, 0xa2);
rt2800_bbp_write(rt2x00dev, 148, 0xc8);
+
+ if (rt2x00_rt(rt2x00dev, RT5350)) {
+ rt2800_bbp_write(rt2x00dev, 150, 0x40); /* Antenna Software OFDM */
+ rt2800_bbp_write(rt2x00dev, 151, 0x30); /* Antenna Software CCK */
+ rt2800_bbp_write(rt2x00dev, 152, 0xa3);
+ rt2800_bbp_write(rt2x00dev, 154, 0); /* Clear previously selected antenna */
+ }
+
+
if (rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392)) {
int ant, div_mode;
@@ -4674,6 +4718,76 @@ static void rt2800_init_rfcsr_3572(struc
rt2800_rfcsr_write(rt2x00dev, 31, 0x10);
}
static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev)
@@ -4520,6 +4549,7 @@ static void rt2800_init_bbp(struct rt2x0
rt2800_init_bbp_3290(rt2x00dev);
break;
case RT3352:
+ case RT5350:
rt2800_init_bbp_3352(rt2x00dev);
break;
case RT3390:
@@ -5159,6 +5189,76 @@ static void rt2800_init_rfcsr_3572(struc
rt2800_normal_mode_setup_3xxx(rt2x00dev);
}
+static void rt2800_init_rfcsr_5350(struct rt2x00_dev *rt2x00dev)
@ -320,16 +202,8 @@
+
static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
{
rt2800_rfcsr_write(rt2x00dev, 1, 0x0f);
@@ -4899,6 +5013,7 @@ static int rt2800_init_rfcsr(struct rt2x
!rt2x00_rt(rt2x00dev, RT3352) &&
!rt2x00_rt(rt2x00dev, RT3390) &&
!rt2x00_rt(rt2x00dev, RT3572) &&
+ !rt2x00_rt(rt2x00dev, RT5350) &&
!rt2x00_rt(rt2x00dev, RT5390) &&
!rt2x00_rt(rt2x00dev, RT5392) &&
!rt2x00_rt(rt2x00dev, RT5392) &&
@@ -4951,6 +5066,9 @@ static int rt2800_init_rfcsr(struct rt2x
rt2800_rf_init_calibration(rt2x00dev, 2);
@@ -5387,6 +5487,9 @@ static void rt2800_init_rfcsr(struct rt2
case RT3572:
rt2800_init_rfcsr_3572(rt2x00dev);
break;
@ -339,20 +213,24 @@
case RT5390:
rt2800_init_rfcsr_5390(rt2x00dev);
break;
@@ -5361,6 +5479,12 @@ static int rt2800_validate_eeprom(struct
if (rt2x00_get_field16(word, EEPROM_NIC_CONF0_RXPATH) > 2)
rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 2);
@@ -5598,6 +5701,12 @@ static int rt2800_validate_eeprom(struct
rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF2820);
rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
+ } else if(rt2x00_rt(rt2x00dev, RT5350)) {
rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word);
+ } else if (rt2x00_rt(rt2x00dev, RT5350)) {
+ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 1);
+ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_TXPATH, 1);
+ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF3320);
+ rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word);
+ EEPROM(rt2x00dev, "rt5350: Ant: 0x%04x\n", word);
}
rt2x00_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &word);
@@ -5480,6 +5604,8 @@ static int rt2800_init_eeprom(struct rt2
+ rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word);
} else if (rt2x00_rt(rt2x00dev, RT2860) ||
rt2x00_rt(rt2x00dev, RT2872)) {
/*
@@ -5723,9 +5832,12 @@ static int rt2800_init_eeprom(struct rt2
*/
if (rt2x00_rt(rt2x00dev, RT3290) ||
rt2x00_rt(rt2x00dev, RT3352) ||
+ rt2x00_rt(rt2x00dev, RT5350) ||
rt2x00_rt(rt2x00dev, RT5390) ||
rt2x00_rt(rt2x00dev, RT5392))
rt2x00_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
@ -361,7 +239,7 @@
else
rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE);
@@ -5496,6 +5622,7 @@ static int rt2800_init_eeprom(struct rt2
@@ -5742,6 +5854,7 @@ static int rt2800_init_eeprom(struct rt2
case RF3290:
case RF3320:
case RF3322:
@ -369,7 +247,7 @@
case RF5360:
case RF5370:
case RF5372:
@@ -5993,7 +6120,8 @@ static int rt2800_probe_hw_mode(struct r
@@ -6240,7 +6353,8 @@ static int rt2800_probe_hw_mode(struct r
rt2x00_rf(rt2x00dev, RF5392)) {
spec->num_channels = 14;
spec->channels = rf_vals_3x;
@ -379,7 +257,7 @@
spec->num_channels = 14;
if (spec->clk_is_20mhz)
spec->channels = rf_vals_xtal20mhz_3x;
@@ -6094,6 +6222,7 @@ static int rt2800_probe_hw_mode(struct r
@@ -6341,6 +6455,7 @@ static int rt2800_probe_hw_mode(struct r
case RF3320:
case RF3052:
case RF3290:
@ -387,7 +265,7 @@
case RF5360:
case RF5370:
case RF5372:
@@ -6131,6 +6260,7 @@ static int rt2800_probe_rt(struct rt2x00
@@ -6378,6 +6493,7 @@ static int rt2800_probe_rt(struct rt2x00
case RT3352:
case RT3390:
case RT3572:
@ -397,7 +275,7 @@
case RT5592:
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -192,6 +192,7 @@ struct rt2x00_chip {
@@ -181,6 +181,7 @@ struct rt2x00_chip {
#define RT3572 0x3572
#define RT3593 0x3593
#define RT3883 0x3883 /* WSOC */

View file

@ -12,14 +12,14 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
--- a/drivers/net/wireless/rt2x00/Kconfig
+++ b/drivers/net/wireless/rt2x00/Kconfig
@@ -68,6 +68,7 @@ config RT2800PCI
@@ -71,6 +71,7 @@ config RT2800PCI
select RT2X00_LIB_FIRMWARE
select RT2X00_LIB_EEPROM
select RT2X00_LIB_CRYPTO
select CRC_CCITT
select EEPROM_93CX6
+ select MTD if SOC_RT288X || SOC_RT305X
depends on CRC_CCITT
depends on EEPROM_93CX6
---help---
This adds support for rt27xx/rt28xx/rt30xx wireless chipset family.
Supported chips: RT2760, RT2790, RT2860, RT2880, RT2890, RT3052,
--- a/drivers/net/wireless/rt2x00/rt2x00eeprom.c
+++ b/drivers/net/wireless/rt2x00/rt2x00eeprom.c
@@ -30,12 +30,77 @@
@ -99,4 +99,4 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+
ee_name = rt2x00dev->ops->lib->get_eeprom_file_name(rt2x00dev);
if (!ee_name) {
ERROR(rt2x00dev,
rt2x00_err(rt2x00dev,

View file

@ -1,6 +1,6 @@
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
@@ -5525,6 +5525,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
@@ -5530,6 +5530,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
static DEFINE_PCI_DEVICE_TABLE(mwl8k_pci_id_table) = {

View file

@ -22,7 +22,7 @@
static int modparam_bad_frames_preempt;
module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444);
MODULE_PARM_DESC(bad_frames_preempt,
@@ -2747,10 +2752,10 @@ static int b43_gpio_init(struct b43_wlde
@@ -2740,10 +2745,10 @@ static int b43_gpio_init(struct b43_wlde
u32 mask, set;
b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0);

View file

@ -7,23 +7,23 @@
-b43-y += pio.o
+b43-$(CONFIG_B43_PIO) += pio.o
b43-y += rfkill.o
b43-$(CONFIG_B43_LEDS) += leds.o
b43-$(CONFIG_B43_PCMCIA) += pcmcia.o
b43-$(CPTCFG_B43_LEDS) += leds.o
b43-$(CPTCFG_B43_PCMCIA) += pcmcia.o
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -1916,10 +1916,12 @@ static void b43_do_interrupt_thread(stru
dma_reason[0], dma_reason[1],
dma_reason[2], dma_reason[3],
dma_reason[4], dma_reason[5]);
@@ -1913,10 +1913,12 @@ static void b43_do_interrupt_thread(stru
dma_reason[0], dma_reason[1],
dma_reason[2], dma_reason[3],
dma_reason[4], dma_reason[5]);
+#ifdef CONFIG_B43_PIO
b43err(dev->wl, "This device does not support DMA "
b43err(dev->wl, "This device does not support DMA "
"on your system. It will now be switched to PIO.\n");
/* Fall back to PIO transfers if we get fatal DMA errors! */
dev->use_pio = true;
/* Fall back to PIO transfers if we get fatal DMA errors! */
dev->use_pio = true;
+#endif
b43_controller_restart(dev, "DMA error");
return;
}
b43_controller_restart(dev, "DMA error");
return;
}
--- a/drivers/net/wireless/b43/pio.h
+++ b/drivers/net/wireless/b43/pio.h
@@ -150,7 +150,7 @@ static inline void b43_piorx_write32(str
@ -73,3 +73,14 @@
+#endif /* CONFIG_B43_PIO */
#endif /* B43_PIO_H_ */
--- a/drivers/net/wireless/b43/Kconfig
+++ b/drivers/net/wireless/b43/Kconfig
@@ -104,7 +104,7 @@ config B43_BCMA_PIO
default y
config B43_PIO
- bool
+ bool "Broadcom 43xx PIO support"
depends on B43
select SSB_BLOCKIO
default y

View file

@ -9,7 +9,7 @@
antenna = b43_antenna_to_phyctl(antenna);
ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL);
/* We can't send beacons with short preamble. Would get PHY errors. */
@@ -3105,8 +3105,8 @@ static int b43_chip_init(struct b43_wlde
@@ -3098,8 +3098,8 @@ static int b43_chip_init(struct b43_wlde
/* Select the antennae */
if (phy->ops->set_rx_antenna)
@ -20,7 +20,7 @@
if (phy->type == B43_PHYTYPE_B) {
value16 = b43_read16(dev, 0x005E);
@@ -3850,7 +3850,6 @@ static int b43_op_config(struct ieee8021
@@ -3843,7 +3843,6 @@ static int b43_op_config(struct ieee8021
struct b43_wldev *dev;
struct b43_phy *phy;
struct ieee80211_conf *conf = &hw->conf;
@ -28,7 +28,7 @@
int err = 0;
bool reload_bss = false;
@@ -3904,11 +3903,9 @@ static int b43_op_config(struct ieee8021
@@ -3897,11 +3896,9 @@ static int b43_op_config(struct ieee8021
}
/* Antennas for RX and management frame TX. */
@ -42,7 +42,7 @@
if (wl->radio_enabled != phy->radio_on) {
if (wl->radio_enabled) {
@@ -5033,6 +5030,47 @@ static int b43_op_get_survey(struct ieee
@@ -5026,6 +5023,47 @@ static int b43_op_get_survey(struct ieee
return 0;
}
@ -90,7 +90,7 @@
static const struct ieee80211_ops b43_hw_ops = {
.tx = b43_op_tx,
.conf_tx = b43_op_conf_tx,
@@ -5054,6 +5092,8 @@ static const struct ieee80211_ops b43_hw
@@ -5047,6 +5085,8 @@ static const struct ieee80211_ops b43_hw
.sw_scan_complete = b43_op_sw_scan_complete_notifier,
.get_survey = b43_op_get_survey,
.rfkill_poll = b43_rfkill_poll,
@ -99,7 +99,7 @@
};
/* Hard-reset the chip. Do not call this directly.
@@ -5300,6 +5340,8 @@ static int b43_one_core_attach(struct b4
@@ -5293,6 +5333,8 @@ static int b43_one_core_attach(struct b4
if (!wldev)
goto out;
@ -108,7 +108,7 @@
wldev->use_pio = b43_modparam_pio;
wldev->dev = dev;
wldev->wl = wl;
@@ -5390,6 +5432,9 @@ static struct b43_wl *b43_wireless_init(
@@ -5383,6 +5425,9 @@ static struct b43_wl *b43_wireless_init(
hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN;

View file

@ -88,7 +88,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
dev->phy.writes_counter = 0;
--- a/drivers/net/wireless/b43/phy_n.c
+++ b/drivers/net/wireless/b43/phy_n.c
@@ -5368,14 +5368,14 @@ static inline void check_phyreg(struct b
@@ -5417,14 +5417,14 @@ static inline void check_phyreg(struct b
static u16 b43_nphy_op_read(struct b43_wldev *dev, u16 reg)
{
check_phyreg(dev, reg);
@ -105,7 +105,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
b43_write16(dev, B43_MMIO_PHY_DATA, value);
}
@@ -5383,7 +5383,7 @@ static void b43_nphy_op_maskset(struct b
@@ -5432,7 +5432,7 @@ static void b43_nphy_op_maskset(struct b
u16 set)
{
check_phyreg(dev, reg);
@ -114,7 +114,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
b43_maskset16(dev, B43_MMIO_PHY_DATA, mask, set);
}
@@ -5394,7 +5394,7 @@ static u16 b43_nphy_op_radio_read(struct
@@ -5443,7 +5443,7 @@ static u16 b43_nphy_op_radio_read(struct
/* N-PHY needs 0x100 for read access */
reg |= 0x100;
@ -123,7 +123,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
return b43_read16(dev, B43_MMIO_RADIO_DATA_LOW);
}
@@ -5403,7 +5403,7 @@ static void b43_nphy_op_radio_write(stru
@@ -5452,7 +5452,7 @@ static void b43_nphy_op_radio_write(stru
/* Register 1 is a 32-bit register. */
B43_WARN_ON(reg == 1);

View file

@ -1,145 +0,0 @@
From 5921f167baf30255ebc079c6e751a7ed31cd986d Mon Sep 17 00:00:00 2001
From: Thommy Jakobsson <thommyj@gmail.com>
Date: Tue, 23 Apr 2013 21:45:11 +0200
Subject: [PATCH 2/3] B43: Handle DMA RX descriptor underrun
Add handling of rx descriptor underflow. This fixes a fault that could
happen on slow machines, where data is received faster than the CPU can
handle. In such a case the device will use up all rx descriptors and
refuse to send any more data before confirming that it is ok. This
patch enables necessary interrupt to discover such a situation and will
handle them by dropping everything in the ring buffer.
Reviewed-by: Michael Buesch <m@bues.ch>
Signed-off-by: Thommy Jakobsson <thommyj@gmail.com>
Cc: stable <stable@vger.kernel.org>
---
drivers/net/wireless/b43/dma.c | 19 +++++++++++++++++
drivers/net/wireless/b43/dma.h | 4 +++-
drivers/net/wireless/b43/main.c | 43 ++++++++++++++++-----------------------
3 files changed, 40 insertions(+), 26 deletions(-)
--- a/drivers/net/wireless/b43/dma.c
+++ b/drivers/net/wireless/b43/dma.c
@@ -1733,6 +1733,25 @@ drop_recycle_buffer:
sync_descbuffer_for_device(ring, dmaaddr, ring->rx_buffersize);
}
+void b43_dma_handle_rx_overflow(struct b43_dmaring *ring)
+{
+ int current_slot, previous_slot;
+
+ B43_WARN_ON(ring->tx);
+
+ /* Device has filled all buffers, drop all packets and let TCP
+ * decrease speed.
+ * Decrement RX index by one will let the device to see all slots
+ * as free again
+ */
+ /*
+ *TODO: How to increase rx_drop in mac80211?
+ */
+ current_slot = ring->ops->get_current_rxslot(ring);
+ previous_slot = prev_slot(ring, current_slot);
+ ring->ops->set_current_rxslot(ring, previous_slot);
+}
+
void b43_dma_rx(struct b43_dmaring *ring)
{
const struct b43_dma_ops *ops = ring->ops;
--- a/drivers/net/wireless/b43/dma.h
+++ b/drivers/net/wireless/b43/dma.h
@@ -9,7 +9,7 @@
/* DMA-Interrupt reasons. */
#define B43_DMAIRQ_FATALMASK ((1 << 10) | (1 << 11) | (1 << 12) \
| (1 << 14) | (1 << 15))
-#define B43_DMAIRQ_NONFATALMASK (1 << 13)
+#define B43_DMAIRQ_RDESC_UFLOW (1 << 13)
#define B43_DMAIRQ_RX_DONE (1 << 16)
/*** 32-bit DMA Engine. ***/
@@ -295,6 +295,8 @@ int b43_dma_tx(struct b43_wldev *dev,
void b43_dma_handle_txstatus(struct b43_wldev *dev,
const struct b43_txstatus *status);
+void b43_dma_handle_rx_overflow(struct b43_dmaring *ring);
+
void b43_dma_rx(struct b43_dmaring *ring);
void b43_dma_direct_fifo_rx(struct b43_wldev *dev,
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
@@ -1907,32 +1907,20 @@ static void b43_do_interrupt_thread(stru
}
}
- if (unlikely(merged_dma_reason & (B43_DMAIRQ_FATALMASK |
- B43_DMAIRQ_NONFATALMASK))) {
- if (merged_dma_reason & B43_DMAIRQ_FATALMASK) {
- b43err(dev->wl, "Fatal DMA error: "
- "0x%08X, 0x%08X, 0x%08X, "
- "0x%08X, 0x%08X, 0x%08X\n",
- dma_reason[0], dma_reason[1],
- dma_reason[2], dma_reason[3],
- dma_reason[4], dma_reason[5]);
+ if (unlikely(merged_dma_reason & (B43_DMAIRQ_FATALMASK))) {
+ b43err(dev->wl,
+ "Fatal DMA error: 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X, 0x%08X\n",
+ dma_reason[0], dma_reason[1],
+ dma_reason[2], dma_reason[3],
+ dma_reason[4], dma_reason[5]);
#ifdef CONFIG_B43_PIO
- b43err(dev->wl, "This device does not support DMA "
+ b43err(dev->wl, "This device does not support DMA "
"on your system. It will now be switched to PIO.\n");
- /* Fall back to PIO transfers if we get fatal DMA errors! */
- dev->use_pio = true;
+ /* Fall back to PIO transfers if we get fatal DMA errors! */
+ dev->use_pio = true;
#endif
- b43_controller_restart(dev, "DMA error");
- return;
- }
- if (merged_dma_reason & B43_DMAIRQ_NONFATALMASK) {
- b43err(dev->wl, "DMA error: "
- "0x%08X, 0x%08X, 0x%08X, "
- "0x%08X, 0x%08X, 0x%08X\n",
- dma_reason[0], dma_reason[1],
- dma_reason[2], dma_reason[3],
- dma_reason[4], dma_reason[5]);
- }
+ b43_controller_restart(dev, "DMA error");
+ return;
}
if (unlikely(reason & B43_IRQ_UCODE_DEBUG))
@@ -1951,6 +1939,11 @@ static void b43_do_interrupt_thread(stru
handle_irq_noise(dev);
/* Check the DMA reason registers for received data. */
+ if (dma_reason[0] & B43_DMAIRQ_RDESC_UFLOW) {
+ if (B43_DEBUG)
+ b43warn(dev->wl, "RX descriptor underrun\n");
+ b43_dma_handle_rx_overflow(dev->dma.rx_ring);
+ }
if (dma_reason[0] & B43_DMAIRQ_RX_DONE) {
if (b43_using_pio_transfers(dev))
b43_pio_rx(dev->pio.rx_queue);
@@ -2008,7 +2001,7 @@ static irqreturn_t b43_do_interrupt(stru
return IRQ_NONE;
dev->dma_reason[0] = b43_read32(dev, B43_MMIO_DMA0_REASON)
- & 0x0001DC00;
+ & 0x0001FC00;
dev->dma_reason[1] = b43_read32(dev, B43_MMIO_DMA1_REASON)
& 0x0000DC00;
dev->dma_reason[2] = b43_read32(dev, B43_MMIO_DMA2_REASON)
@@ -3137,7 +3130,7 @@ static int b43_chip_init(struct b43_wlde
b43_write32(dev, 0x018C, 0x02000000);
}
b43_write32(dev, B43_MMIO_GEN_IRQ_REASON, 0x00004000);
- b43_write32(dev, B43_MMIO_DMA0_IRQ_MASK, 0x0001DC00);
+ b43_write32(dev, B43_MMIO_DMA0_IRQ_MASK, 0x0001FC00);
b43_write32(dev, B43_MMIO_DMA1_IRQ_MASK, 0x0000DC00);
b43_write32(dev, B43_MMIO_DMA2_IRQ_MASK, 0x0000DC00);
b43_write32(dev, B43_MMIO_DMA3_IRQ_MASK, 0x0001DC00);