mirror of https://github.com/hak5/openwrt-owl.git
mac80211: update to 2015-12-03
Signed-off-by: Felix Fietkau <nbd@openwrt.org> SVN-Revision: 47771owl
parent
8b30afb005
commit
70ac77f869
|
@ -10,11 +10,11 @@ include $(INCLUDE_DIR)/kernel.mk
|
|||
|
||||
PKG_NAME:=mac80211
|
||||
|
||||
PKG_VERSION:=2015-10-26
|
||||
PKG_VERSION:=2015-12-03
|
||||
PKG_RELEASE:=1
|
||||
PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources
|
||||
PKG_BACKPORT_VERSION:=
|
||||
PKG_MD5SUM:=3b07569065a18c6a69a340ea50235b7d
|
||||
PKG_MD5SUM:=7a1dc4dc2f509e5532b935b0a0d15103
|
||||
|
||||
PKG_SOURCE:=compat-wireless-$(PKG_VERSION)$(PKG_BACKPORT_VERSION).tar.bz2
|
||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION)
|
||||
|
@ -145,7 +145,7 @@ define KernelPackage/adm8211
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=ADMTek 8211 support
|
||||
DEPENDS+=@PCI_SUPPORT +kmod-mac80211 +kmod-eeprom-93cx6
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/adm8211.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/admtek/adm8211.ko
|
||||
AUTOLOAD:=$(call AutoProbe,adm8211)
|
||||
endef
|
||||
|
||||
|
@ -356,7 +356,7 @@ define KernelPackage/b43
|
|||
@PCI_SUPPORT +kmod-mac80211 \
|
||||
$(if $(CONFIG_PACKAGE_B43_USE_SSB),+kmod-ssb) \
|
||||
$(if $(CONFIG_PACKAGE_B43_USE_BCMA),+kmod-bcma)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43/b43.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/b43/b43.ko
|
||||
AUTOLOAD:=$(call AutoProbe,b43)
|
||||
MENU:=1
|
||||
endef
|
||||
|
@ -596,7 +596,7 @@ define KernelPackage/b43legacy
|
|||
KCONFIG:= \
|
||||
CONFIG_HW_RANDOM=y
|
||||
DEPENDS+= +kmod-mac80211 +!(TARGET_brcm47xx||TARGET_brcm63xx):kmod-ssb
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/b43legacy/b43legacy.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko
|
||||
AUTOLOAD:=$(call AutoProbe,b43legacy)
|
||||
MENU:=1
|
||||
endef
|
||||
|
@ -640,7 +640,7 @@ define KernelPackage/brcmutil
|
|||
TITLE:=Broadcom IEEE802.11n common driver parts
|
||||
URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211
|
||||
DEPENDS+=@PCI_SUPPORT||USB_SUPPORT
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmutil/brcmutil.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko
|
||||
AUTOLOAD:=$(call AutoProbe,brcmutil)
|
||||
MENU:=1
|
||||
endef
|
||||
|
@ -679,7 +679,7 @@ define KernelPackage/brcmsmac
|
|||
TITLE:=Broadcom IEEE802.11n PCIe SoftMAC WLAN driver
|
||||
URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211
|
||||
DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT +!TARGET_brcm47xx:kmod-bcma +kmod-lib-cordic +kmod-lib-crc8 +kmod-brcmutil
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmsmac/brcmsmac.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko
|
||||
AUTOLOAD:=$(call AutoProbe,brcmsmac)
|
||||
MENU:=1
|
||||
endef
|
||||
|
@ -711,7 +711,7 @@ define KernelPackage/brcmfmac
|
|||
TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver
|
||||
URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211
|
||||
DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +@DRIVER_11N_SUPPORT +kmod-brcmutil +BRCMFMAC_SDIO:kmod-mmc +BRCMFMAC_USB:kmod-usb-core
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/brcm80211/brcmfmac/brcmfmac.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
|
||||
AUTOLOAD:=$(call AutoProbe,brcmfmac)
|
||||
endef
|
||||
|
||||
|
@ -765,7 +765,7 @@ define KernelPackage/hermes
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Hermes 802.11b chipset support
|
||||
DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT +kmod-crypto-michael-mic
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco.ko
|
||||
AUTOLOAD:=$(call AutoProbe,orinoco)
|
||||
endef
|
||||
|
||||
|
@ -777,7 +777,7 @@ define KernelPackage/hermes-pci
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Intersil Prism 2.5 PCI support
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-hermes
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco_pci.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,orinoco_pci)
|
||||
endef
|
||||
|
||||
|
@ -789,7 +789,7 @@ define KernelPackage/hermes-plx
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=PLX9052 based PCI adaptor
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-hermes
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco_plx.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko
|
||||
AUTOLOAD:=$(call AutoProbe,orinoco_plx)
|
||||
endef
|
||||
|
||||
|
@ -801,7 +801,7 @@ define KernelPackage/hermes-pcmcia
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Hermes based PCMCIA adaptors
|
||||
DEPENDS:=@PCMCIA_SUPPORT +kmod-hermes @BROKEN
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/orinoco/orinoco_cs.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko
|
||||
AUTOLOAD:=$(call AutoProbe,orinoco_cs)
|
||||
endef
|
||||
|
||||
|
@ -815,9 +815,9 @@ define KernelPackage/iwlwifi
|
|||
DEPENDS:= +kmod-mac80211 @PCI_SUPPORT +@DRIVER_11N_SUPPORT
|
||||
TITLE:=Intel AGN Wireless support
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/iwlwifi/iwlwifi.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/iwlwifi/dvm/iwldvm.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/iwlwifi/mvm/iwlmvm.ko
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko
|
||||
AUTOLOAD:=$(call AutoProbe,iwlwifi iwldvm iwlmvm)
|
||||
MENU:=1
|
||||
endef
|
||||
|
@ -863,7 +863,7 @@ define KernelPackage/iwlwifi/config
|
|||
% echo 0x43fff > /sys/module/iwlwifi/parameters/debug
|
||||
|
||||
You can find the list of debug mask values in:
|
||||
drivers/net/wireless/iwlwifi/iwl-debug.h
|
||||
drivers/net/wireless/intel/iwlwifi/iwl-debug.h
|
||||
|
||||
If this is your first time using this driver, you should say Y here
|
||||
as the debug information can assist others in helping you resolve
|
||||
|
@ -997,7 +997,7 @@ define KernelPackage/iwl-legacy
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
DEPENDS:= +kmod-mac80211 @PCI_SUPPORT
|
||||
TITLE:=Intel legacy Wireless support
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/iwlegacy/iwlegacy.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko
|
||||
AUTOLOAD:=$(call AutoProbe,iwlegacy)
|
||||
endef
|
||||
|
||||
|
@ -1009,7 +1009,7 @@ define KernelPackage/iwl3945
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy
|
||||
TITLE:=Intel iwl3945 Wireless support
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/iwlegacy/iwl3945.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwl3945.ko
|
||||
AUTOLOAD:=$(call AutoProbe,iwl3945)
|
||||
endef
|
||||
|
||||
|
@ -1021,7 +1021,7 @@ define KernelPackage/iwl4965
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy +@DRIVER_11N_SUPPORT
|
||||
TITLE:=Intel iwl4965 Wireless support
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/iwlegacy/iwl4965.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwl4965.ko
|
||||
AUTOLOAD:=$(call AutoProbe,iwl4965)
|
||||
endef
|
||||
|
||||
|
@ -1061,7 +1061,7 @@ define KernelPackage/libipw
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=libipw for ipw2100 and ipw2200
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-crypto-michael-mic +kmod-lib80211 +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT @!BIG_ENDIAN
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ipw2x00/libipw.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/libipw.ko
|
||||
AUTOLOAD:=$(call AutoProbe,libipw)
|
||||
endef
|
||||
|
||||
|
@ -1083,7 +1083,7 @@ define KernelPackage/ipw2100
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Intel IPW2100 driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-libipw
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ipw2x00/ipw2100.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/ipw2100.ko
|
||||
AUTOLOAD:=$(call AutoProbe,ipw2100)
|
||||
endef
|
||||
|
||||
|
@ -1107,7 +1107,7 @@ define KernelPackage/ipw2200
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Intel IPW2200 driver
|
||||
DEPENDS:=@PCI_SUPPORT +kmod-libipw
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ipw2x00/ipw2200.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/ipw2200.ko
|
||||
AUTOLOAD:=$(call AutoProbe,ipw2200)
|
||||
endef
|
||||
|
||||
|
@ -1123,8 +1123,8 @@ define KernelPackage/libertas-usb
|
|||
DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT
|
||||
TITLE:=Marvell 88W8015 Wireless Driver
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/libertas/usb8xxx.ko
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/usb8xxx.ko
|
||||
AUTOLOAD:=$(call AutoProbe,libertas usb8xxx)
|
||||
endef
|
||||
|
||||
|
@ -1133,8 +1133,8 @@ define KernelPackage/libertas-sdio
|
|||
DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT @!TARGET_uml
|
||||
TITLE:=Marvell 88W8686 Wireless Driver
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/libertas/libertas_sdio.ko
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas_sdio.ko
|
||||
AUTOLOAD:=$(call AutoProbe,libertas libertas_sdio)
|
||||
endef
|
||||
|
||||
|
@ -1173,7 +1173,7 @@ define KernelPackage/mwl8k
|
|||
TITLE:=Driver for Marvell TOPDOG 802.11 Wireless cards
|
||||
URL:=http://wireless.kernel.org/en/users/Drivers/mwl8k
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mwl8k.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwl8k.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mwl8k)
|
||||
endef
|
||||
|
||||
|
@ -1188,8 +1188,8 @@ define KernelPackage/mwifiex-pcie
|
|||
URL:=http://wireless.kernel.org/en/users/Drivers/mwifiex
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT
|
||||
FILES:= \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/mwifiex/mwifiex.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/mwifiex/mwifiex_pcie.ko
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko
|
||||
AUTOLOAD:=$(call AutoProbe,mwifiex_pcie)
|
||||
endef
|
||||
|
||||
|
@ -1237,14 +1237,14 @@ define KernelPackage/p54-common
|
|||
$(call KernelPackage/p54/Default)
|
||||
DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT||@TARGET_omap24xx +kmod-mac80211 +kmod-lib-crc-ccitt
|
||||
TITLE+= (COMMON)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54common.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54common.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/p54-pci
|
||||
$(call KernelPackage/p54/Default)
|
||||
TITLE+= (PCI)
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-p54-common
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54pci.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,p54pci)
|
||||
endef
|
||||
|
||||
|
@ -1252,7 +1252,7 @@ define KernelPackage/p54-usb
|
|||
$(call KernelPackage/p54/Default)
|
||||
TITLE+= (USB)
|
||||
DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-p54-common
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54usb.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54usb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,p54usb)
|
||||
endef
|
||||
|
||||
|
@ -1260,7 +1260,7 @@ define KernelPackage/p54-spi
|
|||
$(call KernelPackage/p54/Default)
|
||||
TITLE+= (SPI)
|
||||
DEPENDS+= @TARGET_omap24xx +kmod-p54-common
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/p54/p54spi.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54spi.ko
|
||||
AUTOLOAD:=$(call AutoProbe,p54spi)
|
||||
endef
|
||||
|
||||
|
@ -1273,7 +1273,7 @@ define KernelPackage/rt2x00-lib
|
|||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-mac80211 +kmod-lib-crc-itu-t
|
||||
TITLE+= (LIB)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00lib.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko
|
||||
MENU:=1
|
||||
endef
|
||||
|
||||
|
@ -1301,7 +1301,7 @@ $(call KernelPackage/rt2x00/Default)
|
|||
DEPENDS+= @(PCI_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-eeprom-93cx6
|
||||
HIDDEN:=1
|
||||
TITLE+= (MMIO)
|
||||
FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00mmio.ko
|
||||
FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/rt2x00-pci
|
||||
|
@ -1309,7 +1309,7 @@ $(call KernelPackage/rt2x00/Default)
|
|||
DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-mmio +kmod-rt2x00-lib
|
||||
HIDDEN:=1
|
||||
TITLE+= (PCI)
|
||||
FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00pci.ko
|
||||
FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2x00pci)
|
||||
endef
|
||||
|
||||
|
@ -1318,7 +1318,7 @@ $(call KernelPackage/rt2x00/Default)
|
|||
DEPENDS+= @USB_SUPPORT +kmod-rt2x00-lib +kmod-usb-core
|
||||
HIDDEN:=1
|
||||
TITLE+= (USB)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00usb.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2x00usb)
|
||||
endef
|
||||
|
||||
|
@ -1327,14 +1327,14 @@ $(call KernelPackage/rt2x00/Default)
|
|||
DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-lib-crc-ccitt +@DRIVER_11N_SUPPORT
|
||||
HIDDEN:=1
|
||||
TITLE+= (rt2800 LIB)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800lib.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/rt2400-pci
|
||||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
|
||||
TITLE+= (RT2400 PCI)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2400pci.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2400pci)
|
||||
endef
|
||||
|
||||
|
@ -1342,7 +1342,7 @@ define KernelPackage/rt2500-pci
|
|||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
|
||||
TITLE+= (RT2500 PCI)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2500pci.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2500pci)
|
||||
endef
|
||||
|
||||
|
@ -1350,7 +1350,7 @@ define KernelPackage/rt2500-usb
|
|||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb
|
||||
TITLE+= (RT2500 USB)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2500usb.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2500usb)
|
||||
endef
|
||||
|
||||
|
@ -1359,7 +1359,7 @@ $(call KernelPackage/rt2x00/Default)
|
|||
TITLE += (RT28xx/RT3xxx MMIO)
|
||||
DEPENDS += +kmod-rt2800-lib +kmod-rt2x00-mmio
|
||||
HIDDEN:=1
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800mmio.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko
|
||||
endef
|
||||
|
||||
define KernelPackage/rt2800-soc
|
||||
|
@ -1367,8 +1367,8 @@ $(call KernelPackage/rt2x00/Default)
|
|||
DEPENDS += @(TARGET_ramips_rt288x||TARGET_ramips_rt305x||TARGET_ramips_rt3883||TARGET_ramips_mt7620) +kmod-rt2800-mmio +kmod-rt2800-lib
|
||||
TITLE += (RT28xx/RT3xxx SoC)
|
||||
FILES := \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2x00soc.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800soc.ko
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00soc.ko \
|
||||
$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800soc.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2800soc)
|
||||
endef
|
||||
|
||||
|
@ -1376,7 +1376,7 @@ define KernelPackage/rt2800-pci
|
|||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci +kmod-rt2800-lib +kmod-rt2800-mmio
|
||||
TITLE+= (RT2860 PCI)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800pci.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2800pci)
|
||||
endef
|
||||
|
||||
|
@ -1384,7 +1384,7 @@ define KernelPackage/rt2800-usb
|
|||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb +kmod-rt2800-lib +kmod-lib-crc-ccitt
|
||||
TITLE+= (RT2870 USB)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt2800usb.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt2800usb)
|
||||
endef
|
||||
|
||||
|
@ -1393,7 +1393,7 @@ define KernelPackage/rt61-pci
|
|||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci
|
||||
TITLE+= (RT2x61 PCI)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt61pci.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt61pci.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt61pci)
|
||||
endef
|
||||
|
||||
|
@ -1401,7 +1401,7 @@ define KernelPackage/rt73-usb
|
|||
$(call KernelPackage/rt2x00/Default)
|
||||
DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb
|
||||
TITLE+= (RT73 USB)
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/rt2x00/rt73usb.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt73usb.ko
|
||||
AUTOLOAD:=$(call AutoProbe,rt73usb)
|
||||
endef
|
||||
|
||||
|
@ -1584,7 +1584,7 @@ define KernelPackage/zd1211rw
|
|||
$(call KernelPackage/mac80211/Default)
|
||||
TITLE:=Zydas ZD1211 support
|
||||
DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zd1211rw/zd1211rw.ko
|
||||
FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko
|
||||
AUTOLOAD:=$(call AutoProbe,zd1211rw)
|
||||
endef
|
||||
|
||||
|
@ -1602,6 +1602,20 @@ config-y:= \
|
|||
MAC80211_RC_MINSTREL_HT \
|
||||
MAC80211_RC_MINSTREL_VHT \
|
||||
MAC80211_RC_DEFAULT_MINSTREL \
|
||||
WLAN_VENDOR_ADMTEK \
|
||||
WLAN_VENDOR_ATH \
|
||||
WLAN_VENDOR_ATMEL \
|
||||
WLAN_VENDOR_BROADCOM \
|
||||
WLAN_VENDOR_INTEL \
|
||||
WLAN_VENDOR_INTERSIL \
|
||||
WLAN_VENDOR_MARVELL \
|
||||
WLAN_VENDOR_MEDIATEK \
|
||||
WLAN_VENDOR_RALINK \
|
||||
WLAN_VENDOR_REALTEK \
|
||||
WLAN_VENDOR_RSI \
|
||||
WLAN_VENDOR_ST \
|
||||
WLAN_VENDOR_TI \
|
||||
WLAN_VENDOR_ZYDAS \
|
||||
|
||||
config-$(call config_package,cfg80211) += CFG80211
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/rt2x00/Kconfig
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
@@ -225,36 +225,37 @@ config RT2800SOC
|
||||
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/brcm80211/Kconfig
|
||||
+++ b/drivers/net/wireless/brcm80211/Kconfig
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/Kconfig
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/Kconfig
|
||||
@@ -1,5 +1,5 @@
|
||||
config BRCMUTIL
|
||||
- tristate
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/.local-symbols
|
||||
+++ b/.local-symbols
|
||||
@@ -454,43 +454,6 @@ USB_IPHETH=
|
||||
@@ -475,44 +475,6 @@ USB_IPHETH=
|
||||
USB_SIERRA_NET=
|
||||
USB_VL600=
|
||||
USB_NET_CH9200=
|
||||
|
@ -15,6 +15,7 @@
|
|||
-SSB_PCMCIAHOST=
|
||||
-SSB_SDIOHOST_POSSIBLE=
|
||||
-SSB_SDIOHOST=
|
||||
-SSB_HOST_SOC=
|
||||
-SSB_SILENT=
|
||||
-SSB_DEBUG=
|
||||
-SSB_SERIAL=
|
||||
|
@ -44,9 +45,9 @@
|
|||
NFC=
|
||||
NFC_DIGITAL=
|
||||
NFC_NCI=
|
||||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
@@ -2867,7 +2867,7 @@ static struct ssb_device *b43_ssb_gpio_d
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -2866,7 +2866,7 @@ static struct ssb_device *b43_ssb_gpio_d
|
||||
{
|
||||
struct ssb_bus *bus = dev->dev->sdev->bus;
|
||||
|
||||
|
@ -55,7 +56,7 @@
|
|||
return (bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev);
|
||||
#else
|
||||
return bus->chipco.dev;
|
||||
@@ -4904,7 +4904,7 @@ static int b43_wireless_core_init(struct
|
||||
@@ -4903,7 +4903,7 @@ static int b43_wireless_core_init(struct
|
||||
}
|
||||
if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW)
|
||||
hf |= B43_HF_DSCRQ; /* Disable slowclock requests from ucode. */
|
||||
|
@ -64,8 +65,8 @@
|
|||
if (dev->dev->bus_type == B43_BUS_SSB &&
|
||||
dev->dev->sdev->bus->bustype == SSB_BUSTYPE_PCI &&
|
||||
dev->dev->sdev->bus->pcicore.dev->id.revision <= 10)
|
||||
--- a/drivers/net/wireless/b43legacy/main.c
|
||||
+++ b/drivers/net/wireless/b43legacy/main.c
|
||||
--- a/drivers/net/wireless/broadcom/b43legacy/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43legacy/main.c
|
||||
@@ -1937,7 +1937,7 @@ static int b43legacy_gpio_init(struct b4
|
||||
if (dev->dev->id.revision >= 2)
|
||||
mask |= 0x0010; /* FIXME: This is redundant. */
|
||||
|
@ -84,8 +85,8 @@
|
|||
pcidev = bus->pcicore.dev;
|
||||
#endif
|
||||
gpiodev = bus->chipco.dev ? : pcidev;
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/Makefile
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/Makefile
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/Makefile
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/Makefile
|
||||
@@ -43,6 +43,6 @@ brcmsmac-y := \
|
||||
brcms_trace_events.o \
|
||||
debug.o
|
||||
|
@ -94,8 +95,8 @@
|
|||
+brcmsmac-$(CONFIG_BCMA_DRIVER_GPIO) += led.o
|
||||
|
||||
obj-$(CPTCFG_BRCMSMAC) += brcmsmac.o
|
||||
--- a/drivers/net/wireless/brcm80211/brcmsmac/led.h
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/led.h
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.h
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.h
|
||||
@@ -22,7 +22,7 @@ struct brcms_led {
|
||||
bool active_low;
|
||||
};
|
||||
|
@ -120,7 +121,7 @@
|
|||
--- a/Makefile.kernel
|
||||
+++ b/Makefile.kernel
|
||||
@@ -38,8 +38,6 @@ obj-$(CPTCFG_MAC80211) += net/mac80211/
|
||||
#obj-$(CPTCFG_WLAN += drivers/net/wireless/
|
||||
obj-$(CPTCFG_WLAN) += drivers/net/wireless/
|
||||
obj-$(CPTCFG_BT) += net/bluetooth/
|
||||
obj-$(CPTCFG_BT) += drivers/bluetooth/
|
||||
-obj-$(CPTCFG_SSB) += drivers/ssb/
|
||||
|
|
|
@ -1,10 +1,9 @@
|
|||
--- a/drivers/net/wireless/ath/Kconfig
|
||||
+++ b/drivers/net/wireless/ath/Kconfig
|
||||
@@ -6,6 +6,7 @@ menuconfig ATH_CARDS
|
||||
tristate "Atheros Wireless Cards"
|
||||
@@ -1,5 +1,5 @@
|
||||
config ATH_COMMON
|
||||
- tristate
|
||||
+ tristate "ath.ko"
|
||||
depends on m
|
||||
depends on CFG80211 && (!UML || BROKEN)
|
||||
+ select ATH_COMMON
|
||||
---help---
|
||||
This will enable the support for the Atheros wireless drivers.
|
||||
ath5k, ath9k, ath9k_htc and ar9170 drivers share some common code, this option
|
||||
|
||||
config WLAN_VENDOR_ATH
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -1981,7 +1981,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
@@ -1971,7 +1971,7 @@ static int ieee80211_scan(struct wiphy *
|
||||
* the frames sent while scanning on other channel will be
|
||||
* lost)
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
From: Bob Copeland <me@bobcopeland.com>
|
||||
Date: Thu, 19 Nov 2015 10:04:48 -0500
|
||||
Subject: [PATCH] ath5k: fix RTS/CTS by using proper rate flags
|
||||
|
||||
The rates in the tx control rateset do not have the protection
|
||||
flags applied, so RTS/CTS would never get enabled if requested.
|
||||
|
||||
Fix by using the rate flags in the rates returned by
|
||||
ieee80211_get_tx_rates().
|
||||
|
||||
Signed-off-by: Bob Copeland <me@bobcopeland.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath5k/base.c
|
||||
+++ b/drivers/net/wireless/ath/ath5k/base.c
|
||||
@@ -767,7 +767,7 @@ ath5k_txbuf_setup(struct ath5k_hw *ah, s
|
||||
if (info->flags & IEEE80211_TX_CTL_NO_ACK)
|
||||
flags |= AR5K_TXDESC_NOACK;
|
||||
|
||||
- rc_flags = info->control.rates[0].flags;
|
||||
+ rc_flags = bf->rates[0].flags;
|
||||
|
||||
hw_rate = ath5k_get_rate_hw_value(ah->hw, info, bf, 0);
|
||||
|
|
@ -1,108 +0,0 @@
|
|||
From: Zefir Kurtisi <zefir.kurtisi@neratec.com>
|
||||
Date: Tue, 20 Oct 2015 14:19:26 +0200
|
||||
Subject: [PATCH] ath9k: fix phyerror codes
|
||||
|
||||
Some of the ath9k_phyerr enums were wrong from the
|
||||
beginning (and even before). Most of the time the
|
||||
codes were used for counters to be displayed over
|
||||
debugfs, which made this a non-functional issue.
|
||||
|
||||
Some (e.g. ATH9K_PHYERR_FALSE_RADAR_EXT) are used
|
||||
for radar detection and require the correct code
|
||||
to work as intended.
|
||||
|
||||
This patch includes:
|
||||
a) fixes
|
||||
ATH9K_PHYERR_FALSE_RADAR_EXT: 24 => 36
|
||||
ATH9K_PHYERR_CCK_LENGTH_ILLEGAL: 32 => 28
|
||||
ATH9K_PHYERR_CCK_POWER_DROP: 33 => 29
|
||||
ATH9K_PHYERR_HT_CRC_ERROR: 34 => 32
|
||||
ATH9K_PHYERR_HT_LENGTH_ILLEGAL: 35 => 33
|
||||
ATH9K_PHYERR_HT_RATE_ILLEGAL: 36 => 34
|
||||
|
||||
b) extensions
|
||||
ATH9K_PHYERR_CCK_BLOCKER = 24
|
||||
ATH9K_PHYERR_HT_ZLF = 35
|
||||
ATH9K_PHYERR_GREEN_FIELD = 37
|
||||
|
||||
Aside from the correction and completion made in
|
||||
the enum, the patch also extends the display of
|
||||
the related counters in the debugfs.
|
||||
|
||||
Signed-off-by: Zefir Kurtisi <zefir.kurtisi@neratec.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath9k/common-debug.c
|
||||
+++ b/drivers/net/wireless/ath/ath9k/common-debug.c
|
||||
@@ -207,6 +207,7 @@ static ssize_t read_file_phy_err(struct
|
||||
PHY_ERR("RADAR ERR", ATH9K_PHYERR_RADAR);
|
||||
PHY_ERR("SERVICE ERR", ATH9K_PHYERR_SERVICE);
|
||||
PHY_ERR("TOR ERR", ATH9K_PHYERR_TOR);
|
||||
+
|
||||
PHY_ERR("OFDM-TIMING ERR", ATH9K_PHYERR_OFDM_TIMING);
|
||||
PHY_ERR("OFDM-SIGNAL-PARITY ERR", ATH9K_PHYERR_OFDM_SIGNAL_PARITY);
|
||||
PHY_ERR("OFDM-RATE ERR", ATH9K_PHYERR_OFDM_RATE_ILLEGAL);
|
||||
@@ -214,17 +215,24 @@ static ssize_t read_file_phy_err(struct
|
||||
PHY_ERR("OFDM-POWER-DROP ERR", ATH9K_PHYERR_OFDM_POWER_DROP);
|
||||
PHY_ERR("OFDM-SERVICE ERR", ATH9K_PHYERR_OFDM_SERVICE);
|
||||
PHY_ERR("OFDM-RESTART ERR", ATH9K_PHYERR_OFDM_RESTART);
|
||||
- PHY_ERR("FALSE-RADAR-EXT ERR", ATH9K_PHYERR_FALSE_RADAR_EXT);
|
||||
+
|
||||
+ PHY_ERR("CCK-BLOCKER ERR", ATH9K_PHYERR_CCK_BLOCKER);
|
||||
PHY_ERR("CCK-TIMING ERR", ATH9K_PHYERR_CCK_TIMING);
|
||||
PHY_ERR("CCK-HEADER-CRC ERR", ATH9K_PHYERR_CCK_HEADER_CRC);
|
||||
PHY_ERR("CCK-RATE ERR", ATH9K_PHYERR_CCK_RATE_ILLEGAL);
|
||||
- PHY_ERR("CCK-SERVICE ERR", ATH9K_PHYERR_CCK_SERVICE);
|
||||
- PHY_ERR("CCK-RESTART ERR", ATH9K_PHYERR_CCK_RESTART);
|
||||
PHY_ERR("CCK-LENGTH ERR", ATH9K_PHYERR_CCK_LENGTH_ILLEGAL);
|
||||
PHY_ERR("CCK-POWER-DROP ERR", ATH9K_PHYERR_CCK_POWER_DROP);
|
||||
+ PHY_ERR("CCK-SERVICE ERR", ATH9K_PHYERR_CCK_SERVICE);
|
||||
+ PHY_ERR("CCK-RESTART ERR", ATH9K_PHYERR_CCK_RESTART);
|
||||
+
|
||||
PHY_ERR("HT-CRC ERR", ATH9K_PHYERR_HT_CRC_ERROR);
|
||||
PHY_ERR("HT-LENGTH ERR", ATH9K_PHYERR_HT_LENGTH_ILLEGAL);
|
||||
PHY_ERR("HT-RATE ERR", ATH9K_PHYERR_HT_RATE_ILLEGAL);
|
||||
+ PHY_ERR("HT-ZLF ERR", ATH9K_PHYERR_HT_ZLF);
|
||||
+
|
||||
+ PHY_ERR("FALSE-RADAR-EXT ERR", ATH9K_PHYERR_FALSE_RADAR_EXT);
|
||||
+ PHY_ERR("GREEN-FIELD ERR", ATH9K_PHYERR_GREEN_FIELD);
|
||||
+ PHY_ERR("SPECTRAL ERR", ATH9K_PHYERR_SPECTRAL);
|
||||
|
||||
if (len > size)
|
||||
len = size;
|
||||
--- a/drivers/net/wireless/ath/ath9k/mac.h
|
||||
+++ b/drivers/net/wireless/ath/ath9k/mac.h
|
||||
@@ -209,21 +209,25 @@ enum ath9k_phyerr {
|
||||
ATH9K_PHYERR_OFDM_POWER_DROP = 21,
|
||||
ATH9K_PHYERR_OFDM_SERVICE = 22,
|
||||
ATH9K_PHYERR_OFDM_RESTART = 23,
|
||||
- ATH9K_PHYERR_FALSE_RADAR_EXT = 24,
|
||||
|
||||
+ ATH9K_PHYERR_CCK_BLOCKER = 24,
|
||||
ATH9K_PHYERR_CCK_TIMING = 25,
|
||||
ATH9K_PHYERR_CCK_HEADER_CRC = 26,
|
||||
ATH9K_PHYERR_CCK_RATE_ILLEGAL = 27,
|
||||
+ ATH9K_PHYERR_CCK_LENGTH_ILLEGAL = 28,
|
||||
+ ATH9K_PHYERR_CCK_POWER_DROP = 29,
|
||||
ATH9K_PHYERR_CCK_SERVICE = 30,
|
||||
ATH9K_PHYERR_CCK_RESTART = 31,
|
||||
- ATH9K_PHYERR_CCK_LENGTH_ILLEGAL = 32,
|
||||
- ATH9K_PHYERR_CCK_POWER_DROP = 33,
|
||||
|
||||
- ATH9K_PHYERR_HT_CRC_ERROR = 34,
|
||||
- ATH9K_PHYERR_HT_LENGTH_ILLEGAL = 35,
|
||||
- ATH9K_PHYERR_HT_RATE_ILLEGAL = 36,
|
||||
+ ATH9K_PHYERR_HT_CRC_ERROR = 32,
|
||||
+ ATH9K_PHYERR_HT_LENGTH_ILLEGAL = 33,
|
||||
+ ATH9K_PHYERR_HT_RATE_ILLEGAL = 34,
|
||||
+ ATH9K_PHYERR_HT_ZLF = 35,
|
||||
+
|
||||
+ ATH9K_PHYERR_FALSE_RADAR_EXT = 36,
|
||||
+ ATH9K_PHYERR_GREEN_FIELD = 37,
|
||||
+ ATH9K_PHYERR_SPECTRAL = 38,
|
||||
|
||||
- ATH9K_PHYERR_SPECTRAL = 38,
|
||||
ATH9K_PHYERR_MAX = 39,
|
||||
};
|
||||
|
|
@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -4258,34 +4258,58 @@ void ath10k_wmi_event_vdev_resume_req(st
|
||||
@@ -4312,34 +4312,58 @@ void ath10k_wmi_event_vdev_resume_req(st
|
||||
ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_VDEV_RESUME_REQ_EVENTID\n");
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,8 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||
+ u32 num_units, u32 unit_len)
|
||||
{
|
||||
dma_addr_t paddr;
|
||||
u32 pool_size;
|
||||
- u32 pool_size;
|
||||
+ u32 pool_size = 0;
|
||||
int idx = ar->wmi.num_mem_chunks;
|
||||
+ void *vaddr = NULL;
|
||||
|
||||
|
@ -53,13 +54,13 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||
- memset(ar->wmi.mem_chunks[idx].vaddr, 0, pool_size);
|
||||
+ if (!num_units)
|
||||
+ return -ENOMEM;
|
||||
|
||||
+
|
||||
+ paddr = dma_map_single(ar->dev, vaddr, pool_size, DMA_TO_DEVICE);
|
||||
+ if (dma_mapping_error(ar->dev, paddr)) {
|
||||
+ kfree(vaddr);
|
||||
+ return -ENOMEM;
|
||||
+ }
|
||||
+
|
||||
|
||||
+ ar->wmi.mem_chunks[idx].vaddr = vaddr;
|
||||
ar->wmi.mem_chunks[idx].paddr = paddr;
|
||||
ar->wmi.mem_chunks[idx].len = pool_size;
|
||||
|
@ -85,7 +86,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
|||
return 0;
|
||||
}
|
||||
|
||||
@@ -7616,10 +7640,11 @@ void ath10k_wmi_free_host_mem(struct ath
|
||||
@@ -7717,10 +7741,11 @@ void ath10k_wmi_free_host_mem(struct ath
|
||||
|
||||
/* free the host memory chunks requested by firmware */
|
||||
for (i = 0; i < ar->wmi.num_mem_chunks; i++) {
|
|
@ -1,239 +0,0 @@
|
|||
From: Maharaja <c_mkenna@qti.qualcomm.com>
|
||||
Date: Wed, 21 Oct 2015 11:49:18 +0300
|
||||
Subject: [PATCH] ath10k: enable adaptive CCA
|
||||
|
||||
European Union has made it mandatory that all devices working in 2.4 GHz
|
||||
has to adhere to the ETSI specification (ETSI EN 300 328 V1.9.1)
|
||||
beginnig this year. The standard basically speaks about interferences
|
||||
in 2.4Ghz band.
|
||||
For example, when 802.11 device detects interference, TX must be stopped
|
||||
as long as interference is present.
|
||||
|
||||
Adaptive CCA is a feature, when enabled the device learns from the
|
||||
environment and configures CCA levels adaptively. This will improve
|
||||
detecting interferences and the device can stop trasmissions till the
|
||||
interference is present eventually leading to good performances in
|
||||
varying interference conditions.
|
||||
|
||||
The patch includes code for enabling adaptive CCA for 10.2.4 firmware on
|
||||
QCA988X.
|
||||
|
||||
Signed-off-by: Maharaja <c_mkenna@qti.qualcomm.com>
|
||||
Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -151,6 +151,7 @@ static const char *const ath10k_core_fw_
|
||||
[ATH10K_FW_FEATURE_NO_NWIFI_DECAP_4ADDR_PADDING] = "no-4addr-pad",
|
||||
[ATH10K_FW_FEATURE_SUPPORTS_SKIP_CLOCK_INIT] = "skip-clock-init",
|
||||
[ATH10K_FW_FEATURE_RAW_MODE_SUPPORT] = "raw-mode",
|
||||
+ [ATH10K_FW_FEATURE_SUPPORTS_ADAPTIVE_CCA] = "adaptive-cca",
|
||||
};
|
||||
|
||||
static unsigned int ath10k_core_get_fw_feature_str(char *buf,
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.h
|
||||
@@ -497,6 +497,9 @@ enum ath10k_fw_features {
|
||||
*/
|
||||
ATH10K_FW_FEATURE_RAW_MODE_SUPPORT = 10,
|
||||
|
||||
+ /* Firmware Supports Adaptive CCA*/
|
||||
+ ATH10K_FW_FEATURE_SUPPORTS_ADAPTIVE_CCA = 11,
|
||||
+
|
||||
/* keep last */
|
||||
ATH10K_FW_FEATURE_COUNT,
|
||||
};
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -3905,6 +3905,18 @@ static int ath10k_start(struct ieee80211
|
||||
goto err_core_stop;
|
||||
}
|
||||
|
||||
+ if (test_bit(ATH10K_FW_FEATURE_SUPPORTS_ADAPTIVE_CCA,
|
||||
+ ar->fw_features)) {
|
||||
+ ret = ath10k_wmi_pdev_enable_adaptive_cca(ar, 1,
|
||||
+ WMI_CCA_DETECT_LEVEL_AUTO,
|
||||
+ WMI_CCA_DETECT_MARGIN_AUTO);
|
||||
+ if (ret) {
|
||||
+ ath10k_warn(ar, "failed to enable adaptive cca: %d\n",
|
||||
+ ret);
|
||||
+ goto err_core_stop;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
ret = ath10k_wmi_pdev_set_param(ar,
|
||||
ar->wmi.pdev_param->ani_enable, 1);
|
||||
if (ret) {
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi-ops.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi-ops.h
|
||||
@@ -182,6 +182,10 @@ struct wmi_ops {
|
||||
void (*fw_stats_fill)(struct ath10k *ar,
|
||||
struct ath10k_fw_stats *fw_stats,
|
||||
char *buf);
|
||||
+ struct sk_buff *(*gen_pdev_enable_adaptive_cca)(struct ath10k *ar,
|
||||
+ u8 enable,
|
||||
+ u32 detect_level,
|
||||
+ u32 detect_margin);
|
||||
};
|
||||
|
||||
int ath10k_wmi_cmd_send(struct ath10k *ar, struct sk_buff *skb, u32 cmd_id);
|
||||
@@ -1302,4 +1306,25 @@ ath10k_wmi_fw_stats_fill(struct ath10k *
|
||||
ar->wmi.ops->fw_stats_fill(ar, fw_stats, buf);
|
||||
return 0;
|
||||
}
|
||||
+
|
||||
+static inline int
|
||||
+ath10k_wmi_pdev_enable_adaptive_cca(struct ath10k *ar, u8 enable,
|
||||
+ u32 detect_level, u32 detect_margin)
|
||||
+{
|
||||
+ struct sk_buff *skb;
|
||||
+
|
||||
+ if (!ar->wmi.ops->gen_pdev_enable_adaptive_cca)
|
||||
+ return -EOPNOTSUPP;
|
||||
+
|
||||
+ skb = ar->wmi.ops->gen_pdev_enable_adaptive_cca(ar, enable,
|
||||
+ detect_level,
|
||||
+ detect_margin);
|
||||
+
|
||||
+ if (IS_ERR(skb))
|
||||
+ return PTR_ERR(skb);
|
||||
+
|
||||
+ return ath10k_wmi_cmd_send(ar, skb,
|
||||
+ ar->wmi.cmd->pdev_enable_adaptive_cca_cmdid);
|
||||
+}
|
||||
+
|
||||
#endif
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -148,6 +148,7 @@ static struct wmi_cmd_map wmi_cmd_map =
|
||||
.gpio_config_cmdid = WMI_GPIO_CONFIG_CMDID,
|
||||
.gpio_output_cmdid = WMI_GPIO_OUTPUT_CMDID,
|
||||
.pdev_get_temperature_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
+ .pdev_enable_adaptive_cca_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
@@ -313,6 +314,7 @@ static struct wmi_cmd_map wmi_10x_cmd_ma
|
||||
.gpio_config_cmdid = WMI_10X_GPIO_CONFIG_CMDID,
|
||||
.gpio_output_cmdid = WMI_10X_GPIO_OUTPUT_CMDID,
|
||||
.pdev_get_temperature_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
+ .pdev_enable_adaptive_cca_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
@@ -477,6 +479,7 @@ static struct wmi_cmd_map wmi_10_2_4_cmd
|
||||
.gpio_config_cmdid = WMI_10_2_GPIO_CONFIG_CMDID,
|
||||
.gpio_output_cmdid = WMI_10_2_GPIO_OUTPUT_CMDID,
|
||||
.pdev_get_temperature_cmdid = WMI_10_2_PDEV_GET_TEMPERATURE_CMDID,
|
||||
+ .pdev_enable_adaptive_cca_cmdid = WMI_10_2_SET_CCA_PARAMS,
|
||||
.scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
@@ -1407,6 +1410,7 @@ static struct wmi_cmd_map wmi_10_2_cmd_m
|
||||
.gpio_config_cmdid = WMI_10_2_GPIO_CONFIG_CMDID,
|
||||
.gpio_output_cmdid = WMI_10_2_GPIO_OUTPUT_CMDID,
|
||||
.pdev_get_temperature_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
+ .pdev_enable_adaptive_cca_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.scan_update_request_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_standby_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
.vdev_resume_response_cmdid = WMI_CMD_UNSUPPORTED,
|
||||
@@ -6996,6 +7000,28 @@ unlock:
|
||||
buf[len] = 0;
|
||||
}
|
||||
|
||||
+static struct sk_buff *
|
||||
+ath10k_wmi_op_gen_pdev_enable_adaptive_cca(struct ath10k *ar, u8 enable,
|
||||
+ u32 detect_level, u32 detect_margin)
|
||||
+{
|
||||
+ struct wmi_pdev_set_adaptive_cca_params *cmd;
|
||||
+ struct sk_buff *skb;
|
||||
+
|
||||
+ skb = ath10k_wmi_alloc_skb(ar, sizeof(*cmd));
|
||||
+ if (!skb)
|
||||
+ return ERR_PTR(-ENOMEM);
|
||||
+
|
||||
+ cmd = (struct wmi_pdev_set_adaptive_cca_params *)skb->data;
|
||||
+ cmd->enable = __cpu_to_le32(enable);
|
||||
+ cmd->cca_detect_level = __cpu_to_le32(detect_level);
|
||||
+ cmd->cca_detect_margin = __cpu_to_le32(detect_margin);
|
||||
+
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_WMI,
|
||||
+ "wmi pdev set adaptive cca params enable:%d detection level:%d detection margin:%d\n",
|
||||
+ enable, detect_level, detect_margin);
|
||||
+ return skb;
|
||||
+}
|
||||
+
|
||||
static const struct wmi_ops wmi_ops = {
|
||||
.rx = ath10k_wmi_op_rx,
|
||||
.map_svc = wmi_main_svc_map,
|
||||
@@ -7059,6 +7085,7 @@ static const struct wmi_ops wmi_ops = {
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
/* .gen_adaptive_qcs not implemented */
|
||||
+ /* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
static const struct wmi_ops wmi_10_1_ops = {
|
||||
@@ -7125,6 +7152,7 @@ static const struct wmi_ops wmi_10_1_ops
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
/* .gen_adaptive_qcs not implemented */
|
||||
+ /* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
static const struct wmi_ops wmi_10_2_ops = {
|
||||
@@ -7188,6 +7216,7 @@ static const struct wmi_ops wmi_10_2_ops
|
||||
.gen_addba_set_resp = ath10k_wmi_op_gen_addba_set_resp,
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
+ /* .gen_pdev_enable_adaptive_cca not implemented */
|
||||
};
|
||||
|
||||
static const struct wmi_ops wmi_10_2_4_ops = {
|
||||
@@ -7251,6 +7280,8 @@ static const struct wmi_ops wmi_10_2_4_o
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
.gen_pdev_get_tpc_config = ath10k_wmi_10_2_4_op_gen_pdev_get_tpc_config,
|
||||
.fw_stats_fill = ath10k_wmi_10x_op_fw_stats_fill,
|
||||
+ .gen_pdev_enable_adaptive_cca =
|
||||
+ ath10k_wmi_op_gen_pdev_enable_adaptive_cca,
|
||||
/* .gen_bcn_tmpl not implemented */
|
||||
/* .gen_prb_tmpl not implemented */
|
||||
/* .gen_p2p_go_bcn_ie not implemented */
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
@@ -772,6 +772,7 @@ struct wmi_cmd_map {
|
||||
u32 mu_cal_start_cmdid;
|
||||
u32 set_cca_params_cmdid;
|
||||
u32 pdev_bss_chan_info_request_cmdid;
|
||||
+ u32 pdev_enable_adaptive_cca_cmdid;
|
||||
};
|
||||
|
||||
/*
|
||||
@@ -1381,6 +1382,9 @@ enum wmi_10_2_cmd_id {
|
||||
WMI_10_2_VDEV_ATF_REQUEST_CMDID,
|
||||
WMI_10_2_PEER_ATF_REQUEST_CMDID,
|
||||
WMI_10_2_PDEV_GET_TEMPERATURE_CMDID,
|
||||
+ WMI_10_2_MU_CAL_START_CMDID,
|
||||
+ WMI_10_2_SET_LTEU_CONFIG_CMDID,
|
||||
+ WMI_10_2_SET_CCA_PARAMS,
|
||||
WMI_10_2_PDEV_UTF_CMDID = WMI_10_2_END_CMDID - 1,
|
||||
};
|
||||
|
||||
@@ -6094,6 +6098,15 @@ enum wmi_txbf_conf {
|
||||
WMI_TXBF_CONF_AFTER_ASSOC,
|
||||
};
|
||||
|
||||
+#define WMI_CCA_DETECT_LEVEL_AUTO 0
|
||||
+#define WMI_CCA_DETECT_MARGIN_AUTO 0
|
||||
+
|
||||
+struct wmi_pdev_set_adaptive_cca_params {
|
||||
+ __le32 enable;
|
||||
+ __le32 cca_detect_level;
|
||||
+ __le32 cca_detect_margin;
|
||||
+} __packed;
|
||||
+
|
||||
struct ath10k;
|
||||
struct ath10k_vif;
|
||||
struct ath10k_fw_stats_pdev;
|
|
@ -1,331 +0,0 @@
|
|||
From: Alan Liu <alanliu@qca.qualcomm.com>
|
||||
Date: Wed, 28 Oct 2015 21:38:32 +0200
|
||||
Subject: [PATCH] ath10k: add FW API support to test mode
|
||||
|
||||
Add WMI-TLV and FW API support in ath10k testmode.
|
||||
Ath10k can get right wmi command format from UTF image
|
||||
to communicate UTF firmware.
|
||||
|
||||
Signed-off-by: Alan Liu <alanliu@qca.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -569,8 +569,8 @@ static int ath10k_download_fw(struct ath
|
||||
}
|
||||
break;
|
||||
case ATH10K_FIRMWARE_MODE_UTF:
|
||||
- data = ar->testmode.utf->data;
|
||||
- data_len = ar->testmode.utf->size;
|
||||
+ data = ar->testmode.utf_firmware_data;
|
||||
+ data_len = ar->testmode.utf_firmware_len;
|
||||
mode_name = "utf";
|
||||
break;
|
||||
default:
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.h
|
||||
@@ -817,9 +817,12 @@ struct ath10k {
|
||||
struct {
|
||||
/* protected by conf_mutex */
|
||||
const struct firmware *utf;
|
||||
+ char utf_version[32];
|
||||
+ const void *utf_firmware_data;
|
||||
+ size_t utf_firmware_len;
|
||||
DECLARE_BITMAP(orig_fw_features, ATH10K_FW_FEATURE_COUNT);
|
||||
enum ath10k_fw_wmi_op_version orig_wmi_op_version;
|
||||
-
|
||||
+ enum ath10k_fw_wmi_op_version op_version;
|
||||
/* protected by data_lock */
|
||||
bool utf_monitor;
|
||||
} testmode;
|
||||
--- a/drivers/net/wireless/ath/ath10k/hw.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/hw.h
|
||||
@@ -94,6 +94,7 @@ enum qca6174_chip_id_rev {
|
||||
#define ATH10K_FW_API5_FILE "firmware-5.bin"
|
||||
|
||||
#define ATH10K_FW_UTF_FILE "utf.bin"
|
||||
+#define ATH10K_FW_UTF_API2_FILE "utf-2.bin"
|
||||
|
||||
/* includes also the null byte */
|
||||
#define ATH10K_FIRMWARE_MAGIC "QCA-ATH10K"
|
||||
--- a/drivers/net/wireless/ath/ath10k/testmode.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/testmode.c
|
||||
@@ -139,11 +139,181 @@ static int ath10k_tm_cmd_get_version(str
|
||||
return cfg80211_testmode_reply(skb);
|
||||
}
|
||||
|
||||
-static int ath10k_tm_cmd_utf_start(struct ath10k *ar, struct nlattr *tb[])
|
||||
+static int ath10k_tm_fetch_utf_firmware_api_2(struct ath10k *ar)
|
||||
+{
|
||||
+ size_t len, magic_len, ie_len;
|
||||
+ struct ath10k_fw_ie *hdr;
|
||||
+ char filename[100];
|
||||
+ __le32 *version;
|
||||
+ const u8 *data;
|
||||
+ int ie_id, ret;
|
||||
+
|
||||
+ snprintf(filename, sizeof(filename), "%s/%s",
|
||||
+ ar->hw_params.fw.dir, ATH10K_FW_UTF_API2_FILE);
|
||||
+
|
||||
+ /* load utf firmware image */
|
||||
+ ret = request_firmware(&ar->testmode.utf, filename, ar->dev);
|
||||
+ if (ret) {
|
||||
+ ath10k_warn(ar, "failed to retrieve utf firmware '%s': %d\n",
|
||||
+ filename, ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ data = ar->testmode.utf->data;
|
||||
+ len = ar->testmode.utf->size;
|
||||
+
|
||||
+ /* FIXME: call release_firmware() in error cases */
|
||||
+
|
||||
+ /* magic also includes the null byte, check that as well */
|
||||
+ magic_len = strlen(ATH10K_FIRMWARE_MAGIC) + 1;
|
||||
+
|
||||
+ if (len < magic_len) {
|
||||
+ ath10k_err(ar, "utf firmware file is too small to contain magic\n");
|
||||
+ ret = -EINVAL;
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ if (memcmp(data, ATH10K_FIRMWARE_MAGIC, magic_len) != 0) {
|
||||
+ ath10k_err(ar, "invalid firmware magic\n");
|
||||
+ ret = -EINVAL;
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ /* jump over the padding */
|
||||
+ magic_len = ALIGN(magic_len, 4);
|
||||
+
|
||||
+ len -= magic_len;
|
||||
+ data += magic_len;
|
||||
+
|
||||
+ /* loop elements */
|
||||
+ while (len > sizeof(struct ath10k_fw_ie)) {
|
||||
+ hdr = (struct ath10k_fw_ie *)data;
|
||||
+
|
||||
+ ie_id = le32_to_cpu(hdr->id);
|
||||
+ ie_len = le32_to_cpu(hdr->len);
|
||||
+
|
||||
+ len -= sizeof(*hdr);
|
||||
+ data += sizeof(*hdr);
|
||||
+
|
||||
+ if (len < ie_len) {
|
||||
+ ath10k_err(ar, "invalid length for FW IE %d (%zu < %zu)\n",
|
||||
+ ie_id, len, ie_len);
|
||||
+ ret = -EINVAL;
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ switch (ie_id) {
|
||||
+ case ATH10K_FW_IE_FW_VERSION:
|
||||
+ if (ie_len > sizeof(ar->testmode.utf_version) - 1)
|
||||
+ break;
|
||||
+
|
||||
+ memcpy(ar->testmode.utf_version, data, ie_len);
|
||||
+ ar->testmode.utf_version[ie_len] = '\0';
|
||||
+
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_TESTMODE,
|
||||
+ "testmode found fw utf version %s\n",
|
||||
+ ar->testmode.utf_version);
|
||||
+ break;
|
||||
+ case ATH10K_FW_IE_TIMESTAMP:
|
||||
+ /* ignore timestamp, but don't warn about it either */
|
||||
+ break;
|
||||
+ case ATH10K_FW_IE_FW_IMAGE:
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_TESTMODE,
|
||||
+ "testmode found fw image ie (%zd B)\n",
|
||||
+ ie_len);
|
||||
+
|
||||
+ ar->testmode.utf_firmware_data = data;
|
||||
+ ar->testmode.utf_firmware_len = ie_len;
|
||||
+ break;
|
||||
+ case ATH10K_FW_IE_WMI_OP_VERSION:
|
||||
+ if (ie_len != sizeof(u32))
|
||||
+ break;
|
||||
+ version = (__le32 *)data;
|
||||
+ ar->testmode.op_version = le32_to_cpup(version);
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode found fw ie wmi op version %d\n",
|
||||
+ ar->testmode.op_version);
|
||||
+ break;
|
||||
+ default:
|
||||
+ ath10k_warn(ar, "Unknown testmode FW IE: %u\n",
|
||||
+ le32_to_cpu(hdr->id));
|
||||
+ break;
|
||||
+ }
|
||||
+ /* jump over the padding */
|
||||
+ ie_len = ALIGN(ie_len, 4);
|
||||
+
|
||||
+ len -= ie_len;
|
||||
+ data += ie_len;
|
||||
+ }
|
||||
+
|
||||
+ if (!ar->testmode.utf_firmware_data || !ar->testmode.utf_firmware_len) {
|
||||
+ ath10k_err(ar, "No ATH10K_FW_IE_FW_IMAGE found\n");
|
||||
+ ret = -EINVAL;
|
||||
+ goto err;
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err:
|
||||
+ release_firmware(ar->testmode.utf);
|
||||
+
|
||||
+ return ret;
|
||||
+}
|
||||
+
|
||||
+static int ath10k_tm_fetch_utf_firmware_api_1(struct ath10k *ar)
|
||||
{
|
||||
char filename[100];
|
||||
int ret;
|
||||
|
||||
+ snprintf(filename, sizeof(filename), "%s/%s",
|
||||
+ ar->hw_params.fw.dir, ATH10K_FW_UTF_FILE);
|
||||
+
|
||||
+ /* load utf firmware image */
|
||||
+ ret = request_firmware(&ar->testmode.utf, filename, ar->dev);
|
||||
+ if (ret) {
|
||||
+ ath10k_warn(ar, "failed to retrieve utf firmware '%s': %d\n",
|
||||
+ filename, ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ /* We didn't find FW UTF API 1 ("utf.bin") does not advertise
|
||||
+ * firmware features. Do an ugly hack where we force the firmware
|
||||
+ * features to match with 10.1 branch so that wmi.c will use the
|
||||
+ * correct WMI interface.
|
||||
+ */
|
||||
+
|
||||
+ ar->testmode.op_version = ATH10K_FW_WMI_OP_VERSION_10_1;
|
||||
+ ar->testmode.utf_firmware_data = ar->testmode.utf->data;
|
||||
+ ar->testmode.utf_firmware_len = ar->testmode.utf->size;
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int ath10k_tm_fetch_firmware(struct ath10k *ar)
|
||||
+{
|
||||
+ int ret;
|
||||
+
|
||||
+ ret = ath10k_tm_fetch_utf_firmware_api_2(ar);
|
||||
+ if (ret == 0) {
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode using fw utf api 2");
|
||||
+ return 0;
|
||||
+ }
|
||||
+
|
||||
+ ret = ath10k_tm_fetch_utf_firmware_api_1(ar);
|
||||
+ if (ret) {
|
||||
+ ath10k_err(ar, "failed to fetch utf firmware binary: %d", ret);
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode using utf api 1");
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
+static int ath10k_tm_cmd_utf_start(struct ath10k *ar, struct nlattr *tb[])
|
||||
+{
|
||||
+ const char *ver;
|
||||
+ int ret;
|
||||
+
|
||||
ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode cmd utf start\n");
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
@@ -165,36 +335,27 @@ static int ath10k_tm_cmd_utf_start(struc
|
||||
goto err;
|
||||
}
|
||||
|
||||
- snprintf(filename, sizeof(filename), "%s/%s",
|
||||
- ar->hw_params.fw.dir, ATH10K_FW_UTF_FILE);
|
||||
-
|
||||
- /* load utf firmware image */
|
||||
- ret = request_firmware(&ar->testmode.utf, filename, ar->dev);
|
||||
+ ret = ath10k_tm_fetch_firmware(ar);
|
||||
if (ret) {
|
||||
- ath10k_warn(ar, "failed to retrieve utf firmware '%s': %d\n",
|
||||
- filename, ret);
|
||||
+ ath10k_err(ar, "failed to fetch UTF firmware: %d", ret);
|
||||
goto err;
|
||||
}
|
||||
|
||||
spin_lock_bh(&ar->data_lock);
|
||||
-
|
||||
ar->testmode.utf_monitor = true;
|
||||
-
|
||||
spin_unlock_bh(&ar->data_lock);
|
||||
-
|
||||
BUILD_BUG_ON(sizeof(ar->fw_features) !=
|
||||
sizeof(ar->testmode.orig_fw_features));
|
||||
|
||||
memcpy(ar->testmode.orig_fw_features, ar->fw_features,
|
||||
sizeof(ar->fw_features));
|
||||
ar->testmode.orig_wmi_op_version = ar->wmi.op_version;
|
||||
-
|
||||
- /* utf.bin firmware image does not advertise firmware features. Do
|
||||
- * an ugly hack where we force the firmware features so that wmi.c
|
||||
- * will use the correct WMI interface.
|
||||
- */
|
||||
memset(ar->fw_features, 0, sizeof(ar->fw_features));
|
||||
- ar->wmi.op_version = ATH10K_FW_WMI_OP_VERSION_10_1;
|
||||
+
|
||||
+ ar->wmi.op_version = ar->testmode.op_version;
|
||||
+
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_TESTMODE, "testmode wmi version %d\n",
|
||||
+ ar->wmi.op_version);
|
||||
|
||||
ret = ath10k_hif_power_up(ar);
|
||||
if (ret) {
|
||||
@@ -212,7 +373,12 @@ static int ath10k_tm_cmd_utf_start(struc
|
||||
|
||||
ar->state = ATH10K_STATE_UTF;
|
||||
|
||||
- ath10k_info(ar, "UTF firmware started\n");
|
||||
+ if (strlen(ar->testmode.utf_version) > 0)
|
||||
+ ver = ar->testmode.utf_version;
|
||||
+ else
|
||||
+ ver = "API 1";
|
||||
+
|
||||
+ ath10k_info(ar, "UTF firmware %s started\n", ver);
|
||||
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi-tlv.c
|
||||
@@ -23,6 +23,7 @@
|
||||
#include "wmi-ops.h"
|
||||
#include "wmi-tlv.h"
|
||||
#include "p2p.h"
|
||||
+#include "testmode.h"
|
||||
|
||||
/***************/
|
||||
/* TLV helpers */
|
||||
@@ -419,6 +420,7 @@ static void ath10k_wmi_tlv_op_rx(struct
|
||||
{
|
||||
struct wmi_cmd_hdr *cmd_hdr;
|
||||
enum wmi_tlv_event_id id;
|
||||
+ bool consumed;
|
||||
|
||||
cmd_hdr = (struct wmi_cmd_hdr *)skb->data;
|
||||
id = MS(__le32_to_cpu(cmd_hdr->cmd_id), WMI_CMD_HDR_CMD_ID);
|
||||
@@ -428,6 +430,18 @@ static void ath10k_wmi_tlv_op_rx(struct
|
||||
|
||||
trace_ath10k_wmi_event(ar, id, skb->data, skb->len);
|
||||
|
||||
+ consumed = ath10k_tm_event_wmi(ar, id, skb);
|
||||
+
|
||||
+ /* Ready event must be handled normally also in UTF mode so that we
|
||||
+ * know the UTF firmware has booted, others we are just bypass WMI
|
||||
+ * events to testmode.
|
||||
+ */
|
||||
+ if (consumed && id != WMI_TLV_READY_EVENTID) {
|
||||
+ ath10k_dbg(ar, ATH10K_DBG_WMI,
|
||||
+ "wmi tlv testmode consumed 0x%x\n", id);
|
||||
+ goto out;
|
||||
+ }
|
||||
+
|
||||
switch (id) {
|
||||
case WMI_TLV_MGMT_RX_EVENTID:
|
||||
ath10k_wmi_event_mgmt_rx(ar, skb);
|
|
@ -1,468 +0,0 @@
|
|||
From: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
|
||||
Date: Wed, 28 Oct 2015 21:38:33 +0200
|
||||
Subject: [PATCH] ath10k: add fw_stats support to 10.4 firmware
|
||||
|
||||
This patch adds support for getting firmware debug stats in 10.4 fw.
|
||||
|
||||
Signed-off-by: Manikanta Pubbisetty <c_mpubbi@qti.qualcomm.com>
|
||||
Signed-off-by: Tamizh chelvam <c_traja@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.h
|
||||
@@ -214,6 +214,7 @@ struct ath10k_fw_stats_pdev {
|
||||
s32 hw_queued;
|
||||
s32 hw_reaped;
|
||||
s32 underrun;
|
||||
+ u32 hw_paused;
|
||||
s32 tx_abort;
|
||||
s32 mpdus_requed;
|
||||
u32 tx_ko;
|
||||
@@ -226,6 +227,16 @@ struct ath10k_fw_stats_pdev {
|
||||
u32 pdev_resets;
|
||||
u32 phy_underrun;
|
||||
u32 txop_ovf;
|
||||
+ u32 seq_posted;
|
||||
+ u32 seq_failed_queueing;
|
||||
+ u32 seq_completed;
|
||||
+ u32 seq_restarted;
|
||||
+ u32 mu_seq_posted;
|
||||
+ u32 mpdus_sw_flush;
|
||||
+ u32 mpdus_hw_filter;
|
||||
+ u32 mpdus_truncated;
|
||||
+ u32 mpdus_ack_failed;
|
||||
+ u32 mpdus_expired;
|
||||
|
||||
/* PDEV RX stats */
|
||||
s32 mid_ppdu_route_change;
|
||||
@@ -242,6 +253,7 @@ struct ath10k_fw_stats_pdev {
|
||||
s32 phy_errs;
|
||||
s32 phy_err_drop;
|
||||
s32 mpdu_errs;
|
||||
+ s32 rx_ovfl_errs;
|
||||
};
|
||||
|
||||
struct ath10k_fw_stats {
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -2479,6 +2479,47 @@ void ath10k_wmi_pull_pdev_stats_tx(const
|
||||
dst->txop_ovf = __le32_to_cpu(src->txop_ovf);
|
||||
}
|
||||
|
||||
+static void
|
||||
+ath10k_wmi_10_4_pull_pdev_stats_tx(const struct wmi_10_4_pdev_stats_tx *src,
|
||||
+ struct ath10k_fw_stats_pdev *dst)
|
||||
+{
|
||||
+ dst->comp_queued = __le32_to_cpu(src->comp_queued);
|
||||
+ dst->comp_delivered = __le32_to_cpu(src->comp_delivered);
|
||||
+ dst->msdu_enqued = __le32_to_cpu(src->msdu_enqued);
|
||||
+ dst->mpdu_enqued = __le32_to_cpu(src->mpdu_enqued);
|
||||
+ dst->wmm_drop = __le32_to_cpu(src->wmm_drop);
|
||||
+ dst->local_enqued = __le32_to_cpu(src->local_enqued);
|
||||
+ dst->local_freed = __le32_to_cpu(src->local_freed);
|
||||
+ dst->hw_queued = __le32_to_cpu(src->hw_queued);
|
||||
+ dst->hw_reaped = __le32_to_cpu(src->hw_reaped);
|
||||
+ dst->underrun = __le32_to_cpu(src->underrun);
|
||||
+ dst->tx_abort = __le32_to_cpu(src->tx_abort);
|
||||
+ dst->mpdus_requed = __le32_to_cpu(src->mpdus_requed);
|
||||
+ dst->tx_ko = __le32_to_cpu(src->tx_ko);
|
||||
+ dst->data_rc = __le32_to_cpu(src->data_rc);
|
||||
+ dst->self_triggers = __le32_to_cpu(src->self_triggers);
|
||||
+ dst->sw_retry_failure = __le32_to_cpu(src->sw_retry_failure);
|
||||
+ dst->illgl_rate_phy_err = __le32_to_cpu(src->illgl_rate_phy_err);
|
||||
+ dst->pdev_cont_xretry = __le32_to_cpu(src->pdev_cont_xretry);
|
||||
+ dst->pdev_tx_timeout = __le32_to_cpu(src->pdev_tx_timeout);
|
||||
+ dst->pdev_resets = __le32_to_cpu(src->pdev_resets);
|
||||
+ dst->phy_underrun = __le32_to_cpu(src->phy_underrun);
|
||||
+ dst->txop_ovf = __le32_to_cpu(src->txop_ovf);
|
||||
+ dst->hw_paused = __le32_to_cpu(src->hw_paused);
|
||||
+ dst->seq_posted = __le32_to_cpu(src->seq_posted);
|
||||
+ dst->seq_failed_queueing =
|
||||
+ __le32_to_cpu(src->seq_failed_queueing);
|
||||
+ dst->seq_completed = __le32_to_cpu(src->seq_completed);
|
||||
+ dst->seq_restarted = __le32_to_cpu(src->seq_restarted);
|
||||
+ dst->mu_seq_posted = __le32_to_cpu(src->mu_seq_posted);
|
||||
+ dst->mpdus_sw_flush = __le32_to_cpu(src->mpdus_sw_flush);
|
||||
+ dst->mpdus_hw_filter = __le32_to_cpu(src->mpdus_hw_filter);
|
||||
+ dst->mpdus_truncated = __le32_to_cpu(src->mpdus_truncated);
|
||||
+ dst->mpdus_ack_failed = __le32_to_cpu(src->mpdus_ack_failed);
|
||||
+ dst->mpdus_hw_filter = __le32_to_cpu(src->mpdus_hw_filter);
|
||||
+ dst->mpdus_expired = __le32_to_cpu(src->mpdus_expired);
|
||||
+}
|
||||
+
|
||||
void ath10k_wmi_pull_pdev_stats_rx(const struct wmi_pdev_stats_rx *src,
|
||||
struct ath10k_fw_stats_pdev *dst)
|
||||
{
|
||||
@@ -2789,6 +2830,86 @@ static int ath10k_wmi_10_2_4_op_pull_fw_
|
||||
return 0;
|
||||
}
|
||||
|
||||
+static int ath10k_wmi_10_4_op_pull_fw_stats(struct ath10k *ar,
|
||||
+ struct sk_buff *skb,
|
||||
+ struct ath10k_fw_stats *stats)
|
||||
+{
|
||||
+ const struct wmi_10_2_stats_event *ev = (void *)skb->data;
|
||||
+ u32 num_pdev_stats;
|
||||
+ u32 num_pdev_ext_stats;
|
||||
+ u32 num_vdev_stats;
|
||||
+ u32 num_peer_stats;
|
||||
+ int i;
|
||||
+
|
||||
+ if (!skb_pull(skb, sizeof(*ev)))
|
||||
+ return -EPROTO;
|
||||
+
|
||||
+ num_pdev_stats = __le32_to_cpu(ev->num_pdev_stats);
|
||||
+ num_pdev_ext_stats = __le32_to_cpu(ev->num_pdev_ext_stats);
|
||||
+ num_vdev_stats = __le32_to_cpu(ev->num_vdev_stats);
|
||||
+ num_peer_stats = __le32_to_cpu(ev->num_peer_stats);
|
||||
+
|
||||
+ for (i = 0; i < num_pdev_stats; i++) {
|
||||
+ const struct wmi_10_4_pdev_stats *src;
|
||||
+ struct ath10k_fw_stats_pdev *dst;
|
||||
+
|
||||
+ src = (void *)skb->data;
|
||||
+ if (!skb_pull(skb, sizeof(*src)))
|
||||
+ return -EPROTO;
|
||||
+
|
||||
+ dst = kzalloc(sizeof(*dst), GFP_ATOMIC);
|
||||
+ if (!dst)
|
||||
+ continue;
|
||||
+
|
||||
+ ath10k_wmi_pull_pdev_stats_base(&src->base, dst);
|
||||
+ ath10k_wmi_10_4_pull_pdev_stats_tx(&src->tx, dst);
|
||||
+ ath10k_wmi_pull_pdev_stats_rx(&src->rx, dst);
|
||||
+ dst->rx_ovfl_errs = __le32_to_cpu(src->rx_ovfl_errs);
|
||||
+ ath10k_wmi_pull_pdev_stats_extra(&src->extra, dst);
|
||||
+
|
||||
+ list_add_tail(&dst->list, &stats->pdevs);
|
||||
+ }
|
||||
+
|
||||
+ for (i = 0; i < num_pdev_ext_stats; i++) {
|
||||
+ const struct wmi_10_2_pdev_ext_stats *src;
|
||||
+
|
||||
+ src = (void *)skb->data;
|
||||
+ if (!skb_pull(skb, sizeof(*src)))
|
||||
+ return -EPROTO;
|
||||
+
|
||||
+ /* FIXME: expose values to userspace
|
||||
+ *
|
||||
+ * Note: Even though this loop seems to do nothing it is
|
||||
+ * required to parse following sub-structures properly.
|
||||
+ */
|
||||
+ }
|
||||
+
|
||||
+ /* fw doesn't implement vdev stats */
|
||||
+
|
||||
+ for (i = 0; i < num_peer_stats; i++) {
|
||||
+ const struct wmi_10_4_peer_stats *src;
|
||||
+ struct ath10k_fw_stats_peer *dst;
|
||||
+
|
||||
+ src = (void *)skb->data;
|
||||
+ if (!skb_pull(skb, sizeof(*src)))
|
||||
+ return -EPROTO;
|
||||
+
|
||||
+ dst = kzalloc(sizeof(*dst), GFP_ATOMIC);
|
||||
+ if (!dst)
|
||||
+ continue;
|
||||
+
|
||||
+ ether_addr_copy(dst->peer_macaddr, src->peer_macaddr.addr);
|
||||
+ dst->peer_rssi = __le32_to_cpu(src->peer_rssi);
|
||||
+ dst->peer_tx_rate = __le32_to_cpu(src->peer_tx_rate);
|
||||
+ dst->peer_rx_rate = __le32_to_cpu(src->peer_rx_rate);
|
||||
+ /* FIXME: expose 10.4 specific values */
|
||||
+
|
||||
+ list_add_tail(&dst->list, &stats->peers);
|
||||
+ }
|
||||
+
|
||||
+ return 0;
|
||||
+}
|
||||
+
|
||||
void ath10k_wmi_event_update_stats(struct ath10k *ar, struct sk_buff *skb)
|
||||
{
|
||||
ath10k_dbg(ar, ATH10K_DBG_WMI, "WMI_UPDATE_STATS_EVENTID\n");
|
||||
@@ -4935,6 +5056,9 @@ static void ath10k_wmi_10_4_op_rx(struct
|
||||
ath10k_dbg(ar, ATH10K_DBG_WMI,
|
||||
"received event id %d not implemented\n", id);
|
||||
break;
|
||||
+ case WMI_10_4_UPDATE_STATS_EVENTID:
|
||||
+ ath10k_wmi_event_update_stats(ar, skb);
|
||||
+ break;
|
||||
default:
|
||||
ath10k_warn(ar, "Unknown eventid: %d\n", id);
|
||||
break;
|
||||
@@ -7022,6 +7146,90 @@ ath10k_wmi_op_gen_pdev_enable_adaptive_c
|
||||
return skb;
|
||||
}
|
||||
|
||||
+void ath10k_wmi_10_4_op_fw_stats_fill(struct ath10k *ar,
|
||||
+ struct ath10k_fw_stats *fw_stats,
|
||||
+ char *buf)
|
||||
+{
|
||||
+ u32 len = 0;
|
||||
+ u32 buf_len = ATH10K_FW_STATS_BUF_SIZE;
|
||||
+ const struct ath10k_fw_stats_pdev *pdev;
|
||||
+ const struct ath10k_fw_stats_vdev *vdev;
|
||||
+ const struct ath10k_fw_stats_peer *peer;
|
||||
+ size_t num_peers;
|
||||
+ size_t num_vdevs;
|
||||
+
|
||||
+ spin_lock_bh(&ar->data_lock);
|
||||
+
|
||||
+ pdev = list_first_entry_or_null(&fw_stats->pdevs,
|
||||
+ struct ath10k_fw_stats_pdev, list);
|
||||
+ if (!pdev) {
|
||||
+ ath10k_warn(ar, "failed to get pdev stats\n");
|
||||
+ goto unlock;
|
||||
+ }
|
||||
+
|
||||
+ num_peers = ath10k_wmi_fw_stats_num_peers(&fw_stats->peers);
|
||||
+ num_vdevs = ath10k_wmi_fw_stats_num_vdevs(&fw_stats->vdevs);
|
||||
+
|
||||
+ ath10k_wmi_fw_pdev_base_stats_fill(pdev, buf, &len);
|
||||
+ ath10k_wmi_fw_pdev_extra_stats_fill(pdev, buf, &len);
|
||||
+ ath10k_wmi_fw_pdev_tx_stats_fill(pdev, buf, &len);
|
||||
+
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "HW paused", pdev->hw_paused);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "Seqs posted", pdev->seq_posted);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "Seqs failed queueing", pdev->seq_failed_queueing);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "Seqs completed", pdev->seq_completed);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "Seqs restarted", pdev->seq_restarted);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "MU Seqs posted", pdev->mu_seq_posted);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "MPDUs SW flushed", pdev->mpdus_sw_flush);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "MPDUs HW filtered", pdev->mpdus_hw_filter);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "MPDUs truncated", pdev->mpdus_truncated);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "MPDUs receive no ACK", pdev->mpdus_ack_failed);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "MPDUs expired", pdev->mpdus_expired);
|
||||
+
|
||||
+ ath10k_wmi_fw_pdev_rx_stats_fill(pdev, buf, &len);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s %10d\n",
|
||||
+ "Num Rx Overflow errors", pdev->rx_ovfl_errs);
|
||||
+
|
||||
+ len += scnprintf(buf + len, buf_len - len, "\n");
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n",
|
||||
+ "ath10k VDEV stats", num_vdevs);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s\n\n",
|
||||
+ "=================");
|
||||
+
|
||||
+ list_for_each_entry(vdev, &fw_stats->vdevs, list) {
|
||||
+ ath10k_wmi_fw_vdev_stats_fill(vdev, buf, &len);
|
||||
+ }
|
||||
+
|
||||
+ len += scnprintf(buf + len, buf_len - len, "\n");
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s (%zu)\n",
|
||||
+ "ath10k PEER stats", num_peers);
|
||||
+ len += scnprintf(buf + len, buf_len - len, "%30s\n\n",
|
||||
+ "=================");
|
||||
+
|
||||
+ list_for_each_entry(peer, &fw_stats->peers, list) {
|
||||
+ ath10k_wmi_fw_peer_stats_fill(peer, buf, &len);
|
||||
+ }
|
||||
+
|
||||
+unlock:
|
||||
+ spin_unlock_bh(&ar->data_lock);
|
||||
+
|
||||
+ if (len >= buf_len)
|
||||
+ buf[len - 1] = 0;
|
||||
+ else
|
||||
+ buf[len] = 0;
|
||||
+}
|
||||
+
|
||||
static const struct wmi_ops wmi_ops = {
|
||||
.rx = ath10k_wmi_op_rx,
|
||||
.map_svc = wmi_main_svc_map,
|
||||
@@ -7292,6 +7500,7 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
.rx = ath10k_wmi_10_4_op_rx,
|
||||
.map_svc = wmi_10_4_svc_map,
|
||||
|
||||
+ .pull_fw_stats = ath10k_wmi_10_4_op_pull_fw_stats,
|
||||
.pull_scan = ath10k_wmi_op_pull_scan_ev,
|
||||
.pull_mgmt_rx = ath10k_wmi_10_4_op_pull_mgmt_rx_ev,
|
||||
.pull_ch_info = ath10k_wmi_10_4_op_pull_ch_info_ev,
|
||||
@@ -7341,9 +7550,11 @@ static const struct wmi_ops wmi_10_4_ops
|
||||
.gen_addba_send = ath10k_wmi_op_gen_addba_send,
|
||||
.gen_addba_set_resp = ath10k_wmi_op_gen_addba_set_resp,
|
||||
.gen_delba_send = ath10k_wmi_op_gen_delba_send,
|
||||
+ .fw_stats_fill = ath10k_wmi_10_4_op_fw_stats_fill,
|
||||
|
||||
/* shared with 10.2 */
|
||||
.gen_peer_assoc = ath10k_wmi_10_2_op_gen_peer_assoc,
|
||||
+ .gen_request_stats = ath10k_wmi_op_gen_request_stats,
|
||||
};
|
||||
|
||||
int ath10k_wmi_attach(struct ath10k *ar)
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.h
|
||||
@@ -3866,6 +3866,111 @@ struct wmi_pdev_stats_tx {
|
||||
__le32 txop_ovf;
|
||||
} __packed;
|
||||
|
||||
+struct wmi_10_4_pdev_stats_tx {
|
||||
+ /* Num HTT cookies queued to dispatch list */
|
||||
+ __le32 comp_queued;
|
||||
+
|
||||
+ /* Num HTT cookies dispatched */
|
||||
+ __le32 comp_delivered;
|
||||
+
|
||||
+ /* Num MSDU queued to WAL */
|
||||
+ __le32 msdu_enqued;
|
||||
+
|
||||
+ /* Num MPDU queue to WAL */
|
||||
+ __le32 mpdu_enqued;
|
||||
+
|
||||
+ /* Num MSDUs dropped by WMM limit */
|
||||
+ __le32 wmm_drop;
|
||||
+
|
||||
+ /* Num Local frames queued */
|
||||
+ __le32 local_enqued;
|
||||
+
|
||||
+ /* Num Local frames done */
|
||||
+ __le32 local_freed;
|
||||
+
|
||||
+ /* Num queued to HW */
|
||||
+ __le32 hw_queued;
|
||||
+
|
||||
+ /* Num PPDU reaped from HW */
|
||||
+ __le32 hw_reaped;
|
||||
+
|
||||
+ /* Num underruns */
|
||||
+ __le32 underrun;
|
||||
+
|
||||
+ /* HW Paused. */
|
||||
+ __le32 hw_paused;
|
||||
+
|
||||
+ /* Num PPDUs cleaned up in TX abort */
|
||||
+ __le32 tx_abort;
|
||||
+
|
||||
+ /* Num MPDUs requed by SW */
|
||||
+ __le32 mpdus_requed;
|
||||
+
|
||||
+ /* excessive retries */
|
||||
+ __le32 tx_ko;
|
||||
+
|
||||
+ /* data hw rate code */
|
||||
+ __le32 data_rc;
|
||||
+
|
||||
+ /* Scheduler self triggers */
|
||||
+ __le32 self_triggers;
|
||||
+
|
||||
+ /* frames dropped due to excessive sw retries */
|
||||
+ __le32 sw_retry_failure;
|
||||
+
|
||||
+ /* illegal rate phy errors */
|
||||
+ __le32 illgl_rate_phy_err;
|
||||
+
|
||||
+ /* wal pdev continuous xretry */
|
||||
+ __le32 pdev_cont_xretry;
|
||||
+
|
||||
+ /* wal pdev tx timeouts */
|
||||
+ __le32 pdev_tx_timeout;
|
||||
+
|
||||
+ /* wal pdev resets */
|
||||
+ __le32 pdev_resets;
|
||||
+
|
||||
+ /* frames dropped due to non-availability of stateless TIDs */
|
||||
+ __le32 stateless_tid_alloc_failure;
|
||||
+
|
||||
+ __le32 phy_underrun;
|
||||
+
|
||||
+ /* MPDU is more than txop limit */
|
||||
+ __le32 txop_ovf;
|
||||
+
|
||||
+ /* Number of Sequences posted */
|
||||
+ __le32 seq_posted;
|
||||
+
|
||||
+ /* Number of Sequences failed queueing */
|
||||
+ __le32 seq_failed_queueing;
|
||||
+
|
||||
+ /* Number of Sequences completed */
|
||||
+ __le32 seq_completed;
|
||||
+
|
||||
+ /* Number of Sequences restarted */
|
||||
+ __le32 seq_restarted;
|
||||
+
|
||||
+ /* Number of MU Sequences posted */
|
||||
+ __le32 mu_seq_posted;
|
||||
+
|
||||
+ /* Num MPDUs flushed by SW, HWPAUSED,SW TXABORT(Reset,channel change) */
|
||||
+ __le32 mpdus_sw_flush;
|
||||
+
|
||||
+ /* Num MPDUs filtered by HW, all filter condition (TTL expired) */
|
||||
+ __le32 mpdus_hw_filter;
|
||||
+
|
||||
+ /* Num MPDUs truncated by PDG
|
||||
+ * (TXOP, TBTT, PPDU_duration based on rate, dyn_bw)
|
||||
+ */
|
||||
+ __le32 mpdus_truncated;
|
||||
+
|
||||
+ /* Num MPDUs that was tried but didn't receive ACK or BA */
|
||||
+ __le32 mpdus_ack_failed;
|
||||
+
|
||||
+ /* Num MPDUs that was dropped due to expiry. */
|
||||
+ __le32 mpdus_expired;
|
||||
+} __packed;
|
||||
+
|
||||
struct wmi_pdev_stats_rx {
|
||||
/* Cnts any change in ring routing mid-ppdu */
|
||||
__le32 mid_ppdu_route_change;
|
||||
@@ -4039,6 +4144,16 @@ struct wmi_10_2_pdev_stats {
|
||||
struct wmi_pdev_stats_extra extra;
|
||||
} __packed;
|
||||
|
||||
+struct wmi_10_4_pdev_stats {
|
||||
+ struct wmi_pdev_stats_base base;
|
||||
+ struct wmi_10_4_pdev_stats_tx tx;
|
||||
+ struct wmi_pdev_stats_rx rx;
|
||||
+ __le32 rx_ovfl_errs;
|
||||
+ struct wmi_pdev_stats_mem mem;
|
||||
+ __le32 sram_free_size;
|
||||
+ struct wmi_pdev_stats_extra extra;
|
||||
+} __packed;
|
||||
+
|
||||
/*
|
||||
* VDEV statistics
|
||||
* TODO: add all VDEV stats here
|
||||
@@ -4080,6 +4195,23 @@ struct wmi_10_2_4_peer_stats {
|
||||
__le32 unknown_value; /* FIXME: what is this word? */
|
||||
} __packed;
|
||||
|
||||
+struct wmi_10_4_peer_stats {
|
||||
+ struct wmi_mac_addr peer_macaddr;
|
||||
+ __le32 peer_rssi;
|
||||
+ __le32 peer_rssi_seq_num;
|
||||
+ __le32 peer_tx_rate;
|
||||
+ __le32 peer_rx_rate;
|
||||
+ __le32 current_per;
|
||||
+ __le32 retries;
|
||||
+ __le32 tx_rate_count;
|
||||
+ __le32 max_4ms_frame_len;
|
||||
+ __le32 total_sub_frames;
|
||||
+ __le32 tx_bytes;
|
||||
+ __le32 num_pkt_loss_overflow[4];
|
||||
+ __le32 num_pkt_loss_excess_retry[4];
|
||||
+ __le32 peer_rssi_changed;
|
||||
+} __packed;
|
||||
+
|
||||
struct wmi_10_2_pdev_ext_stats {
|
||||
__le32 rx_rssi_comb;
|
||||
__le32 rx_rssi[4];
|
||||
@@ -6201,5 +6333,8 @@ void ath10k_wmi_10x_op_fw_stats_fill(str
|
||||
char *buf);
|
||||
size_t ath10k_wmi_fw_stats_num_peers(struct list_head *head);
|
||||
size_t ath10k_wmi_fw_stats_num_vdevs(struct list_head *head);
|
||||
+void ath10k_wmi_10_4_op_fw_stats_fill(struct ath10k *ar,
|
||||
+ struct ath10k_fw_stats *fw_stats,
|
||||
+ char *buf);
|
||||
|
||||
#endif /* _WMI_H_ */
|
|
@ -1,60 +0,0 @@
|
|||
From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Date: Fri, 23 Oct 2015 18:01:03 +0530
|
||||
Subject: [PATCH] ath10k: use local memory instead of shadow descriptor
|
||||
in ce_send
|
||||
|
||||
Currently to avoid uncached memory access while filling up copy engine
|
||||
descriptors, shadow descriptors are used. This can be optimized further
|
||||
by removing shadow descriptors. To achieve that first shadow ring
|
||||
dependency in ce_send is removed by creating local copy of the
|
||||
descriptor on stack and make a one-shot copy into the "uncached"
|
||||
descriptor.
|
||||
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/ce.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/ce.c
|
||||
@@ -274,7 +274,7 @@ int ath10k_ce_send_nolock(struct ath10k_
|
||||
{
|
||||
struct ath10k *ar = ce_state->ar;
|
||||
struct ath10k_ce_ring *src_ring = ce_state->src_ring;
|
||||
- struct ce_desc *desc, *sdesc;
|
||||
+ struct ce_desc *desc, sdesc;
|
||||
unsigned int nentries_mask = src_ring->nentries_mask;
|
||||
unsigned int sw_index = src_ring->sw_index;
|
||||
unsigned int write_index = src_ring->write_index;
|
||||
@@ -294,7 +294,6 @@ int ath10k_ce_send_nolock(struct ath10k_
|
||||
|
||||
desc = CE_SRC_RING_TO_DESC(src_ring->base_addr_owner_space,
|
||||
write_index);
|
||||
- sdesc = CE_SRC_RING_TO_DESC(src_ring->shadow_base, write_index);
|
||||
|
||||
desc_flags |= SM(transfer_id, CE_DESC_FLAGS_META_DATA);
|
||||
|
||||
@@ -303,11 +302,11 @@ int ath10k_ce_send_nolock(struct ath10k_
|
||||
if (flags & CE_SEND_FLAG_BYTE_SWAP)
|
||||
desc_flags |= CE_DESC_FLAGS_BYTE_SWAP;
|
||||
|
||||
- sdesc->addr = __cpu_to_le32(buffer);
|
||||
- sdesc->nbytes = __cpu_to_le16(nbytes);
|
||||
- sdesc->flags = __cpu_to_le16(desc_flags);
|
||||
+ sdesc.addr = __cpu_to_le32(buffer);
|
||||
+ sdesc.nbytes = __cpu_to_le16(nbytes);
|
||||
+ sdesc.flags = __cpu_to_le16(desc_flags);
|
||||
|
||||
- *desc = *sdesc;
|
||||
+ *desc = sdesc;
|
||||
|
||||
src_ring->per_transfer_context[write_index] = per_transfer_context;
|
||||
|
||||
@@ -614,7 +613,7 @@ int ath10k_ce_completed_send_next_nolock
|
||||
if (read_index == sw_index)
|
||||
return -EIO;
|
||||
|
||||
- sbase = src_ring->shadow_base;
|
||||
+ sbase = src_ring->base_addr_owner_space;
|
||||
sdesc = CE_SRC_RING_TO_DESC(sbase, sw_index);
|
||||
|
||||
/* Return data from completed source descriptor */
|
|
@ -1,49 +0,0 @@
|
|||
From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Date: Fri, 23 Oct 2015 18:01:04 +0530
|
||||
Subject: [PATCH] ath10k: remove send completion validation in diag
|
||||
read/write
|
||||
|
||||
CE diag window access is serialized (it has to be by design) so
|
||||
there's no way to get a different send completion. so there's no
|
||||
need for post completion validation.
|
||||
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/pci.c
|
||||
@@ -920,16 +920,6 @@ static int ath10k_pci_diag_read_mem(stru
|
||||
}
|
||||
}
|
||||
|
||||
- if (nbytes != completed_nbytes) {
|
||||
- ret = -EIO;
|
||||
- goto done;
|
||||
- }
|
||||
-
|
||||
- if (buf != (u32)address) {
|
||||
- ret = -EIO;
|
||||
- goto done;
|
||||
- }
|
||||
-
|
||||
i = 0;
|
||||
while (ath10k_ce_completed_recv_next_nolock(ce_diag, NULL, &buf,
|
||||
&completed_nbytes,
|
||||
@@ -1094,16 +1084,6 @@ static int ath10k_pci_diag_write_mem(str
|
||||
}
|
||||
}
|
||||
|
||||
- if (nbytes != completed_nbytes) {
|
||||
- ret = -EIO;
|
||||
- goto done;
|
||||
- }
|
||||
-
|
||||
- if (buf != ce_data) {
|
||||
- ret = -EIO;
|
||||
- goto done;
|
||||
- }
|
||||
-
|
||||
i = 0;
|
||||
while (ath10k_ce_completed_recv_next_nolock(ce_diag, NULL, &buf,
|
||||
&completed_nbytes,
|
|
@ -1,165 +0,0 @@
|
|||
From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Date: Fri, 23 Oct 2015 18:01:05 +0530
|
||||
Subject: [PATCH] ath10k: cleanup copy engine send completion
|
||||
|
||||
The physical address necessary to unmap DMA ('bufferp') is stored
|
||||
in ath10k_skb_cb as 'paddr'. ath10k doesn't rely on the meta/transfer_id
|
||||
when handling send completion (htc ep id is stored in sk_buff control
|
||||
buffer). So the unused output arguments {bufferp, nbytesp and transfer_idp}
|
||||
are removed from CE send completion. This change is needed before removing
|
||||
the shadow copy of copy engine (CE) descriptors in follow up patch.
|
||||
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/ce.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/ce.c
|
||||
@@ -578,17 +578,13 @@ int ath10k_ce_revoke_recv_next(struct at
|
||||
* The caller takes responsibility for any necessary locking.
|
||||
*/
|
||||
int ath10k_ce_completed_send_next_nolock(struct ath10k_ce_pipe *ce_state,
|
||||
- void **per_transfer_contextp,
|
||||
- u32 *bufferp,
|
||||
- unsigned int *nbytesp,
|
||||
- unsigned int *transfer_idp)
|
||||
+ void **per_transfer_contextp)
|
||||
{
|
||||
struct ath10k_ce_ring *src_ring = ce_state->src_ring;
|
||||
u32 ctrl_addr = ce_state->ctrl_addr;
|
||||
struct ath10k *ar = ce_state->ar;
|
||||
unsigned int nentries_mask = src_ring->nentries_mask;
|
||||
unsigned int sw_index = src_ring->sw_index;
|
||||
- struct ce_desc *sdesc, *sbase;
|
||||
unsigned int read_index;
|
||||
|
||||
if (src_ring->hw_index == sw_index) {
|
||||
@@ -613,15 +609,6 @@ int ath10k_ce_completed_send_next_nolock
|
||||
if (read_index == sw_index)
|
||||
return -EIO;
|
||||
|
||||
- sbase = src_ring->base_addr_owner_space;
|
||||
- sdesc = CE_SRC_RING_TO_DESC(sbase, sw_index);
|
||||
-
|
||||
- /* Return data from completed source descriptor */
|
||||
- *bufferp = __le32_to_cpu(sdesc->addr);
|
||||
- *nbytesp = __le16_to_cpu(sdesc->nbytes);
|
||||
- *transfer_idp = MS(__le16_to_cpu(sdesc->flags),
|
||||
- CE_DESC_FLAGS_META_DATA);
|
||||
-
|
||||
if (per_transfer_contextp)
|
||||
*per_transfer_contextp =
|
||||
src_ring->per_transfer_context[sw_index];
|
||||
@@ -696,10 +683,7 @@ int ath10k_ce_cancel_send_next(struct at
|
||||
}
|
||||
|
||||
int ath10k_ce_completed_send_next(struct ath10k_ce_pipe *ce_state,
|
||||
- void **per_transfer_contextp,
|
||||
- u32 *bufferp,
|
||||
- unsigned int *nbytesp,
|
||||
- unsigned int *transfer_idp)
|
||||
+ void **per_transfer_contextp)
|
||||
{
|
||||
struct ath10k *ar = ce_state->ar;
|
||||
struct ath10k_pci *ar_pci = ath10k_pci_priv(ar);
|
||||
@@ -707,9 +691,7 @@ int ath10k_ce_completed_send_next(struct
|
||||
|
||||
spin_lock_bh(&ar_pci->ce_lock);
|
||||
ret = ath10k_ce_completed_send_next_nolock(ce_state,
|
||||
- per_transfer_contextp,
|
||||
- bufferp, nbytesp,
|
||||
- transfer_idp);
|
||||
+ per_transfer_contextp);
|
||||
spin_unlock_bh(&ar_pci->ce_lock);
|
||||
|
||||
return ret;
|
||||
--- a/drivers/net/wireless/ath/ath10k/ce.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/ce.h
|
||||
@@ -192,16 +192,10 @@ int ath10k_ce_completed_recv_next(struct
|
||||
* Pops 1 completed send buffer from Source ring.
|
||||
*/
|
||||
int ath10k_ce_completed_send_next(struct ath10k_ce_pipe *ce_state,
|
||||
- void **per_transfer_contextp,
|
||||
- u32 *bufferp,
|
||||
- unsigned int *nbytesp,
|
||||
- unsigned int *transfer_idp);
|
||||
+ void **per_transfer_contextp);
|
||||
|
||||
int ath10k_ce_completed_send_next_nolock(struct ath10k_ce_pipe *ce_state,
|
||||
- void **per_transfer_contextp,
|
||||
- u32 *bufferp,
|
||||
- unsigned int *nbytesp,
|
||||
- unsigned int *transfer_idp);
|
||||
+ void **per_transfer_contextp);
|
||||
|
||||
/*==================CE Engine Initialization=======================*/
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/pci.c
|
||||
@@ -910,9 +910,8 @@ static int ath10k_pci_diag_read_mem(stru
|
||||
goto done;
|
||||
|
||||
i = 0;
|
||||
- while (ath10k_ce_completed_send_next_nolock(ce_diag, NULL, &buf,
|
||||
- &completed_nbytes,
|
||||
- &id) != 0) {
|
||||
+ while (ath10k_ce_completed_send_next_nolock(ce_diag,
|
||||
+ NULL) != 0) {
|
||||
mdelay(1);
|
||||
if (i++ > DIAG_ACCESS_CE_TIMEOUT_MS) {
|
||||
ret = -EBUSY;
|
||||
@@ -1073,9 +1072,8 @@ static int ath10k_pci_diag_write_mem(str
|
||||
goto done;
|
||||
|
||||
i = 0;
|
||||
- while (ath10k_ce_completed_send_next_nolock(ce_diag, NULL, &buf,
|
||||
- &completed_nbytes,
|
||||
- &id) != 0) {
|
||||
+ while (ath10k_ce_completed_send_next_nolock(ce_diag,
|
||||
+ NULL) != 0) {
|
||||
mdelay(1);
|
||||
|
||||
if (i++ > DIAG_ACCESS_CE_TIMEOUT_MS) {
|
||||
@@ -1139,13 +1137,9 @@ static void ath10k_pci_htc_tx_cb(struct
|
||||
struct ath10k *ar = ce_state->ar;
|
||||
struct sk_buff_head list;
|
||||
struct sk_buff *skb;
|
||||
- u32 ce_data;
|
||||
- unsigned int nbytes;
|
||||
- unsigned int transfer_id;
|
||||
|
||||
__skb_queue_head_init(&list);
|
||||
- while (ath10k_ce_completed_send_next(ce_state, (void **)&skb, &ce_data,
|
||||
- &nbytes, &transfer_id) == 0) {
|
||||
+ while (ath10k_ce_completed_send_next(ce_state, (void **)&skb) == 0) {
|
||||
/* no need to call tx completion for NULL pointers */
|
||||
if (skb == NULL)
|
||||
continue;
|
||||
@@ -1215,12 +1209,8 @@ static void ath10k_pci_htt_tx_cb(struct
|
||||
{
|
||||
struct ath10k *ar = ce_state->ar;
|
||||
struct sk_buff *skb;
|
||||
- u32 ce_data;
|
||||
- unsigned int nbytes;
|
||||
- unsigned int transfer_id;
|
||||
|
||||
- while (ath10k_ce_completed_send_next(ce_state, (void **)&skb, &ce_data,
|
||||
- &nbytes, &transfer_id) == 0) {
|
||||
+ while (ath10k_ce_completed_send_next(ce_state, (void **)&skb) == 0) {
|
||||
/* no need to call tx completion for NULL pointers */
|
||||
if (!skb)
|
||||
continue;
|
||||
@@ -1796,12 +1786,8 @@ err_dma:
|
||||
static void ath10k_pci_bmi_send_done(struct ath10k_ce_pipe *ce_state)
|
||||
{
|
||||
struct bmi_xfer *xfer;
|
||||
- u32 ce_data;
|
||||
- unsigned int nbytes;
|
||||
- unsigned int transfer_id;
|
||||
|
||||
- if (ath10k_ce_completed_send_next(ce_state, (void **)&xfer, &ce_data,
|
||||
- &nbytes, &transfer_id))
|
||||
+ if (ath10k_ce_completed_send_next(ce_state, (void **)&xfer))
|
||||
return;
|
||||
|
||||
xfer->tx_done = true;
|
|
@ -1,90 +0,0 @@
|
|||
From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Date: Fri, 23 Oct 2015 18:01:06 +0530
|
||||
Subject: [PATCH] ath10k: remove shadow copy of CE descriptors for source
|
||||
ring
|
||||
|
||||
For the messages from host to target, shadow copy of CE descriptors
|
||||
are maintained in source ring. Before writing actual CE descriptor,
|
||||
first shadow copy is filled and then it is copied to CE address space.
|
||||
To optimize in download path and to reduce d-cache pressure, removing
|
||||
shadow copy of CE descriptors. This will also reduce driver memory
|
||||
consumption by 33KB during on device probing.
|
||||
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/ce.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/ce.c
|
||||
@@ -921,27 +921,6 @@ ath10k_ce_alloc_src_ring(struct ath10k *
|
||||
src_ring->base_addr_ce_space_unaligned,
|
||||
CE_DESC_RING_ALIGN);
|
||||
|
||||
- /*
|
||||
- * Also allocate a shadow src ring in regular
|
||||
- * mem to use for faster access.
|
||||
- */
|
||||
- src_ring->shadow_base_unaligned =
|
||||
- kmalloc((nentries * sizeof(struct ce_desc) +
|
||||
- CE_DESC_RING_ALIGN), GFP_KERNEL);
|
||||
- if (!src_ring->shadow_base_unaligned) {
|
||||
- dma_free_coherent(ar->dev,
|
||||
- (nentries * sizeof(struct ce_desc) +
|
||||
- CE_DESC_RING_ALIGN),
|
||||
- src_ring->base_addr_owner_space,
|
||||
- src_ring->base_addr_ce_space);
|
||||
- kfree(src_ring);
|
||||
- return ERR_PTR(-ENOMEM);
|
||||
- }
|
||||
-
|
||||
- src_ring->shadow_base = PTR_ALIGN(
|
||||
- src_ring->shadow_base_unaligned,
|
||||
- CE_DESC_RING_ALIGN);
|
||||
-
|
||||
return src_ring;
|
||||
}
|
||||
|
||||
@@ -1120,7 +1099,6 @@ void ath10k_ce_free_pipe(struct ath10k *
|
||||
struct ath10k_ce_pipe *ce_state = &ar_pci->ce_states[ce_id];
|
||||
|
||||
if (ce_state->src_ring) {
|
||||
- kfree(ce_state->src_ring->shadow_base_unaligned);
|
||||
dma_free_coherent(ar->dev,
|
||||
(ce_state->src_ring->nentries *
|
||||
sizeof(struct ce_desc) +
|
||||
--- a/drivers/net/wireless/ath/ath10k/ce.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/ce.h
|
||||
@@ -100,12 +100,6 @@ struct ath10k_ce_ring {
|
||||
|
||||
/* CE address space */
|
||||
u32 base_addr_ce_space;
|
||||
- /*
|
||||
- * Start of shadow copy of descriptors, within regular memory.
|
||||
- * Aligned to descriptor-size boundary.
|
||||
- */
|
||||
- void *shadow_base_unaligned;
|
||||
- struct ce_desc *shadow_base;
|
||||
|
||||
/* keep last */
|
||||
void *per_transfer_context[0];
|
||||
--- a/drivers/net/wireless/ath/ath10k/pci.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/pci.c
|
||||
@@ -1594,7 +1594,6 @@ static void ath10k_pci_tx_pipe_cleanup(s
|
||||
struct ath10k_pci *ar_pci;
|
||||
struct ath10k_ce_pipe *ce_pipe;
|
||||
struct ath10k_ce_ring *ce_ring;
|
||||
- struct ce_desc *ce_desc;
|
||||
struct sk_buff *skb;
|
||||
int i;
|
||||
|
||||
@@ -1609,10 +1608,6 @@ static void ath10k_pci_tx_pipe_cleanup(s
|
||||
if (!pci_pipe->buf_sz)
|
||||
return;
|
||||
|
||||
- ce_desc = ce_ring->shadow_base;
|
||||
- if (WARN_ON(!ce_desc))
|
||||
- return;
|
||||
-
|
||||
for (i = 0; i < ce_ring->nentries; i++) {
|
||||
skb = ce_ring->per_transfer_context[i];
|
||||
if (!skb)
|
|
@ -1,77 +0,0 @@
|
|||
From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Date: Tue, 27 Oct 2015 17:51:11 +0530
|
||||
Subject: [PATCH] ath10k: remove supported chain mask
|
||||
|
||||
Removing supported chainmask fields as it can be always derived
|
||||
from num_rf_chains.
|
||||
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.h
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.h
|
||||
@@ -745,8 +745,6 @@ struct ath10k {
|
||||
int num_started_vdevs;
|
||||
|
||||
/* Protected by conf-mutex */
|
||||
- u8 supp_tx_chainmask;
|
||||
- u8 supp_rx_chainmask;
|
||||
u8 cfg_tx_chainmask;
|
||||
u8 cfg_rx_chainmask;
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -3736,13 +3736,8 @@ static int ath10k_get_antenna(struct iee
|
||||
|
||||
mutex_lock(&ar->conf_mutex);
|
||||
|
||||
- if (ar->cfg_tx_chainmask) {
|
||||
- *tx_ant = ar->cfg_tx_chainmask;
|
||||
- *rx_ant = ar->cfg_rx_chainmask;
|
||||
- } else {
|
||||
- *tx_ant = ar->supp_tx_chainmask;
|
||||
- *rx_ant = ar->supp_rx_chainmask;
|
||||
- }
|
||||
+ *tx_ant = ar->cfg_tx_chainmask;
|
||||
+ *rx_ant = ar->cfg_rx_chainmask;
|
||||
|
||||
mutex_unlock(&ar->conf_mutex);
|
||||
|
||||
@@ -3884,9 +3879,7 @@ static int ath10k_start(struct ieee80211
|
||||
}
|
||||
}
|
||||
|
||||
- if (ar->cfg_tx_chainmask)
|
||||
- __ath10k_set_antenna(ar, ar->cfg_tx_chainmask,
|
||||
- ar->cfg_rx_chainmask);
|
||||
+ __ath10k_set_antenna(ar, ar->cfg_tx_chainmask, ar->cfg_rx_chainmask);
|
||||
|
||||
/*
|
||||
* By default FW set ARP frames ac to voice (6). In that case ARP
|
||||
@@ -7169,8 +7162,8 @@ int ath10k_mac_register(struct ath10k *a
|
||||
BIT(NL80211_IFTYPE_AP) |
|
||||
BIT(NL80211_IFTYPE_MESH_POINT);
|
||||
|
||||
- ar->hw->wiphy->available_antennas_rx = ar->supp_rx_chainmask;
|
||||
- ar->hw->wiphy->available_antennas_tx = ar->supp_tx_chainmask;
|
||||
+ ar->hw->wiphy->available_antennas_rx = ar->cfg_rx_chainmask;
|
||||
+ ar->hw->wiphy->available_antennas_tx = ar->cfg_tx_chainmask;
|
||||
|
||||
if (!test_bit(ATH10K_FW_FEATURE_NO_P2P, ar->fw_features))
|
||||
ar->hw->wiphy->interface_modes |=
|
||||
--- a/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/wmi.c
|
||||
@@ -4460,8 +4460,10 @@ static void ath10k_wmi_event_service_rea
|
||||
ar->num_rf_chains = ar->max_spatial_stream;
|
||||
}
|
||||
|
||||
- ar->supp_tx_chainmask = (1 << ar->num_rf_chains) - 1;
|
||||
- ar->supp_rx_chainmask = (1 << ar->num_rf_chains) - 1;
|
||||
+ if (!ar->cfg_tx_chainmask) {
|
||||
+ ar->cfg_tx_chainmask = (1 << ar->num_rf_chains) - 1;
|
||||
+ ar->cfg_rx_chainmask = (1 << ar->num_rf_chains) - 1;
|
||||
+ }
|
||||
|
||||
if (strlen(ar->hw->wiphy->fw_version) == 0) {
|
||||
snprintf(ar->hw->wiphy->fw_version,
|
|
@ -1,37 +0,0 @@
|
|||
From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Date: Tue, 27 Oct 2015 17:51:12 +0530
|
||||
Subject: [PATCH] ath10k: fill HT/VHT MCS rateset only for configured
|
||||
chainmask
|
||||
|
||||
HT/VHT MCS rateset should be filled only for configured chainmask
|
||||
rather that max supported chainmask. Fix that by checking configured
|
||||
chainmask while filling HT/VHT MCS rate map.
|
||||
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -6984,7 +6984,7 @@ static struct ieee80211_sta_vht_cap ath1
|
||||
|
||||
mcs_map = 0;
|
||||
for (i = 0; i < 8; i++) {
|
||||
- if (i < ar->num_rf_chains)
|
||||
+ if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
|
||||
mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i*2);
|
||||
else
|
||||
mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2);
|
||||
@@ -7051,8 +7051,10 @@ static struct ieee80211_sta_ht_cap ath10
|
||||
if (ar->vht_cap_info & WMI_VHT_CAP_MAX_MPDU_LEN_MASK)
|
||||
ht_cap.cap |= IEEE80211_HT_CAP_MAX_AMSDU;
|
||||
|
||||
- for (i = 0; i < ar->num_rf_chains; i++)
|
||||
- ht_cap.mcs.rx_mask[i] = 0xFF;
|
||||
+ for (i = 0; i < ar->num_rf_chains; i++) {
|
||||
+ if (ar->cfg_rx_chainmask & BIT(i))
|
||||
+ ht_cap.mcs.rx_mask[i] = 0xFF;
|
||||
+ }
|
||||
|
||||
ht_cap.mcs.tx_params |= IEEE80211_HT_MCS_TX_DEFINED;
|
||||
|
|
@ -1,314 +0,0 @@
|
|||
From: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Date: Tue, 27 Oct 2015 17:51:13 +0530
|
||||
Subject: [PATCH] ath10k: move static HT/VHT capability setup functions
|
||||
|
||||
Move HT and VHT capabiltity setup static functions to avoid
|
||||
forward declaration.
|
||||
|
||||
Signed-off-by: Rajkumar Manoharan <rmanohar@qti.qualcomm.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -3757,6 +3757,146 @@ static void ath10k_check_chain_mask(stru
|
||||
dbg, cm);
|
||||
}
|
||||
|
||||
+static int ath10k_mac_get_vht_cap_bf_sts(struct ath10k *ar)
|
||||
+{
|
||||
+ int nsts = ar->vht_cap_info;
|
||||
+
|
||||
+ nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
|
||||
+ nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
|
||||
+
|
||||
+ /* If firmware does not deliver to host number of space-time
|
||||
+ * streams supported, assume it support up to 4 BF STS and return
|
||||
+ * the value for VHT CAP: nsts-1)
|
||||
+ */
|
||||
+ if (nsts == 0)
|
||||
+ return 3;
|
||||
+
|
||||
+ return nsts;
|
||||
+}
|
||||
+
|
||||
+static int ath10k_mac_get_vht_cap_bf_sound_dim(struct ath10k *ar)
|
||||
+{
|
||||
+ int sound_dim = ar->vht_cap_info;
|
||||
+
|
||||
+ sound_dim &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
|
||||
+ sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
|
||||
+
|
||||
+ /* If the sounding dimension is not advertised by the firmware,
|
||||
+ * let's use a default value of 1
|
||||
+ */
|
||||
+ if (sound_dim == 0)
|
||||
+ return 1;
|
||||
+
|
||||
+ return sound_dim;
|
||||
+}
|
||||
+
|
||||
+static struct ieee80211_sta_vht_cap ath10k_create_vht_cap(struct ath10k *ar)
|
||||
+{
|
||||
+ struct ieee80211_sta_vht_cap vht_cap = {0};
|
||||
+ u16 mcs_map;
|
||||
+ u32 val;
|
||||
+ int i;
|
||||
+
|
||||
+ vht_cap.vht_supported = 1;
|
||||
+ vht_cap.cap = ar->vht_cap_info;
|
||||
+
|
||||
+ if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
|
||||
+ IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)) {
|
||||
+ val = ath10k_mac_get_vht_cap_bf_sts(ar);
|
||||
+ val <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
|
||||
+ val &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
|
||||
+
|
||||
+ vht_cap.cap |= val;
|
||||
+ }
|
||||
+
|
||||
+ if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE |
|
||||
+ IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE)) {
|
||||
+ val = ath10k_mac_get_vht_cap_bf_sound_dim(ar);
|
||||
+ val <<= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
|
||||
+ val &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
|
||||
+
|
||||
+ vht_cap.cap |= val;
|
||||
+ }
|
||||
+
|
||||
+ mcs_map = 0;
|
||||
+ for (i = 0; i < 8; i++) {
|
||||
+ if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
|
||||
+ mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i * 2);
|
||||
+ else
|
||||
+ mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i * 2);
|
||||
+ }
|
||||
+
|
||||
+ vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map);
|
||||
+ vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
|
||||
+
|
||||
+ return vht_cap;
|
||||
+}
|
||||
+
|
||||
+static struct ieee80211_sta_ht_cap ath10k_get_ht_cap(struct ath10k *ar)
|
||||
+{
|
||||
+ int i;
|
||||
+ struct ieee80211_sta_ht_cap ht_cap = {0};
|
||||
+
|
||||
+ if (!(ar->ht_cap_info & WMI_HT_CAP_ENABLED))
|
||||
+ return ht_cap;
|
||||
+
|
||||
+ ht_cap.ht_supported = 1;
|
||||
+ ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
|
||||
+ ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_8;
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_DSSSCCK40;
|
||||
+ ht_cap.cap |= WLAN_HT_CAP_SM_PS_STATIC << IEEE80211_HT_CAP_SM_PS_SHIFT;
|
||||
+
|
||||
+ if (ar->ht_cap_info & WMI_HT_CAP_HT20_SGI)
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_SGI_20;
|
||||
+
|
||||
+ if (ar->ht_cap_info & WMI_HT_CAP_HT40_SGI)
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_SGI_40;
|
||||
+
|
||||
+ if (ar->ht_cap_info & WMI_HT_CAP_DYNAMIC_SMPS) {
|
||||
+ u32 smps;
|
||||
+
|
||||
+ smps = WLAN_HT_CAP_SM_PS_DYNAMIC;
|
||||
+ smps <<= IEEE80211_HT_CAP_SM_PS_SHIFT;
|
||||
+
|
||||
+ ht_cap.cap |= smps;
|
||||
+ }
|
||||
+
|
||||
+ if (ar->ht_cap_info & WMI_HT_CAP_TX_STBC)
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_TX_STBC;
|
||||
+
|
||||
+ if (ar->ht_cap_info & WMI_HT_CAP_RX_STBC) {
|
||||
+ u32 stbc;
|
||||
+
|
||||
+ stbc = ar->ht_cap_info;
|
||||
+ stbc &= WMI_HT_CAP_RX_STBC;
|
||||
+ stbc >>= WMI_HT_CAP_RX_STBC_MASK_SHIFT;
|
||||
+ stbc <<= IEEE80211_HT_CAP_RX_STBC_SHIFT;
|
||||
+ stbc &= IEEE80211_HT_CAP_RX_STBC;
|
||||
+
|
||||
+ ht_cap.cap |= stbc;
|
||||
+ }
|
||||
+
|
||||
+ if (ar->ht_cap_info & WMI_HT_CAP_LDPC)
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
|
||||
+
|
||||
+ if (ar->ht_cap_info & WMI_HT_CAP_L_SIG_TXOP_PROT)
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_LSIG_TXOP_PROT;
|
||||
+
|
||||
+ /* max AMSDU is implicitly taken from vht_cap_info */
|
||||
+ if (ar->vht_cap_info & WMI_VHT_CAP_MAX_MPDU_LEN_MASK)
|
||||
+ ht_cap.cap |= IEEE80211_HT_CAP_MAX_AMSDU;
|
||||
+
|
||||
+ for (i = 0; i < ar->num_rf_chains; i++) {
|
||||
+ if (ar->cfg_rx_chainmask & BIT(i))
|
||||
+ ht_cap.mcs.rx_mask[i] = 0xFF;
|
||||
+ }
|
||||
+
|
||||
+ ht_cap.mcs.tx_params |= IEEE80211_HT_MCS_TX_DEFINED;
|
||||
+
|
||||
+ return ht_cap;
|
||||
+}
|
||||
+
|
||||
static int __ath10k_set_antenna(struct ath10k *ar, u32 tx_ant, u32 rx_ant)
|
||||
{
|
||||
int ret;
|
||||
@@ -4068,39 +4208,6 @@ static u32 get_nss_from_chainmask(u16 ch
|
||||
return 1;
|
||||
}
|
||||
|
||||
-static int ath10k_mac_get_vht_cap_bf_sts(struct ath10k *ar)
|
||||
-{
|
||||
- int nsts = ar->vht_cap_info;
|
||||
-
|
||||
- nsts &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
|
||||
- nsts >>= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
|
||||
-
|
||||
- /* If firmware does not deliver to host number of space-time
|
||||
- * streams supported, assume it support up to 4 BF STS and return
|
||||
- * the value for VHT CAP: nsts-1)
|
||||
- * */
|
||||
- if (nsts == 0)
|
||||
- return 3;
|
||||
-
|
||||
- return nsts;
|
||||
-}
|
||||
-
|
||||
-static int ath10k_mac_get_vht_cap_bf_sound_dim(struct ath10k *ar)
|
||||
-{
|
||||
- int sound_dim = ar->vht_cap_info;
|
||||
-
|
||||
- sound_dim &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
|
||||
- sound_dim >>= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
|
||||
-
|
||||
- /* If the sounding dimension is not advertised by the firmware,
|
||||
- * let's use a default value of 1
|
||||
- */
|
||||
- if (sound_dim == 0)
|
||||
- return 1;
|
||||
-
|
||||
- return sound_dim;
|
||||
-}
|
||||
-
|
||||
static int ath10k_mac_set_txbf_conf(struct ath10k_vif *arvif)
|
||||
{
|
||||
u32 value = 0;
|
||||
@@ -6954,113 +7061,6 @@ static const struct ieee80211_iface_comb
|
||||
},
|
||||
};
|
||||
|
||||
-static struct ieee80211_sta_vht_cap ath10k_create_vht_cap(struct ath10k *ar)
|
||||
-{
|
||||
- struct ieee80211_sta_vht_cap vht_cap = {0};
|
||||
- u16 mcs_map;
|
||||
- u32 val;
|
||||
- int i;
|
||||
-
|
||||
- vht_cap.vht_supported = 1;
|
||||
- vht_cap.cap = ar->vht_cap_info;
|
||||
-
|
||||
- if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE |
|
||||
- IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE)) {
|
||||
- val = ath10k_mac_get_vht_cap_bf_sts(ar);
|
||||
- val <<= IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT;
|
||||
- val &= IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK;
|
||||
-
|
||||
- vht_cap.cap |= val;
|
||||
- }
|
||||
-
|
||||
- if (ar->vht_cap_info & (IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE |
|
||||
- IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE)) {
|
||||
- val = ath10k_mac_get_vht_cap_bf_sound_dim(ar);
|
||||
- val <<= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT;
|
||||
- val &= IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK;
|
||||
-
|
||||
- vht_cap.cap |= val;
|
||||
- }
|
||||
-
|
||||
- mcs_map = 0;
|
||||
- for (i = 0; i < 8; i++) {
|
||||
- if ((i < ar->num_rf_chains) && (ar->cfg_tx_chainmask & BIT(i)))
|
||||
- mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i*2);
|
||||
- else
|
||||
- mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2);
|
||||
- }
|
||||
-
|
||||
- vht_cap.vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map);
|
||||
- vht_cap.vht_mcs.tx_mcs_map = cpu_to_le16(mcs_map);
|
||||
-
|
||||
- return vht_cap;
|
||||
-}
|
||||
-
|
||||
-static struct ieee80211_sta_ht_cap ath10k_get_ht_cap(struct ath10k *ar)
|
||||
-{
|
||||
- int i;
|
||||
- struct ieee80211_sta_ht_cap ht_cap = {0};
|
||||
-
|
||||
- if (!(ar->ht_cap_info & WMI_HT_CAP_ENABLED))
|
||||
- return ht_cap;
|
||||
-
|
||||
- ht_cap.ht_supported = 1;
|
||||
- ht_cap.ampdu_factor = IEEE80211_HT_MAX_AMPDU_64K;
|
||||
- ht_cap.ampdu_density = IEEE80211_HT_MPDU_DENSITY_8;
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_SUP_WIDTH_20_40;
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_DSSSCCK40;
|
||||
- ht_cap.cap |= WLAN_HT_CAP_SM_PS_STATIC << IEEE80211_HT_CAP_SM_PS_SHIFT;
|
||||
-
|
||||
- if (ar->ht_cap_info & WMI_HT_CAP_HT20_SGI)
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_SGI_20;
|
||||
-
|
||||
- if (ar->ht_cap_info & WMI_HT_CAP_HT40_SGI)
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_SGI_40;
|
||||
-
|
||||
- if (ar->ht_cap_info & WMI_HT_CAP_DYNAMIC_SMPS) {
|
||||
- u32 smps;
|
||||
-
|
||||
- smps = WLAN_HT_CAP_SM_PS_DYNAMIC;
|
||||
- smps <<= IEEE80211_HT_CAP_SM_PS_SHIFT;
|
||||
-
|
||||
- ht_cap.cap |= smps;
|
||||
- }
|
||||
-
|
||||
- if (ar->ht_cap_info & WMI_HT_CAP_TX_STBC)
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_TX_STBC;
|
||||
-
|
||||
- if (ar->ht_cap_info & WMI_HT_CAP_RX_STBC) {
|
||||
- u32 stbc;
|
||||
-
|
||||
- stbc = ar->ht_cap_info;
|
||||
- stbc &= WMI_HT_CAP_RX_STBC;
|
||||
- stbc >>= WMI_HT_CAP_RX_STBC_MASK_SHIFT;
|
||||
- stbc <<= IEEE80211_HT_CAP_RX_STBC_SHIFT;
|
||||
- stbc &= IEEE80211_HT_CAP_RX_STBC;
|
||||
-
|
||||
- ht_cap.cap |= stbc;
|
||||
- }
|
||||
-
|
||||
- if (ar->ht_cap_info & WMI_HT_CAP_LDPC)
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_LDPC_CODING;
|
||||
-
|
||||
- if (ar->ht_cap_info & WMI_HT_CAP_L_SIG_TXOP_PROT)
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_LSIG_TXOP_PROT;
|
||||
-
|
||||
- /* max AMSDU is implicitly taken from vht_cap_info */
|
||||
- if (ar->vht_cap_info & WMI_VHT_CAP_MAX_MPDU_LEN_MASK)
|
||||
- ht_cap.cap |= IEEE80211_HT_CAP_MAX_AMSDU;
|
||||
-
|
||||
- for (i = 0; i < ar->num_rf_chains; i++) {
|
||||
- if (ar->cfg_rx_chainmask & BIT(i))
|
||||
- ht_cap.mcs.rx_mask[i] = 0xFF;
|
||||
- }
|
||||
-
|
||||
- ht_cap.mcs.tx_params |= IEEE80211_HT_MCS_TX_DEFINED;
|
||||
-
|
||||
- return ht_cap;
|
||||
-}
|
||||
-
|
||||
static void ath10k_get_arvif_iter(void *data, u8 *mac,
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
|
@ -1,42 +0,0 @@
|
|||
From: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
Date: Sat, 24 Oct 2015 21:25:51 +0200
|
||||
Subject: [PATCH] mac80211: fix crash on mesh local link ID generation with
|
||||
VIFs
|
||||
|
||||
llid_in_use needs to be limited to stations of the same VIF, otherwise it
|
||||
will cause a NULL deref as the sta_info of non-mesh-VIFs don't have
|
||||
sta->mesh set.
|
||||
|
||||
Steps to reproduce:
|
||||
|
||||
modprobe mac80211_hwsim channels=2
|
||||
iw phy phy0 interface add ibss0 type ibss
|
||||
iw phy phy0 interface add mesh0 type mp
|
||||
iw phy phy1 interface add ibss1 type ibss
|
||||
iw phy phy1 interface add mesh1 type mp
|
||||
ip link set ibss0 up
|
||||
ip link set mesh0 up
|
||||
ip link set ibss1 up
|
||||
ip link set mesh1 up
|
||||
iw dev ibss0 ibss join foo 2412
|
||||
iw dev ibss1 ibss join foo 2412
|
||||
# Ensure that ibss0 and ibss1 are actually associated; I often need to
|
||||
# leave and join the cell on ibss1 a second time.
|
||||
iw dev mesh0 mesh join bar
|
||||
iw dev mesh1 mesh join bar # crash
|
||||
|
||||
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/mesh_plink.c
|
||||
+++ b/net/mac80211/mesh_plink.c
|
||||
@@ -686,6 +686,9 @@ static bool llid_in_use(struct ieee80211
|
||||
|
||||
rcu_read_lock();
|
||||
list_for_each_entry_rcu(sta, &local->sta_list, list) {
|
||||
+ if (sdata != sta->sdata)
|
||||
+ continue;
|
||||
+
|
||||
if (!memcmp(&sta->mesh->llid, &llid, sizeof(llid))) {
|
||||
in_use = true;
|
||||
break;
|
|
@ -1,28 +0,0 @@
|
|||
From: Johannes Berg <johannes.berg@intel.com>
|
||||
Date: Wed, 4 Nov 2015 14:09:02 +0100
|
||||
Subject: [PATCH] mac80211: don't advertise
|
||||
NL80211_FEATURE_FULL_AP_CLIENT_STATE
|
||||
|
||||
For now, this feature doesn't actually work. To avoid shipping a
|
||||
kernel that has it enabled but where it can't be used disable it
|
||||
for now - we can re-enable it when it's fixed.
|
||||
|
||||
This partially reverts 44674d9c2267 ("mac80211: advertise support
|
||||
for full station state in AP mode").
|
||||
|
||||
Cc: Ayala Beker <ayala.beker@intel.com>
|
||||
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
|
||||
---
|
||||
|
||||
--- a/net/mac80211/main.c
|
||||
+++ b/net/mac80211/main.c
|
||||
@@ -541,8 +541,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
NL80211_FEATURE_HT_IBSS |
|
||||
NL80211_FEATURE_VIF_TXPOWER |
|
||||
NL80211_FEATURE_MAC_ON_CREATE |
|
||||
- NL80211_FEATURE_USERSPACE_MPM |
|
||||
- NL80211_FEATURE_FULL_AP_CLIENT_STATE;
|
||||
+ NL80211_FEATURE_USERSPACE_MPM;
|
||||
|
||||
if (!ops->hw_scan)
|
||||
wiphy->features |= NL80211_FEATURE_LOW_PRIORITY_SCAN |
|
|
@ -1,485 +0,0 @@
|
|||
From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
|
||||
Date: Thu, 15 Oct 2015 07:23:25 +0200
|
||||
Subject: [PATCH] ssb: pick PCMCIA host code support from b43 driver
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
ssb bus can be found on various "host" devices like PCI/PCMCIA/SDIO.
|
||||
Every ssb bus contains cores AKA devices.
|
||||
The main idea is to have ssb driver scan/initialize bus and register
|
||||
ready-to-use cores. This way ssb drivers can operate on a single core
|
||||
mostly ignoring underlaying details.
|
||||
|
||||
For some reason PCMCIA support was split between ssb and b43. We got
|
||||
PCMCIA host device probing in b43, then bus scanning in ssb and then
|
||||
wireless core probing back in b43. The truth is it's very unlikely we
|
||||
will ever see PCMCIA ssb device with no 802.11 core but I still don't
|
||||
see any advantage of the current architecture.
|
||||
|
||||
With proposed change we get the same functionality with a simpler
|
||||
architecture, less Kconfig symbols, one killed EXPORT and hopefully
|
||||
cleaner b43. Since b43 supports both: ssb & bcma I prefer to keep ssb
|
||||
specific code in ssb driver.
|
||||
|
||||
This mostly moves code from b43's pcmcia.c to bridge_pcmcia_80211.c. We
|
||||
already use similar solution with b43_pci_bridge.c. I didn't use "b43"
|
||||
in name of this new file as in theory any driver can operate on wireless
|
||||
core.
|
||||
|
||||
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
||||
---
|
||||
delete mode 100644 drivers/net/wireless/b43/pcmcia.c
|
||||
delete mode 100644 drivers/net/wireless/b43/pcmcia.h
|
||||
create mode 100644 drivers/ssb/bridge_pcmcia_80211.c
|
||||
|
||||
--- a/drivers/net/wireless/b43/Kconfig
|
||||
+++ b/drivers/net/wireless/b43/Kconfig
|
||||
@@ -72,26 +72,6 @@ config B43_PCICORE_AUTOSELECT
|
||||
select SSB_DRIVER_PCICORE
|
||||
default y
|
||||
|
||||
-config B43_PCMCIA
|
||||
- bool "Broadcom 43xx PCMCIA device support"
|
||||
- depends on B43 && B43_SSB && SSB_PCMCIAHOST_POSSIBLE
|
||||
- select SSB_PCMCIAHOST
|
||||
- ---help---
|
||||
- Broadcom 43xx PCMCIA device support.
|
||||
-
|
||||
- Support for 16bit PCMCIA devices.
|
||||
- Please note that most PC-CARD devices are _NOT_ 16bit PCMCIA
|
||||
- devices, but 32bit CardBUS devices. CardBUS devices are supported
|
||||
- out of the box by b43.
|
||||
-
|
||||
- With this config option you can drive b43 cards in
|
||||
- CompactFlash formfactor in a PCMCIA adaptor.
|
||||
- CF b43 cards can sometimes be found in handheld PCs.
|
||||
-
|
||||
- It's safe to select Y here, even if you don't have a B43 PCMCIA device.
|
||||
-
|
||||
- If unsure, say N.
|
||||
-
|
||||
config B43_SDIO
|
||||
bool "Broadcom 43xx SDIO device support"
|
||||
depends on B43 && B43_SSB && SSB_SDIOHOST_POSSIBLE
|
||||
--- a/drivers/net/wireless/b43/Makefile
|
||||
+++ b/drivers/net/wireless/b43/Makefile
|
||||
@@ -21,7 +21,6 @@ b43-y += pio.o
|
||||
b43-y += rfkill.o
|
||||
b43-y += ppr.o
|
||||
b43-$(CPTCFG_B43_LEDS) += leds.o
|
||||
-b43-$(CPTCFG_B43_PCMCIA) += pcmcia.o
|
||||
b43-$(CPTCFG_B43_SDIO) += sdio.o
|
||||
b43-$(CPTCFG_B43_DEBUG) += debugfs.o
|
||||
|
||||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
@@ -56,7 +56,6 @@
|
||||
#include "sysfs.h"
|
||||
#include "xmit.h"
|
||||
#include "lo.h"
|
||||
-#include "pcmcia.h"
|
||||
#include "sdio.h"
|
||||
#include <linux/mmc/sdio_func.h>
|
||||
|
||||
@@ -5850,12 +5849,9 @@ static int __init b43_init(void)
|
||||
int err;
|
||||
|
||||
b43_debugfs_init();
|
||||
- err = b43_pcmcia_init();
|
||||
- if (err)
|
||||
- goto err_dfs_exit;
|
||||
err = b43_sdio_init();
|
||||
if (err)
|
||||
- goto err_pcmcia_exit;
|
||||
+ goto err_dfs_exit;
|
||||
#ifdef CPTCFG_B43_BCMA
|
||||
err = bcma_driver_register(&b43_bcma_driver);
|
||||
if (err)
|
||||
@@ -5878,8 +5874,6 @@ err_bcma_driver_exit:
|
||||
err_sdio_exit:
|
||||
#endif
|
||||
b43_sdio_exit();
|
||||
-err_pcmcia_exit:
|
||||
- b43_pcmcia_exit();
|
||||
err_dfs_exit:
|
||||
b43_debugfs_exit();
|
||||
return err;
|
||||
@@ -5894,7 +5888,6 @@ static void __exit b43_exit(void)
|
||||
bcma_driver_unregister(&b43_bcma_driver);
|
||||
#endif
|
||||
b43_sdio_exit();
|
||||
- b43_pcmcia_exit();
|
||||
b43_debugfs_exit();
|
||||
}
|
||||
|
||||
--- a/drivers/net/wireless/b43/pcmcia.h
|
||||
+++ /dev/null
|
||||
@@ -1,20 +0,0 @@
|
||||
-#ifndef B43_PCMCIA_H_
|
||||
-#define B43_PCMCIA_H_
|
||||
-
|
||||
-#ifdef CPTCFG_B43_PCMCIA
|
||||
-
|
||||
-int b43_pcmcia_init(void);
|
||||
-void b43_pcmcia_exit(void);
|
||||
-
|
||||
-#else /* CPTCFG_B43_PCMCIA */
|
||||
-
|
||||
-static inline int b43_pcmcia_init(void)
|
||||
-{
|
||||
- return 0;
|
||||
-}
|
||||
-static inline void b43_pcmcia_exit(void)
|
||||
-{
|
||||
-}
|
||||
-
|
||||
-#endif /* CPTCFG_B43_PCMCIA */
|
||||
-#endif /* B43_PCMCIA_H_ */
|
||||
--- a/drivers/ssb/Makefile
|
||||
+++ b/drivers/ssb/Makefile
|
||||
@@ -5,7 +5,7 @@ ssb-$(CPTCFG_SSB_SPROM) += sprom.o
|
||||
|
||||
# host support
|
||||
ssb-$(CPTCFG_SSB_PCIHOST) += pci.o pcihost_wrapper.o
|
||||
-ssb-$(CPTCFG_SSB_PCMCIAHOST) += pcmcia.o
|
||||
+ssb-$(CPTCFG_SSB_PCMCIAHOST) += pcmcia.o bridge_pcmcia_80211.o
|
||||
ssb-$(CPTCFG_SSB_SDIOHOST) += sdio.o
|
||||
|
||||
# built-in drivers
|
||||
--- /dev/null
|
||||
+++ b/drivers/ssb/bridge_pcmcia_80211.c
|
||||
@@ -0,0 +1,128 @@
|
||||
+/*
|
||||
+ * Broadcom 43xx PCMCIA-SSB bridge module
|
||||
+ *
|
||||
+ * Copyright (c) 2007 Michael Buesch <m@bues.ch>
|
||||
+ *
|
||||
+ * Licensed under the GNU/GPL. See COPYING for details.
|
||||
+ */
|
||||
+
|
||||
+#include <linux/ssb/ssb.h>
|
||||
+#include <linux/slab.h>
|
||||
+#include <linux/module.h>
|
||||
+
|
||||
+#include <pcmcia/cistpl.h>
|
||||
+#include <pcmcia/ciscode.h>
|
||||
+#include <pcmcia/ds.h>
|
||||
+#include <pcmcia/cisreg.h>
|
||||
+
|
||||
+#include "ssb_private.h"
|
||||
+
|
||||
+static const struct pcmcia_device_id ssb_host_pcmcia_tbl[] = {
|
||||
+ PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x448),
|
||||
+ PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x476),
|
||||
+ PCMCIA_DEVICE_NULL,
|
||||
+};
|
||||
+
|
||||
+MODULE_DEVICE_TABLE(pcmcia, ssb_host_pcmcia_tbl);
|
||||
+
|
||||
+static int ssb_host_pcmcia_probe(struct pcmcia_device *dev)
|
||||
+{
|
||||
+ struct ssb_bus *ssb;
|
||||
+ int err = -ENOMEM;
|
||||
+ int res = 0;
|
||||
+
|
||||
+ ssb = kzalloc(sizeof(*ssb), GFP_KERNEL);
|
||||
+ if (!ssb)
|
||||
+ goto out_error;
|
||||
+
|
||||
+ err = -ENODEV;
|
||||
+
|
||||
+ dev->config_flags |= CONF_ENABLE_IRQ;
|
||||
+
|
||||
+ dev->resource[2]->flags |= WIN_ENABLE | WIN_DATA_WIDTH_16 |
|
||||
+ WIN_USE_WAIT;
|
||||
+ dev->resource[2]->start = 0;
|
||||
+ dev->resource[2]->end = SSB_CORE_SIZE;
|
||||
+ res = pcmcia_request_window(dev, dev->resource[2], 250);
|
||||
+ if (res != 0)
|
||||
+ goto err_kfree_ssb;
|
||||
+
|
||||
+ res = pcmcia_map_mem_page(dev, dev->resource[2], 0);
|
||||
+ if (res != 0)
|
||||
+ goto err_disable;
|
||||
+
|
||||
+ if (!dev->irq)
|
||||
+ goto err_disable;
|
||||
+
|
||||
+ res = pcmcia_enable_device(dev);
|
||||
+ if (res != 0)
|
||||
+ goto err_disable;
|
||||
+
|
||||
+ err = ssb_bus_pcmciabus_register(ssb, dev, dev->resource[2]->start);
|
||||
+ if (err)
|
||||
+ goto err_disable;
|
||||
+ dev->priv = ssb;
|
||||
+
|
||||
+ return 0;
|
||||
+
|
||||
+err_disable:
|
||||
+ pcmcia_disable_device(dev);
|
||||
+err_kfree_ssb:
|
||||
+ kfree(ssb);
|
||||
+out_error:
|
||||
+ ssb_err("Initialization failed (%d, %d)\n", res, err);
|
||||
+ return err;
|
||||
+}
|
||||
+
|
||||
+static void ssb_host_pcmcia_remove(struct pcmcia_device *dev)
|
||||
+{
|
||||
+ struct ssb_bus *ssb = dev->priv;
|
||||
+
|
||||
+ ssb_bus_unregister(ssb);
|
||||
+ pcmcia_disable_device(dev);
|
||||
+ kfree(ssb);
|
||||
+ dev->priv = NULL;
|
||||
+}
|
||||
+
|
||||
+#ifdef CPTCFG_PM
|
||||
+static int ssb_host_pcmcia_suspend(struct pcmcia_device *dev)
|
||||
+{
|
||||
+ struct ssb_bus *ssb = dev->priv;
|
||||
+
|
||||
+ return ssb_bus_suspend(ssb);
|
||||
+}
|
||||
+
|
||||
+static int ssb_host_pcmcia_resume(struct pcmcia_device *dev)
|
||||
+{
|
||||
+ struct ssb_bus *ssb = dev->priv;
|
||||
+
|
||||
+ return ssb_bus_resume(ssb);
|
||||
+}
|
||||
+#else /* CPTCFG_PM */
|
||||
+# define ssb_host_pcmcia_suspend NULL
|
||||
+# define ssb_host_pcmcia_resume NULL
|
||||
+#endif /* CPTCFG_PM */
|
||||
+
|
||||
+static struct pcmcia_driver ssb_host_pcmcia_driver = {
|
||||
+ .owner = THIS_MODULE,
|
||||
+ .name = "ssb-pcmcia",
|
||||
+ .id_table = ssb_host_pcmcia_tbl,
|
||||
+ .probe = ssb_host_pcmcia_probe,
|
||||
+ .remove = ssb_host_pcmcia_remove,
|
||||
+ .suspend = ssb_host_pcmcia_suspend,
|
||||
+ .resume = ssb_host_pcmcia_resume,
|
||||
+};
|
||||
+
|
||||
+/*
|
||||
+ * These are not module init/exit functions!
|
||||
+ * The module_pcmcia_driver() helper cannot be used here.
|
||||
+ */
|
||||
+int ssb_host_pcmcia_init(void)
|
||||
+{
|
||||
+ return pcmcia_register_driver(&ssb_host_pcmcia_driver);
|
||||
+}
|
||||
+
|
||||
+void ssb_host_pcmcia_exit(void)
|
||||
+{
|
||||
+ pcmcia_unregister_driver(&ssb_host_pcmcia_driver);
|
||||
+}
|
||||
--- a/drivers/ssb/main.c
|
||||
+++ b/drivers/ssb/main.c
|
||||
@@ -906,7 +906,6 @@ int ssb_bus_pcmciabus_register(struct ss
|
||||
|
||||
return err;
|
||||
}
|
||||
-EXPORT_SYMBOL(ssb_bus_pcmciabus_register);
|
||||
#endif /* CPTCFG_SSB_PCMCIAHOST */
|
||||
|
||||
#ifdef CPTCFG_SSB_SDIOHOST
|
||||
@@ -1474,6 +1473,12 @@ static int __init ssb_modinit(void)
|
||||
/* don't fail SSB init because of this */
|
||||
err = 0;
|
||||
}
|
||||
+ err = ssb_host_pcmcia_init();
|
||||
+ if (err) {
|
||||
+ ssb_err("PCMCIA host initialization failed\n");
|
||||
+ /* don't fail SSB init because of this */
|
||||
+ err = 0;
|
||||
+ }
|
||||
err = ssb_gige_init();
|
||||
if (err) {
|
||||
ssb_err("SSB Broadcom Gigabit Ethernet driver initialization failed\n");
|
||||
@@ -1491,6 +1496,7 @@ fs_initcall(ssb_modinit);
|
||||
static void __exit ssb_modexit(void)
|
||||
{
|
||||
ssb_gige_exit();
|
||||
+ ssb_host_pcmcia_exit();
|
||||
b43_pci_ssb_bridge_exit();
|
||||
bus_unregister(&ssb_bustype);
|
||||
}
|
||||
--- a/drivers/ssb/ssb_private.h
|
||||
+++ b/drivers/ssb/ssb_private.h
|
||||
@@ -94,6 +94,8 @@ extern int ssb_pcmcia_get_invariants(str
|
||||
extern int ssb_pcmcia_hardware_setup(struct ssb_bus *bus);
|
||||
extern void ssb_pcmcia_exit(struct ssb_bus *bus);
|
||||
extern int ssb_pcmcia_init(struct ssb_bus *bus);
|
||||
+extern int ssb_host_pcmcia_init(void);
|
||||
+extern void ssb_host_pcmcia_exit(void);
|
||||
extern const struct ssb_bus_ops ssb_pcmcia_ops;
|
||||
#else /* CPTCFG_SSB_PCMCIAHOST */
|
||||
static inline int ssb_pcmcia_switch_coreidx(struct ssb_bus *bus,
|
||||
@@ -117,6 +119,13 @@ static inline int ssb_pcmcia_init(struct
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
+static inline int ssb_host_pcmcia_init(void)
|
||||
+{
|
||||
+ return 0;
|
||||
+}
|
||||
+static inline void ssb_host_pcmcia_exit(void)
|
||||
+{
|
||||
+}
|
||||
#endif /* CPTCFG_SSB_PCMCIAHOST */
|
||||
|
||||
/* sdio.c */
|
||||
--- a/drivers/net/wireless/b43/pcmcia.c
|
||||
+++ /dev/null
|
||||
@@ -1,145 +0,0 @@
|
||||
-/*
|
||||
-
|
||||
- Broadcom B43 wireless driver
|
||||
-
|
||||
- Copyright (c) 2007 Michael Buesch <m@bues.ch>
|
||||
-
|
||||
- This program is free software; you can redistribute it and/or modify
|
||||
- it under the terms of the GNU General Public License as published by
|
||||
- the Free Software Foundation; either version 2 of the License, or
|
||||
- (at your option) any later version.
|
||||
-
|
||||
- This program is distributed in the hope that it will be useful,
|
||||
- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
- GNU General Public License for more details.
|
||||
-
|
||||
- You should have received a copy of the GNU General Public License
|
||||
- along with this program; see the file COPYING. If not, write to
|
||||
- the Free Software Foundation, Inc., 51 Franklin Steet, Fifth Floor,
|
||||
- Boston, MA 02110-1301, USA.
|
||||
-
|
||||
-*/
|
||||
-
|
||||
-#include "pcmcia.h"
|
||||
-
|
||||
-#include <linux/ssb/ssb.h>
|
||||
-#include <linux/slab.h>
|
||||
-#include <linux/module.h>
|
||||
-
|
||||
-#include <pcmcia/cistpl.h>
|
||||
-#include <pcmcia/ciscode.h>
|
||||
-#include <pcmcia/ds.h>
|
||||
-#include <pcmcia/cisreg.h>
|
||||
-
|
||||
-
|
||||
-static const struct pcmcia_device_id b43_pcmcia_tbl[] = {
|
||||
- PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x448),
|
||||
- PCMCIA_DEVICE_MANF_CARD(0x2D0, 0x476),
|
||||
- PCMCIA_DEVICE_NULL,
|
||||
-};
|
||||
-
|
||||
-MODULE_DEVICE_TABLE(pcmcia, b43_pcmcia_tbl);
|
||||
-
|
||||
-#ifdef CONFIG_PM
|
||||
-static int b43_pcmcia_suspend(struct pcmcia_device *dev)
|
||||
-{
|
||||
- struct ssb_bus *ssb = dev->priv;
|
||||
-
|
||||
- return ssb_bus_suspend(ssb);
|
||||
-}
|
||||
-
|
||||
-static int b43_pcmcia_resume(struct pcmcia_device *dev)
|
||||
-{
|
||||
- struct ssb_bus *ssb = dev->priv;
|
||||
-
|
||||
- return ssb_bus_resume(ssb);
|
||||
-}
|
||||
-#else /* CONFIG_PM */
|
||||
-# define b43_pcmcia_suspend NULL
|
||||
-# define b43_pcmcia_resume NULL
|
||||
-#endif /* CONFIG_PM */
|
||||
-
|
||||
-static int b43_pcmcia_probe(struct pcmcia_device *dev)
|
||||
-{
|
||||
- struct ssb_bus *ssb;
|
||||
- int err = -ENOMEM;
|
||||
- int res = 0;
|
||||
-
|
||||
- ssb = kzalloc(sizeof(*ssb), GFP_KERNEL);
|
||||
- if (!ssb)
|
||||
- goto out_error;
|
||||
-
|
||||
- err = -ENODEV;
|
||||
-
|
||||
- dev->config_flags |= CONF_ENABLE_IRQ;
|
||||
-
|
||||
- dev->resource[2]->flags |= WIN_ENABLE | WIN_DATA_WIDTH_16 |
|
||||
- WIN_USE_WAIT;
|
||||
- dev->resource[2]->start = 0;
|
||||
- dev->resource[2]->end = SSB_CORE_SIZE;
|
||||
- res = pcmcia_request_window(dev, dev->resource[2], 250);
|
||||
- if (res != 0)
|
||||
- goto err_kfree_ssb;
|
||||
-
|
||||
- res = pcmcia_map_mem_page(dev, dev->resource[2], 0);
|
||||
- if (res != 0)
|
||||
- goto err_disable;
|
||||
-
|
||||
- if (!dev->irq)
|
||||
- goto err_disable;
|
||||
-
|
||||
- res = pcmcia_enable_device(dev);
|
||||
- if (res != 0)
|
||||
- goto err_disable;
|
||||
-
|
||||
- err = ssb_bus_pcmciabus_register(ssb, dev, dev->resource[2]->start);
|
||||
- if (err)
|
||||
- goto err_disable;
|
||||
- dev->priv = ssb;
|
||||
-
|
||||
- return 0;
|
||||
-
|
||||
-err_disable:
|
||||
- pcmcia_disable_device(dev);
|
||||
-err_kfree_ssb:
|
||||
- kfree(ssb);
|
||||
-out_error:
|
||||
- printk(KERN_ERR "b43-pcmcia: Initialization failed (%d, %d)\n",
|
||||
- res, err);
|
||||
- return err;
|
||||
-}
|
||||
-
|
||||
-static void b43_pcmcia_remove(struct pcmcia_device *dev)
|
||||
-{
|
||||
- struct ssb_bus *ssb = dev->priv;
|
||||
-
|
||||
- ssb_bus_unregister(ssb);
|
||||
- pcmcia_disable_device(dev);
|
||||
- kfree(ssb);
|
||||
- dev->priv = NULL;
|
||||
-}
|
||||
-
|
||||
-static struct pcmcia_driver b43_pcmcia_driver = {
|
||||
- .owner = THIS_MODULE,
|
||||
- .name = "b43-pcmcia",
|
||||
- .id_table = b43_pcmcia_tbl,
|
||||
- .probe = b43_pcmcia_probe,
|
||||
- .remove = b43_pcmcia_remove,
|
||||
- .suspend = b43_pcmcia_suspend,
|
||||
- .resume = b43_pcmcia_resume,
|
||||
-};
|
||||
-
|
||||
-/*
|
||||
- * These are not module init/exit functions!
|
||||
- * The module_pcmcia_driver() helper cannot be used here.
|
||||
- */
|
||||
-int b43_pcmcia_init(void)
|
||||
-{
|
||||
- return pcmcia_register_driver(&b43_pcmcia_driver);
|
||||
-}
|
||||
-
|
||||
-void b43_pcmcia_exit(void)
|
||||
-{
|
||||
- pcmcia_unregister_driver(&b43_pcmcia_driver);
|
||||
-}
|
|
@ -1,54 +0,0 @@
|
|||
From: Felix Fietkau <nbd@openwrt.org>
|
||||
Date: Tue, 24 Nov 2015 11:33:54 +0100
|
||||
Subject: [PATCH] ath10k: stop abusing GFP_DMA
|
||||
|
||||
Allocations from the DMA zone were originally added for legacy ISA
|
||||
stuff, or PCI devices that have specific limitations in their DMA
|
||||
addressing capabilities. It has no place in ath10k, which can do
|
||||
full 32-bit DMA.
|
||||
|
||||
Fixes memory allocation errors on some platforms.
|
||||
|
||||
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/htt_rx.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/htt_rx.c
|
||||
@@ -536,7 +536,7 @@ int ath10k_htt_rx_alloc(struct ath10k_ht
|
||||
|
||||
size = htt->rx_ring.size * sizeof(htt->rx_ring.paddrs_ring);
|
||||
|
||||
- vaddr = dma_alloc_coherent(htt->ar->dev, size, &paddr, GFP_DMA);
|
||||
+ vaddr = dma_alloc_coherent(htt->ar->dev, size, &paddr, GFP_KERNEL);
|
||||
if (!vaddr)
|
||||
goto err_dma_ring;
|
||||
|
||||
@@ -545,7 +545,7 @@ int ath10k_htt_rx_alloc(struct ath10k_ht
|
||||
|
||||
vaddr = dma_alloc_coherent(htt->ar->dev,
|
||||
sizeof(*htt->rx_ring.alloc_idx.vaddr),
|
||||
- &paddr, GFP_DMA);
|
||||
+ &paddr, GFP_KERNEL);
|
||||
if (!vaddr)
|
||||
goto err_dma_idx;
|
||||
|
||||
--- a/drivers/net/wireless/ath/ath10k/htt_tx.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/htt_tx.c
|
||||
@@ -111,7 +111,7 @@ int ath10k_htt_tx_alloc(struct ath10k_ht
|
||||
size = htt->max_num_pending_tx * sizeof(struct ath10k_htt_txbuf);
|
||||
htt->txbuf.vaddr = dma_alloc_coherent(ar->dev, size,
|
||||
&htt->txbuf.paddr,
|
||||
- GFP_DMA);
|
||||
+ GFP_KERNEL);
|
||||
if (!htt->txbuf.vaddr) {
|
||||
ath10k_err(ar, "failed to alloc tx buffer\n");
|
||||
ret = -ENOMEM;
|
||||
@@ -124,7 +124,7 @@ int ath10k_htt_tx_alloc(struct ath10k_ht
|
||||
size = htt->max_num_pending_tx * sizeof(struct htt_msdu_ext_desc);
|
||||
htt->frag_desc.vaddr = dma_alloc_coherent(ar->dev, size,
|
||||
&htt->frag_desc.paddr,
|
||||
- GFP_DMA);
|
||||
+ GFP_KERNEL);
|
||||
if (!htt->frag_desc.vaddr) {
|
||||
ath10k_warn(ar, "failed to alloc fragment desc memory\n");
|
||||
ret = -ENOMEM;
|
|
@ -47,9 +47,9 @@
|
|||
|
||||
--- a/drivers/net/wireless/ath/Kconfig
|
||||
+++ b/drivers/net/wireless/ath/Kconfig
|
||||
@@ -22,6 +22,9 @@ menuconfig ATH_CARDS
|
||||
@@ -23,6 +23,9 @@ config WLAN_VENDOR_ATH
|
||||
|
||||
if ATH_CARDS
|
||||
if WLAN_VENDOR_ATH
|
||||
|
||||
+config ATH_USER_REGD
|
||||
+ bool "Do not enforce EEPROM regulatory restrictions"
|
||||
|
@ -59,9 +59,9 @@
|
|||
---help---
|
||||
--- a/.local-symbols
|
||||
+++ b/.local-symbols
|
||||
@@ -140,6 +140,7 @@ RTL8187_LEDS=
|
||||
@@ -126,6 +126,7 @@ ADM8211=
|
||||
ATH_COMMON=
|
||||
ATH_CARDS=
|
||||
WLAN_VENDOR_ATH=
|
||||
ATH_DEBUG=
|
||||
+ATH_USER_REGD=
|
||||
ATH_TRACEPOINTS=
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/net/wireless/reg.c
|
||||
+++ b/net/wireless/reg.c
|
||||
@@ -2480,6 +2480,8 @@ void regulatory_hint_country_ie(struct w
|
||||
@@ -2463,6 +2463,8 @@ void regulatory_hint_country_ie(struct w
|
||||
enum environment_cap env = ENVIRON_ANY;
|
||||
struct regulatory_request *request = NULL, *lr;
|
||||
|
||||
|
@ -9,7 +9,7 @@
|
|||
/* IE len must be evenly divisible by 2 */
|
||||
if (country_ie_len & 0x01)
|
||||
return;
|
||||
@@ -2686,6 +2688,7 @@ static void restore_regulatory_settings(
|
||||
@@ -2669,6 +2671,7 @@ static void restore_regulatory_settings(
|
||||
|
||||
void regulatory_hint_disconnect(void)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/include/net/cfg80211.h
|
||||
+++ b/include/net/cfg80211.h
|
||||
@@ -2361,6 +2361,7 @@ struct cfg80211_qos_map {
|
||||
@@ -2363,6 +2363,7 @@ struct cfg80211_qos_map {
|
||||
* (as advertised by the nl80211 feature flag.)
|
||||
* @get_tx_power: store the current TX power into the dbm variable;
|
||||
* return 0 if successful
|
||||
|
@ -8,7 +8,7 @@
|
|||
*
|
||||
* @set_wds_peer: set the WDS peer for a WDS interface
|
||||
*
|
||||
@@ -2617,6 +2618,7 @@ struct cfg80211_ops {
|
||||
@@ -2624,6 +2625,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);
|
||||
|
@ -18,7 +18,7 @@
|
|||
const u8 *addr);
|
||||
--- a/include/net/mac80211.h
|
||||
+++ b/include/net/mac80211.h
|
||||
@@ -1250,6 +1250,7 @@ enum ieee80211_smps_mode {
|
||||
@@ -1252,6 +1252,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
|
||||
|
@ -26,7 +26,7 @@
|
|||
*
|
||||
* @chandef: the channel definition to tune to
|
||||
* @radar_enabled: whether radar detection is enabled
|
||||
@@ -1270,6 +1271,7 @@ enum ieee80211_smps_mode {
|
||||
@@ -1272,6 +1273,7 @@ enum ieee80211_smps_mode {
|
||||
struct ieee80211_conf {
|
||||
u32 flags;
|
||||
int power_level, dynamic_ps_timeout;
|
||||
|
@ -36,7 +36,7 @@
|
|||
u8 ps_dtim_period;
|
||||
--- a/include/uapi/linux/nl80211.h
|
||||
+++ b/include/uapi/linux/nl80211.h
|
||||
@@ -1783,6 +1783,9 @@ enum nl80211_commands {
|
||||
@@ -1790,6 +1790,9 @@ enum nl80211_commands {
|
||||
* between scans. The scan plans are executed sequentially.
|
||||
* Each scan plan is a nested attribute of &enum nl80211_sched_scan_plan.
|
||||
*
|
||||
|
@ -46,7 +46,7 @@
|
|||
* @NUM_NL80211_ATTR: total number of nl80211_attrs available
|
||||
* @NL80211_ATTR_MAX: highest attribute number currently defined
|
||||
* @__NL80211_ATTR_AFTER_LAST: internal use
|
||||
@@ -2157,6 +2160,8 @@ enum nl80211_attrs {
|
||||
@@ -2164,6 +2167,8 @@ enum nl80211_attrs {
|
||||
NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS,
|
||||
NL80211_ATTR_SCHED_SCAN_PLANS,
|
||||
|
||||
|
@ -57,7 +57,7 @@
|
|||
__NL80211_ATTR_AFTER_LAST,
|
||||
--- a/net/mac80211/cfg.c
|
||||
+++ b/net/mac80211/cfg.c
|
||||
@@ -2206,6 +2206,19 @@ static int ieee80211_get_tx_power(struct
|
||||
@@ -2201,6 +2201,19 @@ static int ieee80211_get_tx_power(struct
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,7 @@
|
|||
static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev,
|
||||
const u8 *addr)
|
||||
{
|
||||
@@ -3849,6 +3862,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
@@ -3375,6 +3388,7 @@ const struct cfg80211_ops mac80211_confi
|
||||
.set_wiphy_params = ieee80211_set_wiphy_params,
|
||||
.set_tx_power = ieee80211_set_tx_power,
|
||||
.get_tx_power = ieee80211_get_tx_power,
|
||||
|
@ -87,7 +87,7 @@
|
|||
CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd)
|
||||
--- a/net/mac80211/ieee80211_i.h
|
||||
+++ b/net/mac80211/ieee80211_i.h
|
||||
@@ -1321,6 +1321,7 @@ struct ieee80211_local {
|
||||
@@ -1317,6 +1317,7 @@ struct ieee80211_local {
|
||||
int dynamic_ps_forced_timeout;
|
||||
|
||||
int user_power_level; /* in dBm, for all interfaces */
|
||||
|
@ -119,7 +119,7 @@
|
|||
if (local->hw.conf.power_level != power) {
|
||||
changed |= IEEE80211_CONF_CHANGE_POWER;
|
||||
local->hw.conf.power_level = power;
|
||||
@@ -579,6 +585,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
@@ -580,6 +586,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_
|
||||
IEEE80211_RADIOTAP_MCS_HAVE_BW;
|
||||
local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI |
|
||||
IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH;
|
||||
|
|
|
@ -16,12 +16,12 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
---
|
||||
Changes since v1: ---
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800.h | 13 -------------
|
||||
drivers/net/wireless/rt2x00/rt2800lib.h | 11 +++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 13 -------------
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 11 +++++++++++
|
||||
2 files changed, 11 insertions(+), 13 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -20,6 +20,20 @@
|
||||
#ifndef RT2800LIB_H
|
||||
#define RT2800LIB_H
|
||||
|
@ -43,8 +43,8 @@ Changes since v1: ---
|
|||
struct rt2800_ops {
|
||||
void (*register_read)(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset, u32 *value);
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -2969,18 +2969,4 @@ enum rt2800_eeprom_word {
|
||||
#define WCID_END 222
|
||||
#define STA_IDS_SIZE (WCID_END - WCID_START + 2)
|
||||
|
|
|
@ -18,12 +18,12 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
Changes since v1:
|
||||
- don't enable the new flag for RT3071 and RT5592
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 4 ++++
|
||||
drivers/net/wireless/rt2x00/rt2800lib.h | 13 +++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 4 ++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 13 +++++++++++++
|
||||
2 files changed, 17 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7721,6 +7721,7 @@ static int rt2800_probe_rt(struct rt2x00
|
||||
|
||||
int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev)
|
||||
|
@ -42,8 +42,8 @@ Changes since v1:
|
|||
/*
|
||||
* Allocate eeprom data.
|
||||
*/
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -22,6 +22,10 @@
|
||||
|
||||
#include "rt2800.h"
|
||||
|
|
|
@ -17,17 +17,17 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
---
|
||||
Changes since v1: ---
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 55 +++++++++++++++++++++++++++++-
|
||||
drivers/net/wireless/rt2x00/rt2800lib.h | 32 +++++++++++++++++
|
||||
drivers/net/wireless/rt2x00/rt2800mmio.c | 26 ++++++++++++++
|
||||
drivers/net/wireless/rt2x00/rt2800mmio.h | 4 +++
|
||||
drivers/net/wireless/rt2x00/rt2800pci.c | 14 ++++++++
|
||||
drivers/net/wireless/rt2x00/rt2800soc.c | 3 ++
|
||||
drivers/net/wireless/rt2x00/rt2800usb.c | 31 +++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 55 +++++++++++++++++++++++++++++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 32 +++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 26 ++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800mmio.h | 4 +++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 14 ++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800soc.c | 3 ++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 31 +++++++++++++++++
|
||||
7 files changed, 164 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -451,11 +451,13 @@ void rt2800_mcu_request(struct rt2x00_de
|
||||
rt2x00_set_field32(®, H2M_MAILBOX_CSR_CMD_TOKEN, token);
|
||||
rt2x00_set_field32(®, H2M_MAILBOX_CSR_ARG0, arg0);
|
||||
|
@ -260,8 +260,8 @@ Changes since v1: ---
|
|||
|
||||
memcpy(&seq->tkip.iv16, &iveiv_entry.iv[0], 2);
|
||||
memcpy(&seq->tkip.iv32, &iveiv_entry.iv[4], 4);
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -38,6 +38,11 @@ struct rt2800_drv_data {
|
||||
DECLARE_BITMAP(sta_ids, STA_IDS_SIZE);
|
||||
|
||||
|
@ -315,8 +315,8 @@ Changes since v1: ---
|
|||
static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev,
|
||||
const unsigned int offset,
|
||||
u32 *value)
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800mmio.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800mmio.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
||||
@@ -820,8 +820,10 @@ int rt2800mmio_init_registers(struct rt2
|
||||
rt2x00_set_field32(®, WPDMA_RST_IDX_DRX_IDX0, 1);
|
||||
rt2x00mmio_register_write(rt2x00dev, WPDMA_RST_IDX, reg);
|
||||
|
@ -359,8 +359,8 @@ Changes since v1: ---
|
|||
MODULE_AUTHOR(DRV_PROJECT);
|
||||
MODULE_VERSION(DRV_VERSION);
|
||||
MODULE_DESCRIPTION("rt2800 MMIO library");
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800mmio.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800mmio.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h
|
||||
@@ -160,4 +160,8 @@ int rt2800mmio_init_registers(struct rt2
|
||||
/* Device state switch handlers. */
|
||||
int rt2800mmio_enable_radio(struct rt2x00_dev *rt2x00dev);
|
||||
|
@ -370,8 +370,8 @@ Changes since v1: ---
|
|||
+void rt2800mmio_shmem_unlock(struct rt2x00_dev *rt2x00dev);
|
||||
+
|
||||
#endif /* RT2800MMIO_H */
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800pci.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800pci.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800pci.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800pci.c
|
||||
@@ -69,7 +69,9 @@ static void rt2800pci_mcu_status(struct
|
||||
return;
|
||||
|
||||
|
@ -444,8 +444,8 @@ Changes since v1: ---
|
|||
};
|
||||
|
||||
static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = {
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
@@ -176,6 +176,9 @@ static const struct rt2800_ops rt2800soc
|
||||
.drv_write_firmware = rt2800soc_write_firmware,
|
||||
.drv_init_registers = rt2800mmio_init_registers,
|
||||
|
@ -456,8 +456,8 @@ Changes since v1: ---
|
|||
};
|
||||
|
||||
static const struct rt2x00lib_ops rt2800soc_rt2x00_ops = {
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
||||
@@ -51,6 +51,27 @@ static bool rt2800usb_hwcrypt_disabled(s
|
||||
return modparam_nohwcrypt;
|
||||
}
|
||||
|
|
|
@ -23,12 +23,12 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
---
|
||||
Changes since v1: ---
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800.h | 3 +++
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 44 +++++++++++++++++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 3 +++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 44 +++++++++++++++++++++++++++++++
|
||||
2 files changed, 47 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -574,6 +574,7 @@
|
||||
#define PBF_SYS_CTRL 0x0400
|
||||
#define PBF_SYS_CTRL_READY FIELD32(0x00000080)
|
||||
|
@ -46,8 +46,8 @@ Changes since v1: ---
|
|||
#define BEACON_BASE_TO_OFFSET(_base) (((_base) - 0x4000) / 64)
|
||||
|
||||
/*
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -82,6 +82,39 @@ static inline bool rt2800_is_305x_soc(st
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -18,12 +18,12 @@ new field with the actually used value.
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 5 ++++-
|
||||
drivers/net/wireless/rt2x00/rt2800lib.h | 1 +
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 ++++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 1 +
|
||||
2 files changed, 5 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -4614,6 +4614,7 @@ EXPORT_SYMBOL_GPL(rt2800_link_tuner);
|
||||
*/
|
||||
static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
|
||||
|
@ -50,8 +50,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
/*
|
||||
* Allocate eeprom data.
|
||||
*/
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -35,6 +35,7 @@ struct rt2800_drv_data {
|
||||
u8 txmixer_gain_24g;
|
||||
u8 txmixer_gain_5g;
|
||||
|
|
|
@ -5,12 +5,12 @@ Subject: [PATCH] rt2x00: rt2800lib: init additional beacon offset registers
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800.h | 14 ++++++++++++++
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 24 ++++++++++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 14 ++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 24 ++++++++++++++++++++++++
|
||||
2 files changed, 38 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -629,6 +629,20 @@
|
||||
*/
|
||||
#define PBF_DBG 0x043c
|
||||
|
@ -32,8 +32,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
/*
|
||||
* RF registers
|
||||
*/
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -4626,6 +4626,30 @@ static int rt2800_init_registers(struct
|
||||
if (ret)
|
||||
return ret;
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: fix max supported beacon count for RT3593
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 5 ++++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 ++++-
|
||||
1 file changed, 4 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7851,7 +7851,10 @@ int rt2800_probe_hw(struct rt2x00_dev *r
|
||||
if (rt2x00_rt(rt2x00dev, RT3593))
|
||||
__set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags);
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: allow to build rt2800soc module for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/Kconfig | 2 +-
|
||||
drivers/net/wireless/ralink/rt2x00/Kconfig | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/rt2x00/Kconfig
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
@@ -210,7 +210,7 @@ endif
|
||||
config RT2800SOC
|
||||
tristate "Ralink WiSoC support"
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: enable support for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 1 +
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7821,6 +7821,7 @@ static int rt2800_probe_rt(struct rt2x00
|
||||
case RT3390:
|
||||
case RT3572:
|
||||
|
|
|
@ -5,12 +5,12 @@ Subject: [PATCH] rt2x00: rt2800lib: add rf_vals for RF3853
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800.h | 4 +-
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 65 +++++++++++++++++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 4 +-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 65 +++++++++++++++++++++++++++++++
|
||||
2 files changed, 68 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -48,7 +48,8 @@
|
||||
* RF2853 2.4G/5G 3T3R
|
||||
* RF3320 2.4G 1T1R(RT3350/RT3370/RT3390)
|
||||
|
@ -29,8 +29,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
#define RF5360 0x5360
|
||||
#define RF5362 0x5362
|
||||
#define RF5370 0x5370
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7441,6 +7441,66 @@ static const struct rf_channel rf_vals_3
|
||||
{173, 0x61, 0, 9},
|
||||
};
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: enable VCO calibration for RF3853
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 2 ++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -4378,6 +4378,7 @@ void rt2800_vco_calibration(struct rt2x0
|
||||
case RF3053:
|
||||
case RF3070:
|
||||
|
|
|
@ -6,11 +6,11 @@ Subject: [PATCH] rt2x00: rt2800lib: add channel configuration function for
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 208 +++++++++++++++++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 208 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 208 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -2625,6 +2625,211 @@ static void rt2800_config_channel_rf3053
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: enable RF3853 support
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 1 +
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7406,6 +7406,7 @@ static int rt2800_init_eeprom(struct rt2
|
||||
case RF3290:
|
||||
case RF3320:
|
||||
|
|
|
@ -6,12 +6,12 @@ Subject: [PATCH] rt2x00: rt2800lib: add MAC register initialization for
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800.h | 14 ++++++++++++++
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 19 ++++++++++++++++---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 14 ++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 19 ++++++++++++++++---
|
||||
2 files changed, 30 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -1588,6 +1588,20 @@
|
||||
#define TX_PWR_CFG_9_STBC7_CH2 FIELD32(0x00000f00)
|
||||
|
||||
|
@ -33,8 +33,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
* RX_FILTER_CFG: RX configuration register.
|
||||
*/
|
||||
#define RX_FILTER_CFG 0x1400
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -4981,6 +4981,12 @@ static int rt2800_init_registers(struct
|
||||
rt2800_register_write(rt2x00dev, TX_SW_CFG2,
|
||||
0x00000000);
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800soc: fix rt2800soc_disable_radio for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800soc.c | 9 ++++++++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800soc.c | 9 ++++++++-
|
||||
1 file changed, 8 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
@@ -51,9 +51,16 @@ static bool rt2800soc_hwcrypt_disabled(s
|
||||
|
||||
static void rt2800soc_disable_radio(struct rt2x00_dev *rt2x00dev)
|
||||
|
|
|
@ -6,11 +6,11 @@ Subject: [PATCH] rt2x00: rt2800lib: add BBP register initialization for
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 44 +++++++++++++++++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 44 +++++++++++++++++++++++++++++++
|
||||
1 file changed, 44 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -5784,6 +5784,47 @@ static void rt2800_init_bbp_3593(struct
|
||||
rt2800_bbp_write(rt2x00dev, 103, 0xc0);
|
||||
}
|
||||
|
|
|
@ -5,12 +5,12 @@ Subject: [PATCH] rt2x00: rt2800lib: add RFCSR initialization for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800.h | 1 +
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 141 +++++++++++++++++++++++++++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800.h | 1 +
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 141 +++++++++++++++++++++++++++++++
|
||||
2 files changed, 142 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -2171,6 +2171,7 @@ struct mac_iveiv_entry {
|
||||
/*
|
||||
* RFCSR 2:
|
||||
|
@ -19,8 +19,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
#define RFCSR2_RESCAL_EN FIELD8(0x80)
|
||||
|
||||
/*
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -6819,6 +6819,144 @@ static void rt2800_init_rfcsr_3593(struc
|
||||
/* TODO: enable stream mode support */
|
||||
}
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: use the extended EEPROM map for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -342,7 +342,8 @@ static unsigned int rt2800_eeprom_word_i
|
||||
wiphy_name(rt2x00dev->hw->wiphy), word))
|
||||
return 0;
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: force rf type to RF3853 on RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 2 ++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
|
||||
1 file changed, 2 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7587,6 +7587,8 @@ static int rt2800_init_eeprom(struct rt2
|
||||
rt2x00_rt(rt2x00dev, RT5390) ||
|
||||
rt2x00_rt(rt2x00dev, RT5392))
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: add channel configuration code for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 72 +++++++++++++++++++++++++++++--
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 72 +++++++++++++++++++++++++++++--
|
||||
1 file changed, 69 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3405,6 +3405,36 @@ static char rt2800_txpower_to_dev(struct
|
||||
return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);
|
||||
}
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: fix txpower_to_dev function for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 6 ++++--
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3392,13 +3392,15 @@ static char rt2800_txpower_to_dev(struct
|
||||
unsigned int channel,
|
||||
char txpower)
|
||||
|
|
|
@ -6,11 +6,11 @@ Subject: [PATCH] rt2x00: rt2800lib: use correct txpower calculation function
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -4611,7 +4611,8 @@ static void rt2800_config_txpower(struct
|
||||
struct ieee80211_channel *chan,
|
||||
int power_level)
|
||||
|
|
|
@ -6,11 +6,11 @@ Subject: [PATCH] rt2x00: rt2800lib: hardcode txmixer gain values to zero for
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 6 ++++--
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7469,7 +7469,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
|
||||
{
|
||||
u16 word;
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: use correct [RT]XWI size for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 1 +
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -558,6 +558,7 @@ void rt2800_get_txwi_rxwi_size(struct rt
|
||||
{
|
||||
switch (rt2x00dev->chip.rt) {
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: use correct beacon base for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -983,7 +983,8 @@ EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
|
||||
static unsigned int rt2800_hw_beacon_base(struct rt2x00_dev *rt2x00dev,
|
||||
unsigned int index)
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: use correct beacon count for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -8402,7 +8402,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
|
||||
if (rt2x00_rt(rt2x00dev, RT3593))
|
||||
__set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags);
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: fix antenna configuration for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -1937,7 +1937,8 @@ void rt2800_config_ant(struct rt2x00_dev
|
||||
rt2800_bbp_write(rt2x00dev, 3, r3);
|
||||
rt2800_bbp_write(rt2x00dev, 1, r1);
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: fix LNA gain configuration for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 6 ++++--
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
|
||||
1 file changed, 4 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -1960,7 +1960,8 @@ static void rt2800_config_lna_gain(struc
|
||||
rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom);
|
||||
lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0);
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: fix VGC setup for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 11 +++++++++--
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 11 +++++++++--
|
||||
1 file changed, 9 insertions(+), 2 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -4811,7 +4811,8 @@ static u8 rt2800_get_default_vgc(struct
|
||||
else
|
||||
vgc = 0x2e + rt2x00dev->lna_gain;
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: fix EEPROM LNA validation for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 9 ++++++---
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 9 ++++++---
|
||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7606,7 +7606,8 @@ static int rt2800_validate_eeprom(struct
|
||||
rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_BG2, &word);
|
||||
if (abs(rt2x00_get_field16(word, EEPROM_RSSI_BG2_OFFSET2)) > 10)
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: fix txpower compensation for RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 +++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 +++
|
||||
1 file changed, 3 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3981,6 +3981,9 @@ static u8 rt2800_compensate_txpower(stru
|
||||
if (rt2x00_rt(rt2x00dev, RT3593))
|
||||
return min_t(u8, txpower, 0xc);
|
||||
|
|
|
@ -6,11 +6,11 @@ Subject: [PATCH] rt2x00: rt2800lib: enable RT2800_HAS_HIGH_SHARED_MEM for
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -8415,7 +8415,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r
|
||||
if (retval)
|
||||
return retval;
|
||||
|
|
|
@ -5,11 +5,11 @@ Subject: [PATCH] rt2x00: rt2800lib: use high memory for beacons on RT3883
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800lib.c | 3 ++-
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -97,7 +97,8 @@ static inline void rt2800_shared_mem_sel
|
||||
|
||||
static inline bool rt2800_beacon_uses_high_mem(struct rt2x00_dev *rt2x00dev)
|
||||
|
|
|
@ -6,12 +6,12 @@ Subject: [PATCH] rt2x00: rt2800mmio: add a workaround for spurious
|
|||
|
||||
Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800mmio.c | 72 +++++++++++++++++++++++++-----
|
||||
drivers/net/wireless/rt2x00/rt2x00.h | 5 +++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 72 +++++++++++++++++++++++++-----
|
||||
drivers/net/wireless/ralink/rt2x00/rt2x00.h | 5 +++
|
||||
2 files changed, 65 insertions(+), 12 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800mmio.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800mmio.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
||||
@@ -415,9 +415,9 @@ void rt2800mmio_autowake_tasklet(unsigne
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(rt2800mmio_autowake_tasklet);
|
||||
|
@ -120,8 +120,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
/*
|
||||
* Never disable the TX_FIFO_STATUS interrupt.
|
||||
*/
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -989,6 +989,11 @@ struct rt2x00_dev {
|
||||
int rf_channel;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00pci.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00pci.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00pci.c
|
||||
@@ -94,8 +94,10 @@ int rt2x00pci_probe(struct pci_dev *pci_
|
||||
|
||||
pci_set_master(pci_dev);
|
||||
|
|
|
@ -20,8 +20,8 @@
|
|||
+};
|
||||
+
|
||||
+#endif /* _RT2X00_PLATFORM_H */
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -38,6 +38,7 @@
|
||||
#include <linux/kfifo.h>
|
||||
#include <linux/hrtimer.h>
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
--- a/.local-symbols
|
||||
+++ b/.local-symbols
|
||||
@@ -314,6 +314,7 @@ RT2X00_LIB_FIRMWARE=
|
||||
@@ -329,6 +329,7 @@ RT2X00_LIB_FIRMWARE=
|
||||
RT2X00_LIB_CRYPTO=
|
||||
RT2X00_LIB_LEDS=
|
||||
RT2X00_LIB_DEBUGFS=
|
||||
+RT2X00_LIB_EEPROM=
|
||||
RT2X00_DEBUG=
|
||||
WL_MEDIATEK=
|
||||
MT7601U=
|
||||
--- a/drivers/net/wireless/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/rt2x00/Kconfig
|
||||
WLAN_VENDOR_REALTEK=
|
||||
RTL8180=
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
@@ -69,6 +69,7 @@ config RT2800PCI
|
||||
select RT2X00_LIB_MMIO
|
||||
select RT2X00_LIB_PCI
|
||||
|
@ -36,8 +36,8 @@
|
|||
config RT2X00_LIB_LEDS
|
||||
bool
|
||||
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
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/Makefile
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/Makefile
|
||||
@@ -7,6 +7,7 @@ rt2x00lib-$(CPTCFG_RT2X00_LIB_DEBUGFS) +
|
||||
rt2x00lib-$(CPTCFG_RT2X00_LIB_CRYPTO) += rt2x00crypto.o
|
||||
rt2x00lib-$(CPTCFG_RT2X00_LIB_FIRMWARE) += rt2x00firmware.o
|
||||
|
@ -46,8 +46,8 @@
|
|||
|
||||
obj-$(CPTCFG_RT2X00_LIB) += rt2x00lib.o
|
||||
obj-$(CPTCFG_RT2X00_LIB_MMIO) += rt2x00mmio.o
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
||||
@@ -46,6 +46,8 @@ struct rt2800_drv_data {
|
||||
} shmem_lock;
|
||||
};
|
||||
|
@ -73,8 +73,8 @@
|
|||
return rt2800ops->read_eeprom(rt2x00dev);
|
||||
}
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
@@ -102,19 +102,6 @@ static int rt2800soc_set_device_state(st
|
||||
return retval;
|
||||
}
|
||||
|
@ -103,8 +103,8 @@
|
|||
.hwcrypt_disabled = rt2800soc_hwcrypt_disabled,
|
||||
.drv_write_firmware = rt2800soc_write_firmware,
|
||||
.drv_init_registers = rt2800mmio_init_registers,
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -697,6 +697,7 @@ enum rt2x00_capability_flags {
|
||||
REQUIRE_HT_TX_DESC,
|
||||
REQUIRE_PS_AUTOWAKE,
|
||||
|
@ -125,8 +125,8 @@
|
|||
* FIFO for storing tx status reports between isr and tasklet.
|
||||
*/
|
||||
DECLARE_KFIFO_PTR(txstatus_fifo, u32);
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1334,6 +1334,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de
|
||||
INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup);
|
||||
INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep);
|
||||
|
@ -151,7 +151,7 @@
|
|||
EXPORT_SYMBOL_GPL(rt2x00lib_remove_dev);
|
||||
|
||||
--- /dev/null
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00eeprom.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||
@@ -0,0 +1,111 @@
|
||||
+/*
|
||||
+ Copyright (C) 2004 - 2009 Ivo van Doorn <IvDoorn@gmail.com>
|
||||
|
@ -264,8 +264,8 @@
|
|||
+ release_firmware(rt2x00dev->eeprom_file);
|
||||
+ rt2x00dev->eeprom_file = NULL;
|
||||
+}
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00lib.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00lib.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00lib.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00lib.h
|
||||
@@ -320,6 +320,22 @@ static inline void rt2x00lib_free_firmwa
|
||||
#endif /* CPTCFG_RT2X00_LIB_FIRMWARE */
|
||||
|
||||
|
@ -289,8 +289,8 @@
|
|||
* Debugfs handlers.
|
||||
*/
|
||||
#ifdef CPTCFG_RT2X00_LIB_DEBUGFS
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00soc.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00soc.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00soc.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00soc.c
|
||||
@@ -92,6 +92,7 @@ int rt2x00soc_probe(struct platform_devi
|
||||
rt2x00dev->hw = hw;
|
||||
rt2x00dev->irq = platform_get_irq(pdev, 0);
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2x00eeprom.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00eeprom.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||
@@ -26,6 +26,7 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
|
|
@ -6,12 +6,12 @@ Subject: [PATCH] rt2x00: load eeprom on SoC from a mtd device defines inside
|
|||
|
||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/Kconfig | 1 +
|
||||
drivers/net/wireless/rt2x00/rt2800pci.c | 44 ++++++++++++++++++++++++++-----
|
||||
drivers/net/wireless/ralink/rt2x00/Kconfig | 1 +
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 44 ++++++++++++++++++++++++++-----
|
||||
2 files changed, 39 insertions(+), 6 deletions(-)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/rt2x00/Kconfig
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
@@ -219,6 +219,7 @@ config RT2800SOC
|
||||
select RT2X00_LIB_EEPROM
|
||||
select RT2800_LIB
|
||||
|
@ -20,8 +20,8 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
---help---
|
||||
This adds support for Ralink WiSoC devices.
|
||||
Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352.
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00eeprom.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00eeprom.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c
|
||||
@@ -26,11 +26,66 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
|
@ -79,7 +79,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
+ if (!ret) {
|
||||
+ rt2x00dev->eeprom_file = &mtd_fw;
|
||||
+ mtd_fw.size = len;
|
||||
+ mtd_fw.data = rt2x00dev->eeprom;
|
||||
+ mtd_fw.data = (const u8 *) rt2x00dev->eeprom;
|
||||
+ }
|
||||
+#endif
|
||||
+
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
};
|
||||
|
||||
#endif /* _RT2X00_PLATFORM_H */
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -940,6 +940,22 @@ static int rt2x00lib_probe_hw_modes(stru
|
||||
unsigned int num_rates;
|
||||
unsigned int i;
|
||||
|
@ -35,8 +35,8 @@
|
|||
num_rates = 0;
|
||||
if (spec->supported_rates & SUPPORT_RATE_CCK)
|
||||
num_rates += 4;
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -405,6 +405,7 @@ struct hw_mode_spec {
|
||||
unsigned int supported_bands;
|
||||
#define SUPPORT_BAND_2GHZ 0x00000001
|
||||
|
|
|
@ -8,8 +8,8 @@
|
|||
|
||||
int disable_2ghz;
|
||||
int disable_5ghz;
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -931,6 +931,18 @@ static void rt2x00lib_rate(struct ieee80
|
||||
entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE;
|
||||
}
|
||||
|
@ -29,8 +29,8 @@
|
|||
static int rt2x00lib_probe_hw_modes(struct rt2x00_dev *rt2x00dev,
|
||||
struct hw_mode_spec *spec)
|
||||
{
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -1412,6 +1412,7 @@ static inline void rt2x00debug_dump_fram
|
||||
*/
|
||||
u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev,
|
||||
|
@ -39,8 +39,8 @@
|
|||
|
||||
/*
|
||||
* Interrupt context handlers.
|
||||
--- a/drivers/net/wireless/rt2x00/rt61pci.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt61pci.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
||||
@@ -2390,6 +2390,7 @@ static int rt61pci_validate_eeprom(struc
|
||||
u32 reg;
|
||||
u16 word;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -26,6 +26,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3528,11 +3528,18 @@ static void rt2800_config_channel(struct
|
||||
/*
|
||||
* Change BBP settings
|
||||
|
@ -137,8 +137,8 @@
|
|||
return 0;
|
||||
}
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -2335,6 +2335,12 @@ struct mac_iveiv_entry {
|
||||
#define RFCSR36_RF_BS FIELD8(0x80)
|
||||
|
||||
|
@ -198,8 +198,8 @@
|
|||
|
||||
/*
|
||||
* EEPROM frequency
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -717,6 +717,8 @@ enum rt2x00_capability_flags {
|
||||
CAPABILITY_DOUBLE_ANTENNA,
|
||||
CAPABILITY_BT_COEXIST,
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -8185,6 +8185,27 @@ static const struct rf_channel rf_vals_5
|
||||
{196, 83, 0, 12, 1},
|
||||
};
|
||||
|
@ -76,8 +76,8 @@
|
|||
* Initialize hw specifications.
|
||||
*/
|
||||
retval = rt2800_probe_hw_mode(rt2x00dev);
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -400,6 +400,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).
|
||||
|
|
|
@ -8,11 +8,11 @@ devicetree.
|
|||
|
||||
Signed-off-by: John Crispin <blogic@openwrt.org>
|
||||
---
|
||||
drivers/net/wireless/rt2x00/rt2800pci.c | 7 +++++++
|
||||
drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 7 +++++++
|
||||
1 file changed, 7 insertions(+)
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800soc.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c
|
||||
@@ -237,10 +237,17 @@ static int rt2800soc_probe(struct platfo
|
||||
return rt2x00soc_probe(pdev, &rt2800soc_ops);
|
||||
}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -36,6 +36,7 @@
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -74,6 +74,7 @@
|
||||
#define RF3070 0x3070
|
||||
#define RF3290 0x3290
|
||||
|
@ -8,8 +8,8 @@
|
|||
#define RF5360 0x5360
|
||||
#define RF5362 0x5362
|
||||
#define RF5370 0x5370
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3014,6 +3014,13 @@ static void rt2800_config_channel_rf53xx
|
||||
|
||||
rt2800_rfcsr_write(rt2x00dev, 59,
|
||||
|
@ -264,8 +264,8 @@
|
|||
case RT5390:
|
||||
case RT5392:
|
||||
case RT5592:
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
||||
@@ -169,6 +169,7 @@ struct rt2x00_chip {
|
||||
#define RT3572 0x3572
|
||||
#define RT3593 0x3593
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -37,6 +37,7 @@
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
|
@ -26,8 +26,8 @@
|
|||
rt2x00dev->led_mcu_reg = eeprom;
|
||||
#endif /* CPTCFG_RT2X00_LIB_LEDS */
|
||||
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00leds.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00leds.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00leds.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00leds.c
|
||||
@@ -109,6 +109,9 @@ static int rt2x00leds_register_led(struc
|
||||
led->led_dev.name = name;
|
||||
led->led_dev.brightness = LED_OFF;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -1283,7 +1283,7 @@ static inline void rt2x00lib_set_if_comb
|
||||
*/
|
||||
if_limit = &rt2x00dev->if_limits_ap;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -7817,10 +7817,11 @@ static int rt2800_init_eeprom(struct rt2
|
||||
* RT53xx: defined in "EEPROM_CHIP_ID" field
|
||||
*/
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -2321,6 +2321,8 @@ struct mac_iveiv_entry {
|
||||
#define RFCSR30_RX_H20M FIELD8(0x04)
|
||||
#define RFCSR30_RX_VCM FIELD8(0x18)
|
||||
|
@ -9,8 +9,8 @@
|
|||
|
||||
/*
|
||||
* RFCSR 31:
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -3527,8 +3527,13 @@ static void rt2800_config_channel(struct
|
||||
rt2x00_rf(rt2x00dev, RF5390) ||
|
||||
rt2x00_rf(rt2x00dev, RF5392)) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
|
||||
@@ -632,12 +632,8 @@
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c
|
||||
@@ -632,12 +632,8 @@ void rt2x00mac_bss_info_changed(struct i
|
||||
} else if (bss_conf->enable_beacon && !intf->enable_beacon) {
|
||||
rt2x00dev->intf_beaconing++;
|
||||
intf->enable_beacon = true;
|
||||
|
@ -15,9 +15,9 @@
|
|||
|
||||
if (rt2x00dev->intf_beaconing == 1) {
|
||||
/*
|
||||
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
|
||||
@@ -144,7 +144,8 @@
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
||||
@@ -144,7 +144,8 @@ static void rt2x00lib_intf_scheduled_ite
|
||||
|
||||
if (test_and_clear_bit(DELAYED_UPDATE_BEACON, &intf->delayed_flags)) {
|
||||
mutex_lock(&intf->beacon_skb_mutex);
|
||||
|
@ -27,7 +27,7 @@
|
|||
mutex_unlock(&intf->beacon_skb_mutex);
|
||||
}
|
||||
}
|
||||
@@ -207,6 +208,7 @@
|
||||
@@ -207,6 +208,7 @@ static void rt2x00lib_beaconupdate_iter(
|
||||
struct ieee80211_vif *vif)
|
||||
{
|
||||
struct rt2x00_dev *rt2x00dev = data;
|
||||
|
@ -35,7 +35,7 @@
|
|||
|
||||
if (vif->type != NL80211_IFTYPE_AP &&
|
||||
vif->type != NL80211_IFTYPE_ADHOC &&
|
||||
@@ -220,7 +222,8 @@
|
||||
@@ -220,7 +222,8 @@ static void rt2x00lib_beaconupdate_iter(
|
||||
* never be called for USB devices.
|
||||
*/
|
||||
WARN_ON(rt2x00_is_usb(rt2x00dev));
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/mwl8k.c
|
||||
+++ b/drivers/net/wireless/mwl8k.c
|
||||
--- a/drivers/net/wireless/marvell/mwl8k.c
|
||||
+++ b/drivers/net/wireless/marvell/mwl8k.c
|
||||
@@ -5679,6 +5679,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw")
|
||||
MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API));
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/net/wireless/libertas/cfg.c
|
||||
+++ b/drivers/net/wireless/libertas/cfg.c
|
||||
@@ -2083,6 +2083,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
|
||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
||||
@@ -2084,6 +2084,8 @@ struct wireless_dev *lbs_cfg_alloc(struc
|
||||
goto err_wiphy_new;
|
||||
}
|
||||
|
||||
|
@ -9,8 +9,8 @@
|
|||
lbs_deb_leave(LBS_DEB_CFG80211);
|
||||
return wdev;
|
||||
|
||||
--- a/drivers/net/wireless/libertas/main.c
|
||||
+++ b/drivers/net/wireless/libertas/main.c
|
||||
--- a/drivers/net/wireless/marvell/libertas/main.c
|
||||
+++ b/drivers/net/wireless/marvell/libertas/main.c
|
||||
@@ -987,6 +987,7 @@ struct lbs_private *lbs_add_card(void *c
|
||||
goto err_adapter;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/net/wireless/libertas/cfg.c
|
||||
+++ b/drivers/net/wireless/libertas/cfg.c
|
||||
@@ -2173,6 +2173,8 @@ int lbs_cfg_register(struct lbs_private
|
||||
--- a/drivers/net/wireless/marvell/libertas/cfg.c
|
||||
+++ b/drivers/net/wireless/marvell/libertas/cfg.c
|
||||
@@ -2174,6 +2174,8 @@ int lbs_cfg_register(struct lbs_private
|
||||
wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
|
||||
wdev->wiphy->reg_notifier = lbs_reg_notifier;
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/b43/b43.h
|
||||
+++ b/drivers/net/wireless/b43/b43.h
|
||||
--- a/drivers/net/wireless/broadcom/b43/b43.h
|
||||
+++ b/drivers/net/wireless/broadcom/b43/b43.h
|
||||
@@ -839,6 +839,7 @@ struct b43_wldev {
|
||||
bool qos_enabled; /* TRUE, if QoS is used. */
|
||||
bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
|
||||
|
@ -8,8 +8,8 @@
|
|||
|
||||
/* PHY/Radio device. */
|
||||
struct b43_phy phy;
|
||||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -75,6 +75,11 @@ MODULE_FIRMWARE("b43/ucode16_mimo.fw");
|
||||
MODULE_FIRMWARE("b43/ucode5.fw");
|
||||
MODULE_FIRMWARE("b43/ucode9.fw");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/b43/Makefile
|
||||
+++ b/drivers/net/wireless/b43/Makefile
|
||||
--- a/drivers/net/wireless/broadcom/b43/Makefile
|
||||
+++ b/drivers/net/wireless/broadcom/b43/Makefile
|
||||
@@ -17,7 +17,7 @@ b43-$(CPTCFG_B43_PHY_AC) += phy_ac.o
|
||||
b43-y += sysfs.o
|
||||
b43-y += xmit.o
|
||||
|
@ -9,8 +9,8 @@
|
|||
b43-y += rfkill.o
|
||||
b43-y += ppr.o
|
||||
b43-$(CPTCFG_B43_LEDS) += leds.o
|
||||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -2008,10 +2008,12 @@ static void b43_do_interrupt_thread(stru
|
||||
dma_reason[0], dma_reason[1],
|
||||
dma_reason[2], dma_reason[3],
|
||||
|
@ -24,8 +24,8 @@
|
|||
b43_controller_restart(dev, "DMA error");
|
||||
return;
|
||||
}
|
||||
--- a/drivers/net/wireless/b43/pio.h
|
||||
+++ b/drivers/net/wireless/b43/pio.h
|
||||
--- a/drivers/net/wireless/broadcom/b43/pio.h
|
||||
+++ b/drivers/net/wireless/broadcom/b43/pio.h
|
||||
@@ -150,7 +150,7 @@ static inline void b43_piorx_write32(str
|
||||
b43_write32(q->dev, q->mmio_base + offset, value);
|
||||
}
|
||||
|
@ -73,8 +73,8 @@
|
|||
+#endif /* CPTCFG_B43_PIO */
|
||||
|
||||
#endif /* B43_PIO_H_ */
|
||||
--- a/drivers/net/wireless/b43/Kconfig
|
||||
+++ b/drivers/net/wireless/b43/Kconfig
|
||||
--- a/drivers/net/wireless/broadcom/b43/Kconfig
|
||||
+++ b/drivers/net/wireless/broadcom/b43/Kconfig
|
||||
@@ -98,7 +98,7 @@ config B43_BCMA_PIO
|
||||
default y
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -1648,7 +1648,7 @@ static void b43_write_beacon_template(st
|
||||
len, ram_offset, shm_size_offset, rate);
|
||||
|
||||
|
@ -118,8 +118,8 @@
|
|||
wl->hw_registred = false;
|
||||
hw->max_rates = 2;
|
||||
SET_IEEE80211_DEV(hw, dev->dev);
|
||||
--- a/drivers/net/wireless/b43/b43.h
|
||||
+++ b/drivers/net/wireless/b43/b43.h
|
||||
--- a/drivers/net/wireless/broadcom/b43/b43.h
|
||||
+++ b/drivers/net/wireless/broadcom/b43/b43.h
|
||||
@@ -840,6 +840,8 @@ struct b43_wldev {
|
||||
bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */
|
||||
bool use_pio; /* TRUE if next init should use PIO */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/b43/dma.h
|
||||
+++ b/drivers/net/wireless/b43/dma.h
|
||||
--- a/drivers/net/wireless/broadcom/b43/dma.h
|
||||
+++ b/drivers/net/wireless/broadcom/b43/dma.h
|
||||
@@ -169,7 +169,7 @@ struct b43_dmadesc_generic {
|
||||
|
||||
/* DMA engine tuning knobs */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -2899,6 +2899,14 @@ static int b43_gpio_init(struct b43_wlde
|
||||
} else if (dev->dev->chip_id == 0x5354) {
|
||||
/* Don't allow overtaking buttons GPIOs */
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/b43/main.c
|
||||
+++ b/drivers/net/wireless/b43/main.c
|
||||
--- a/drivers/net/wireless/broadcom/b43/main.c
|
||||
+++ b/drivers/net/wireless/broadcom/b43/main.c
|
||||
@@ -117,7 +117,7 @@ static int b43_modparam_pio = 0;
|
||||
module_param_named(pio, b43_modparam_pio, int, 0644);
|
||||
MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO");
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/brcm80211/brcmsmac/channel.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmsmac/channel.c
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c
|
||||
@@ -58,19 +58,12 @@
|
||||
(((c) < 149) ? 3 : 4))))
|
||||
|
||||
|
|
|
@ -11,9 +11,9 @@ module loads successfully.
|
|||
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmfmac/core.c
|
||||
@@ -1236,6 +1236,7 @@ static int __init brcmfmac_module_init(v
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
||||
@@ -1226,6 +1226,7 @@ static int __init brcmfmac_module_init(v
|
||||
#endif
|
||||
if (!schedule_work(&brcmf_driver_work))
|
||||
return -EBUSY;
|
||||
|
@ -21,8 +21,8 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|||
|
||||
return 0;
|
||||
}
|
||||
--- a/drivers/net/wireless/brcm80211/brcmfmac/firmware.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmfmac/firmware.c
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c
|
||||
@@ -420,6 +420,7 @@ struct brcmf_fw {
|
||||
u16 bus_nr;
|
||||
void (*done)(struct device *dev, const struct firmware *fw,
|
||||
|
@ -31,7 +31,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|||
};
|
||||
|
||||
static void brcmf_fw_request_nvram_done(const struct firmware *fw, void *ctx)
|
||||
@@ -455,6 +456,8 @@ static void brcmf_fw_request_nvram_done(
|
||||
@@ -454,6 +455,8 @@ static void brcmf_fw_request_nvram_done(
|
||||
goto fail;
|
||||
|
||||
fwctx->done(fwctx->dev, fwctx->code, nvram, nvram_length);
|
||||
|
@ -40,7 +40,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|||
kfree(fwctx);
|
||||
return;
|
||||
|
||||
@@ -462,6 +465,8 @@ fail:
|
||||
@@ -461,6 +464,8 @@ fail:
|
||||
brcmf_dbg(TRACE, "failed: dev=%s\n", dev_name(fwctx->dev));
|
||||
release_firmware(fwctx->code);
|
||||
device_release_driver(fwctx->dev);
|
||||
|
@ -49,7 +49,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|||
kfree(fwctx);
|
||||
}
|
||||
|
||||
@@ -477,6 +482,8 @@ static void brcmf_fw_request_code_done(c
|
||||
@@ -476,6 +481,8 @@ static void brcmf_fw_request_code_done(c
|
||||
/* only requested code so done here */
|
||||
if (!(fwctx->flags & BRCMF_FW_REQUEST_NVRAM)) {
|
||||
fwctx->done(fwctx->dev, fw, NULL, 0);
|
||||
|
@ -58,7 +58,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|||
kfree(fwctx);
|
||||
return;
|
||||
}
|
||||
@@ -494,6 +501,8 @@ static void brcmf_fw_request_code_done(c
|
||||
@@ -493,6 +500,8 @@ static void brcmf_fw_request_code_done(c
|
||||
fail:
|
||||
brcmf_dbg(TRACE, "failed: dev=%s\n", dev_name(fwctx->dev));
|
||||
device_release_driver(fwctx->dev);
|
||||
|
@ -67,7 +67,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|||
kfree(fwctx);
|
||||
}
|
||||
|
||||
@@ -505,6 +514,8 @@ int brcmf_fw_get_firmwares_pcie(struct d
|
||||
@@ -504,6 +513,8 @@ int brcmf_fw_get_firmwares_pcie(struct d
|
||||
u16 domain_nr, u16 bus_nr)
|
||||
{
|
||||
struct brcmf_fw *fwctx;
|
||||
|
@ -76,7 +76,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|||
|
||||
brcmf_dbg(TRACE, "enter: dev=%s\n", dev_name(dev));
|
||||
if (!fw_cb || !code)
|
||||
@@ -525,9 +536,17 @@ int brcmf_fw_get_firmwares_pcie(struct d
|
||||
@@ -524,9 +535,17 @@ int brcmf_fw_get_firmwares_pcie(struct d
|
||||
fwctx->domain_nr = domain_nr;
|
||||
fwctx->bus_nr = bus_nr;
|
||||
|
||||
|
|
|
@ -8,8 +8,8 @@ Content-Transfer-Encoding: 8bit
|
|||
Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
||||
---
|
||||
|
||||
--- a/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/brcm80211/brcmfmac/cfg80211.c
|
||||
--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
||||
@@ -609,9 +609,37 @@ static struct wireless_dev *brcmf_cfg802
|
||||
u32 *flags,
|
||||
struct vif_params *params)
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/rt2x00/Kconfig
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
||||
@@ -211,7 +211,7 @@ endif
|
||||
config RT2800SOC
|
||||
tristate "Ralink WiSoC support"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800.h
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
||||
@@ -81,6 +81,7 @@
|
||||
#define RF5372 0x5372
|
||||
#define RF5390 0x5390
|
||||
|
@ -62,8 +62,8 @@
|
|||
/* TX_PWR_CFG_7 */
|
||||
#define TX_PWR_CFG_7 0x13d4
|
||||
#define TX_PWR_CFG_7_OFDM54_CH0 FIELD32(0x0000000f)
|
||||
--- a/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/rt2x00/rt2800lib.c
|
||||
--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
||||
@@ -61,6 +61,8 @@
|
||||
rt2800_regbusy_read((__dev), BBP_CSR_CFG, BBP_CSR_CFG_BUSY, (__reg))
|
||||
#define WAIT_FOR_RFCSR(__dev, __reg) \
|
||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Sven Eckelmann <sven@open-mesh.com>
|
|||
|
||||
--- a/drivers/net/wireless/ath/ath10k/core.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/core.c
|
||||
@@ -1844,6 +1844,16 @@ int ath10k_core_register(struct ath10k *
|
||||
@@ -1914,6 +1914,16 @@ int ath10k_core_register(struct ath10k *
|
||||
ar->chip_id = chip_id;
|
||||
queue_work(ar->workqueue, &ar->register_work);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/drivers/net/wireless/ath/ath10k/mac.c
|
||||
+++ b/drivers/net/wireless/ath/ath10k/mac.c
|
||||
@@ -7092,6 +7092,21 @@ struct ath10k_vif *ath10k_get_arvif(stru
|
||||
@@ -7138,6 +7138,21 @@ struct ath10k_vif *ath10k_get_arvif(stru
|
||||
return arvif_iter.arvif;
|
||||
}
|
||||
|
||||
|
@ -22,7 +22,7 @@
|
|||
int ath10k_mac_register(struct ath10k *ar)
|
||||
{
|
||||
static const u32 cipher_suites[] = {
|
||||
@@ -7317,6 +7332,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
@@ -7354,6 +7369,12 @@ int ath10k_mac_register(struct ath10k *a
|
||||
ar->hw->wiphy->cipher_suites = cipher_suites;
|
||||
ar->hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites);
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
--- a/drivers/net/wireless/mwl8k.c
|
||||
+++ b/drivers/net/wireless/mwl8k.c
|
||||
--- a/drivers/net/wireless/marvell/mwl8k.c
|
||||
+++ b/drivers/net/wireless/marvell/mwl8k.c
|
||||
@@ -6262,6 +6262,8 @@ static int mwl8k_probe(struct pci_dev *p
|
||||
|
||||
priv->running_bsses = 0;
|
||||
|
|
Loading…
Reference in New Issue