mac80211: update to wireless-testing 2013-06-13 + latest backport infrastructure
Signed-off-by: Felix Fietkau <nbd@openwrt.org> git-svn-id: svn://svn.openwrt.org/openwrt/trunk@36939 3c298f89-4303-0410-b956-a3cf2f4a3e73master
parent
ed11b6185b
commit
5fb5b75668
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
|
@ -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
|
|
@ -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
|
|
@ -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>
|
||||
#
|
|
@ -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
|
|
@ -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,
|
|
@ -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)) */
|
||||
|
|
|
@ -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
|
||||
|
|
@ -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;
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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/
|
|
@ -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
|
||||
|
|
@ -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
|
@ -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)
|
||||
*/
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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");
|
||||
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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---
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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(®_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)
|
||||
{
|
||||
|
|
|
@ -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) },
|
||||
|
|
|
@ -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) },
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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},
|
|
@ -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) {
|
||||
|
|
|
@ -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 */
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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, ®);
|
||||
@@ -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);
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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) = {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
Loading…
Reference in New Issue