|
@@ -0,0 +1,4670 @@
|
|
|
+From: Matthias Schiffer <mschiffer@universe-factory.net>
|
|
|
+Date: Tue, 15 Aug 2017 00:18:21 +0200
|
|
|
+Subject: mac80211, mt76, ath10k-ct, ath10k-firmware: backport from LEDE df3295f50e54909090846de12f7deb3ff8de6557
|
|
|
+
|
|
|
+diff --git a/package/firmware/ath10k-firmware/Makefile b/package/firmware/ath10k-firmware/Makefile
|
|
|
+index 8bf5729fff16677ef6449498f1df3cda19272583..16d77a398fbd3cbed6371e2cf977e2d8c4cfda36 100644
|
|
|
+--- a/package/firmware/ath10k-firmware/Makefile
|
|
|
++++ b/package/firmware/ath10k-firmware/Makefile
|
|
|
+@@ -8,9 +8,9 @@
|
|
|
+ include $(TOPDIR)/rules.mk
|
|
|
+
|
|
|
+ PKG_NAME:=ath10k-firmware
|
|
|
+-PKG_SOURCE_DATE:=2017-01-11
|
|
|
+-PKG_SOURCE_VERSION:=ab432c60437931a165f0aff1a6e3371f358b75dd
|
|
|
+-PKG_MIRROR_HASH:=e3188ecd4d7470d3cdde89fefa6258f9ec4f404b23558d1474e5014679b28101
|
|
|
++PKG_SOURCE_DATE:=2017-03-29
|
|
|
++PKG_SOURCE_VERSION:=956e2609b7e42c8c710bba10ef925a5be1be5137
|
|
|
++PKG_MIRROR_HASH:=25f724ff38c830281b3efba4a4ddffaae0c4bd8fea0f4c1061591229ff05535b
|
|
|
+ PKG_RELEASE:=1
|
|
|
+
|
|
|
+ PKG_SOURCE_PROTO:=git
|
|
|
+@@ -32,6 +32,11 @@ $(Package/ath10k-firmware-default)
|
|
|
+ TITLE:=ath10k firmware for QCA9887 devices
|
|
|
+ endef
|
|
|
+
|
|
|
++define Package/ath10k-firmware-qca9888
|
|
|
++$(Package/ath10k-firmware-default)
|
|
|
++ TITLE:=ath10k firmware for QCA9888 devices
|
|
|
++endef
|
|
|
++
|
|
|
+ define Package/ath10k-firmware-qca9887-ct
|
|
|
+ $(Package/ath10k-firmware-default)
|
|
|
+ TITLE:=ath10k-CT firmware for QCA9887 devices
|
|
|
+@@ -76,34 +81,41 @@ define Download/ct-firmware
|
|
|
+ URL_FILE:=$($(1)_FIRMWARE_FILE_CT)
|
|
|
+ endef
|
|
|
+
|
|
|
+-QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc3-lede
|
|
|
++QCA988X_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc5-lede
|
|
|
+ define Download/ath10k-firmware-qca988x-ct
|
|
|
+ $(call Download/ct-firmware,QCA988X,)
|
|
|
+- HASH:=4112d78161a2c20e7a9490ea8d04e9f919508bafb097d88761dcce026c26f93f
|
|
|
++ HASH:=556d6a4df50cd94a229a240d6d1d108ed5910069902f1e0cbb57b02ede27690f
|
|
|
+ endef
|
|
|
+ $(eval $(call Download,ath10k-firmware-qca988x-ct))
|
|
|
+
|
|
|
+-QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc3-lede
|
|
|
++QCA9887_FIRMWARE_FILE_CT:=firmware-2-ct-full-community.bin-19-rc5-lede
|
|
|
+ define Download/ath10k-firmware-qca9887-ct
|
|
|
+ $(call Download/ct-firmware,QCA9887,ath10k-9887)
|
|
|
+- HASH:=18b61875726d4384de46f75dec1d42fea31aa6d66dba4940cb9d375bc98732e4
|
|
|
++ HASH:=725982694156e0b891dcd1b1b18ba5318fbbe173f4ec9603ff7acbd08f7c4050
|
|
|
+ endef
|
|
|
+ $(eval $(call Download,ath10k-firmware-qca9887-ct))
|
|
|
+
|
|
|
+-QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.001
|
|
|
++QCA99X0_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.002
|
|
|
+ define Download/ath10k-firmware-qca99x0-ct
|
|
|
+ $(call Download/ct-firmware,QCA99X0,ath10k-10-4)
|
|
|
+- HASH:=61ff2b52617ae805579f423d6539284f056aba2b9f7e3629d600f6a5077ab703
|
|
|
++ HASH:=e3c77077b47d55219f90816a51bf046f5b40c32be5e96bf629b083d873a879ad
|
|
|
+ endef
|
|
|
+ $(eval $(call Download,ath10k-firmware-qca99x0-ct))
|
|
|
+
|
|
|
+-QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.001
|
|
|
++QCA9984_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.002
|
|
|
+ define Download/ath10k-firmware-qca9984-ct
|
|
|
+ $(call Download/ct-firmware,QCA9984,ath10k-9984-10-4)
|
|
|
+- HASH:=e079db5059cf28979ff50c7f6706df87e96a375e8048deeb4f6ede5357577f74
|
|
|
++ HASH:=610f7747db6b101f4fc21431b776ac640b5977357e5be9aece2349447b9b1d85
|
|
|
+ endef
|
|
|
+ $(eval $(call Download,ath10k-firmware-qca9984-ct))
|
|
|
+
|
|
|
++QCA9888_FIRMWARE_FILE_CT:=firmware-5-ct-full-community-9.bin-lede.002
|
|
|
++define Download/ath10k-firmware-qca9888-ct
|
|
|
++ $(call Download/ct-firmware,QCA9888,ath10k-9888-10-4)
|
|
|
++ HASH:=f92e7d7968698af7c6f2d76b31b3645589e03839e15838010ce457c635e5aae6
|
|
|
++endef
|
|
|
++$(eval $(call Download,ath10k-firmware-qca9888-ct))
|
|
|
++
|
|
|
+ define Package/ath10k-firmware-qca99x0
|
|
|
+ $(Package/ath10k-firmware-default)
|
|
|
+ TITLE:=ath10k firmware for QCA99x0 devices
|
|
|
+@@ -158,6 +170,14 @@ This firmware conflicts with the standard 9984 firmware, so select only
|
|
|
+ one.
|
|
|
+ endef
|
|
|
+
|
|
|
++define Package/ath10k-firmware-qca9888-ct/description
|
|
|
++Alternative ath10k firmware for QCA9886 and QCA9888 from Candela Technologies.
|
|
|
++Enables IBSS and other features. See:
|
|
|
++http://www.candelatech.com/ath10k-10.4.php
|
|
|
++This firmware conflicts with the standard 9886 and 9888 firmware, so select only
|
|
|
++one.
|
|
|
++endef
|
|
|
++
|
|
|
+ define Package/ath10k-firmware-qca99x0/description
|
|
|
+ Standard ath10k firmware for QCA99x0 from QCA
|
|
|
+ This firmware conflicts with the CT 99x0 firmware, so select only
|
|
|
+@@ -178,6 +198,13 @@ $(Package/ath10k-firmware-default)
|
|
|
+ CATEGORY:=Firmware
|
|
|
+ endef
|
|
|
+
|
|
|
++define Package/ath10k-firmware-qca9888-ct
|
|
|
++$(Package/ath10k-firmware-default)
|
|
|
++ TITLE:=ath10k CT 10.4.3 firmware for QCA9886 and QCA9888 devices
|
|
|
++ SECTION:=firmware
|
|
|
++ CATEGORY:=Firmware
|
|
|
++endef
|
|
|
++
|
|
|
+ define Package/ath10k-firmware-qca9984
|
|
|
+ $(Package/ath10k-firmware-default)
|
|
|
+ TITLE:=ath10k firmware for QCA9984 devices
|
|
|
+@@ -185,6 +212,13 @@ $(Package/ath10k-firmware-default)
|
|
|
+ CATEGORY:=Firmware
|
|
|
+ endef
|
|
|
+
|
|
|
++define Package/ath10k-firmware-qca4019
|
|
|
++$(Package/ath10k-firmware-default)
|
|
|
++ TITLE:=ath10k firmware for IPQ/QCA4019 devices
|
|
|
++ SECTION:=firmware
|
|
|
++ CATEGORY:=Firmware
|
|
|
++endef
|
|
|
++
|
|
|
+ define Package/ath10k-firmware-qca6174
|
|
|
+ $(Package/ath10k-firmware-default)
|
|
|
+ TITLE:=ath10k firmware for QCA6174 devices
|
|
|
+@@ -203,31 +237,18 @@ define Download/qca99x0-board
|
|
|
+ endef
|
|
|
+ $(eval $(call Download,qca99x0-board))
|
|
|
+
|
|
|
+-QCA9984_BOARD_REV:=719c0127e52bd70559e71b85ab0331790e1bf66c
|
|
|
+-QCA9984_BOARD_FILE:=board-2.bin
|
|
|
+-QCA9984_BOARD_FILE_DL:=$(QCA9984_BOARD_FILE).$(QCA9984_BOARD_REV)
|
|
|
+-QCA9984_FIRMWARE_REV:=d43cb1188154037506e94abf3aa456cc934c6861
|
|
|
+-QCA9984_FIRMWARE_FILE:=firmware-5.bin_10.4-3.4-00072
|
|
|
+-QCA9984_FIRMWARE_FILE_DL:=$(QCA9984_FIRMWARE_FILE).$(QCA9984_FIRMWARE_REV)
|
|
|
+-
|
|
|
+-define Download/ath10k-qca9984-board
|
|
|
+- URL:=https://source.codeaurora.org/quic/qsdk/oss/firmware/ath10k-firmware/plain/ath10k/QCA9984/hw1.0/
|
|
|
+- URL_FILE:=$(QCA9984_BOARD_FILE)?id=$(QCA9984_BOARD_REV)
|
|
|
+- FILE:=$(QCA9984_BOARD_FILE_DL)
|
|
|
+- HASH:=e968b214fd76d5b7859f71841ce40fbd5f47336c3ccbaf95e23f902f5e569aef
|
|
|
+-endef
|
|
|
+-$(eval $(call Download,ath10k-qca9984-board))
|
|
|
++define Build/Compile
|
|
|
+
|
|
|
+-define Download/ath10k-qca9984-firmware
|
|
|
+- URL:=https://source.codeaurora.org/quic/qsdk/oss/firmware/ath10k-firmware/plain/ath10k/QCA9984/hw1.0/
|
|
|
+- URL_FILE:=$(QCA9984_FIRMWARE_FILE)?id=$(QCA9984_FIRMWARE_REV)
|
|
|
+- FILE:=$(QCA9984_FIRMWARE_FILE_DL)
|
|
|
+- HASH:=28d5834e8c4ca8fcef9ea033cd8b9b0f9ee84ecf30dbde84c9c64bf8dd9912bc
|
|
|
+ endef
|
|
|
+-$(eval $(call Download,ath10k-qca9984-firmware))
|
|
|
+-
|
|
|
+-define Build/Compile
|
|
|
+
|
|
|
++define Package/ath10k-firmware-qca4019/install
|
|
|
++ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA4019/hw1.0
|
|
|
++ $(INSTALL_DATA) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA4019/hw1.0/board-2.bin \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA4019/hw1.0/
|
|
|
++ $(INSTALL_DATA) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA4019/hw1.0/3.2.1/firmware-5.bin_10.4-3.2.1-00053 \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA4019/hw1.0/firmware-5.bin
|
|
|
+ endef
|
|
|
+
|
|
|
+ define Package/ath10k-firmware-qca9887/install
|
|
|
+@@ -240,13 +261,26 @@ define Package/ath10k-firmware-qca9887/install
|
|
|
+ $(1)/lib/firmware/ath10k/QCA9887/hw1.0/board.bin
|
|
|
+ endef
|
|
|
+
|
|
|
++define Package/ath10k-firmware-qca9888/install
|
|
|
++ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
|
|
|
++ $(INSTALL_DATA) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA9888/hw2.0/board-2.bin \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
|
|
|
++ $(INSTALL_DATA) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA9888/hw2.0/board-2.bin \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
|
|
++ $(INSTALL_DATA) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA9888/hw2.0/firmware-5.bin_10.4-3.2-00072 \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/firmware-5.bin
|
|
|
++endef
|
|
|
++
|
|
|
+ define Package/ath10k-firmware-qca988x/install
|
|
|
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA988X/hw2.0
|
|
|
+ $(INSTALL_DATA) \
|
|
|
+ $(PKG_BUILD_DIR)/QCA988X/hw2.0/board.bin \
|
|
|
+ $(1)/lib/firmware/ath10k/QCA988X/hw2.0/
|
|
|
+ $(INSTALL_DATA) \
|
|
|
+- $(PKG_BUILD_DIR)/QCA988X/hw2.0/10.2.4-1.0/firmware-5.bin_10.2.4-1.0-00016 \
|
|
|
++ $(PKG_BUILD_DIR)/QCA988X/hw2.0/10.2.4-1.0/firmware-5.bin_10.2.4-1.0-00029 \
|
|
|
+ $(1)/lib/firmware/ath10k/QCA988X/hw2.0/firmware-5.bin
|
|
|
+ endef
|
|
|
+
|
|
|
+@@ -303,22 +337,16 @@ endef
|
|
|
+
|
|
|
+ define Package/ath10k-firmware-qca9984/install
|
|
|
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
|
|
|
+- ln -s \
|
|
|
+- ../../cal-pci-0000:01:00.0.bin \
|
|
|
+- $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board.bin
|
|
|
+ $(INSTALL_DATA) \
|
|
|
+- $(DL_DIR)/$(QCA9984_BOARD_FILE_DL) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA9984/hw1.0/board-2.bin \
|
|
|
+ $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
|
|
|
+ $(INSTALL_DATA) \
|
|
|
+- $(DL_DIR)/$(QCA9984_FIRMWARE_FILE_DL) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA9984/hw1.0/3.4/firmware-5.bin_10.4-3.4-00082 \
|
|
|
+ $(1)/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
|
|
|
+ endef
|
|
|
+
|
|
|
+ define Package/ath10k-firmware-qca9984-ct/install
|
|
|
+ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9984/hw1.0
|
|
|
+- ln -s \
|
|
|
+- ../../cal-pci-0000:01:00.0.bin \
|
|
|
+- $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board.bin
|
|
|
+ $(INSTALL_DATA) \
|
|
|
+ $(PKG_BUILD_DIR)/QCA9984/hw1.0/board-2.bin \
|
|
|
+ $(1)/lib/firmware/ath10k/QCA9984/hw1.0/board-2.bin
|
|
|
+@@ -327,13 +355,29 @@ define Package/ath10k-firmware-qca9984-ct/install
|
|
|
+ $(1)/lib/firmware/ath10k/QCA9984/hw1.0/firmware-5.bin
|
|
|
+ endef
|
|
|
+
|
|
|
++define Package/ath10k-firmware-qca9888-ct/install
|
|
|
++ $(INSTALL_DIR) $(1)/lib/firmware/ath10k/QCA9888/hw2.0
|
|
|
++ ln -s \
|
|
|
++ ../../cal-pci-0000:01:00.0.bin \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board.bin
|
|
|
++ $(INSTALL_DATA) \
|
|
|
++ $(PKG_BUILD_DIR)/QCA9888/hw2.0/board-2.bin \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/board-2.bin
|
|
|
++ $(INSTALL_DATA) \
|
|
|
++ $(DL_DIR)/$(call CT_FIRMWARE_FILE,QCA9888) \
|
|
|
++ $(1)/lib/firmware/ath10k/QCA9888/hw2.0/firmware-5.bin
|
|
|
++endef
|
|
|
++
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca9887))
|
|
|
++$(eval $(call BuildPackage,ath10k-firmware-qca9888))
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca988x))
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca99x0))
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca6174))
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca9984))
|
|
|
++$(eval $(call BuildPackage,ath10k-firmware-qca4019))
|
|
|
+
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca9887-ct))
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca988x-ct))
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca99x0-ct))
|
|
|
+ $(eval $(call BuildPackage,ath10k-firmware-qca9984-ct))
|
|
|
++$(eval $(call BuildPackage,ath10k-firmware-qca9888-ct))
|
|
|
+diff --git a/package/kernel/ath10k-ct/Makefile b/package/kernel/ath10k-ct/Makefile
|
|
|
+index 4ec49c326560f55d0ab66419fac89744ea5f9535..85fe4eb4638bc286d8e6486731e255ceb7ce5694 100644
|
|
|
+--- a/package/kernel/ath10k-ct/Makefile
|
|
|
++++ b/package/kernel/ath10k-ct/Makefile
|
|
|
+@@ -8,9 +8,9 @@ PKG_LICENSE_FILES:=
|
|
|
+
|
|
|
+ PKG_SOURCE_URL:=https://github.com/greearb/ath10k-ct.git
|
|
|
+ PKG_SOURCE_PROTO:=git
|
|
|
+-PKG_SOURCE_DATE:=2017-01-26
|
|
|
+-PKG_SOURCE_VERSION:=d2bc84ff277936c58231f0c2280242eda4199e63
|
|
|
+-PKG_MIRROR_HASH:=6b734b987db00b97b06faca686dcebc56fb23b93093afbb35d5cf534987269bf
|
|
|
++PKG_SOURCE_DATE:=2017-05-16
|
|
|
++PKG_SOURCE_VERSION:=c048ef0c3eedf99b41bc12b3f4e47ef3d9fab484
|
|
|
++PKG_MIRROR_HASH:=7936293962a10a0da7469759623013fc151019a6a584cfc6416bc0b605bd74d7
|
|
|
+
|
|
|
+ PKG_MAINTAINER:=Ben Greear <greearb@candelatech.com>
|
|
|
+ PKG_BUILD_PARALLEL:=1
|
|
|
+diff --git a/package/kernel/mac80211/Makefile b/package/kernel/mac80211/Makefile
|
|
|
+index 8ec05a343a4df23ef43411b5074ea1b4fe10d5f5..1ac390d337c23cfb33be5f19de3281a4d83263f3 100644
|
|
|
+--- a/package/kernel/mac80211/Makefile
|
|
|
++++ b/package/kernel/mac80211/Makefile
|
|
|
+@@ -42,8 +42,8 @@ PKG_DRIVERS = \
|
|
|
+ rt2800-lib rt2800-mmio rt2800-pci rt2800-soc rt2800-usb \
|
|
|
+ rt61-pci rt73-usb \
|
|
|
+ rtl8180 rtl8187 \
|
|
|
+- rtlwifi rtlwifi-pci rtlwifi-usb rtl8192c-common rtl8192ce rtl8192se \
|
|
|
+- rtl8192de rtl8192cu \
|
|
|
++ rtlwifi rtlwifi-pci rtlwifi-btcoexist rtlwifi-usb rtl8192c-common \
|
|
|
++ rtl8192ce rtl8192se rtl8192de rtl8192cu rtl8821ae \
|
|
|
+ rtl8xxxu \
|
|
|
+ wlcore wl12xx wl18xx \
|
|
|
+ zd1211rw
|
|
|
+@@ -278,7 +278,7 @@ endef
|
|
|
+ define KernelPackage/ath10k
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Atheros 802.11ac wireless cards support
|
|
|
+- URL:=https://wireless.wiki.kernel.org/en/users/Drivers/ath10k
|
|
|
++ URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath10k
|
|
|
+ DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +@DRIVER_11W_SUPPORT +@KERNEL_RELAY
|
|
|
+ FILES:= \
|
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \
|
|
|
+@@ -689,7 +689,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 +@DRIVER_11AC_SUPPORT +kmod-brcmutil \
|
|
|
+- +BRCMFMAC_SDIO:kmod-mmc \
|
|
|
++ +BRCMFMAC_SDIO:kmod-mmc @!TARGET_uml \
|
|
|
+ +BRCMFMAC_USB:kmod-usb-core +BRCMFMAC_USB:brcmfmac-firmware-usb
|
|
|
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmfmac/brcmfmac.ko
|
|
|
+ AUTOLOAD:=$(call AutoProbe,brcmfmac)
|
|
|
+@@ -1042,7 +1042,7 @@ endef
|
|
|
+ define KernelPackage/mwl8k
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Driver for Marvell TOPDOG 802.11 Wireless cards
|
|
|
+- URL:=http://wireless.kernel.org/en/users/Drivers/mwl8k
|
|
|
++ URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwl8k
|
|
|
+ DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +mwl8k-firmware
|
|
|
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwl8k.ko
|
|
|
+ AUTOLOAD:=$(call AutoProbe,mwl8k)
|
|
|
+@@ -1056,7 +1056,7 @@ endef
|
|
|
+ define KernelPackage/mwifiex-pcie
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Driver for Marvell 802.11n/802.11ac PCIe Wireless cards
|
|
|
+- URL:=http://wireless.kernel.org/en/users/Drivers/mwifiex
|
|
|
++ URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwifiex
|
|
|
+ DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +mwifiex-pcie-firmware
|
|
|
+ FILES:= \
|
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \
|
|
|
+@@ -1071,7 +1071,7 @@ endef
|
|
|
+ define KernelPackage/mwifiex-sdio
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Driver for Marvell 802.11n/802.11ac SDIO Wireless cards
|
|
|
+- URL:=http://wireless.kernel.org/en/users/Drivers/mwifiex
|
|
|
++ URL:=https://wireless.wiki.kernel.org/en/users/drivers/mwifiex
|
|
|
+ DEPENDS+= +kmod-mmc +kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT +mwifiex-sdio-firmware
|
|
|
+ FILES:= \
|
|
|
+ $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \
|
|
|
+@@ -1268,7 +1268,7 @@ endef
|
|
|
+ define KernelPackage/rtl818x/Default
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Realtek Drivers for RTL818x devices
|
|
|
+- URL:=http://wireless.kernel.org/en/users/Drivers/rtl8187
|
|
|
++ URL:=https://wireless.wiki.kernel.org/en/users/drivers/rtl8187
|
|
|
+ DEPENDS+= +kmod-eeprom-93cx6 +kmod-mac80211
|
|
|
+ endef
|
|
|
+
|
|
|
+@@ -1314,6 +1314,15 @@ define KernelPackage/rtlwifi-pci
|
|
|
+ HIDDEN:=1
|
|
|
+ endef
|
|
|
+
|
|
|
++define KernelPackage/rtlwifi-btcoexist
|
|
|
++ $(call KernelPackage/mac80211/Default)
|
|
|
++ TITLE:=Realtek BT coexist support
|
|
|
++ DEPENDS+= +kmod-rtlwifi
|
|
|
++ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/btcoexist/btcoexist.ko
|
|
|
++ AUTOLOAD:=$(call AutoProbe,btcoexist)
|
|
|
++ HIDDEN:=1
|
|
|
++endef
|
|
|
++
|
|
|
+ define KernelPackage/rtlwifi-usb
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Realtek common driver part (USB support)
|
|
|
+@@ -1363,6 +1372,13 @@ define KernelPackage/rtl8192cu
|
|
|
+ AUTOLOAD:=$(call AutoProbe,rtl8192cu)
|
|
|
+ endef
|
|
|
+
|
|
|
++define KernelPackage/rtl8821ae
|
|
|
++ $(call KernelPackage/mac80211/Default)
|
|
|
++ TITLE:=Realtek RTL8821AE support
|
|
|
++ DEPENDS+= +kmod-rtlwifi-btcoexist +kmod-rtlwifi-pci +rtl8821ae-firmware
|
|
|
++ FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8821ae/rtl8821ae.ko
|
|
|
++ AUTOLOAD:=$(call AutoProbe,rtl8821ae)
|
|
|
++endef
|
|
|
+
|
|
|
+ define KernelPackage/rtl8xxxu
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+@@ -1414,7 +1430,7 @@ endef
|
|
|
+ define KernelPackage/wl12xx
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Driver for TI WL12xx
|
|
|
+- URL:=http://wireless.kernel.org/en/users/Drivers/wl12xx
|
|
|
++ URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl12xx
|
|
|
+ DEPENDS+= +kmod-wlcore +wl12xx-firmware
|
|
|
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl12xx/wl12xx.ko
|
|
|
+ AUTOLOAD:=$(call AutoProbe,wl12xx)
|
|
|
+@@ -1427,7 +1443,7 @@ endef
|
|
|
+ define KernelPackage/wl18xx
|
|
|
+ $(call KernelPackage/mac80211/Default)
|
|
|
+ TITLE:=Driver for TI WL18xx
|
|
|
+- URL:=http://wireless.kernel.org/en/users/Drivers/wl18xx
|
|
|
++ URL:=https://wireless.wiki.kernel.org/en/users/drivers/wl18xx
|
|
|
+ DEPENDS+= +kmod-wlcore +wl18xx-firmware
|
|
|
+ FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ti/wl18xx/wl18xx.ko
|
|
|
+ AUTOLOAD:=$(call AutoProbe,wl18xx)
|
|
|
+@@ -1521,6 +1537,7 @@ config-$(CONFIG_PACKAGE_ATH_DFS) += ATH9K_DFS_CERTIFIED ATH10K_DFS_CERTIFIED
|
|
|
+ config-$(call config_package,ath9k) += ATH9K
|
|
|
+ config-$(call config_package,ath9k-common) += ATH9K_COMMON
|
|
|
+ config-$(CONFIG_TARGET_ar71xx) += ATH9K_AHB
|
|
|
++config-$(CONFIG_TARGET_ipq806x) += ATH10K_AHB
|
|
|
+ config-$(CONFIG_PCI) += ATH9K_PCI
|
|
|
+ config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD
|
|
|
+ config-$(CONFIG_ATH9K_SUPPORT_PCOEM) += ATH9K_PCOEM
|
|
|
+@@ -1626,12 +1643,14 @@ config-$(call config_package,zd1211rw) += ZD1211RW
|
|
|
+
|
|
|
+ config-$(call config_package,rtlwifi) += RTL_CARDS RTLWIFI
|
|
|
+ config-$(call config_package,rtlwifi-pci) += RTLWIFI_PCI
|
|
|
++config-$(call config_package,rtlwifi-btcoexist) += RTLBTCOEXIST
|
|
|
+ config-$(call config_package,rtlwifi-usb) += RTLWIFI_USB
|
|
|
+ config-$(call config_package,rtl8192c-common) += RTL8192C_COMMON
|
|
|
+ config-$(call config_package,rtl8192ce) += RTL8192CE
|
|
|
+ config-$(call config_package,rtl8192se) += RTL8192SE
|
|
|
+ config-$(call config_package,rtl8192de) += RTL8192DE
|
|
|
+ config-$(call config_package,rtl8192cu) += RTL8192CU
|
|
|
++config-$(call config_package,rtl8821ae) += RTL8821AE
|
|
|
+ config-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG
|
|
|
+
|
|
|
+ config-$(call config_package,rtl8xxxu) += RTL8XXXU
|
|
|
+@@ -1640,8 +1659,7 @@ config-y += RTL8XXXU_UNTESTED
|
|
|
+ config-$(CONFIG_LEDS_TRIGGERS) += MAC80211_LEDS B43_LEDS B43LEGACY_LEDS
|
|
|
+
|
|
|
+ MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
|
|
|
+- CROSS_COMPILE="$(KERNEL_CROSS)" \
|
|
|
+- ARCH="$(LINUX_KARCH)" \
|
|
|
++ $(KERNEL_MAKE_FLAGS) \
|
|
|
+ EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include $(IREMAP_CFLAGS)" \
|
|
|
+ KLIB_BUILD="$(LINUX_DIR)" \
|
|
|
+ MODPROBE=true \
|
|
|
+@@ -1649,10 +1667,6 @@ MAKE_OPTS:= -C "$(PKG_BUILD_DIR)" \
|
|
|
+ KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \
|
|
|
+ KBUILD_LDFLAGS_MODULE_PREREQ=
|
|
|
+
|
|
|
+-ifneq ($(findstring c,$(OPENWRT_VERBOSE)),)
|
|
|
+- MAKE_OPTS += V=1
|
|
|
+-endif
|
|
|
+-
|
|
|
+ define ConfigVars
|
|
|
+ $(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1)
|
|
|
+ ))
|
|
|
+@@ -1834,12 +1848,14 @@ $(eval $(call KernelPackage,rtl8180))
|
|
|
+ $(eval $(call KernelPackage,rtl8187))
|
|
|
+ $(eval $(call KernelPackage,rtlwifi))
|
|
|
+ $(eval $(call KernelPackage,rtlwifi-pci))
|
|
|
++$(eval $(call KernelPackage,rtlwifi-btcoexist))
|
|
|
+ $(eval $(call KernelPackage,rtlwifi-usb))
|
|
|
+ $(eval $(call KernelPackage,rtl8192c-common))
|
|
|
+ $(eval $(call KernelPackage,rtl8192ce))
|
|
|
+ $(eval $(call KernelPackage,rtl8192se))
|
|
|
+ $(eval $(call KernelPackage,rtl8192de))
|
|
|
+ $(eval $(call KernelPackage,rtl8192cu))
|
|
|
++$(eval $(call KernelPackage,rtl8821ae))
|
|
|
+ $(eval $(call KernelPackage,rtl8xxxu))
|
|
|
+ $(eval $(call KernelPackage,wlcore))
|
|
|
+ $(eval $(call KernelPackage,wl12xx))
|
|
|
+diff --git a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
|
|
+index 82c374353ec98259e57c2568843ca9ef6b3a4ca2..ebd24df0d3e984bf2afc5997207509f8150509b2 100644
|
|
|
+--- a/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
|
|
++++ b/package/kernel/mac80211/files/lib/netifd/wireless/mac80211.sh
|
|
|
+@@ -411,6 +411,34 @@ mac80211_check_ap() {
|
|
|
+ has_ap=1
|
|
|
+ }
|
|
|
+
|
|
|
++mac80211_iw_interface_add() {
|
|
|
++ local phy="$1"
|
|
|
++ local ifname="$2"
|
|
|
++ local type="$3"
|
|
|
++ local wdsflag="$4"
|
|
|
++ local rc
|
|
|
++
|
|
|
++ iw phy "$phy" interface add "$ifname" type "$type" $wdsflag
|
|
|
++ rc="$?"
|
|
|
++
|
|
|
++ [ "$rc" = 233 ] && {
|
|
|
++ # Device might have just been deleted, give the kernel some time to finish cleaning it up
|
|
|
++ sleep 1
|
|
|
++
|
|
|
++ iw phy "$phy" interface add "$ifname" type "$type" $wdsflag
|
|
|
++ rc="$?"
|
|
|
++ }
|
|
|
++
|
|
|
++ [ "$rc" = 233 ] && {
|
|
|
++ # Device might not support virtual interfaces, so the interface never got deleted in the first place.
|
|
|
++ # Check if the interface already exists, and avoid failing in this case.
|
|
|
++ ip link show dev "$ifname" >/dev/null 2>/dev/null && rc=0
|
|
|
++ }
|
|
|
++
|
|
|
++ [ "$rc" != 0 ] && wireless_setup_failed INTERFACE_CREATION_FAILED
|
|
|
++ return $rc
|
|
|
++}
|
|
|
++
|
|
|
+ mac80211_prepare_vif() {
|
|
|
+ json_select config
|
|
|
+
|
|
|
+@@ -437,7 +465,7 @@ mac80211_prepare_vif() {
|
|
|
+ # It is far easier to delete and create the desired interface
|
|
|
+ case "$mode" in
|
|
|
+ adhoc)
|
|
|
+- iw phy "$phy" interface add "$ifname" type adhoc
|
|
|
++ mac80211_iw_interface_add "$phy" "$ifname" adhoc || return
|
|
|
+ ;;
|
|
|
+ ap)
|
|
|
+ # Hostapd will handle recreating the interface and
|
|
|
+@@ -451,21 +479,21 @@ mac80211_prepare_vif() {
|
|
|
+ mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return
|
|
|
+
|
|
|
+ [ -n "$hostapd_ctrl" ] || {
|
|
|
+- iw phy "$phy" interface add "$ifname" type __ap
|
|
|
++ mac80211_iw_interface_add "$phy" "$ifname" __ap || return
|
|
|
+ hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}"
|
|
|
+ }
|
|
|
+ ;;
|
|
|
+ mesh)
|
|
|
+- iw phy "$phy" interface add "$ifname" type mp
|
|
|
++ mac80211_iw_interface_add "$phy" "$ifname" mp || return
|
|
|
+ ;;
|
|
|
+ monitor)
|
|
|
+- iw phy "$phy" interface add "$ifname" type monitor
|
|
|
++ mac80211_iw_interface_add "$phy" "$ifname" monitor || return
|
|
|
+ ;;
|
|
|
+ sta)
|
|
|
+ local wdsflag=
|
|
|
+ staidx="$(($staidx + 1))"
|
|
|
+ [ "$wds" -gt 0 ] && wdsflag="4addr on"
|
|
|
+- iw phy "$phy" interface add "$ifname" type managed $wdsflag
|
|
|
++ mac80211_iw_interface_add "$phy" "$ifname" managed "$wdsflag" || return
|
|
|
+ [ "$powersave" -gt 0 ] && powersave="on" || powersave="off"
|
|
|
+ iw "$ifname" set power_save "$powersave"
|
|
|
+ ;;
|
|
|
+diff --git a/package/kernel/mac80211/files/regdb.txt b/package/kernel/mac80211/files/regdb.txt
|
|
|
+index c4a9b2d15fd56c7331726cfb10e15c7acc673e8c..d583887602d2e3b337a9f878ef0aa7e58b36d8c2 100644
|
|
|
+--- a/package/kernel/mac80211/files/regdb.txt
|
|
|
++++ b/package/kernel/mac80211/files/regdb.txt
|
|
|
+@@ -85,12 +85,20 @@ country AT: DFS-ETSI
|
|
|
+ # 60 GHz band channels 1-4, ref: Etsi En 302 567
|
|
|
+ (57000 - 66000 @ 2160), (40)
|
|
|
+
|
|
|
++# Source:
|
|
|
++# https://www.legislation.gov.au/Details/F2016C00432
|
|
|
++# Both DFS-ETSI and DFS-FCC are acceptable per AS/NZS 4268 Appendix B.
|
|
|
++# The EIRP for DFS bands can be increased by 3dB if TPC is implemented.
|
|
|
++# In order to allow 80MHz operation between 5650-5730MHz the upper boundary
|
|
|
++# of this more restrictive band has been shifted up by 5MHz from 5725MHz.
|
|
|
+ country AU: DFS-ETSI
|
|
|
+- (2402 - 2482 @ 40), (20)
|
|
|
+- (5170 - 5250 @ 80), (17), AUTO-BW
|
|
|
+- (5250 - 5330 @ 80), (24), DFS, AUTO-BW
|
|
|
+- (5490 - 5710 @ 160), (24), DFS
|
|
|
+- (5735 - 5835 @ 80), (30)
|
|
|
++ (2400 - 2483.5 @ 40), (36)
|
|
|
++ (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW
|
|
|
++ (5250 - 5350 @ 80), (20), NO-OUTDOOR, AUTO-BW, DFS
|
|
|
++ (5470 - 5600 @ 80), (27), DFS
|
|
|
++ (5650 - 5730 @ 80), (27), DFS
|
|
|
++ (5730 - 5850 @ 80), (36)
|
|
|
++ (57000 - 66000 @ 2160), (43), NO-OUTDOOR
|
|
|
+
|
|
|
+ country AW: DFS-ETSI
|
|
|
+ (2402 - 2482 @ 40), (20)
|
|
|
+@@ -230,9 +238,9 @@ country BZ: DFS-JP
|
|
|
+
|
|
|
+ country CA: DFS-FCC
|
|
|
+ (2402 - 2472 @ 40), (30)
|
|
|
+- (5170 - 5250 @ 80), (17), AUTO-BW
|
|
|
+- (5250 - 5330 @ 80), (24), DFS, AUTO-BW
|
|
|
+- (5490 - 5600 @ 80), (24), DFS
|
|
|
++ (5150 - 5250 @ 80), (23), AUTO-BW
|
|
|
++ (5250 - 5350 @ 80), (24), DFS, AUTO-BW
|
|
|
++ (5470 - 5600 @ 80), (24), DFS
|
|
|
+ (5650 - 5730 @ 80), (24), DFS
|
|
|
+ (5735 - 5835 @ 80), (30)
|
|
|
+
|
|
|
+@@ -580,11 +588,10 @@ country IL: DFS-ETSI
|
|
|
+ (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW
|
|
|
+ (5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW
|
|
|
+
|
|
|
+-country IN: DFS-JP
|
|
|
++country IN:
|
|
|
+ (2402 - 2482 @ 40), (20)
|
|
|
+- (5170 - 5250 @ 80), (20), AUTO-BW
|
|
|
+- (5250 - 5330 @ 80), (20), DFS, AUTO-BW
|
|
|
+- (5735 - 5835 @ 80), (20)
|
|
|
++ (5150 - 5350 @ 160), (23)
|
|
|
++ (5725 - 5875 @ 80), (23)
|
|
|
+
|
|
|
+ country IR: DFS-JP
|
|
|
+ (2402 - 2482 @ 40), (20)
|
|
|
+diff --git a/package/kernel/mac80211/patches/012-kernel_build_check.patch b/package/kernel/mac80211/patches/012-kernel_build_check.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..d225ba1820b911003c267809b07c565e5e42d034
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/012-kernel_build_check.patch
|
|
|
+@@ -0,0 +1,11 @@
|
|
|
++--- a/Makefile
|
|
|
+++++ b/Makefile
|
|
|
++@@ -2,7 +2,7 @@
|
|
|
++ # Makefile for the output source package
|
|
|
++ #
|
|
|
++
|
|
|
++-ifeq ($(KERNELRELEASE),)
|
|
|
+++ifeq ($(KERNELVERSION),)
|
|
|
++
|
|
|
++ MAKEFLAGS += --no-print-directory
|
|
|
++ SHELL := /usr/bin/env bash
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch b/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
|
|
|
+index 7e829faef60b721a04da969a31deb5c7b6a00990..cf551fde023a8e1ae9e4379db59616559e0ae2dc 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-01-rt2x00-avoid-introducing-a-USB-dependency-in-the-rt2.patch
|
|
|
+@@ -23,11 +23,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 5 +++++
|
|
|
+ 2 files changed, 13 insertions(+), 15 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-index 8fcbc8dc94c1..4b08007f93f7 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -1436,21 +1436,6 @@ void rt2x00lib_remove_dev(struct rt2x00_
|
|
|
+ cancel_work_sync(&rt2x00dev->intf_work);
|
|
|
+ cancel_delayed_work_sync(&rt2x00dev->autowakeup_work);
|
|
|
+ cancel_work_sync(&rt2x00dev->sleep_work);
|
|
|
+@@ -49,7 +47,7 @@ index 8fcbc8dc94c1..4b08007f93f7 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Kill the tx status tasklet.
|
|
|
+-@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -1466,6 +1451,14 @@ void rt2x00lib_remove_dev(struct rt2x00_
|
|
|
+ */
|
|
|
+ rt2x00lib_uninitialize(rt2x00dev);
|
|
|
+
|
|
|
+@@ -64,11 +62,9 @@ index 8fcbc8dc94c1..4b08007f93f7 100644
|
|
|
+ /*
|
|
|
+ * Free extra components
|
|
|
+ */
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+-index 838ca58d2dd6..5a2bf9f63cd7 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+-@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -744,6 +744,11 @@ void rt2x00usb_uninitialize(struct rt2x0
|
|
|
+ {
|
|
|
+ struct data_queue *queue;
|
|
|
+
|
|
|
+@@ -80,6 +76,3 @@ index 838ca58d2dd6..5a2bf9f63cd7 100644
|
|
|
+ queue_for_each(rt2x00dev, queue)
|
|
|
+ rt2x00usb_free_entries(queue);
|
|
|
+ }
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch b/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch
|
|
|
+index 6510b55c7952999db4f15fd3bc095dcc06414928..d096b64a8a18ad2c22c4fb93913fd63975dc3cd0 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-02-rt2x00usb-do-not-anchor-rx-and-tx-urb-s.patch
|
|
|
+@@ -30,11 +30,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 4 ----
|
|
|
+ 1 file changed, 4 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+-index 5a2bf9f63cd7..fe13dd07cc2a 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+-@@ -319,10 +319,8 @@ static bool rt2x00usb_kick_tx_entry(struct queue_entry *entry, void *data)
|
|
|
++@@ -319,10 +319,8 @@ static bool rt2x00usb_kick_tx_entry(stru
|
|
|
+ entry->skb->data, length,
|
|
|
+ rt2x00usb_interrupt_txdone, entry);
|
|
|
+
|
|
|
+@@ -45,7 +43,7 @@ index 5a2bf9f63cd7..fe13dd07cc2a 100644
|
|
|
+ if (status == -ENODEV)
|
|
|
+ clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
|
|
|
+ set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
|
|
|
+-@@ -410,10 +408,8 @@ static bool rt2x00usb_kick_rx_entry(struct queue_entry *entry, void *data)
|
|
|
++@@ -410,10 +408,8 @@ static bool rt2x00usb_kick_rx_entry(stru
|
|
|
+ entry->skb->data, entry->skb->len,
|
|
|
+ rt2x00usb_interrupt_rxdone, entry);
|
|
|
+
|
|
|
+@@ -56,6 +54,3 @@ index 5a2bf9f63cd7..fe13dd07cc2a 100644
|
|
|
+ if (status == -ENODEV)
|
|
|
+ clear_bit(DEVICE_STATE_PRESENT, &rt2x00dev->flags);
|
|
|
+ set_bit(ENTRY_DATA_IO_FAILED, &entry->flags);
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch b/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch
|
|
|
+index 78d8ac63d8629ee79873c8d0399ed1a1aca8e435..5ff73df2a6f4748ab7eb9074050b03dcc473da2a 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-03-rt2x00usb-fix-anchor-initialization.patch
|
|
|
+@@ -36,11 +36,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00usb.c | 13 ++++++++-----
|
|
|
+ 1 file changed, 8 insertions(+), 5 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+-index fe13dd07cc2a..c696f0ad6a68 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00usb.c
|
|
|
+-@@ -825,10 +825,6 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
|
|
|
++@@ -825,10 +825,6 @@ int rt2x00usb_probe(struct usb_interface
|
|
|
+ if (retval)
|
|
|
+ goto exit_free_device;
|
|
|
+
|
|
|
+@@ -51,7 +49,7 @@ index fe13dd07cc2a..c696f0ad6a68 100644
|
|
|
+ rt2x00dev->anchor = devm_kmalloc(&usb_dev->dev,
|
|
|
+ sizeof(struct usb_anchor),
|
|
|
+ GFP_KERNEL);
|
|
|
+-@@ -836,10 +832,17 @@ int rt2x00usb_probe(struct usb_interface *usb_intf,
|
|
|
++@@ -836,10 +832,17 @@ int rt2x00usb_probe(struct usb_interface
|
|
|
+ retval = -ENOMEM;
|
|
|
+ goto exit_free_reg;
|
|
|
+ }
|
|
|
+@@ -70,6 +68,3 @@ index fe13dd07cc2a..c696f0ad6a68 100644
|
|
|
+ exit_free_reg:
|
|
|
+ rt2x00usb_free_reg(rt2x00dev);
|
|
|
+
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch b/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch
|
|
|
+index d8f262af850ef85ce74be1d1a4b0bceb67928f66..274d8f7c3f819f2908778561cfa1acbcab7531d1 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-04-rt61pci-use-entry-directly.patch
|
|
|
+@@ -9,11 +9,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt61pci.c | 3 +--
|
|
|
+ 1 file changed, 1 insertion(+), 2 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
|
|
+-index 5306a3b2622d..8adb5f3abe15 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
|
|
+-@@ -1903,8 +1903,7 @@ static void rt61pci_write_tx_desc(struct queue_entry *entry,
|
|
|
++@@ -1903,8 +1903,7 @@ static void rt61pci_write_tx_desc(struct
|
|
|
+
|
|
|
+ rt2x00_desc_read(txd, 5, &word);
|
|
|
+ rt2x00_set_field32(&word, TXD_W5_PID_TYPE, entry->queue->qid);
|
|
|
+@@ -23,6 +21,3 @@ index 5306a3b2622d..8adb5f3abe15 100644
|
|
|
+ rt2x00_set_field32(&word, TXD_W5_TX_POWER,
|
|
|
+ TXPOWER_TO_DEV(entry->queue->rt2x00dev->tx_power));
|
|
|
+ rt2x00_set_field32(&word, TXD_W5_WAITING_DMA_DONE_INT, 1);
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch b/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch
|
|
|
+index 04a5118103f219c9b4d737c27cfc80f8ee121e2a..241c1127bcd3a9162b7c4b466e54266a8d43dbe4 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-05-rt2x00-call-entry-directly-in-rt2x00_dump_frame.patch
|
|
|
+@@ -18,11 +18,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt73usb.c | 2 +-
|
|
|
+ 10 files changed, 15 insertions(+), 14 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
|
|
|
+-index 085c5b423bdf..19874439ac40 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c
|
|
|
+-@@ -1200,7 +1200,7 @@ static void rt2400pci_write_beacon(struct queue_entry *entry,
|
|
|
++@@ -1200,7 +1200,7 @@ static void rt2400pci_write_beacon(struc
|
|
|
+ /*
|
|
|
+ * Dump beacon to userspace through debugfs.
|
|
|
+ */
|
|
|
+@@ -31,11 +29,9 @@ index 085c5b423bdf..19874439ac40 100644
|
|
|
+ out:
|
|
|
+ /*
|
|
|
+ * Enable beaconing again.
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
|
|
|
+-index 9832fd50c793..791434de8052 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c
|
|
|
+-@@ -1349,7 +1349,7 @@ static void rt2500pci_write_beacon(struct queue_entry *entry,
|
|
|
++@@ -1349,7 +1349,7 @@ static void rt2500pci_write_beacon(struc
|
|
|
+ /*
|
|
|
+ * Dump beacon to userspace through debugfs.
|
|
|
+ */
|
|
|
+@@ -44,11 +40,9 @@ index 9832fd50c793..791434de8052 100644
|
|
|
+ out:
|
|
|
+ /*
|
|
|
+ * Enable beaconing again.
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
|
|
+-index cd3ab5a9e98d..62357465fe29 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
|
|
+-@@ -1170,7 +1170,7 @@ static void rt2500usb_write_beacon(struct queue_entry *entry,
|
|
|
++@@ -1170,7 +1170,7 @@ static void rt2500usb_write_beacon(struc
|
|
|
+ /*
|
|
|
+ * Dump beacon to userspace through debugfs.
|
|
|
+ */
|
|
|
+@@ -57,11 +51,9 @@ index cd3ab5a9e98d..62357465fe29 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * USB devices cannot blindly pass the skb->len as the
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 572cdea4ca25..8223a1520316 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -1014,7 +1014,7 @@ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc)
|
|
|
++@@ -1014,7 +1014,7 @@ void rt2800_write_beacon(struct queue_en
|
|
|
+ /*
|
|
|
+ * Dump beacon to userspace through debugfs.
|
|
|
+ */
|
|
|
+@@ -70,11 +62,9 @@ index 572cdea4ca25..8223a1520316 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Write entire beacon with TXWI and padding to register.
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+-index ea299c4e7ada..26869b3bef45 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+-@@ -1400,11 +1400,11 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop);
|
|
|
++@@ -1400,11 +1400,11 @@ void rt2x00queue_flush_queues(struct rt2
|
|
|
+ */
|
|
|
+ #ifdef CPTCFG_RT2X00_LIB_DEBUGFS
|
|
|
+ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
|
|
+@@ -88,11 +78,9 @@ index ea299c4e7ada..26869b3bef45 100644
|
|
|
+ {
|
|
|
+ }
|
|
|
+ #endif /* CPTCFG_RT2X00_LIB_DEBUGFS */
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
|
|
|
+-index 72ae530e4a3b..964aefdc11f0 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00debug.c
|
|
|
+-@@ -157,9 +157,10 @@ void rt2x00debug_update_crypto(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -157,9 +157,10 @@ void rt2x00debug_update_crypto(struct rt
|
|
|
+ }
|
|
|
+
|
|
|
+ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
|
|
+@@ -104,7 +92,7 @@ index 72ae530e4a3b..964aefdc11f0 100644
|
|
|
+ struct skb_frame_desc *skbdesc = get_skb_frame_desc(skb);
|
|
|
+ struct sk_buff *skbcopy;
|
|
|
+ struct rt2x00dump_hdr *dump_hdr;
|
|
|
+-@@ -196,8 +197,8 @@ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -196,8 +197,8 @@ void rt2x00debug_dump_frame(struct rt2x0
|
|
|
+ dump_hdr->chip_rf = cpu_to_le16(rt2x00dev->chip.rf);
|
|
|
+ dump_hdr->chip_rev = cpu_to_le16(rt2x00dev->chip.rev);
|
|
|
+ dump_hdr->type = cpu_to_le16(type);
|
|
|
+@@ -115,11 +103,9 @@ index 72ae530e4a3b..964aefdc11f0 100644
|
|
|
+ dump_hdr->timestamp_sec = cpu_to_le32(timestamp.tv_sec);
|
|
|
+ dump_hdr->timestamp_usec = cpu_to_le32(timestamp.tv_usec);
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-index 4b08007f93f7..dd6678109b7e 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-@@ -363,7 +363,7 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
|
|
++@@ -363,7 +363,7 @@ void rt2x00lib_txdone(struct queue_entry
|
|
|
+ * Send frame to debugfs immediately, after this call is completed
|
|
|
+ * we are going to overwrite the skb->cb array.
|
|
|
+ */
|
|
|
+@@ -128,7 +114,7 @@ index 4b08007f93f7..dd6678109b7e 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Determine if the frame has been successfully transmitted and
|
|
|
+-@@ -772,7 +772,7 @@ void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp)
|
|
|
++@@ -772,7 +772,7 @@ void rt2x00lib_rxdone(struct queue_entry
|
|
|
+ */
|
|
|
+ rt2x00link_update_stats(rt2x00dev, entry->skb, &rxdesc);
|
|
|
+ rt2x00debug_update_crypto(rt2x00dev, &rxdesc);
|
|
|
+@@ -137,11 +123,9 @@ index 4b08007f93f7..dd6678109b7e 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Initialize RX status information, and send frame
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+-index b2364d378774..380daf4e1b8d 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+-@@ -544,7 +544,7 @@ static void rt2x00queue_write_tx_descriptor(struct queue_entry *entry,
|
|
|
++@@ -544,7 +544,7 @@ static void rt2x00queue_write_tx_descrip
|
|
|
+ * All processing on the frame has been completed, this means
|
|
|
+ * it is now ready to be dumped to userspace through debugfs.
|
|
|
+ */
|
|
|
+@@ -150,11 +134,9 @@ index b2364d378774..380daf4e1b8d 100644
|
|
|
+ }
|
|
|
+
|
|
|
+ static void rt2x00queue_kick_tx_queue(struct data_queue *queue,
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt61pci.c b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
|
|
+-index 8adb5f3abe15..973d418b8113 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c
|
|
|
+-@@ -1988,7 +1988,7 @@ static void rt61pci_write_beacon(struct queue_entry *entry,
|
|
|
++@@ -1988,7 +1988,7 @@ static void rt61pci_write_beacon(struct
|
|
|
+ /*
|
|
|
+ * Dump beacon to userspace through debugfs.
|
|
|
+ */
|
|
|
+@@ -163,11 +145,9 @@ index 8adb5f3abe15..973d418b8113 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Write entire beacon with descriptor and padding to register.
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt73usb.c b/drivers/net/wireless/ralink/rt2x00/rt73usb.c
|
|
|
+-index 1a29c4d205a5..bb8d307a789f 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt73usb.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt73usb.c
|
|
|
+-@@ -1557,7 +1557,7 @@ static void rt73usb_write_beacon(struct queue_entry *entry,
|
|
|
++@@ -1557,7 +1557,7 @@ static void rt73usb_write_beacon(struct
|
|
|
+ /*
|
|
|
+ * Dump beacon to userspace through debugfs.
|
|
|
+ */
|
|
|
+@@ -176,6 +156,3 @@ index 1a29c4d205a5..bb8d307a789f 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Write entire beacon with descriptor and padding to register.
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch b/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch
|
|
|
+index d8194acd2345a3d0536a0742fe84cddb5b4832fe..c2ef9c1bb0dda0fd116ab66ffb89783b3a433114 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-06-rt2x00-remove-queue_entry-from-skbdesc.patch
|
|
|
+@@ -13,11 +13,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 2 --
|
|
|
+ 2 files changed, 5 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+-index 380daf4e1b8d..e1660b92b20c 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+-@@ -83,7 +83,6 @@ struct sk_buff *rt2x00queue_alloc_rxskb(struct queue_entry *entry, gfp_t gfp)
|
|
|
++@@ -83,7 +83,6 @@ struct sk_buff *rt2x00queue_alloc_rxskb(
|
|
|
+ */
|
|
|
+ skbdesc = get_skb_frame_desc(skb);
|
|
|
+ memset(skbdesc, 0, sizeof(*skbdesc));
|
|
|
+@@ -25,7 +23,7 @@ index 380daf4e1b8d..e1660b92b20c 100644
|
|
|
+
|
|
|
+ if (rt2x00_has_cap_flag(rt2x00dev, REQUIRE_DMA)) {
|
|
|
+ dma_addr_t skb_dma;
|
|
|
+-@@ -689,7 +688,6 @@ int rt2x00queue_write_tx_frame(struct data_queue *queue, struct sk_buff *skb,
|
|
|
++@@ -689,7 +688,6 @@ int rt2x00queue_write_tx_frame(struct da
|
|
|
+ goto out;
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -33,7 +31,7 @@ index 380daf4e1b8d..e1660b92b20c 100644
|
|
|
+ entry->skb = skb;
|
|
|
+
|
|
|
+ /*
|
|
|
+-@@ -774,7 +772,6 @@ int rt2x00queue_update_beacon(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -774,7 +772,6 @@ int rt2x00queue_update_beacon(struct rt2
|
|
|
+ */
|
|
|
+ skbdesc = get_skb_frame_desc(intf->beacon->skb);
|
|
|
+ memset(skbdesc, 0, sizeof(*skbdesc));
|
|
|
+@@ -41,8 +39,6 @@ index 380daf4e1b8d..e1660b92b20c 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Send beacon to hardware.
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+-index 2233b911a1d7..22d18818e850 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+ @@ -116,8 +116,6 @@ struct skb_frame_desc {
|
|
|
+@@ -54,6 +50,3 @@ index 2233b911a1d7..22d18818e850 100644
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch b/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch
|
|
|
+index a82886d234cd2ee8807a80bbd0cf071e4b9cd982..65496ca467a30c6a5f5633f7dce804ca6d2214c9 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-07-rt2500usb-don-t-mark-register-accesses-as-inline.patch
|
|
|
+@@ -21,11 +21,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2500usb.c | 19 +++++--------------
|
|
|
+ 1 file changed, 5 insertions(+), 14 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
|
|
+-index 62357465fe29..0d2670a56c4c 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c
|
|
|
+-@@ -55,7 +55,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption.");
|
|
|
++@@ -55,7 +55,7 @@ MODULE_PARM_DESC(nohwcrypt, "Disable har
|
|
|
+ * If the csr_mutex is already held then the _lock variants must
|
|
|
+ * be used instead.
|
|
|
+ */
|
|
|
+@@ -34,7 +32,7 @@ index 62357465fe29..0d2670a56c4c 100644
|
|
|
+ const unsigned int offset,
|
|
|
+ u16 *value)
|
|
|
+ {
|
|
|
+-@@ -66,7 +66,7 @@ static inline void rt2500usb_register_read(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -66,7 +66,7 @@ static inline void rt2500usb_register_re
|
|
|
+ *value = le16_to_cpu(reg);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -43,7 +41,7 @@ index 62357465fe29..0d2670a56c4c 100644
|
|
|
+ const unsigned int offset,
|
|
|
+ u16 *value)
|
|
|
+ {
|
|
|
+-@@ -77,16 +77,7 @@ static inline void rt2500usb_register_read_lock(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -77,16 +77,7 @@ static inline void rt2500usb_register_re
|
|
|
+ *value = le16_to_cpu(reg);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -61,7 +59,7 @@ index 62357465fe29..0d2670a56c4c 100644
|
|
|
+ const unsigned int offset,
|
|
|
+ u16 value)
|
|
|
+ {
|
|
|
+-@@ -96,7 +87,7 @@ static inline void rt2500usb_register_write(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -96,7 +87,7 @@ static inline void rt2500usb_register_wr
|
|
|
+ ®, sizeof(reg));
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -70,7 +68,7 @@ index 62357465fe29..0d2670a56c4c 100644
|
|
|
+ const unsigned int offset,
|
|
|
+ u16 value)
|
|
|
+ {
|
|
|
+-@@ -106,7 +97,7 @@ static inline void rt2500usb_register_write_lock(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -106,7 +97,7 @@ static inline void rt2500usb_register_wr
|
|
|
+ ®, sizeof(reg), REGISTER_TIMEOUT);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -79,6 +77,3 @@ index 62357465fe29..0d2670a56c4c 100644
|
|
|
+ const unsigned int offset,
|
|
|
+ void *value, const u16 length)
|
|
|
+ {
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch b/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch
|
|
|
+index c2fa92641ad231558b4d9dcadeb59e7d4504ba74..8b61235e112f742304ab0b15d00737183168624c 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-08-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch
|
|
|
+@@ -21,8 +21,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 23 +++++++++++++++++++++++
|
|
|
+ 2 files changed, 23 insertions(+), 25 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+-index 256496bfbafb..0e7051d8132f 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ @@ -2987,29 +2987,4 @@ enum rt2800_eeprom_word {
|
|
|
+@@ -55,8 +53,6 @@ index 256496bfbafb..0e7051d8132f 100644
|
|
|
+ -};
|
|
|
+ -
|
|
|
+ #endif /* RT2800_H */
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+-index 0a8b4df665fe..8e1ae138c3f1 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+ @@ -20,6 +20,29 @@
|
|
|
+@@ -89,6 +85,3 @@ index 0a8b4df665fe..8e1ae138c3f1 100644
|
|
|
+ struct rt2800_ops {
|
|
|
+ void (*register_read)(struct rt2x00_dev *rt2x00dev,
|
|
|
+ const unsigned int offset, u32 *value);
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch b/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch
|
|
|
+index e6c829cbf8048e28a7910b58f07a064f43d1b9b6..922c35833ced8cd7b6c0b3361facbbff0ff133d8 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-09-rt2800-identify-station-based-on-status-WCID.patch
|
|
|
+@@ -14,8 +14,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 3 ++-
|
|
|
+ 3 files changed, 8 insertions(+), 1 deletion(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 8223a1520316..46405cce35e0 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ @@ -855,11 +855,13 @@ EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
|
|
|
+@@ -32,7 +30,7 @@ index 8223a1520316..46405cce35e0 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Obtain the status about this packet.
|
|
|
+-@@ -872,6 +874,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
|
|
++@@ -872,6 +874,7 @@ void rt2800_txdone_entry(struct queue_en
|
|
|
+
|
|
|
+ real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
|
|
|
+ aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE);
|
|
|
+@@ -40,7 +38,7 @@ index 8223a1520316..46405cce35e0 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If a frame was meant to be sent as a single non-aggregated MPDU
|
|
|
+-@@ -1468,6 +1471,7 @@ int rt2800_sta_add(struct rt2x00_dev *rt2x00dev, struct ieee80211_vif *vif,
|
|
|
++@@ -1468,6 +1471,7 @@ int rt2800_sta_add(struct rt2x00_dev *rt
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ __set_bit(wcid - WCID_START, drv_data->sta_ids);
|
|
|
+@@ -48,7 +46,7 @@ index 8223a1520316..46405cce35e0 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Clean up WCID attributes and write STA address to the device.
|
|
|
+-@@ -1498,6 +1502,7 @@ int rt2800_sta_remove(struct rt2x00_dev *rt2x00dev, struct ieee80211_sta *sta)
|
|
|
++@@ -1498,6 +1502,7 @@ int rt2800_sta_remove(struct rt2x00_dev
|
|
|
+ * get renewed when the WCID is reused.
|
|
|
+ */
|
|
|
+ rt2800_config_wcid(rt2x00dev, NULL, wcid);
|
|
|
+@@ -56,8 +54,6 @@ index 8223a1520316..46405cce35e0 100644
|
|
|
+ __clear_bit(wcid - WCID_START, drv_data->sta_ids);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+-index 8e1ae138c3f1..6811d677a6e7 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+ @@ -41,6 +41,7 @@ struct rt2800_drv_data {
|
|
|
+@@ -68,8 +64,6 @@ index 8e1ae138c3f1..6811d677a6e7 100644
|
|
|
+ };
|
|
|
+
|
|
|
+ struct rt2800_ops {
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+-index 22d18818e850..9b297fce4692 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+ @@ -102,7 +102,7 @@ enum skb_frame_desc_flags {
|
|
|
+@@ -89,6 +83,3 @@ index 22d18818e850..9b297fce4692 100644
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch b/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch
|
|
|
+index 278d2d6071a1d4b2bdeea891384692e9e22d45b6..84f2732b2216ac066b08ace5aff5ec515144b09b 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-10-rt2x00-separte-filling-tx-status-from-rt2x00lib_txdo.patch
|
|
|
+@@ -12,11 +12,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 141 +++++++++++++------------
|
|
|
+ 1 file changed, 76 insertions(+), 65 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-index dd6678109b7e..b5d90fefc96b 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-@@ -313,73 +313,14 @@ static inline int rt2x00lib_txdone_bar_status(struct queue_entry *entry)
|
|
|
++@@ -313,73 +313,14 @@ static inline int rt2x00lib_txdone_bar_s
|
|
|
+ return ret;
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -96,7 +94,7 @@ index dd6678109b7e..b5d90fefc96b 100644
|
|
|
+
|
|
|
+ rate_idx = skbdesc->tx_rate_idx;
|
|
|
+ rate_flags = skbdesc->tx_rate_flags;
|
|
|
+-@@ -448,6 +389,76 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
|
|
++@@ -448,6 +389,76 @@ void rt2x00lib_txdone(struct queue_entry
|
|
|
+ else
|
|
|
+ rt2x00dev->low_level_stats.dot11RTSFailureCount++;
|
|
|
+ }
|
|
|
+@@ -173,6 +171,3 @@ index dd6678109b7e..b5d90fefc96b 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Only send the status report to mac80211 when it's a frame
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch b/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch
|
|
|
+index b28d894fc69998b6fcf2b1f8ec9e983a8f35760c..e1359397ba37af5a1561a4a8270dfeaf4e86ffcb 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-11-rt2x00-separte-clearing-entry-from-rt2x00lib_txdone.patch
|
|
|
+@@ -12,11 +12,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 51 +++++++++++++++-----------
|
|
|
+ 1 file changed, 29 insertions(+), 22 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-index b5d90fefc96b..03b368ac9cb6 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-@@ -391,6 +391,32 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -391,6 +391,32 @@ static void rt2x00lib_fill_tx_status(str
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -49,7 +47,7 @@ index b5d90fefc96b..03b368ac9cb6 100644
|
|
|
+ void rt2x00lib_txdone(struct queue_entry *entry,
|
|
|
+ struct txdone_entry_desc *txdesc)
|
|
|
+ {
|
|
|
+-@@ -471,30 +497,11 @@ void rt2x00lib_txdone(struct queue_entry *entry,
|
|
|
++@@ -471,30 +497,11 @@ void rt2x00lib_txdone(struct queue_entry
|
|
|
+ ieee80211_tx_status(rt2x00dev->hw, entry->skb);
|
|
|
+ else
|
|
|
+ ieee80211_tx_status_ni(rt2x00dev->hw, entry->skb);
|
|
|
+@@ -83,6 +81,3 @@ index b5d90fefc96b..03b368ac9cb6 100644
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL_GPL(rt2x00lib_txdone);
|
|
|
+
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch b/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch
|
|
|
+index 7bec546a9e62d7647a11560f6c04e0d7c281b094..60edb08e751f5a4daae61c4f515c2c699b67db63 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-12-rt2x00-add-txdone-nomatch-function.patch
|
|
|
+@@ -13,11 +13,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00dev.c | 50 ++++++++++++++++++++++++++
|
|
|
+ 2 files changed, 52 insertions(+)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+-index 340787894c69..91ba10fdf732 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+-@@ -1425,6 +1425,8 @@ void rt2x00lib_dmastart(struct queue_entry *entry);
|
|
|
++@@ -1425,6 +1425,8 @@ void rt2x00lib_dmastart(struct queue_ent
|
|
|
+ void rt2x00lib_dmadone(struct queue_entry *entry);
|
|
|
+ void rt2x00lib_txdone(struct queue_entry *entry,
|
|
|
+ struct txdone_entry_desc *txdesc);
|
|
|
+@@ -26,11 +24,9 @@ index 340787894c69..91ba10fdf732 100644
|
|
|
+ void rt2x00lib_txdone_noinfo(struct queue_entry *entry, u32 status);
|
|
|
+ void rt2x00lib_rxdone(struct queue_entry *entry, gfp_t gfp);
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-index 03b368ac9cb6..90fc259fb5bc 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-@@ -417,6 +417,56 @@ static void rt2x00lib_clear_entry(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -417,6 +417,56 @@ static void rt2x00lib_clear_entry(struct
|
|
|
+ spin_unlock_bh(&entry->queue->tx_lock);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -87,6 +83,3 @@ index 03b368ac9cb6..90fc259fb5bc 100644
|
|
|
+ void rt2x00lib_txdone(struct queue_entry *entry,
|
|
|
+ struct txdone_entry_desc *txdesc)
|
|
|
+ {
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch b/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch
|
|
|
+index bb35f2d3005aca4df52f115bacf894a0a8909ce9..a0cc37f491a44e49127f525bbc6f01ab0fe1db5f 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-13-rt2x00-fixup-fill_tx_status-for-nomatch-case.patch
|
|
|
+@@ -13,11 +13,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00queue.h | 1 +
|
|
|
+ 2 files changed, 6 insertions(+), 1 deletion(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-index 90fc259fb5bc..e95d2aad3b3f 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c
|
|
|
+-@@ -357,6 +357,9 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -357,6 +357,9 @@ static void rt2x00lib_fill_tx_status(str
|
|
|
+ if (i < (IEEE80211_TX_MAX_RATES - 1))
|
|
|
+ tx_info->status.rates[i].idx = -1; /* terminate */
|
|
|
+
|
|
|
+@@ -27,7 +25,7 @@ index 90fc259fb5bc..e95d2aad3b3f 100644
|
|
|
+ if (!(tx_info->flags & IEEE80211_TX_CTL_NO_ACK)) {
|
|
|
+ if (success)
|
|
|
+ tx_info->flags |= IEEE80211_TX_STAT_ACK;
|
|
|
+-@@ -375,7 +378,8 @@ static void rt2x00lib_fill_tx_status(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -375,7 +378,8 @@ static void rt2x00lib_fill_tx_status(str
|
|
|
+ */
|
|
|
+ if (test_bit(TXDONE_AMPDU, &txdesc->flags) ||
|
|
|
+ tx_info->flags & IEEE80211_TX_CTL_AMPDU) {
|
|
|
+@@ -37,8 +35,6 @@ index 90fc259fb5bc..e95d2aad3b3f 100644
|
|
|
+ tx_info->status.ampdu_len = 1;
|
|
|
+ tx_info->status.ampdu_ack_len = success ? 1 : 0;
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+-index 9b297fce4692..c78fb8c8838a 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.h
|
|
|
+ @@ -215,6 +215,7 @@ enum txdone_entry_desc_flags {
|
|
|
+@@ -49,6 +45,3 @@ index 9b297fce4692..c78fb8c8838a 100644
|
|
|
+ };
|
|
|
+
|
|
|
+ /**
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch b/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch
|
|
|
+index f4e4b8b075f5df37429ef36cca0828c72b9592f2..1e23ef7bcbcb5aaed507e0879e25038b3dea6fc5 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-14-rt2x00-use-txdone_nomatch-on-rt2800usb.patch
|
|
|
+@@ -23,11 +23,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 18 ++++++--------
|
|
|
+ 4 files changed, 35 insertions(+), 19 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 46405cce35e0..4a7bec708a13 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -852,7 +852,8 @@ void rt2800_process_rxwi(struct queue_entry *entry,
|
|
|
++@@ -852,7 +852,8 @@ void rt2800_process_rxwi(struct queue_en
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
|
|
|
+
|
|
|
+@@ -37,7 +35,7 @@ index 46405cce35e0..4a7bec708a13 100644
|
|
|
+ {
|
|
|
+ struct rt2x00_dev *rt2x00dev = entry->queue->rt2x00dev;
|
|
|
+ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data;
|
|
|
+-@@ -860,8 +861,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
|
|
++@@ -860,8 +861,7 @@ void rt2800_txdone_entry(struct queue_en
|
|
|
+ struct txdone_entry_desc txdesc;
|
|
|
+ u32 word;
|
|
|
+ u16 mcs, real_mcs;
|
|
|
+@@ -47,7 +45,7 @@ index 46405cce35e0..4a7bec708a13 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Obtain the status about this packet.
|
|
|
+-@@ -875,6 +875,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
|
|
++@@ -875,6 +875,7 @@ void rt2800_txdone_entry(struct queue_en
|
|
|
+ real_mcs = rt2x00_get_field32(status, TX_STA_FIFO_MCS);
|
|
|
+ aggr = rt2x00_get_field32(status, TX_STA_FIFO_TX_AGGRE);
|
|
|
+ wcid = rt2x00_get_field32(status, TX_STA_FIFO_WCID);
|
|
|
+@@ -55,7 +53,7 @@ index 46405cce35e0..4a7bec708a13 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * If a frame was meant to be sent as a single non-aggregated MPDU
|
|
|
+-@@ -891,8 +892,12 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
|
|
++@@ -891,8 +892,12 @@ void rt2800_txdone_entry(struct queue_en
|
|
|
+ * Hence, replace the requested rate with the real tx rate to not
|
|
|
+ * confuse the rate control algortihm by providing clearly wrong
|
|
|
+ * data.
|
|
|
+@@ -70,7 +68,7 @@ index 46405cce35e0..4a7bec708a13 100644
|
|
|
+ skbdesc->tx_rate_idx = real_mcs;
|
|
|
+ mcs = real_mcs;
|
|
|
+ }
|
|
|
+-@@ -900,6 +905,9 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
|
|
++@@ -900,6 +905,9 @@ void rt2800_txdone_entry(struct queue_en
|
|
|
+ if (aggr == 1 || ampdu == 1)
|
|
|
+ __set_bit(TXDONE_AMPDU, &txdesc.flags);
|
|
|
+
|
|
|
+@@ -80,7 +78,7 @@ index 46405cce35e0..4a7bec708a13 100644
|
|
|
+ /*
|
|
|
+ * Ralink has a retry mechanism using a global fallback
|
|
|
+ * table. We setup this fallback table to try the immediate
|
|
|
+-@@ -931,7 +939,18 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi)
|
|
|
++@@ -931,7 +939,18 @@ void rt2800_txdone_entry(struct queue_en
|
|
|
+ if (txdesc.retry)
|
|
|
+ __set_bit(TXDONE_FALLBACK, &txdesc.flags);
|
|
|
+
|
|
|
+@@ -100,11 +98,9 @@ index 46405cce35e0..4a7bec708a13 100644
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL_GPL(rt2800_txdone_entry);
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+-index 6811d677a6e7..d9ef260d542a 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+-@@ -191,7 +191,8 @@ void rt2800_write_tx_data(struct queue_entry *entry,
|
|
|
++@@ -191,7 +191,8 @@ void rt2800_write_tx_data(struct queue_e
|
|
|
+ struct txentry_desc *txdesc);
|
|
|
+ void rt2800_process_rxwi(struct queue_entry *entry, struct rxdone_entry_desc *txdesc);
|
|
|
+
|
|
|
+@@ -114,11 +110,9 @@ index 6811d677a6e7..d9ef260d542a 100644
|
|
|
+
|
|
|
+ void rt2800_write_beacon(struct queue_entry *entry, struct txentry_desc *txdesc);
|
|
|
+ void rt2800_clear_beacon(struct queue_entry *entry);
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
|
|
+-index de4790b41be7..3ab3b5323897 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c
|
|
|
+-@@ -239,7 +239,7 @@ static bool rt2800mmio_txdone_release_entries(struct queue_entry *entry,
|
|
|
++@@ -239,7 +239,7 @@ static bool rt2800mmio_txdone_release_en
|
|
|
+ {
|
|
|
+ if (test_bit(ENTRY_DATA_STATUS_SET, &entry->flags)) {
|
|
|
+ rt2800_txdone_entry(entry, entry->status,
|
|
|
+@@ -127,11 +121,9 @@ index de4790b41be7..3ab3b5323897 100644
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
|
|
+-index 205a7b8ac8a7..f11e3f532a84 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c
|
|
|
+-@@ -501,8 +501,7 @@ static int rt2800usb_get_tx_data_len(struct queue_entry *entry)
|
|
|
++@@ -501,8 +501,7 @@ static int rt2800usb_get_tx_data_len(str
|
|
|
+ /*
|
|
|
+ * TX control handlers
|
|
|
+ */
|
|
|
+@@ -141,7 +133,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
|
|
|
+ {
|
|
|
+ __le32 *txwi;
|
|
|
+ u32 word;
|
|
|
+-@@ -515,7 +514,7 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
|
|
|
++@@ -515,7 +514,7 @@ rt2800usb_txdone_entry_check(struct queu
|
|
|
+ * frame.
|
|
|
+ */
|
|
|
+ if (test_bit(ENTRY_DATA_IO_FAILED, &entry->flags))
|
|
|
+@@ -150,7 +142,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
|
|
|
+
|
|
|
+ wcid = rt2x00_get_field32(reg, TX_STA_FIFO_WCID);
|
|
|
+ ack = rt2x00_get_field32(reg, TX_STA_FIFO_TX_ACK_REQUIRED);
|
|
|
+-@@ -537,10 +536,10 @@ rt2800usb_txdone_entry_check(struct queue_entry *entry, u32 reg)
|
|
|
++@@ -537,10 +536,10 @@ rt2800usb_txdone_entry_check(struct queu
|
|
|
+ rt2x00_dbg(entry->queue->rt2x00dev,
|
|
|
+ "TX status report missed for queue %d entry %d\n",
|
|
|
+ entry->queue->qid, entry->entry_idx);
|
|
|
+@@ -163,7 +155,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
|
|
|
+ }
|
|
|
+
|
|
|
+ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
|
|
|
+-@@ -549,7 +548,7 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -549,7 +548,7 @@ static void rt2800usb_txdone(struct rt2x
|
|
|
+ struct queue_entry *entry;
|
|
|
+ u32 reg;
|
|
|
+ u8 qid;
|
|
|
+@@ -172,7 +164,7 @@ index 205a7b8ac8a7..f11e3f532a84 100644
|
|
|
+
|
|
|
+ while (kfifo_get(&rt2x00dev->txstatus_fifo, ®)) {
|
|
|
+ /*
|
|
|
+-@@ -574,11 +573,8 @@ static void rt2800usb_txdone(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -574,11 +573,8 @@ static void rt2800usb_txdone(struct rt2x
|
|
|
+ break;
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -186,6 +178,3 @@ index 205a7b8ac8a7..f11e3f532a84 100644
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch b/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch
|
|
|
+index 4e18dc8e2ae984ac809785b4a37d7bcf5b410eaa..37838e889567ddbe8ebec79d91c5b71ed3cbfc8a 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-15-rt2800-status-based-rate-flags-for-nomatch-case.patch
|
|
|
+@@ -17,8 +17,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 35 +++++++++++++++++++++++++-
|
|
|
+ 2 files changed, 36 insertions(+), 1 deletion(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+-index 0e7051d8132f..480b08601785 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ @@ -1760,6 +1760,8 @@
|
|
|
+@@ -30,11 +28,9 @@ index 0e7051d8132f..480b08601785 100644
|
|
|
+ #define TX_STA_FIFO_PHYMODE FIELD32(0xc0000000)
|
|
|
+
|
|
|
+ /*
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 4a7bec708a13..8d00c599e47a 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -852,6 +852,39 @@ void rt2800_process_rxwi(struct queue_entry *entry,
|
|
|
++@@ -852,6 +852,39 @@ void rt2800_process_rxwi(struct queue_en
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL_GPL(rt2800_process_rxwi);
|
|
|
+
|
|
|
+@@ -74,7 +70,7 @@ index 4a7bec708a13..8d00c599e47a 100644
|
|
|
+ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
|
|
|
+ bool match)
|
|
|
+ {
|
|
|
+-@@ -898,7 +931,7 @@ void rt2800_txdone_entry(struct queue_entry *entry, u32 status, __le32 *txwi,
|
|
|
++@@ -898,7 +931,7 @@ void rt2800_txdone_entry(struct queue_en
|
|
|
+ * and provide retry count.
|
|
|
+ */
|
|
|
+ if (unlikely((aggr == 1 && ampdu == 0 && real_mcs != mcs)) || !match) {
|
|
|
+@@ -83,6 +79,3 @@ index 4a7bec708a13..8d00c599e47a 100644
|
|
|
+ mcs = real_mcs;
|
|
|
+ }
|
|
|
+
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch b/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
|
|
|
+index 31d79bb751b05b410f1b84261284e4de347912c6..7825810cef9b978c0e076961af4492b3a9eda344 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-16-rt2800-use-TXOP_BACKOFF-for-probe-frames.patch
|
|
|
+@@ -14,11 +14,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00queue.c | 7 ++++---
|
|
|
+ 1 file changed, 4 insertions(+), 3 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+-index e1660b92b20c..a2c1ca5c76d1 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00queue.c
|
|
|
+-@@ -372,15 +372,16 @@ static void rt2x00queue_create_tx_descriptor_ht(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -372,15 +372,16 @@ static void rt2x00queue_create_tx_descri
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Determine IFS values
|
|
|
+@@ -38,6 +36,3 @@ index e1660b92b20c..a2c1ca5c76d1 100644
|
|
|
+ txdesc->u.ht.txop = TXOP_BACKOFF;
|
|
|
+ else if (!(tx_info->flags & IEEE80211_TX_CTL_FIRST_FRAGMENT))
|
|
|
+ txdesc->u.ht.txop = TXOP_SIFS;
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch b/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch
|
|
|
+index 4e53092d12aac787c365f2ee2be55c333ca71cdd..415bf5b2a6dabf1292a2b54f35e066618ff2d8ac 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-17-rt2x00-fix-rt2x00debug_dump_frame-comment.patch
|
|
|
+@@ -10,11 +10,9 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00.h | 2 +-
|
|
|
+ 1 file changed, 1 insertion(+), 1 deletion(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+-index 91ba10fdf732..ce340bfd71a0 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+-@@ -1396,7 +1396,7 @@ void rt2x00queue_flush_queues(struct rt2x00_dev *rt2x00dev, bool drop);
|
|
|
++@@ -1396,7 +1396,7 @@ void rt2x00queue_flush_queues(struct rt2
|
|
|
+ * rt2x00debug_dump_frame - Dump a frame to userspace through debugfs.
|
|
|
+ * @rt2x00dev: Pointer to &struct rt2x00_dev.
|
|
|
+ * @type: The type of frame that is being dumped.
|
|
|
+@@ -23,6 +21,3 @@ index 91ba10fdf732..ce340bfd71a0 100644
|
|
|
+ */
|
|
|
+ #ifdef CPTCFG_RT2X00_LIB_DEBUGFS
|
|
|
+ void rt2x00debug_dump_frame(struct rt2x00_dev *rt2x00dev,
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch b/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch
|
|
|
+index 3cf342d6903e86830d497999ad76750b85c20084..c6fb7dd2c4b926017b023826bff0acebe3bc1501 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-18-rt2x00-fix-TX_PWR_CFG_4-register-definition.patch
|
|
|
+@@ -13,8 +13,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2800.h | 8 ++++----
|
|
|
+ 1 file changed, 4 insertions(+), 4 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+-index 480b08601785..fd1dbd956bad 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ @@ -1171,10 +1171,10 @@
|
|
|
+@@ -32,6 +30,3 @@ index 480b08601785..fd1dbd956bad 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * TX_PIN_CFG:
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch b/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch
|
|
|
+index 7b99312744c7704264b15a52ce4fa70450c62040..b91e5821cdf4b1ece474fb84f222c9220929fa44 100644
|
|
|
+--- a/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch
|
|
|
++++ b/package/kernel/mac80211/patches/020-19-rt2x00-add-support-for-MT7620.patch
|
|
|
+@@ -19,8 +19,6 @@ Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
+ drivers/net/wireless/ralink/rt2x00/rt2x00.h | 1 +
|
|
|
+ 5 files changed, 1578 insertions(+), 27 deletions(-)
|
|
|
+
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/Kconfig b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
|
|
+-index de62f5dcb62f..a1d1cfe214d2 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/Kconfig
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/Kconfig
|
|
|
+ @@ -210,7 +210,7 @@ endif
|
|
|
+@@ -32,8 +30,6 @@ index de62f5dcb62f..a1d1cfe214d2 100644
|
|
|
+ select RT2X00_LIB_SOC
|
|
|
+ select RT2X00_LIB_MMIO
|
|
|
+ select RT2X00_LIB_CRYPTO
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800.h b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+-index fd1dbd956bad..6a8c93fb6a43 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+ @@ -79,6 +79,7 @@
|
|
|
+@@ -376,8 +372,6 @@ index fd1dbd956bad..6a8c93fb6a43 100644
|
|
|
+ EEPROM_TSSI_BOUND_A1,
|
|
|
+ EEPROM_TSSI_BOUND_A2,
|
|
|
+ EEPROM_TSSI_BOUND_A3,
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ @@ -59,6 +59,9 @@
|
|
|
+@@ -390,7 +384,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ #define WAIT_FOR_RF(__dev, __reg) \
|
|
|
+ rt2800_regbusy_read((__dev), RF_CSR_CFG0, RF_CSR_CFG0_BUSY, (__reg))
|
|
|
+ #define WAIT_FOR_MCU(__dev, __reg) \
|
|
|
+-@@ -150,19 +153,56 @@ static void rt2800_rfcsr_write(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -150,19 +153,56 @@ static void rt2800_rfcsr_write(struct rt
|
|
|
+ * Wait until the RFCSR becomes available, afterwards we
|
|
|
+ * can safely write the new data into the register.
|
|
|
+ */
|
|
|
+@@ -413,8 +407,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ + rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
|
|
|
+ + }
|
|
|
+ + break;
|
|
|
+-
|
|
|
+-- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
|
|
|
+++
|
|
|
+ + default:
|
|
|
+ + if (WAIT_FOR_RFCSR(rt2x00dev, ®)) {
|
|
|
+ + reg = 0;
|
|
|
+@@ -422,7 +415,8 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ + rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word);
|
|
|
+ + rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 1);
|
|
|
+ + rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1);
|
|
|
+-+
|
|
|
++
|
|
|
++- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
|
|
|
+ + rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg);
|
|
|
+ + }
|
|
|
+ + break;
|
|
|
+@@ -454,7 +448,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
|
|
|
+ const unsigned int word, u8 *value)
|
|
|
+ {
|
|
|
+-@@ -178,22 +218,48 @@ static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -178,22 +218,48 @@ static void rt2800_rfcsr_read(struct rt2
|
|
|
+ * doesn't become available in time, reg will be 0xffffffff
|
|
|
+ * which means we return 0xff to the caller.
|
|
|
+ */
|
|
|
+@@ -479,11 +473,11 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ - }
|
|
|
+ + WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®);
|
|
|
+ + }
|
|
|
+-
|
|
|
+-- *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA);
|
|
|
+++
|
|
|
+ + *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA_MT7620);
|
|
|
+ + break;
|
|
|
+-+
|
|
|
++
|
|
|
++- *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA);
|
|
|
+ + default:
|
|
|
+ + if (WAIT_FOR_RFCSR(rt2x00dev, ®)) {
|
|
|
+ + reg = 0;
|
|
|
+@@ -512,7 +506,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ static void rt2800_rf_write(struct rt2x00_dev *rt2x00dev,
|
|
|
+ const unsigned int word, const u32 value)
|
|
|
+ {
|
|
|
+-@@ -250,6 +316,7 @@ static const unsigned int rt2800_eeprom_map[EEPROM_WORD_COUNT] = {
|
|
|
++@@ -250,6 +316,7 @@ static const unsigned int rt2800_eeprom_
|
|
|
+ [EEPROM_TSSI_BOUND_BG5] = 0x003b,
|
|
|
+ [EEPROM_TXPOWER_A1] = 0x003c,
|
|
|
+ [EEPROM_TXPOWER_A2] = 0x0053,
|
|
|
+@@ -520,7 +514,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ [EEPROM_TSSI_BOUND_A1] = 0x006a,
|
|
|
+ [EEPROM_TSSI_BOUND_A2] = 0x006b,
|
|
|
+ [EEPROM_TSSI_BOUND_A3] = 0x006c,
|
|
|
+-@@ -524,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -524,6 +591,7 @@ void rt2800_get_txwi_rxwi_size(struct rt
|
|
|
+ break;
|
|
|
+
|
|
|
+ case RT5592:
|
|
|
+@@ -528,7 +522,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ *txwi_size = TXWI_DESC_SIZE_5WORDS;
|
|
|
+ *rxwi_size = RXWI_DESC_SIZE_6WORDS;
|
|
|
+ break;
|
|
|
+-@@ -2810,7 +2878,8 @@ static void rt2800_config_channel_rf53xx(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -2810,7 +2878,8 @@ static void rt2800_config_channel_rf53xx
|
|
|
+ rt2800_rfcsr_write(rt2x00dev, 59,
|
|
|
+ r59_nonbt_rev[idx]);
|
|
|
+ } else if (rt2x00_rt(rt2x00dev, RT5390) ||
|
|
|
+@@ -538,7 +532,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ static const char r59_non_bt[] = {0x8f, 0x8f,
|
|
|
+ 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8d,
|
|
|
+ 0x8a, 0x88, 0x88, 0x87, 0x87, 0x86};
|
|
|
+-@@ -3104,6 +3173,242 @@ static void rt2800_config_channel_rf55xx(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3104,6 +3173,242 @@ static void rt2800_config_channel_rf55xx
|
|
|
+ rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -781,7 +775,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
|
|
|
+ const unsigned int word,
|
|
|
+ const u8 value)
|
|
|
+-@@ -3228,7 +3533,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3228,7 +3533,7 @@ static void rt2800_config_channel(struct
|
|
|
+ struct channel_info *info)
|
|
|
+ {
|
|
|
+ u32 reg;
|
|
|
+@@ -790,7 +784,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ u8 bbp, rfcsr;
|
|
|
+
|
|
|
+ info->default_power1 = rt2800_txpower_to_dev(rt2x00dev, rf->channel,
|
|
|
+-@@ -3273,6 +3578,9 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3273,6 +3578,9 @@ static void rt2800_config_channel(struct
|
|
|
+ case RF5592:
|
|
|
+ rt2800_config_channel_rf55xx(rt2x00dev, conf, rf, info);
|
|
|
+ break;
|
|
|
+@@ -800,7 +794,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ default:
|
|
|
+ rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info);
|
|
|
+ }
|
|
|
+-@@ -3347,7 +3655,8 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3347,7 +3655,8 @@ static void rt2800_config_channel(struct
|
|
|
+
|
|
|
+ if (rf->channel <= 14) {
|
|
|
+ if (!rt2x00_rt(rt2x00dev, RT5390) &&
|
|
|
+@@ -810,7 +804,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
|
+ rt2800_bbp_write(rt2x00dev, 82, 0x62);
|
|
|
+ rt2800_bbp_write(rt2x00dev, 75, 0x46);
|
|
|
+-@@ -3367,7 +3676,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3367,7 +3676,7 @@ static void rt2800_config_channel(struct
|
|
|
+ rt2800_bbp_write(rt2x00dev, 82, 0x94);
|
|
|
+ else if (rt2x00_rt(rt2x00dev, RT3593))
|
|
|
+ rt2800_bbp_write(rt2x00dev, 82, 0x82);
|
|
|
+@@ -819,7 +813,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ rt2800_bbp_write(rt2x00dev, 82, 0xf2);
|
|
|
+
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3593))
|
|
|
+-@@ -3388,7 +3697,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3388,7 +3697,7 @@ static void rt2800_config_channel(struct
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3572))
|
|
|
+ rt2800_rfcsr_write(rt2x00dev, 8, 0);
|
|
|
+
|
|
|
+@@ -828,7 +822,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+
|
|
|
+ switch (rt2x00dev->default_ant.tx_chain_num) {
|
|
|
+ case 3:
|
|
|
+-@@ -3437,6 +3746,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3437,6 +3746,7 @@ static void rt2800_config_channel(struct
|
|
|
+
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_RFTR_EN, 1);
|
|
|
+ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_TRSW_EN, 1);
|
|
|
+@@ -836,7 +830,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+
|
|
|
+ rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
|
|
|
+
|
|
|
+-@@ -3495,7 +3805,7 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -3495,7 +3805,7 @@ static void rt2800_config_channel(struct
|
|
|
+ usleep_range(1000, 1500);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -845,7 +839,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ rt2800_bbp_write(rt2x00dev, 195, 141);
|
|
|
+ rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
|
|
|
+
|
|
|
+-@@ -4182,6 +4492,128 @@ static void rt2800_config_txpower_rt3593(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -4182,6 +4492,128 @@ static void rt2800_config_txpower_rt3593
|
|
|
+ (unsigned long) regs[i]);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -974,7 +968,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ /*
|
|
|
+ * We configure transmit power using MAC TX_PWR_CFG_{0,...,N} registers and
|
|
|
+ * BBP R1 register. TX_PWR_CFG_X allow to configure per rate TX power values,
|
|
|
+-@@ -4378,6 +4810,8 @@ static void rt2800_config_txpower(struct rt2x00_dev *rt2x00dev,
|
|
|
++@@ -4378,6 +4810,8 @@ static void rt2800_config_txpower(struct
|
|
|
+ {
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3593))
|
|
|
+ rt2800_config_txpower_rt3593(rt2x00dev, chan, power_level);
|
|
|
+@@ -983,7 +977,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ else
|
|
|
+ rt2800_config_txpower_rt28xx(rt2x00dev, chan, power_level);
|
|
|
+ }
|
|
|
+-@@ -4393,6 +4827,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -4393,6 +4827,7 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
+ {
|
|
|
+ u32 tx_pin;
|
|
|
+ u8 rfcsr;
|
|
|
+@@ -991,7 +985,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+
|
|
|
+ /*
|
|
|
+ * A voltage-controlled oscillator(VCO) is an electronic oscillator
|
|
|
+-@@ -4431,6 +4866,15 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -4431,6 +4866,15 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
+ rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr);
|
|
|
+ rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1);
|
|
|
+ rt2800_rfcsr_write(rt2x00dev, 3, rfcsr);
|
|
|
+@@ -1007,7 +1001,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ WARN_ONCE(1, "Not supported RF chipet %x for VCO recalibration",
|
|
|
+-@@ -4438,7 +4882,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -4438,7 +4882,8 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -1017,7 +1011,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+
|
|
|
+ rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin);
|
|
|
+ if (rt2x00dev->rf_channel <= 14) {
|
|
|
+-@@ -4470,6 +4915,42 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -4470,6 +4915,42 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
+ }
|
|
|
+ rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
|
|
|
+
|
|
|
+@@ -1060,7 +1054,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ }
|
|
|
+ EXPORT_SYMBOL_GPL(rt2800_vco_calibration);
|
|
|
+
|
|
|
+-@@ -4568,7 +5049,8 @@ static u8 rt2800_get_default_vgc(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -4568,7 +5049,8 @@ static u8 rt2800_get_default_vgc(struct
|
|
|
+ rt2x00_rt(rt2x00dev, RT3593) ||
|
|
|
+ rt2x00_rt(rt2x00dev, RT5390) ||
|
|
|
+ rt2x00_rt(rt2x00dev, RT5392) ||
|
|
|
+@@ -1070,7 +1064,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ vgc = 0x1c + (2 * rt2x00dev->lna_gain);
|
|
|
+ else
|
|
|
+ vgc = 0x2e + rt2x00dev->lna_gain;
|
|
|
+-@@ -4795,7 +5277,8 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -4795,7 +5277,8 @@ static int rt2800_init_registers(struct
|
|
|
+ 0x00000000);
|
|
|
+ }
|
|
|
+ } else if (rt2x00_rt(rt2x00dev, RT5390) ||
|
|
|
+@@ -1080,7 +1074,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
|
|
|
+-@@ -4805,6 +5288,24 @@ static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -4805,6 +5288,24 @@ static int rt2800_init_registers(struct
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000);
|
|
|
+ } else if (rt2x00_rt(rt2x00dev, RT5350)) {
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404);
|
|
|
+@@ -1105,7 +1099,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ } else {
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000);
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606);
|
|
|
+-@@ -5786,6 +6287,231 @@ static void rt2800_init_bbp_5592(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -5786,6 +6287,231 @@ static void rt2800_init_bbp_5592(struct
|
|
|
+ rt2800_bbp_write(rt2x00dev, 103, 0xc0);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -1337,7 +1331,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
|
|
|
+ {
|
|
|
+ unsigned int i;
|
|
|
+-@@ -5830,6 +6556,9 @@ static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -5830,6 +6556,9 @@ static void rt2800_init_bbp(struct rt2x0
|
|
|
+ case RT5592:
|
|
|
+ rt2800_init_bbp_5592(rt2x00dev);
|
|
|
+ return;
|
|
|
+@@ -1347,7 +1341,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ }
|
|
|
+
|
|
|
+ for (i = 0; i < EEPROM_BBP_SIZE; i++) {
|
|
|
+-@@ -6901,6 +7630,615 @@ static void rt2800_init_rfcsr_5592(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -6901,6 +7630,615 @@ static void rt2800_init_rfcsr_5592(struc
|
|
|
+ rt2800_led_open_drain_enable(rt2x00dev);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -1963,7 +1957,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
|
|
|
+ {
|
|
|
+ if (rt2800_is_305x_soc(rt2x00dev)) {
|
|
|
+-@@ -6941,6 +8279,9 @@ static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -6941,6 +8279,9 @@ static void rt2800_init_rfcsr(struct rt2
|
|
|
+ case RT5592:
|
|
|
+ rt2800_init_rfcsr_5592(rt2x00dev);
|
|
|
+ break;
|
|
|
+@@ -1973,7 +1967,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+-@@ -7307,7 +8648,8 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -7307,7 +8648,8 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
+ */
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3290) ||
|
|
|
+ rt2x00_rt(rt2x00dev, RT5390) ||
|
|
|
+@@ -1983,7 +1977,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
|
|
|
+ else if (rt2x00_rt(rt2x00dev, RT3352))
|
|
|
+ rf = RF3322;
|
|
|
+-@@ -7339,6 +8681,7 @@ static int rt2800_init_eeprom(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -7339,6 +8681,7 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
+ case RF5390:
|
|
|
+ case RF5392:
|
|
|
+ case RF5592:
|
|
|
+@@ -1991,7 +1985,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n",
|
|
|
+-@@ -7746,6 +9089,23 @@ static const struct rf_channel rf_vals_5592_xtal40[] = {
|
|
|
++@@ -7746,6 +9089,23 @@ static const struct rf_channel rf_vals_5
|
|
|
+ {196, 83, 0, 12, 1},
|
|
|
+ };
|
|
|
+
|
|
|
+@@ -2015,7 +2009,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
+ {
|
|
|
+ struct hw_mode_spec *spec = &rt2x00dev->spec;
|
|
|
+-@@ -7849,6 +9209,11 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -7849,6 +9209,11 @@ static int rt2800_probe_hw_mode(struct r
|
|
|
+ spec->channels = rf_vals_3x;
|
|
|
+ break;
|
|
|
+
|
|
|
+@@ -2027,7 +2021,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ case RF3052:
|
|
|
+ case RF3053:
|
|
|
+ spec->num_channels = ARRAY_SIZE(rf_vals_3x);
|
|
|
+-@@ -7980,6 +9345,7 @@ static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -7980,6 +9345,7 @@ static int rt2800_probe_hw_mode(struct r
|
|
|
+ case RF5390:
|
|
|
+ case RF5392:
|
|
|
+ case RF5592:
|
|
|
+@@ -2035,7 +2029,7 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ __set_bit(CAPABILITY_VCO_RECALIBRATION, &rt2x00dev->cap_flags);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+-@@ -8024,6 +9390,9 @@ static int rt2800_probe_rt(struct rt2x00_dev *rt2x00dev)
|
|
|
++@@ -8024,6 +9390,9 @@ static int rt2800_probe_rt(struct rt2x00
|
|
|
+ return -ENODEV;
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -2045,8 +2039,6 @@ index 8d00c599e47a..201b12ed90c6 100644
|
|
|
+ rt2x00_set_rt(rt2x00dev, rt, rev);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+-index d9ef260d542a..f357531d9488 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h
|
|
|
+ @@ -33,6 +33,10 @@
|
|
|
+@@ -2060,8 +2052,6 @@ index d9ef260d542a..f357531d9488 100644
|
|
|
+ u8 bbp25;
|
|
|
+ u8 bbp26;
|
|
|
+ u8 txmixer_gain_24g;
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2x00.h b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+-index ce340bfd71a0..8fdd2f9726ee 100644
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+ @@ -174,6 +174,7 @@ struct rt2x00_chip {
|
|
|
+@@ -2072,6 +2062,3 @@ index ce340bfd71a0..8fdd2f9726ee 100644
|
|
|
+
|
|
|
+ u16 rf;
|
|
|
+ u16 rev;
|
|
|
+---
|
|
|
+-2.12.1
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-20-rt2x00-reverse-external-PA-capability-flag-logic.patch b/package/kernel/mac80211/patches/020-20-rt2x00-reverse-external-PA-capability-flag-logic.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..7994456de71a9b6115a34e307024b59043c80aec
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/020-20-rt2x00-reverse-external-PA-capability-flag-logic.patch
|
|
|
+@@ -0,0 +1,121 @@
|
|
|
++From 1f242a3de702d5a19c479685d35b050837122724 Mon Sep 17 00:00:00 2001
|
|
|
++From: Daniel Golle <daniel@makrotopia.org>
|
|
|
++Date: Mon, 10 Apr 2017 15:29:45 +0200
|
|
|
++Subject: [PATCH] rt2x00: reverse external PA capability flag logic
|
|
|
++
|
|
|
++Consequently refer to external PA instead of inverting the logic and
|
|
|
++use an internal PA capability flag which is a bit confusing.
|
|
|
++Currently this is used for Rt3352 only, but MT7620A also allows for an
|
|
|
++external PA which will be supported by a follow up patch.
|
|
|
++
|
|
|
++Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
++Acked-by: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 40 +++++++++++++-------------
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2x00.h | 4 +--
|
|
|
++ 2 files changed, 22 insertions(+), 22 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
++@@ -7014,9 +7014,9 @@ static void rt2800_init_rfcsr_3290(struc
|
|
|
++
|
|
|
++ static void rt2800_init_rfcsr_3352(struct rt2x00_dev *rt2x00dev)
|
|
|
++ {
|
|
|
++- int tx0_int_pa = test_bit(CAPABILITY_INTERNAL_PA_TX0,
|
|
|
+++ int tx0_ext_pa = test_bit(CAPABILITY_EXTERNAL_PA_TX0,
|
|
|
++ &rt2x00dev->cap_flags);
|
|
|
++- int tx1_int_pa = test_bit(CAPABILITY_INTERNAL_PA_TX1,
|
|
|
+++ int tx1_ext_pa = test_bit(CAPABILITY_EXTERNAL_PA_TX1,
|
|
|
++ &rt2x00dev->cap_flags);
|
|
|
++ u8 rfcsr;
|
|
|
++
|
|
|
++@@ -7056,9 +7056,9 @@ static void rt2800_init_rfcsr_3352(struc
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 32, 0x80);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 33, 0x00);
|
|
|
++ rfcsr = 0x01;
|
|
|
++- if (!tx0_int_pa)
|
|
|
+++ if (tx0_ext_pa)
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR34_TX0_EXT_PA, 1);
|
|
|
++- if (!tx1_int_pa)
|
|
|
+++ if (tx1_ext_pa)
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR34_TX1_EXT_PA, 1);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 34, rfcsr);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 35, 0x03);
|
|
|
++@@ -7068,13 +7068,13 @@ static void rt2800_init_rfcsr_3352(struc
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 39, 0xc5);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 40, 0x33);
|
|
|
++ rfcsr = 0x52;
|
|
|
++- if (tx0_int_pa) {
|
|
|
+++ if (!tx0_ext_pa) {
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR41_BIT1, 1);
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR41_BIT4, 1);
|
|
|
++ }
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 41, rfcsr);
|
|
|
++ rfcsr = 0x52;
|
|
|
++- if (tx1_int_pa) {
|
|
|
+++ if (!tx1_ext_pa) {
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR42_BIT1, 1);
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR42_BIT4, 1);
|
|
|
++ }
|
|
|
++@@ -7087,19 +7087,19 @@ static void rt2800_init_rfcsr_3352(struc
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 48, 0x14);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 49, 0x00);
|
|
|
++ rfcsr = 0x2d;
|
|
|
++- if (!tx0_int_pa)
|
|
|
+++ if (tx0_ext_pa)
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR50_TX0_EXT_PA, 1);
|
|
|
++- if (!tx1_int_pa)
|
|
|
+++ if (tx1_ext_pa)
|
|
|
++ rt2x00_set_field8(&rfcsr, RFCSR50_TX1_EXT_PA, 1);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 50, rfcsr);
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 51, (tx0_int_pa ? 0x7f : 0x52));
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 52, (tx0_int_pa ? 0x00 : 0xc0));
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 53, (tx0_int_pa ? 0x52 : 0xd2));
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 54, (tx0_int_pa ? 0x1b : 0xc0));
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 55, (tx1_int_pa ? 0x7f : 0x52));
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 56, (tx1_int_pa ? 0x00 : 0xc0));
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 57, (tx0_int_pa ? 0x52 : 0x49));
|
|
|
++- rt2800_rfcsr_write(rt2x00dev, 58, (tx1_int_pa ? 0x1b : 0xc0));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 51, (tx0_ext_pa ? 0x52 : 0x7f));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 52, (tx0_ext_pa ? 0xc0 : 0x00));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 53, (tx0_ext_pa ? 0xd2 : 0x52));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 54, (tx0_ext_pa ? 0xc0 : 0x1b));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 55, (tx1_ext_pa ? 0x52 : 0x7f));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 56, (tx1_ext_pa ? 0xc0 : 0x00));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 57, (tx0_ext_pa ? 0x49 : 0x52));
|
|
|
+++ rt2800_rfcsr_write(rt2x00dev, 58, (tx1_ext_pa ? 0xc0 : 0x1b));
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 59, 0x00);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 60, 0x00);
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 61, 0x00);
|
|
|
++@@ -8782,13 +8782,13 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
++ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
|
|
|
++
|
|
|
++ if (rt2x00_rt(rt2x00dev, RT3352)) {
|
|
|
++- if (!rt2x00_get_field16(eeprom,
|
|
|
+++ if (rt2x00_get_field16(eeprom,
|
|
|
++ EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352))
|
|
|
++- __set_bit(CAPABILITY_INTERNAL_PA_TX0,
|
|
|
+++ __set_bit(CAPABILITY_EXTERNAL_PA_TX0,
|
|
|
++ &rt2x00dev->cap_flags);
|
|
|
++- if (!rt2x00_get_field16(eeprom,
|
|
|
+++ if (rt2x00_get_field16(eeprom,
|
|
|
++ EEPROM_NIC_CONF1_EXTERNAL_TX1_PA_3352))
|
|
|
++- __set_bit(CAPABILITY_INTERNAL_PA_TX1,
|
|
|
+++ __set_bit(CAPABILITY_EXTERNAL_PA_TX1,
|
|
|
++ &rt2x00dev->cap_flags);
|
|
|
++ }
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h
|
|
|
++@@ -719,8 +719,8 @@ enum rt2x00_capability_flags {
|
|
|
++ CAPABILITY_DOUBLE_ANTENNA,
|
|
|
++ CAPABILITY_BT_COEXIST,
|
|
|
++ CAPABILITY_VCO_RECALIBRATION,
|
|
|
++- CAPABILITY_INTERNAL_PA_TX0,
|
|
|
++- CAPABILITY_INTERNAL_PA_TX1,
|
|
|
+++ CAPABILITY_EXTERNAL_PA_TX0,
|
|
|
+++ CAPABILITY_EXTERNAL_PA_TX1,
|
|
|
++ };
|
|
|
++
|
|
|
++ /*
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-21-rt2800-fix-LNA-gain-assignment-for-MT7620.patch b/package/kernel/mac80211/patches/020-21-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..71a4ffea45879af5f8fda8dca253b23b9abd752b
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/020-21-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
|
|
|
+@@ -0,0 +1,49 @@
|
|
|
++From 0109238d62a99ea779a7e28e21868118e7b8d69d Mon Sep 17 00:00:00 2001
|
|
|
++From: Daniel Golle <daniel@makrotopia.org>
|
|
|
++Date: Mon, 10 Apr 2017 14:28:14 +0200
|
|
|
++Subject: [PATCH 1/2] rt2800: fix LNA gain assignment for MT7620
|
|
|
++To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
++Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
++ linux-wireless@vger.kernel.org,
|
|
|
++ Kalle Valo <kvalo@codeaurora.org>
|
|
|
++
|
|
|
++The base value used for MT7620 differs from Rt5392 which resulted in
|
|
|
++quite bad RX signal quality. Fix this by using the correct base value as
|
|
|
++well as the LNA calibration values for HT20.
|
|
|
++
|
|
|
++Reported-by: Tom Psyborg <pozega.tomislav@gmail.com>
|
|
|
++Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 18 ++++++++++++++++--
|
|
|
++ 1 file changed, 16 insertions(+), 2 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
++@@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct
|
|
|
++ }
|
|
|
++
|
|
|
++ if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
+++ reg = 0x10;
|
|
|
+++ if (!conf_is_ht40(conf)) {
|
|
|
+++ if (rt2x00_rt(rt2x00dev, RT6352) &&
|
|
|
+++ rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
|
+++ reg |= 0x5;
|
|
|
+++ } else {
|
|
|
+++ reg |= 0xa;
|
|
|
+++ }
|
|
|
+++ }
|
|
|
++ rt2800_bbp_write(rt2x00dev, 195, 141);
|
|
|
++- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
|
|
|
+++ rt2800_bbp_write(rt2x00dev, 196, reg);
|
|
|
++
|
|
|
++ /* AGC init */
|
|
|
++- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain;
|
|
|
+++ if (rt2x00_rt(rt2x00dev, RT6352))
|
|
|
+++ reg = 0x04;
|
|
|
+++ else
|
|
|
+++ reg = rf->channel <= 14 ? 0x1c : 0x24;
|
|
|
+++
|
|
|
+++ reg += 2 * rt2x00dev->lna_gain;
|
|
|
++ rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
|
|
|
++
|
|
|
++ rt2800_iq_calibrate(rt2x00dev, rf->channel);
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-22-rt2800-do-VCO-calibration-after-programming-ALC.patch b/package/kernel/mac80211/patches/020-22-rt2800-do-VCO-calibration-after-programming-ALC.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..3d76408cd24c9fe9029202b3aa2efa891137ab2f
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/020-22-rt2800-do-VCO-calibration-after-programming-ALC.patch
|
|
|
+@@ -0,0 +1,29 @@
|
|
|
++From feb608c7986c14bab153f31f8e96f251072e6578 Mon Sep 17 00:00:00 2001
|
|
|
++From: Daniel Golle <daniel@makrotopia.org>
|
|
|
++Date: Mon, 10 Apr 2017 15:33:20 +0200
|
|
|
++Subject: [PATCH 2/2] rt2800: do VCO calibration after programming ALC
|
|
|
++To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
++Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
++ linux-wireless@vger.kernel.org,
|
|
|
++ Kalle Valo <kvalo@codeaurora.org>
|
|
|
++
|
|
|
++Scanning fails if we don't do VCO calibration every time.
|
|
|
++The vendor driver duplicates the VCO calibration function into the
|
|
|
++channel switching logic, we can do the same with less duplication.
|
|
|
++
|
|
|
++Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
|
|
|
++ 1 file changed, 2 insertions(+)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
++@@ -3407,6 +3407,8 @@ static void rt2800_config_alc(struct rt2
|
|
|
++ rt2800_rfcsr_write(rt2x00dev, 42, 0x5b);
|
|
|
++ }
|
|
|
++ rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl);
|
|
|
+++
|
|
|
+++ rt2800_vco_calibration(rt2x00dev);
|
|
|
++ }
|
|
|
++
|
|
|
++ static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-23-rt2800-fix-mt7620-vco-calibration-registers.patch b/package/kernel/mac80211/patches/020-23-rt2800-fix-mt7620-vco-calibration-registers.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..360d06e8f8d4a3d8dd99ff1c6ed2d82b7618b5ca
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/020-23-rt2800-fix-mt7620-vco-calibration-registers.patch
|
|
|
+@@ -0,0 +1,45 @@
|
|
|
++From 02c452f317b4a4d06c433c294e66896a389731c1 Mon Sep 17 00:00:00 2001
|
|
|
++From: Daniel Golle <daniel@makrotopia.org>
|
|
|
++Date: Tue, 18 Apr 2017 11:09:53 +0200
|
|
|
++Subject: [PATCH] rt2800: fix mt7620 vco calibration registers
|
|
|
++MIME-Version: 1.0
|
|
|
++Content-Type: text/plain; charset=UTF-8
|
|
|
++Content-Transfer-Encoding: 8bit
|
|
|
++To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
++Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
++ linux-wireless@vger.kernel.org,
|
|
|
++ Kalle Valo <kvalo@codeaurora.org>,
|
|
|
++ Tom Psyborg <pozega.tomislav@gmail.com>
|
|
|
++
|
|
|
++Use register values from init LNA function instead of the ones from
|
|
|
++restore LNA function. Apply register values based on rx path
|
|
|
++configuration.
|
|
|
++
|
|
|
++Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
|
|
|
++Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 +++---
|
|
|
++ 1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
++@@ -4932,7 +4932,7 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
++ rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
|
|
|
++
|
|
|
++ if (rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
++- if (rt2x00dev->default_ant.tx_chain_num == 1) {
|
|
|
+++ if (rt2x00dev->default_ant.rx_chain_num == 1) {
|
|
|
++ rt2800_bbp_write(rt2x00dev, 91, 0x07);
|
|
|
++ rt2800_bbp_write(rt2x00dev, 95, 0x1A);
|
|
|
++ rt2800_bbp_write(rt2x00dev, 195, 128);
|
|
|
++@@ -4953,8 +4953,8 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
++ }
|
|
|
++
|
|
|
++ if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
|
++- rt2800_bbp_write(rt2x00dev, 75, 0x60);
|
|
|
++- rt2800_bbp_write(rt2x00dev, 76, 0x44);
|
|
|
+++ rt2800_bbp_write(rt2x00dev, 75, 0x68);
|
|
|
+++ rt2800_bbp_write(rt2x00dev, 76, 0x4C);
|
|
|
++ rt2800_bbp_write(rt2x00dev, 79, 0x1C);
|
|
|
++ rt2800_bbp_write(rt2x00dev, 80, 0x0C);
|
|
|
++ rt2800_bbp_write(rt2x00dev, 82, 0xB6);
|
|
|
+diff --git a/package/kernel/mac80211/patches/020-24-rt2800-fix-mt7620-E2-channel-registers.patch b/package/kernel/mac80211/patches/020-24-rt2800-fix-mt7620-E2-channel-registers.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..92c2134845a7e239593e5a474995d0b7b5e0541f
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/020-24-rt2800-fix-mt7620-E2-channel-registers.patch
|
|
|
+@@ -0,0 +1,36 @@
|
|
|
++From c426cb0ed15ee12dfdc8c53ddd1449ac617023cf Mon Sep 17 00:00:00 2001
|
|
|
++From: Daniel Golle <daniel@makrotopia.org>
|
|
|
++Date: Tue, 18 Apr 2017 11:45:37 +0200
|
|
|
++Subject: [PATCH] rt2800: fix mt7620 E2 channel registers
|
|
|
++To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
++Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
++ linux-wireless@vger.kernel.org,
|
|
|
++ Kalle Valo <kvalo@codeaurora.org>,
|
|
|
++ Tom Psyborg <pozega.tomislav@gmail.com>
|
|
|
++
|
|
|
++From: Tomislav Požega <pozega.tomislav@gmail.com>
|
|
|
++
|
|
|
++update RF register 47 and 54 values according to vendor driver
|
|
|
++
|
|
|
++Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
|
|
|
++Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
|
|
|
++ 1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
++@@ -8145,9 +8145,11 @@ static void rt2800_init_rfcsr_6352(struc
|
|
|
++ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xB3);
|
|
|
++ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5);
|
|
|
++ rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27);
|
|
|
++- rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x69);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0x67);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0x69);
|
|
|
++ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFF);
|
|
|
++- rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x20);
|
|
|
++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66);
|
|
|
++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF);
|
|
|
++ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C);
|
|
|
+diff --git a/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch b/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
|
|
|
+deleted file mode 100644
|
|
|
+index 3270ea2c566850e04b5484de41e462ebafa3cfcc..0000000000000000000000000000000000000000
|
|
|
+--- a/package/kernel/mac80211/patches/021-01-rt2800-fix-LNA-gain-assignment-for-MT7620.patch
|
|
|
++++ /dev/null
|
|
|
+@@ -1,54 +0,0 @@
|
|
|
+-From 0109238d62a99ea779a7e28e21868118e7b8d69d Mon Sep 17 00:00:00 2001
|
|
|
+-From: Daniel Golle <daniel@makrotopia.org>
|
|
|
+-Date: Mon, 10 Apr 2017 14:28:14 +0200
|
|
|
+-Subject: [PATCH 1/2] rt2800: fix LNA gain assignment for MT7620
|
|
|
+-To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
+-Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
+- linux-wireless@vger.kernel.org,
|
|
|
+- Kalle Valo <kvalo@codeaurora.org>
|
|
|
+-
|
|
|
+-The base value used for MT7620 differs from Rt5392 which resulted in
|
|
|
+-quite bad RX signal quality. Fix this by using the correct base value as
|
|
|
+-well as the LNA calibration values for HT20.
|
|
|
+-
|
|
|
+-Reported-by: Tom Psyborg <pozega.tomislav@gmail.com>
|
|
|
+-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
+----
|
|
|
+- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 18 ++++++++++++++++--
|
|
|
+- 1 file changed, 16 insertions(+), 2 deletions(-)
|
|
|
+-
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index ba06ac2d876d..7135519a638c 100644
|
|
|
+---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -3806,11 +3806,25 @@ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
+- }
|
|
|
+-
|
|
|
+- if (rt2x00_rt(rt2x00dev, RT5592) || rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
+-+ reg = 0x10;
|
|
|
+-+ if (!conf_is_ht40(conf)) {
|
|
|
+-+ if (rt2x00_rt(rt2x00dev, RT6352) &&
|
|
|
+-+ rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
|
+-+ reg |= 0x5;
|
|
|
+-+ } else {
|
|
|
+-+ reg |= 0xa;
|
|
|
+-+ }
|
|
|
+-+ }
|
|
|
+- rt2800_bbp_write(rt2x00dev, 195, 141);
|
|
|
+-- rt2800_bbp_write(rt2x00dev, 196, conf_is_ht40(conf) ? 0x10 : 0x1a);
|
|
|
+-+ rt2800_bbp_write(rt2x00dev, 196, reg);
|
|
|
+-
|
|
|
+- /* AGC init */
|
|
|
+-- reg = (rf->channel <= 14 ? 0x1c : 0x24) + 2 * rt2x00dev->lna_gain;
|
|
|
+-+ if (rt2x00_rt(rt2x00dev, RT6352))
|
|
|
+-+ reg = 0x04;
|
|
|
+-+ else
|
|
|
+-+ reg = rf->channel <= 14 ? 0x1c : 0x24;
|
|
|
+-+
|
|
|
+-+ reg += 2 * rt2x00dev->lna_gain;
|
|
|
+- rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
|
|
|
+-
|
|
|
+- rt2800_iq_calibrate(rt2x00dev, rf->channel);
|
|
|
+---
|
|
|
+-2.12.2
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch b/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch
|
|
|
+deleted file mode 100644
|
|
|
+index 1dafb78f1c71037d7362c13f68728b11dc5aaff2..0000000000000000000000000000000000000000
|
|
|
+--- a/package/kernel/mac80211/patches/021-02-rt2800-do-VCO-calibration-after-programming-ALC.patch
|
|
|
++++ /dev/null
|
|
|
+@@ -1,34 +0,0 @@
|
|
|
+-From feb608c7986c14bab153f31f8e96f251072e6578 Mon Sep 17 00:00:00 2001
|
|
|
+-From: Daniel Golle <daniel@makrotopia.org>
|
|
|
+-Date: Mon, 10 Apr 2017 15:33:20 +0200
|
|
|
+-Subject: [PATCH 2/2] rt2800: do VCO calibration after programming ALC
|
|
|
+-To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
+-Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
+- linux-wireless@vger.kernel.org,
|
|
|
+- Kalle Valo <kvalo@codeaurora.org>
|
|
|
+-
|
|
|
+-Scanning fails if we don't do VCO calibration every time.
|
|
|
+-The vendor driver duplicates the VCO calibration function into the
|
|
|
+-channel switching logic, we can do the same with less duplication.
|
|
|
+-
|
|
|
+-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
+----
|
|
|
+- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 2 ++
|
|
|
+- 1 file changed, 2 insertions(+)
|
|
|
+-
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 7135519a638c..870bf315f98b 100644
|
|
|
+---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -3407,6 +3407,8 @@ static void rt2800_config_alc(struct rt2x00_dev *rt2x00dev,
|
|
|
+- rt2800_rfcsr_write(rt2x00dev, 42, 0x5b);
|
|
|
+- }
|
|
|
+- rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl);
|
|
|
+-+
|
|
|
+-+ rt2800_vco_calibration(rt2x00dev);
|
|
|
+- }
|
|
|
+-
|
|
|
+- static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev,
|
|
|
+---
|
|
|
+-2.12.2
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch b/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch
|
|
|
+deleted file mode 100644
|
|
|
+index 708b0b2d31a0276aa9dd3a922e26a1379ec364f4..0000000000000000000000000000000000000000
|
|
|
+--- a/package/kernel/mac80211/patches/021-03-rt2800-fix-mt7620-vco-calibration-registers.patch
|
|
|
++++ /dev/null
|
|
|
+@@ -1,50 +0,0 @@
|
|
|
+-From 02c452f317b4a4d06c433c294e66896a389731c1 Mon Sep 17 00:00:00 2001
|
|
|
+-From: Daniel Golle <daniel@makrotopia.org>
|
|
|
+-Date: Tue, 18 Apr 2017 11:09:53 +0200
|
|
|
+-Subject: [PATCH] rt2800: fix mt7620 vco calibration registers
|
|
|
+-MIME-Version: 1.0
|
|
|
+-Content-Type: text/plain; charset=UTF-8
|
|
|
+-Content-Transfer-Encoding: 8bit
|
|
|
+-To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
+-Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
+- linux-wireless@vger.kernel.org,
|
|
|
+- Kalle Valo <kvalo@codeaurora.org>,
|
|
|
+- Tom Psyborg <pozega.tomislav@gmail.com>
|
|
|
+-
|
|
|
+-Use register values from init LNA function instead of the ones from
|
|
|
+-restore LNA function. Apply register values based on rx path
|
|
|
+-configuration.
|
|
|
+-
|
|
|
+-Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
|
|
|
+-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
+----
|
|
|
+- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 +++---
|
|
|
+- 1 file changed, 3 insertions(+), 3 deletions(-)
|
|
|
+-
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 870bf315f98b..86cffee6876a 100644
|
|
|
+---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -4932,7 +4932,7 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
|
|
+- rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin);
|
|
|
+-
|
|
|
+- if (rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
+-- if (rt2x00dev->default_ant.tx_chain_num == 1) {
|
|
|
+-+ if (rt2x00dev->default_ant.rx_chain_num == 1) {
|
|
|
+- rt2800_bbp_write(rt2x00dev, 91, 0x07);
|
|
|
+- rt2800_bbp_write(rt2x00dev, 95, 0x1A);
|
|
|
+- rt2800_bbp_write(rt2x00dev, 195, 128);
|
|
|
+-@@ -4953,8 +4953,8 @@ void rt2800_vco_calibration(struct rt2x00_dev *rt2x00dev)
|
|
|
+- }
|
|
|
+-
|
|
|
+- if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
|
+-- rt2800_bbp_write(rt2x00dev, 75, 0x60);
|
|
|
+-- rt2800_bbp_write(rt2x00dev, 76, 0x44);
|
|
|
+-+ rt2800_bbp_write(rt2x00dev, 75, 0x68);
|
|
|
+-+ rt2800_bbp_write(rt2x00dev, 76, 0x4C);
|
|
|
+- rt2800_bbp_write(rt2x00dev, 79, 0x1C);
|
|
|
+- rt2800_bbp_write(rt2x00dev, 80, 0x0C);
|
|
|
+- rt2800_bbp_write(rt2x00dev, 82, 0xB6);
|
|
|
+---
|
|
|
+-2.12.2
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch b/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch
|
|
|
+deleted file mode 100644
|
|
|
+index 284a347f256f3499222acff54ebf9df0fa5aecf9..0000000000000000000000000000000000000000
|
|
|
+--- a/package/kernel/mac80211/patches/021-04-rt2800-fix-mt7620-E2-channel-registers.patch
|
|
|
++++ /dev/null
|
|
|
+@@ -1,41 +0,0 @@
|
|
|
+-From c426cb0ed15ee12dfdc8c53ddd1449ac617023cf Mon Sep 17 00:00:00 2001
|
|
|
+-From: Daniel Golle <daniel@makrotopia.org>
|
|
|
+-Date: Tue, 18 Apr 2017 11:45:37 +0200
|
|
|
+-Subject: [PATCH] rt2800: fix mt7620 E2 channel registers
|
|
|
+-To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
+-Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
+- linux-wireless@vger.kernel.org,
|
|
|
+- Kalle Valo <kvalo@codeaurora.org>,
|
|
|
+- Tom Psyborg <pozega.tomislav@gmail.com>
|
|
|
+-
|
|
|
+-From: Tomislav Požega <pozega.tomislav@gmail.com>
|
|
|
+-
|
|
|
+-update RF register 47 and 54 values according to vendor driver
|
|
|
+-
|
|
|
+-Signed-off-by: Tomislav Požega <pozega.tomislav@gmail.com>
|
|
|
+-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
+----
|
|
|
+- drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 6 ++++--
|
|
|
+- 1 file changed, 4 insertions(+), 2 deletions(-)
|
|
|
+-
|
|
|
+-diff --git a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-index 86cffee6876a..8585cdc3de53 100644
|
|
|
+---- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-+++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -8145,9 +8145,11 @@ static void rt2800_init_rfcsr_6352(struct rt2x00_dev *rt2x00dev)
|
|
|
+- rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xB3);
|
|
|
+- rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5);
|
|
|
+- rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27);
|
|
|
+-- rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x69);
|
|
|
+-+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0x67);
|
|
|
+-+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0x69);
|
|
|
+- rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFF);
|
|
|
+-- rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20);
|
|
|
+-+ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
|
|
|
+-+ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x20);
|
|
|
+- rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66);
|
|
|
+- rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF);
|
|
|
+- rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C);
|
|
|
+---
|
|
|
+-2.12.2
|
|
|
+-
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch b/package/kernel/mac80211/patches/323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..81567d87579aa6870b0862758acc692852cd369e
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0001-brcmfmac-Use-net_device_stats-from-struct-net_device.patch
|
|
|
+@@ -0,0 +1,112 @@
|
|
|
++From 91b632803ee4e47c5a5c4dc3d8bf5abf9c16107a Mon Sep 17 00:00:00 2001
|
|
|
++From: Tobias Klauser <tklauser@distanz.ch>
|
|
|
++Date: Mon, 13 Feb 2017 11:14:09 +0100
|
|
|
++Subject: [PATCH] brcmfmac: Use net_device_stats from struct net_device
|
|
|
++
|
|
|
++Instead of using a private copy of struct net_device_stats in struct
|
|
|
++brcm_if, use stats from struct net_device. Also remove the now
|
|
|
++unnecessary .ndo_get_stats function.
|
|
|
++
|
|
|
++Signed-off-by: Tobias Klauser <tklauser@distanz.ch>
|
|
|
++Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ .../wireless/broadcom/brcm80211/brcmfmac/core.c | 26 +++++++---------------
|
|
|
++ .../wireless/broadcom/brcm80211/brcmfmac/core.h | 2 --
|
|
|
++ 2 files changed, 8 insertions(+), 20 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
++@@ -249,10 +249,10 @@ static netdev_tx_t brcmf_netdev_start_xm
|
|
|
++
|
|
|
++ done:
|
|
|
++ if (ret) {
|
|
|
++- ifp->stats.tx_dropped++;
|
|
|
+++ ndev->stats.tx_dropped++;
|
|
|
++ } else {
|
|
|
++- ifp->stats.tx_packets++;
|
|
|
++- ifp->stats.tx_bytes += skb->len;
|
|
|
+++ ndev->stats.tx_packets++;
|
|
|
+++ ndev->stats.tx_bytes += skb->len;
|
|
|
++ }
|
|
|
++
|
|
|
++ /* Return ok: we always eat the packet */
|
|
|
++@@ -296,15 +296,15 @@ void brcmf_txflowblock(struct device *de
|
|
|
++ void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb)
|
|
|
++ {
|
|
|
++ if (skb->pkt_type == PACKET_MULTICAST)
|
|
|
++- ifp->stats.multicast++;
|
|
|
+++ ifp->ndev->stats.multicast++;
|
|
|
++
|
|
|
++ if (!(ifp->ndev->flags & IFF_UP)) {
|
|
|
++ brcmu_pkt_buf_free_skb(skb);
|
|
|
++ return;
|
|
|
++ }
|
|
|
++
|
|
|
++- ifp->stats.rx_bytes += skb->len;
|
|
|
++- ifp->stats.rx_packets++;
|
|
|
+++ ifp->ndev->stats.rx_bytes += skb->len;
|
|
|
+++ ifp->ndev->stats.rx_packets++;
|
|
|
++
|
|
|
++ brcmf_dbg(DATA, "rx proto=0x%X\n", ntohs(skb->protocol));
|
|
|
++ if (in_interrupt())
|
|
|
++@@ -327,7 +327,7 @@ static int brcmf_rx_hdrpull(struct brcmf
|
|
|
++
|
|
|
++ if (ret || !(*ifp) || !(*ifp)->ndev) {
|
|
|
++ if (ret != -ENODATA && *ifp)
|
|
|
++- (*ifp)->stats.rx_errors++;
|
|
|
+++ (*ifp)->ndev->stats.rx_errors++;
|
|
|
++ brcmu_pkt_buf_free_skb(skb);
|
|
|
++ return -ENODATA;
|
|
|
++ }
|
|
|
++@@ -388,7 +388,7 @@ void brcmf_txfinalize(struct brcmf_if *i
|
|
|
++ }
|
|
|
++
|
|
|
++ if (!success)
|
|
|
++- ifp->stats.tx_errors++;
|
|
|
+++ ifp->ndev->stats.tx_errors++;
|
|
|
++
|
|
|
++ brcmu_pkt_buf_free_skb(txp);
|
|
|
++ }
|
|
|
++@@ -411,15 +411,6 @@ void brcmf_txcomplete(struct device *dev
|
|
|
++ }
|
|
|
++ }
|
|
|
++
|
|
|
++-static struct net_device_stats *brcmf_netdev_get_stats(struct net_device *ndev)
|
|
|
++-{
|
|
|
++- struct brcmf_if *ifp = netdev_priv(ndev);
|
|
|
++-
|
|
|
++- brcmf_dbg(TRACE, "Enter, bsscfgidx=%d\n", ifp->bsscfgidx);
|
|
|
++-
|
|
|
++- return &ifp->stats;
|
|
|
++-}
|
|
|
++-
|
|
|
++ static void brcmf_ethtool_get_drvinfo(struct net_device *ndev,
|
|
|
++ struct ethtool_drvinfo *info)
|
|
|
++ {
|
|
|
++@@ -492,7 +483,6 @@ static int brcmf_netdev_open(struct net_
|
|
|
++ static const struct net_device_ops brcmf_netdev_ops_pri = {
|
|
|
++ .ndo_open = brcmf_netdev_open,
|
|
|
++ .ndo_stop = brcmf_netdev_stop,
|
|
|
++- .ndo_get_stats = brcmf_netdev_get_stats,
|
|
|
++ .ndo_start_xmit = brcmf_netdev_start_xmit,
|
|
|
++ .ndo_set_mac_address = brcmf_netdev_set_mac_address,
|
|
|
++ .ndo_set_rx_mode = brcmf_netdev_set_multicast_list
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.h
|
|
|
++@@ -171,7 +171,6 @@ enum brcmf_netif_stop_reason {
|
|
|
++ * @drvr: points to device related information.
|
|
|
++ * @vif: points to cfg80211 specific interface information.
|
|
|
++ * @ndev: associated network device.
|
|
|
++- * @stats: interface specific network statistics.
|
|
|
++ * @multicast_work: worker object for multicast provisioning.
|
|
|
++ * @ndoffload_work: worker object for neighbor discovery offload configuration.
|
|
|
++ * @fws_desc: interface specific firmware-signalling descriptor.
|
|
|
++@@ -187,7 +186,6 @@ struct brcmf_if {
|
|
|
++ struct brcmf_pub *drvr;
|
|
|
++ struct brcmf_cfg80211_vif *vif;
|
|
|
++ struct net_device *ndev;
|
|
|
++- struct net_device_stats stats;
|
|
|
++ struct work_struct multicast_work;
|
|
|
++ struct work_struct ndoffload_work;
|
|
|
++ struct brcmf_fws_mac_descriptor *fws_desc;
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0002-brcmfmac-always-print-error-when-PSM-s-watchdog-fire.patch b/package/kernel/mac80211/patches/323-0002-brcmfmac-always-print-error-when-PSM-s-watchdog-fire.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..7272b889c0bb829db55faaf32524c5762ddc4efd
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0002-brcmfmac-always-print-error-when-PSM-s-watchdog-fire.patch
|
|
|
+@@ -0,0 +1,148 @@
|
|
|
++From f1ac3aa212af6dd0a36dc07a63f95f91be6f4935 Mon Sep 17 00:00:00 2001
|
|
|
++From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
|
|
|
++Date: Fri, 24 Feb 2017 17:32:46 +0100
|
|
|
++Subject: [PATCH] brcmfmac: always print error when PSM's watchdog fires
|
|
|
++MIME-Version: 1.0
|
|
|
++Content-Type: text/plain; charset=UTF-8
|
|
|
++Content-Transfer-Encoding: 8bit
|
|
|
++
|
|
|
++So far we were attaching BRCMF_E_PSM_WATCHDOG event listener in
|
|
|
++brcmf_debug_attach which gets compiled only with CONFIG_BRCMDBG. This
|
|
|
++event means something went wrong and firmware / hardware usually can't
|
|
|
++be expected to work (reliably).
|
|
|
++
|
|
|
++Such a problem is significant for user experience so I believe we should
|
|
|
++print an error unconditionally (even with debugging disabled). What can
|
|
|
++be indeed optional is dumping bus memory as this is clearly part of
|
|
|
++debugging process.
|
|
|
++
|
|
|
++In the future we may also try to extend this listener by trying to
|
|
|
++recover from the error or at least signal it to the cfg80211.
|
|
|
++
|
|
|
++Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ .../wireless/broadcom/brcm80211/brcmfmac/core.c | 22 ++++++++++++++++++
|
|
|
++ .../wireless/broadcom/brcm80211/brcmfmac/debug.c | 26 +++-------------------
|
|
|
++ .../wireless/broadcom/brcm80211/brcmfmac/debug.h | 9 ++++++++
|
|
|
++ 3 files changed, 34 insertions(+), 23 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
++@@ -738,6 +738,24 @@ void brcmf_remove_interface(struct brcmf
|
|
|
++ brcmf_del_if(ifp->drvr, ifp->bsscfgidx, rtnl_locked);
|
|
|
++ }
|
|
|
++
|
|
|
+++static int brcmf_psm_watchdog_notify(struct brcmf_if *ifp,
|
|
|
+++ const struct brcmf_event_msg *evtmsg,
|
|
|
+++ void *data)
|
|
|
+++{
|
|
|
+++ int err;
|
|
|
+++
|
|
|
+++ brcmf_dbg(TRACE, "enter: bsscfgidx=%d\n", ifp->bsscfgidx);
|
|
|
+++
|
|
|
+++ brcmf_err("PSM's watchdog has fired!\n");
|
|
|
+++
|
|
|
+++ err = brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
|
|
|
+++ evtmsg->datalen);
|
|
|
+++ if (err)
|
|
|
+++ brcmf_err("Failed to get memory dump, %d\n", err);
|
|
|
+++
|
|
|
+++ return err;
|
|
|
+++}
|
|
|
+++
|
|
|
++ #ifdef CONFIG_INET
|
|
|
++ #define ARPOL_MAX_ENTRIES 8
|
|
|
++ static int brcmf_inetaddr_changed(struct notifier_block *nb,
|
|
|
++@@ -917,6 +935,10 @@ int brcmf_attach(struct device *dev, str
|
|
|
++ goto fail;
|
|
|
++ }
|
|
|
++
|
|
|
+++ /* Attach to events important for core code */
|
|
|
+++ brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG,
|
|
|
+++ brcmf_psm_watchdog_notify);
|
|
|
+++
|
|
|
++ /* attach firmware event handler */
|
|
|
++ brcmf_fweh_attach(drvr);
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.c
|
|
|
++@@ -27,8 +27,8 @@
|
|
|
++
|
|
|
++ static struct dentry *root_folder;
|
|
|
++
|
|
|
++-static int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
|
|
|
++- size_t len)
|
|
|
+++int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
|
|
|
+++ size_t len)
|
|
|
++ {
|
|
|
++ void *dump;
|
|
|
++ size_t ramsize;
|
|
|
++@@ -54,24 +54,6 @@ static int brcmf_debug_create_memdump(st
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
++
|
|
|
++-static int brcmf_debug_psm_watchdog_notify(struct brcmf_if *ifp,
|
|
|
++- const struct brcmf_event_msg *evtmsg,
|
|
|
++- void *data)
|
|
|
++-{
|
|
|
++- int err;
|
|
|
++-
|
|
|
++- brcmf_dbg(TRACE, "enter: bsscfgidx=%d\n", ifp->bsscfgidx);
|
|
|
++-
|
|
|
++- brcmf_err("PSM's watchdog has fired!\n");
|
|
|
++-
|
|
|
++- err = brcmf_debug_create_memdump(ifp->drvr->bus_if, data,
|
|
|
++- evtmsg->datalen);
|
|
|
++- if (err)
|
|
|
++- brcmf_err("Failed to get memory dump, %d\n", err);
|
|
|
++-
|
|
|
++- return err;
|
|
|
++-}
|
|
|
++-
|
|
|
++ void brcmf_debugfs_init(void)
|
|
|
++ {
|
|
|
++ root_folder = debugfs_create_dir(KBUILD_MODNAME, NULL);
|
|
|
++@@ -99,9 +81,7 @@ int brcmf_debug_attach(struct brcmf_pub
|
|
|
++ if (IS_ERR(drvr->dbgfs_dir))
|
|
|
++ return PTR_ERR(drvr->dbgfs_dir);
|
|
|
++
|
|
|
++-
|
|
|
++- return brcmf_fweh_register(drvr, BRCMF_E_PSM_WATCHDOG,
|
|
|
++- brcmf_debug_psm_watchdog_notify);
|
|
|
+++ return 0;
|
|
|
++ }
|
|
|
++
|
|
|
++ void brcmf_debug_detach(struct brcmf_pub *drvr)
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
|
|
|
++@@ -99,6 +99,7 @@ do { \
|
|
|
++
|
|
|
++ extern int brcmf_msg_level;
|
|
|
++
|
|
|
+++struct brcmf_bus;
|
|
|
++ struct brcmf_pub;
|
|
|
++ #ifdef DEBUG
|
|
|
++ void brcmf_debugfs_init(void);
|
|
|
++@@ -108,6 +109,8 @@ void brcmf_debug_detach(struct brcmf_pub
|
|
|
++ struct dentry *brcmf_debugfs_get_devdir(struct brcmf_pub *drvr);
|
|
|
++ int brcmf_debugfs_add_entry(struct brcmf_pub *drvr, const char *fn,
|
|
|
++ int (*read_fn)(struct seq_file *seq, void *data));
|
|
|
+++int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
|
|
|
+++ size_t len);
|
|
|
++ #else
|
|
|
++ static inline void brcmf_debugfs_init(void)
|
|
|
++ {
|
|
|
++@@ -128,6 +131,12 @@ int brcmf_debugfs_add_entry(struct brcmf
|
|
|
++ {
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
+++static inline
|
|
|
+++int brcmf_debug_create_memdump(struct brcmf_bus *bus, const void *data,
|
|
|
+++ size_t len)
|
|
|
+++{
|
|
|
+++ return 0;
|
|
|
+++}
|
|
|
++ #endif
|
|
|
++
|
|
|
++ #endif /* BRCMFMAC_DEBUG_H */
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0003-brcmfmac-Do-not-print-the-firmware-version-as-an-err.patch b/package/kernel/mac80211/patches/323-0003-brcmfmac-Do-not-print-the-firmware-version-as-an-err.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..3ab9b66e088edc980b4ca9565ecad2ead7bcc679
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0003-brcmfmac-Do-not-print-the-firmware-version-as-an-err.patch
|
|
|
+@@ -0,0 +1,56 @@
|
|
|
++From d79fe4cb70d8deab7b8dc1de547ed4b915574414 Mon Sep 17 00:00:00 2001
|
|
|
++From: Hans de Goede <hdegoede@redhat.com>
|
|
|
++Date: Wed, 8 Mar 2017 14:50:15 +0100
|
|
|
++Subject: [PATCH] brcmfmac: Do not print the firmware version as an error
|
|
|
++
|
|
|
++Using pr_err for things which are not errors is a bad idea. E.g. it
|
|
|
++will cause the plymouth bootsplash screen to drop back to the text
|
|
|
++console so that the user can see the error, which is not what we
|
|
|
++normally want to happen.
|
|
|
++
|
|
|
++Instead add a new brcmf_info macro and use that.
|
|
|
++
|
|
|
++Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
|
++Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c | 2 +-
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h | 9 +++++++++
|
|
|
++ 2 files changed, 10 insertions(+), 1 deletion(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c
|
|
|
++@@ -161,7 +161,7 @@ int brcmf_c_preinit_dcmds(struct brcmf_i
|
|
|
++ strsep(&ptr, "\n");
|
|
|
++
|
|
|
++ /* Print fw version info */
|
|
|
++- brcmf_err("Firmware version = %s\n", buf);
|
|
|
+++ brcmf_info("Firmware version = %s\n", buf);
|
|
|
++
|
|
|
++ /* locate firmware version number for ethtool */
|
|
|
++ ptr = strrchr(buf, ' ') + 1;
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/debug.h
|
|
|
++@@ -59,6 +59,10 @@ void __brcmf_err(const char *func, const
|
|
|
++ } while (0)
|
|
|
++
|
|
|
++ #if defined(DEBUG) || defined(CPTCFG_BRCM_TRACING)
|
|
|
+++
|
|
|
+++/* For debug/tracing purposes treat info messages as errors */
|
|
|
+++#define brcmf_info brcmf_err
|
|
|
+++
|
|
|
++ __printf(3, 4)
|
|
|
++ void __brcmf_dbg(u32 level, const char *func, const char *fmt, ...);
|
|
|
++ #define brcmf_dbg(level, fmt, ...) \
|
|
|
++@@ -77,6 +81,11 @@ do { \
|
|
|
++
|
|
|
++ #else /* defined(DEBUG) || defined(CPTCFG_BRCM_TRACING) */
|
|
|
++
|
|
|
+++#define brcmf_info(fmt, ...) \
|
|
|
+++ do { \
|
|
|
+++ pr_info("%s: " fmt, __func__, ##__VA_ARGS__); \
|
|
|
+++ } while (0)
|
|
|
+++
|
|
|
++ #define brcmf_dbg(level, fmt, ...) no_printk(fmt, ##__VA_ARGS__)
|
|
|
++
|
|
|
++ #define BRCMF_DATA_ON() 0
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0004-brcmfmac-Do-not-complain-about-country-code-00.patch b/package/kernel/mac80211/patches/323-0004-brcmfmac-Do-not-complain-about-country-code-00.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..f4570e71b1177abb92965d099b0dfd67f35b703f
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0004-brcmfmac-Do-not-complain-about-country-code-00.patch
|
|
|
+@@ -0,0 +1,28 @@
|
|
|
++From 26e537884a8ef451f5c60f6949b1615069931ffa Mon Sep 17 00:00:00 2001
|
|
|
++From: Hans de Goede <hdegoede@redhat.com>
|
|
|
++Date: Wed, 8 Mar 2017 14:50:16 +0100
|
|
|
++Subject: [PATCH] brcmfmac: Do not complain about country code "00"
|
|
|
++
|
|
|
++The country code gets set to "00" by default at boot, ignore this
|
|
|
++rather then logging an error about it.
|
|
|
++
|
|
|
++Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
|
++Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 4 ++++
|
|
|
++ 1 file changed, 4 insertions(+)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
|
++@@ -6736,6 +6736,10 @@ static void brcmf_cfg80211_reg_notifier(
|
|
|
++ s32 err;
|
|
|
++ int i;
|
|
|
++
|
|
|
+++ /* The country code gets set to "00" by default at boot, ignore */
|
|
|
+++ if (req->alpha2[0] == '0' && req->alpha2[1] == '0')
|
|
|
+++ return;
|
|
|
+++
|
|
|
++ /* ignore non-ISO3166 country codes */
|
|
|
++ for (i = 0; i < sizeof(req->alpha2); i++)
|
|
|
++ if (req->alpha2[i] < 'A' || req->alpha2[i] > 'Z') {
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0005-brcmfmac-Handle-status-BRCMF_E_STATUS_ABORT-in-cfg80.patch b/package/kernel/mac80211/patches/323-0005-brcmfmac-Handle-status-BRCMF_E_STATUS_ABORT-in-cfg80.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..0f2d54e1dd1308db876723aee4dc762a5f2e675c
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0005-brcmfmac-Handle-status-BRCMF_E_STATUS_ABORT-in-cfg80.patch
|
|
|
+@@ -0,0 +1,35 @@
|
|
|
++From b9472a2e3e452c414634b3ccb1ef6c4098878686 Mon Sep 17 00:00:00 2001
|
|
|
++From: Hans de Goede <hdegoede@redhat.com>
|
|
|
++Date: Wed, 8 Mar 2017 14:50:17 +0100
|
|
|
++Subject: [PATCH] brcmfmac: Handle status == BRCMF_E_STATUS_ABORT in
|
|
|
++ cfg80211_escan_handler
|
|
|
++
|
|
|
++If a scan gets aborted BRCMF_SCAN_STATUS_BUSY gets cleared in
|
|
|
++cfg->scan_status and when we receive an abort event from the firmware
|
|
|
++the BRCMF_SCAN_STATUS_BUSY check in the cfg80211_escan_handler will
|
|
|
++trigger resulting in multiple errors getting logged.
|
|
|
++
|
|
|
++Check for a status of BRCMF_E_STATUS_ABORT and in this case simply
|
|
|
++cleanly exit the cfg80211_escan_handler. This also avoids a
|
|
|
++BRCMF_E_STATUS_ABORT event arriving after a new scan has been started
|
|
|
++causing the new scan to complete prematurely without any data.
|
|
|
++
|
|
|
++Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
|
++Acked-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c | 3 +++
|
|
|
++ 1 file changed, 3 insertions(+)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c
|
|
|
++@@ -3097,6 +3097,9 @@ brcmf_cfg80211_escan_handler(struct brcm
|
|
|
++
|
|
|
++ status = e->status;
|
|
|
++
|
|
|
+++ if (status == BRCMF_E_STATUS_ABORT)
|
|
|
+++ goto exit;
|
|
|
+++
|
|
|
++ if (!test_bit(BRCMF_SCAN_STATUS_BUSY, &cfg->scan_status)) {
|
|
|
++ brcmf_err("scan not ready, bsscfgidx=%d\n", ifp->bsscfgidx);
|
|
|
++ return -EPERM;
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch b/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..b947cd1de91f67084e6978d8f53022544fa2f737
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0006-brcmfmac-move-brcmf_txflowblock-to-bcdc-layer.patch
|
|
|
+@@ -0,0 +1,137 @@
|
|
|
++From 20ec4f57498f8770c7a1a3e2a316fa752a424178 Mon Sep 17 00:00:00 2001
|
|
|
++From: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Date: Fri, 10 Mar 2017 21:17:02 +0000
|
|
|
++Subject: [PATCH] brcmfmac: move brcmf_txflowblock to bcdc layer
|
|
|
++
|
|
|
++brcmf_txflowblock is invoked by sdio and usb bus module which are using
|
|
|
++bcdc protocol. This patch makes it a bcdc API instead of a core module
|
|
|
++function.
|
|
|
++
|
|
|
++Reviewed-by: Arend Van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 10 ++++++++++
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h | 1 +
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 2 --
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 10 ----------
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 5 +++--
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 5 +++--
|
|
|
++ 6 files changed, 17 insertions(+), 16 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
++@@ -345,6 +345,16 @@ brcmf_proto_bcdc_txdata(struct brcmf_pub
|
|
|
++ return brcmf_bus_txdata(drvr->bus_if, pktbuf);
|
|
|
++ }
|
|
|
++
|
|
|
+++void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state)
|
|
|
+++{
|
|
|
+++ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
|
|
+++ struct brcmf_pub *drvr = bus_if->drvr;
|
|
|
+++
|
|
|
+++ brcmf_dbg(TRACE, "Enter\n");
|
|
|
+++
|
|
|
+++ brcmf_fws_bus_blocked(drvr, state);
|
|
|
+++}
|
|
|
+++
|
|
|
++ static void
|
|
|
++ brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx,
|
|
|
++ enum proto_addr_mode addr_mode)
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
|
|
|
++@@ -19,6 +19,7 @@
|
|
|
++ #ifdef CPTCFG_BRCMFMAC_PROTO_BCDC
|
|
|
++ int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
|
|
|
++ void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
|
|
|
+++void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state);
|
|
|
++ #else
|
|
|
++ static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; }
|
|
|
++ static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
|
|
++@@ -229,8 +229,6 @@ int brcmf_attach(struct device *dev, str
|
|
|
++ void brcmf_detach(struct device *dev);
|
|
|
++ /* Indication from bus module that dongle should be reset */
|
|
|
++ void brcmf_dev_reset(struct device *dev);
|
|
|
++-/* Indication from bus module to change flow-control state */
|
|
|
++-void brcmf_txflowblock(struct device *dev, bool state);
|
|
|
++
|
|
|
++ /* Notify the bus has transferred the tx packet to firmware */
|
|
|
++ void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
++@@ -283,16 +283,6 @@ void brcmf_txflowblock_if(struct brcmf_i
|
|
|
++ spin_unlock_irqrestore(&ifp->netif_stop_lock, flags);
|
|
|
++ }
|
|
|
++
|
|
|
++-void brcmf_txflowblock(struct device *dev, bool state)
|
|
|
++-{
|
|
|
++- struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
|
|
++- struct brcmf_pub *drvr = bus_if->drvr;
|
|
|
++-
|
|
|
++- brcmf_dbg(TRACE, "Enter\n");
|
|
|
++-
|
|
|
++- brcmf_fws_bus_blocked(drvr, state);
|
|
|
++-}
|
|
|
++-
|
|
|
++ void brcmf_netif_rx(struct brcmf_if *ifp, struct sk_buff *skb)
|
|
|
++ {
|
|
|
++ if (skb->pkt_type == PACKET_MULTICAST)
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
|
++@@ -44,6 +44,7 @@
|
|
|
++ #include "firmware.h"
|
|
|
++ #include "core.h"
|
|
|
++ #include "common.h"
|
|
|
+++#include "bcdc.h"
|
|
|
++
|
|
|
++ #define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500)
|
|
|
++ #define CTL_DONE_TIMEOUT msecs_to_jiffies(2500)
|
|
|
++@@ -2328,7 +2329,7 @@ static uint brcmf_sdio_sendfromq(struct
|
|
|
++ if ((bus->sdiodev->state == BRCMF_SDIOD_DATA) &&
|
|
|
++ bus->txoff && (pktq_len(&bus->txq) < TXLOW)) {
|
|
|
++ bus->txoff = false;
|
|
|
++- brcmf_txflowblock(bus->sdiodev->dev, false);
|
|
|
+++ brcmf_proto_bcdc_txflowblock(bus->sdiodev->dev, false);
|
|
|
++ }
|
|
|
++
|
|
|
++ return cnt;
|
|
|
++@@ -2753,7 +2754,7 @@ static int brcmf_sdio_bus_txdata(struct
|
|
|
++
|
|
|
++ if (pktq_len(&bus->txq) >= TXHI) {
|
|
|
++ bus->txoff = true;
|
|
|
++- brcmf_txflowblock(dev, true);
|
|
|
+++ brcmf_proto_bcdc_txflowblock(dev, true);
|
|
|
++ }
|
|
|
++ spin_unlock_bh(&bus->txq_lock);
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
|
++@@ -29,6 +29,7 @@
|
|
|
++ #include "usb.h"
|
|
|
++ #include "core.h"
|
|
|
++ #include "common.h"
|
|
|
+++#include "bcdc.h"
|
|
|
++
|
|
|
++
|
|
|
++ #define IOCTL_RESP_TIMEOUT msecs_to_jiffies(2000)
|
|
|
++@@ -488,7 +489,7 @@ static void brcmf_usb_tx_complete(struct
|
|
|
++ spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
|
|
|
++ if (devinfo->tx_freecount > devinfo->tx_high_watermark &&
|
|
|
++ devinfo->tx_flowblock) {
|
|
|
++- brcmf_txflowblock(devinfo->dev, false);
|
|
|
+++ brcmf_proto_bcdc_txflowblock(devinfo->dev, false);
|
|
|
++ devinfo->tx_flowblock = false;
|
|
|
++ }
|
|
|
++ spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags);
|
|
|
++@@ -635,7 +636,7 @@ static int brcmf_usb_tx(struct device *d
|
|
|
++ spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
|
|
|
++ if (devinfo->tx_freecount < devinfo->tx_low_watermark &&
|
|
|
++ !devinfo->tx_flowblock) {
|
|
|
++- brcmf_txflowblock(dev, true);
|
|
|
+++ brcmf_proto_bcdc_txflowblock(dev, true);
|
|
|
++ devinfo->tx_flowblock = true;
|
|
|
++ }
|
|
|
++ spin_unlock_irqrestore(&devinfo->tx_flowblock_lock, flags);
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0007-brcmfmac-move-brcmf_txcomplete-to-bcdc-layer.patch b/package/kernel/mac80211/patches/323-0007-brcmfmac-move-brcmf_txcomplete-to-bcdc-layer.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..9614e53e51b24afd48876ea4e0c805583acf472a
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0007-brcmfmac-move-brcmf_txcomplete-to-bcdc-layer.patch
|
|
|
+@@ -0,0 +1,122 @@
|
|
|
++From 7b584396b7a760bc77bbde4625f83ef173159d3e Mon Sep 17 00:00:00 2001
|
|
|
++From: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Date: Fri, 10 Mar 2017 21:17:03 +0000
|
|
|
++Subject: [PATCH] brcmfmac: move brcmf_txcomplete to bcdc layer
|
|
|
++
|
|
|
++brcmf_txcomplete is invoked by sdio and usb bus module which are using
|
|
|
++bcdc protocol. So move it from core module into bcdc layer.
|
|
|
++
|
|
|
++Signed-off-by: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ .../net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 20 ++++++++++++++++++++
|
|
|
++ .../net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h | 2 ++
|
|
|
++ .../net/wireless/broadcom/brcm80211/brcmfmac/bus.h | 3 ---
|
|
|
++ .../net/wireless/broadcom/brcm80211/brcmfmac/core.c | 18 ------------------
|
|
|
++ .../net/wireless/broadcom/brcm80211/brcmfmac/sdio.c | 3 ++-
|
|
|
++ .../net/wireless/broadcom/brcm80211/brcmfmac/usb.c | 2 +-
|
|
|
++ 6 files changed, 25 insertions(+), 23 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
++@@ -355,6 +355,26 @@ void brcmf_proto_bcdc_txflowblock(struct
|
|
|
++ brcmf_fws_bus_blocked(drvr, state);
|
|
|
++ }
|
|
|
++
|
|
|
+++void
|
|
|
+++brcmf_proto_bcdc_txcomplete(struct device *dev, struct sk_buff *txp,
|
|
|
+++ bool success)
|
|
|
+++{
|
|
|
+++ struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
|
|
+++ struct brcmf_pub *drvr = bus_if->drvr;
|
|
|
+++ struct brcmf_if *ifp;
|
|
|
+++
|
|
|
+++ /* await txstatus signal for firmware if active */
|
|
|
+++ if (brcmf_fws_fc_active(drvr->fws)) {
|
|
|
+++ if (!success)
|
|
|
+++ brcmf_fws_bustxfail(drvr->fws, txp);
|
|
|
+++ } else {
|
|
|
+++ if (brcmf_proto_bcdc_hdrpull(drvr, false, txp, &ifp))
|
|
|
+++ brcmu_pkt_buf_free_skb(txp);
|
|
|
+++ else
|
|
|
+++ brcmf_txfinalize(ifp, txp, success);
|
|
|
+++ }
|
|
|
+++}
|
|
|
+++
|
|
|
++ static void
|
|
|
++ brcmf_proto_bcdc_configure_addr_mode(struct brcmf_pub *drvr, int ifidx,
|
|
|
++ enum proto_addr_mode addr_mode)
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.h
|
|
|
++@@ -20,6 +20,8 @@
|
|
|
++ int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr);
|
|
|
++ void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr);
|
|
|
++ void brcmf_proto_bcdc_txflowblock(struct device *dev, bool state);
|
|
|
+++void brcmf_proto_bcdc_txcomplete(struct device *dev, struct sk_buff *txp,
|
|
|
+++ bool success);
|
|
|
++ #else
|
|
|
++ static inline int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr) { return 0; }
|
|
|
++ static inline void brcmf_proto_bcdc_detach(struct brcmf_pub *drvr) {}
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bus.h
|
|
|
++@@ -230,9 +230,6 @@ void brcmf_detach(struct device *dev);
|
|
|
++ /* Indication from bus module that dongle should be reset */
|
|
|
++ void brcmf_dev_reset(struct device *dev);
|
|
|
++
|
|
|
++-/* Notify the bus has transferred the tx packet to firmware */
|
|
|
++-void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success);
|
|
|
++-
|
|
|
++ /* Configure the "global" bus state used by upper layers */
|
|
|
++ void brcmf_bus_change_state(struct brcmf_bus *bus, enum brcmf_bus_state state);
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
++@@ -383,24 +383,6 @@ void brcmf_txfinalize(struct brcmf_if *i
|
|
|
++ brcmu_pkt_buf_free_skb(txp);
|
|
|
++ }
|
|
|
++
|
|
|
++-void brcmf_txcomplete(struct device *dev, struct sk_buff *txp, bool success)
|
|
|
++-{
|
|
|
++- struct brcmf_bus *bus_if = dev_get_drvdata(dev);
|
|
|
++- struct brcmf_pub *drvr = bus_if->drvr;
|
|
|
++- struct brcmf_if *ifp;
|
|
|
++-
|
|
|
++- /* await txstatus signal for firmware if active */
|
|
|
++- if (brcmf_fws_fc_active(drvr->fws)) {
|
|
|
++- if (!success)
|
|
|
++- brcmf_fws_bustxfail(drvr->fws, txp);
|
|
|
++- } else {
|
|
|
++- if (brcmf_proto_hdrpull(drvr, false, txp, &ifp))
|
|
|
++- brcmu_pkt_buf_free_skb(txp);
|
|
|
++- else
|
|
|
++- brcmf_txfinalize(ifp, txp, success);
|
|
|
++- }
|
|
|
++-}
|
|
|
++-
|
|
|
++ static void brcmf_ethtool_get_drvinfo(struct net_device *ndev,
|
|
|
++ struct ethtool_drvinfo *info)
|
|
|
++ {
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
|
|
|
++@@ -2266,7 +2266,8 @@ done:
|
|
|
++ bus->tx_seq = (bus->tx_seq + pktq->qlen) % SDPCM_SEQ_WRAP;
|
|
|
++ skb_queue_walk_safe(pktq, pkt_next, tmp) {
|
|
|
++ __skb_unlink(pkt_next, pktq);
|
|
|
++- brcmf_txcomplete(bus->sdiodev->dev, pkt_next, ret == 0);
|
|
|
+++ brcmf_proto_bcdc_txcomplete(bus->sdiodev->dev, pkt_next,
|
|
|
+++ ret == 0);
|
|
|
++ }
|
|
|
++ return ret;
|
|
|
++ }
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/usb.c
|
|
|
++@@ -483,7 +483,7 @@ static void brcmf_usb_tx_complete(struct
|
|
|
++ req->skb);
|
|
|
++ brcmf_usb_del_fromq(devinfo, req);
|
|
|
++
|
|
|
++- brcmf_txcomplete(devinfo->dev, req->skb, urb->status == 0);
|
|
|
+++ brcmf_proto_bcdc_txcomplete(devinfo->dev, req->skb, urb->status == 0);
|
|
|
++ req->skb = NULL;
|
|
|
++ brcmf_usb_enq(devinfo, &devinfo->tx_freeq, req, &devinfo->tx_freecount);
|
|
|
++ spin_lock_irqsave(&devinfo->tx_flowblock_lock, flags);
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0008-brcmfmac-wrap-brcmf_fws_add_interface-into-bcdc-laye.patch b/package/kernel/mac80211/patches/323-0008-brcmfmac-wrap-brcmf_fws_add_interface-into-bcdc-laye.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..a68c6ab0c33d1a18ff315540cfb1d6be83cb0056
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0008-brcmfmac-wrap-brcmf_fws_add_interface-into-bcdc-laye.patch
|
|
|
+@@ -0,0 +1,95 @@
|
|
|
++From 9fdc64bbdbe7bd546e0fbcedd2f1c03448c6df42 Mon Sep 17 00:00:00 2001
|
|
|
++From: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Date: Fri, 10 Mar 2017 21:17:04 +0000
|
|
|
++Subject: [PATCH] brcmfmac: wrap brcmf_fws_add_interface into bcdc layer
|
|
|
++
|
|
|
++fwsignal is only used by bcdc. Create a new protocol interface function
|
|
|
++brcmf_proto_add_if for core module to notify protocol layer upon a new
|
|
|
++interface is created.
|
|
|
++
|
|
|
++Signed-off-by: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 7 +++++++
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 2 +-
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 3 ++-
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++
|
|
|
++ 4 files changed, 19 insertions(+), 2 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
++@@ -399,6 +399,12 @@ static void brcmf_proto_bcdc_rxreorder(s
|
|
|
++ brcmf_fws_rxreorder(ifp, skb);
|
|
|
++ }
|
|
|
++
|
|
|
+++static void
|
|
|
+++brcmf_proto_bcdc_add_if(struct brcmf_if *ifp)
|
|
|
+++{
|
|
|
+++ brcmf_fws_add_interface(ifp);
|
|
|
+++}
|
|
|
+++
|
|
|
++ int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
|
|
|
++ {
|
|
|
++ struct brcmf_bcdc *bcdc;
|
|
|
++@@ -422,6 +428,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
|
|
|
++ drvr->proto->delete_peer = brcmf_proto_bcdc_delete_peer;
|
|
|
++ drvr->proto->add_tdls_peer = brcmf_proto_bcdc_add_tdls_peer;
|
|
|
++ drvr->proto->rxreorder = brcmf_proto_bcdc_rxreorder;
|
|
|
+++ drvr->proto->add_if = brcmf_proto_bcdc_add_if;
|
|
|
++ drvr->proto->pd = bcdc;
|
|
|
++
|
|
|
++ drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
++@@ -990,7 +990,7 @@ int brcmf_bus_started(struct device *dev
|
|
|
++ if (ret < 0)
|
|
|
++ goto fail;
|
|
|
++
|
|
|
++- brcmf_fws_add_interface(ifp);
|
|
|
+++ brcmf_proto_add_if(drvr, ifp);
|
|
|
++
|
|
|
++ drvr->config = brcmf_cfg80211_attach(drvr, bus_if->dev,
|
|
|
++ drvr->settings->p2p_enable);
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
|
|
|
++@@ -25,6 +25,7 @@
|
|
|
++ #include "fwsignal.h"
|
|
|
++ #include "fweh.h"
|
|
|
++ #include "fwil.h"
|
|
|
+++#include "proto.h"
|
|
|
++
|
|
|
++ /**
|
|
|
++ * struct brcmf_fweh_queue_item - event item on event queue.
|
|
|
++@@ -172,7 +173,7 @@ static void brcmf_fweh_handle_if_event(s
|
|
|
++ if (IS_ERR(ifp))
|
|
|
++ return;
|
|
|
++ if (!is_p2pdev)
|
|
|
++- brcmf_fws_add_interface(ifp);
|
|
|
+++ brcmf_proto_add_if(drvr, ifp);
|
|
|
++ if (!drvr->fweh.evt_handler[BRCMF_E_IF])
|
|
|
++ if (brcmf_net_attach(ifp, false) < 0)
|
|
|
++ return;
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
|
|
|
++@@ -44,6 +44,7 @@ struct brcmf_proto {
|
|
|
++ void (*add_tdls_peer)(struct brcmf_pub *drvr, int ifidx,
|
|
|
++ u8 peer[ETH_ALEN]);
|
|
|
++ void (*rxreorder)(struct brcmf_if *ifp, struct sk_buff *skb);
|
|
|
+++ void (*add_if)(struct brcmf_if *ifp);
|
|
|
++ void *pd;
|
|
|
++ };
|
|
|
++
|
|
|
++@@ -118,4 +119,12 @@ brcmf_proto_rxreorder(struct brcmf_if *i
|
|
|
++ ifp->drvr->proto->rxreorder(ifp, skb);
|
|
|
++ }
|
|
|
++
|
|
|
+++static inline void
|
|
|
+++brcmf_proto_add_if(struct brcmf_pub *drvr, struct brcmf_if *ifp)
|
|
|
+++{
|
|
|
+++ if (!drvr->proto->add_if)
|
|
|
+++ return;
|
|
|
+++ drvr->proto->add_if(ifp);
|
|
|
+++}
|
|
|
+++
|
|
|
++ #endif /* BRCMFMAC_PROTO_H */
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0009-brcmfmac-wrap-brcmf_fws_del_interface-into-bcdc-laye.patch b/package/kernel/mac80211/patches/323-0009-brcmfmac-wrap-brcmf_fws_del_interface-into-bcdc-laye.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..ded8d7b944de5515912fbae5b1351eb97fc0c59e
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0009-brcmfmac-wrap-brcmf_fws_del_interface-into-bcdc-laye.patch
|
|
|
+@@ -0,0 +1,83 @@
|
|
|
++From c02a5eb82056f75615cb48aa540bfd245f489b99 Mon Sep 17 00:00:00 2001
|
|
|
++From: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Date: Fri, 10 Mar 2017 21:17:05 +0000
|
|
|
++Subject: [PATCH] brcmfmac: wrap brcmf_fws_del_interface into bcdc layer
|
|
|
++
|
|
|
++Create a new protocol interface function brcmf_proto_del_if for core
|
|
|
++module to notify protocol layer upon interface deletion.
|
|
|
++
|
|
|
++Signed-off-by: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 7 +++++++
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c | 4 ++--
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++
|
|
|
++ 3 files changed, 18 insertions(+), 2 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
++@@ -405,6 +405,12 @@ brcmf_proto_bcdc_add_if(struct brcmf_if
|
|
|
++ brcmf_fws_add_interface(ifp);
|
|
|
++ }
|
|
|
++
|
|
|
+++static void
|
|
|
+++brcmf_proto_bcdc_del_if(struct brcmf_if *ifp)
|
|
|
+++{
|
|
|
+++ brcmf_fws_del_interface(ifp);
|
|
|
+++}
|
|
|
+++
|
|
|
++ int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
|
|
|
++ {
|
|
|
++ struct brcmf_bcdc *bcdc;
|
|
|
++@@ -429,6 +435,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
|
|
|
++ drvr->proto->add_tdls_peer = brcmf_proto_bcdc_add_tdls_peer;
|
|
|
++ drvr->proto->rxreorder = brcmf_proto_bcdc_rxreorder;
|
|
|
++ drvr->proto->add_if = brcmf_proto_bcdc_add_if;
|
|
|
+++ drvr->proto->del_if = brcmf_proto_bcdc_del_if;
|
|
|
++ drvr->proto->pd = bcdc;
|
|
|
++
|
|
|
++ drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
++@@ -706,7 +706,7 @@ void brcmf_remove_interface(struct brcmf
|
|
|
++ return;
|
|
|
++ brcmf_dbg(TRACE, "Enter, bsscfgidx=%d, ifidx=%d\n", ifp->bsscfgidx,
|
|
|
++ ifp->ifidx);
|
|
|
++- brcmf_fws_del_interface(ifp);
|
|
|
+++ brcmf_proto_del_if(ifp->drvr, ifp);
|
|
|
++ brcmf_del_if(ifp->drvr, ifp->bsscfgidx, rtnl_locked);
|
|
|
++ }
|
|
|
++
|
|
|
++@@ -1035,7 +1035,7 @@ fail:
|
|
|
++ drvr->config = NULL;
|
|
|
++ }
|
|
|
++ if (drvr->fws) {
|
|
|
++- brcmf_fws_del_interface(ifp);
|
|
|
+++ brcmf_proto_del_if(ifp->drvr, ifp);
|
|
|
++ brcmf_fws_deinit(drvr);
|
|
|
++ }
|
|
|
++ brcmf_net_detach(ifp->ndev, false);
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
|
|
|
++@@ -45,6 +45,7 @@ struct brcmf_proto {
|
|
|
++ u8 peer[ETH_ALEN]);
|
|
|
++ void (*rxreorder)(struct brcmf_if *ifp, struct sk_buff *skb);
|
|
|
++ void (*add_if)(struct brcmf_if *ifp);
|
|
|
+++ void (*del_if)(struct brcmf_if *ifp);
|
|
|
++ void *pd;
|
|
|
++ };
|
|
|
++
|
|
|
++@@ -127,4 +128,12 @@ brcmf_proto_add_if(struct brcmf_pub *drv
|
|
|
++ drvr->proto->add_if(ifp);
|
|
|
++ }
|
|
|
++
|
|
|
+++static inline void
|
|
|
+++brcmf_proto_del_if(struct brcmf_pub *drvr, struct brcmf_if *ifp)
|
|
|
+++{
|
|
|
+++ if (!drvr->proto->del_if)
|
|
|
+++ return;
|
|
|
+++ drvr->proto->del_if(ifp);
|
|
|
+++}
|
|
|
+++
|
|
|
++ #endif /* BRCMFMAC_PROTO_H */
|
|
|
+diff --git a/package/kernel/mac80211/patches/323-0010-brcmfmac-wrap-brcmf_fws_reset_interface-into-bcdc-la.patch b/package/kernel/mac80211/patches/323-0010-brcmfmac-wrap-brcmf_fws_reset_interface-into-bcdc-la.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..34e71d8f5cccc550b901890b5619a7f67123335a
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/323-0010-brcmfmac-wrap-brcmf_fws_reset_interface-into-bcdc-la.patch
|
|
|
+@@ -0,0 +1,82 @@
|
|
|
++From 66ded1f8b33cdd9d6d3e20f5f8dd23615a110e70 Mon Sep 17 00:00:00 2001
|
|
|
++From: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Date: Fri, 10 Mar 2017 21:17:06 +0000
|
|
|
++Subject: [PATCH] brcmfmac: wrap brcmf_fws_reset_interface into bcdc layer
|
|
|
++
|
|
|
++Create a new protocol interface function brcmf_proto_reset_if for core
|
|
|
++module to notify protocol layer when interface role changes.
|
|
|
++
|
|
|
++Signed-off-by: Franky Lin <franky.lin@broadcom.com>
|
|
|
++Signed-off-by: Arend van Spriel <arend.vanspriel@broadcom.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c | 7 +++++++
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c | 3 +--
|
|
|
++ drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h | 9 +++++++++
|
|
|
++ 3 files changed, 17 insertions(+), 2 deletions(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcdc.c
|
|
|
++@@ -411,6 +411,12 @@ brcmf_proto_bcdc_del_if(struct brcmf_if
|
|
|
++ brcmf_fws_del_interface(ifp);
|
|
|
++ }
|
|
|
++
|
|
|
+++static void
|
|
|
+++brcmf_proto_bcdc_reset_if(struct brcmf_if *ifp)
|
|
|
+++{
|
|
|
+++ brcmf_fws_reset_interface(ifp);
|
|
|
+++}
|
|
|
+++
|
|
|
++ int brcmf_proto_bcdc_attach(struct brcmf_pub *drvr)
|
|
|
++ {
|
|
|
++ struct brcmf_bcdc *bcdc;
|
|
|
++@@ -436,6 +442,7 @@ int brcmf_proto_bcdc_attach(struct brcmf
|
|
|
++ drvr->proto->rxreorder = brcmf_proto_bcdc_rxreorder;
|
|
|
++ drvr->proto->add_if = brcmf_proto_bcdc_add_if;
|
|
|
++ drvr->proto->del_if = brcmf_proto_bcdc_del_if;
|
|
|
+++ drvr->proto->reset_if = brcmf_proto_bcdc_reset_if;
|
|
|
++ drvr->proto->pd = bcdc;
|
|
|
++
|
|
|
++ drvr->hdrlen += BCDC_HEADER_LEN + BRCMF_PROT_FW_SIGNAL_MAX_TXBYTES;
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/fweh.c
|
|
|
++@@ -22,7 +22,6 @@
|
|
|
++ #include "core.h"
|
|
|
++ #include "debug.h"
|
|
|
++ #include "tracepoint.h"
|
|
|
++-#include "fwsignal.h"
|
|
|
++ #include "fweh.h"
|
|
|
++ #include "fwil.h"
|
|
|
++ #include "proto.h"
|
|
|
++@@ -180,7 +179,7 @@ static void brcmf_fweh_handle_if_event(s
|
|
|
++ }
|
|
|
++
|
|
|
++ if (ifp && ifevent->action == BRCMF_E_IF_CHANGE)
|
|
|
++- brcmf_fws_reset_interface(ifp);
|
|
|
+++ brcmf_proto_reset_if(drvr, ifp);
|
|
|
++
|
|
|
++ err = brcmf_fweh_call_event_handler(ifp, emsg->event_code, emsg, data);
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
|
|
|
+++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/proto.h
|
|
|
++@@ -46,6 +46,7 @@ struct brcmf_proto {
|
|
|
++ void (*rxreorder)(struct brcmf_if *ifp, struct sk_buff *skb);
|
|
|
++ void (*add_if)(struct brcmf_if *ifp);
|
|
|
++ void (*del_if)(struct brcmf_if *ifp);
|
|
|
+++ void (*reset_if)(struct brcmf_if *ifp);
|
|
|
++ void *pd;
|
|
|
++ };
|
|
|
++
|
|
|
++@@ -136,4 +137,12 @@ brcmf_proto_del_if(struct brcmf_pub *drv
|
|
|
++ drvr->proto->del_if(ifp);
|
|
|
++ }
|
|
|
++
|
|
|
+++static inline void
|
|
|
+++brcmf_proto_reset_if(struct brcmf_pub *drvr, struct brcmf_if *ifp)
|
|
|
+++{
|
|
|
+++ if (!drvr->proto->reset_if)
|
|
|
+++ return;
|
|
|
+++ drvr->proto->reset_if(ifp);
|
|
|
+++}
|
|
|
+++
|
|
|
++ #endif /* BRCMFMAC_PROTO_H */
|
|
|
+diff --git a/package/kernel/mac80211/patches/326-ath9k-fix-ar934x-OTP-offsets.patch b/package/kernel/mac80211/patches/326-ath9k-fix-ar934x-OTP-offsets.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..60de2b6d147f0c77b58c3e5992df9d8014a9e17d
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/326-ath9k-fix-ar934x-OTP-offsets.patch
|
|
|
+@@ -0,0 +1,42 @@
|
|
|
++From: Christian Lamparter <chunkeey@googlemail.com>
|
|
|
++Date: Tue, 14 Feb 2017 20:10:30 +0100
|
|
|
++Subject: ath9k: use correct OTP register offsets for the AR9340 and AR9550
|
|
|
++
|
|
|
++This patch fixes the OTP register definitions for the AR934x and AR9550
|
|
|
++WMAC SoC.
|
|
|
++
|
|
|
++Previously, the ath9k driver was unable to initialize the integrated
|
|
|
++WMAC on an Aerohive AP121:
|
|
|
++
|
|
|
++| ath: phy0: timeout (1000 us) on reg 0x30018: 0xbadc0ffe & 0x00000007 != 0x00000004
|
|
|
++| ath: phy0: timeout (1000 us) on reg 0x30018: 0xbadc0ffe & 0x00000007 != 0x00000004
|
|
|
++| ath: phy0: Unable to initialize hardware; initialization status: -5
|
|
|
++| ath9k ar934x_wmac: failed to initialize device
|
|
|
++| ath9k: probe of ar934x_wmac failed with error -5
|
|
|
++
|
|
|
++It turns out that the AR9300_OTP_STATUS and AR9300_OTP_DATA
|
|
|
++definitions contain a typo.
|
|
|
++
|
|
|
++Fixes: add295a4afbdf5852d0 "ath9k: use correct OTP register offsets for AR9550"
|
|
|
++Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
|
|
++Signed-off-by: Chris Blake <chrisrblake93@gmail.com>
|
|
|
++---
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
|
|
|
+++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.h
|
|
|
++@@ -75,13 +75,13 @@
|
|
|
++ #define AR9300_OTP_BASE \
|
|
|
++ ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x30000 : 0x14000)
|
|
|
++ #define AR9300_OTP_STATUS \
|
|
|
++- ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x30018 : 0x15f18)
|
|
|
+++ ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x31018 : 0x15f18)
|
|
|
++ #define AR9300_OTP_STATUS_TYPE 0x7
|
|
|
++ #define AR9300_OTP_STATUS_VALID 0x4
|
|
|
++ #define AR9300_OTP_STATUS_ACCESS_BUSY 0x2
|
|
|
++ #define AR9300_OTP_STATUS_SM_BUSY 0x1
|
|
|
++ #define AR9300_OTP_READ_DATA \
|
|
|
++- ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x3001c : 0x15f1c)
|
|
|
+++ ((AR_SREV_9340(ah) || AR_SREV_9550(ah)) ? 0x3101c : 0x15f1c)
|
|
|
++
|
|
|
++ enum targetPowerHTRates {
|
|
|
++ HT_TARGET_RATE_0_8_16,
|
|
|
+diff --git a/package/kernel/mac80211/patches/327-ath10k-increase-BMI-timeout.patch b/package/kernel/mac80211/patches/327-ath10k-increase-BMI-timeout.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..c9f493bcd8fe29afe1e08dc31b6370507b95fc72
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/327-ath10k-increase-BMI-timeout.patch
|
|
|
+@@ -0,0 +1,31 @@
|
|
|
++From: Ben Greear <greearb@candelatech.com>
|
|
|
++Date: Wed, 31 May 2017 14:21:19 +0300
|
|
|
++Subject: [PATCH] ath10k: increase BMI timeout
|
|
|
++
|
|
|
++When testing a 9888 chipset NIC, I notice it often takes
|
|
|
++almost 2 seconds, and then many times OTP fails, probably due
|
|
|
++to the two-second timeout.
|
|
|
++
|
|
|
++[ 2269.841842] ath10k_pci 0000:05:00.0: bmi cmd took: 1984 jiffies (HZ: 1000), rv: 0
|
|
|
++[ 2273.608185] ath10k_pci 0000:05:00.0: bmi cmd took: 1986 jiffies (HZ: 1000), rv: 0
|
|
|
++[ 2277.294732] ath10k_pci 0000:05:00.0: bmi cmd took: 1989 jiffies (HZ: 1000), rv: 0
|
|
|
++
|
|
|
++So, increase the BMI timeout to 3 seconds.
|
|
|
++
|
|
|
++Signed-off-by: Ben Greear <greearb@candelatech.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
|
|
++---
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ath/ath10k/bmi.h
|
|
|
+++++ b/drivers/net/wireless/ath/ath10k/bmi.h
|
|
|
++@@ -187,8 +187,8 @@ struct bmi_target_info {
|
|
|
++ u32 type;
|
|
|
++ };
|
|
|
++
|
|
|
++-/* in msec */
|
|
|
++-#define BMI_COMMUNICATION_TIMEOUT_HZ (2 * HZ)
|
|
|
+++/* in jiffies */
|
|
|
+++#define BMI_COMMUNICATION_TIMEOUT_HZ (3 * HZ)
|
|
|
++
|
|
|
++ #define BMI_CE_NUM_TO_TARG 0
|
|
|
++ #define BMI_CE_NUM_TO_HOST 1
|
|
|
+diff --git a/package/kernel/mac80211/patches/328-ath10k-log-when-longer-bmi-cmds-happen.patch b/package/kernel/mac80211/patches/328-ath10k-log-when-longer-bmi-cmds-happen.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..500f72ff988b87418ca235354ff33e4e4b96e716
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/328-ath10k-log-when-longer-bmi-cmds-happen.patch
|
|
|
+@@ -0,0 +1,74 @@
|
|
|
++From: Ben Greear <greearb@candelatech.com>
|
|
|
++Date: Wed, 31 May 2017 14:21:21 +0300
|
|
|
++Subject: [PATCH] ath10k: log when longer bmi cmds happen
|
|
|
++
|
|
|
++This lets one have a clue that maybe timeouts are happening
|
|
|
++when we just aren't waiting long enough.
|
|
|
++
|
|
|
++Signed-off-by: Ben Greear <greearb@candelatech.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
|
|
|
++@@ -101,7 +101,8 @@ static int ath10k_pci_init_irq(struct at
|
|
|
++ static int ath10k_pci_deinit_irq(struct ath10k *ar);
|
|
|
++ static int ath10k_pci_request_irq(struct ath10k *ar);
|
|
|
++ static void ath10k_pci_free_irq(struct ath10k *ar);
|
|
|
++-static int ath10k_pci_bmi_wait(struct ath10k_ce_pipe *tx_pipe,
|
|
|
+++static int ath10k_pci_bmi_wait(struct ath10k *ar,
|
|
|
+++ struct ath10k_ce_pipe *tx_pipe,
|
|
|
++ struct ath10k_ce_pipe *rx_pipe,
|
|
|
++ struct bmi_xfer *xfer);
|
|
|
++ static int ath10k_pci_qca99x0_chip_reset(struct ath10k *ar);
|
|
|
++@@ -1843,7 +1844,7 @@ int ath10k_pci_hif_exchange_bmi_msg(stru
|
|
|
++ if (ret)
|
|
|
++ goto err_resp;
|
|
|
++
|
|
|
++- ret = ath10k_pci_bmi_wait(ce_tx, ce_rx, &xfer);
|
|
|
+++ ret = ath10k_pci_bmi_wait(ar, ce_tx, ce_rx, &xfer);
|
|
|
++ if (ret) {
|
|
|
++ u32 unused_buffer;
|
|
|
++ unsigned int unused_nbytes;
|
|
|
++@@ -1910,23 +1911,37 @@ static void ath10k_pci_bmi_recv_data(str
|
|
|
++ xfer->rx_done = true;
|
|
|
++ }
|
|
|
++
|
|
|
++-static int ath10k_pci_bmi_wait(struct ath10k_ce_pipe *tx_pipe,
|
|
|
+++static int ath10k_pci_bmi_wait(struct ath10k *ar,
|
|
|
+++ struct ath10k_ce_pipe *tx_pipe,
|
|
|
++ struct ath10k_ce_pipe *rx_pipe,
|
|
|
++ struct bmi_xfer *xfer)
|
|
|
++ {
|
|
|
++ unsigned long timeout = jiffies + BMI_COMMUNICATION_TIMEOUT_HZ;
|
|
|
+++ unsigned long started = jiffies;
|
|
|
+++ unsigned long dur;
|
|
|
+++ int ret;
|
|
|
++
|
|
|
++ while (time_before_eq(jiffies, timeout)) {
|
|
|
++ ath10k_pci_bmi_send_done(tx_pipe);
|
|
|
++ ath10k_pci_bmi_recv_data(rx_pipe);
|
|
|
++
|
|
|
++- if (xfer->tx_done && (xfer->rx_done == xfer->wait_for_resp))
|
|
|
++- return 0;
|
|
|
+++ if (xfer->tx_done && (xfer->rx_done == xfer->wait_for_resp)) {
|
|
|
+++ ret = 0;
|
|
|
+++ goto out;
|
|
|
+++ }
|
|
|
++
|
|
|
++ schedule();
|
|
|
++ }
|
|
|
++
|
|
|
++- return -ETIMEDOUT;
|
|
|
+++ ret = -ETIMEDOUT;
|
|
|
+++
|
|
|
+++out:
|
|
|
+++ dur = jiffies - started;
|
|
|
+++ if (dur > HZ)
|
|
|
+++ ath10k_dbg(ar, ATH10K_DBG_BMI,
|
|
|
+++ "bmi cmd took %lu jiffies hz %d ret %d\n",
|
|
|
+++ dur, HZ, ret);
|
|
|
+++ return ret;
|
|
|
++ }
|
|
|
++
|
|
|
++ /*
|
|
|
+diff --git a/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch b/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..3fcf505e1547b474d87ecf5d42a3f1e2cf08068f
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/329-ath10k-add-BMI-parameters-to-fix-calibration-from-DT.patch
|
|
|
+@@ -0,0 +1,80 @@
|
|
|
++From: Anilkumar Kolli <akolli@qti.qualcomm.com>
|
|
|
++Date: Wed, 31 May 2017 14:21:27 +0300
|
|
|
++Subject: [PATCH] ath10k: add BMI parameters to fix calibration from
|
|
|
++ DT/pre-cal
|
|
|
++
|
|
|
++QCA99X0, QCA9888, QCA9984 supports calibration data in
|
|
|
++either OTP or DT/pre-cal file. Current ath10k supports
|
|
|
++Calibration data from OTP only.
|
|
|
++
|
|
|
++If caldata is loaded from DT/pre-cal file, fetching board id
|
|
|
++and applying calibration parameters like tx power gets failed.
|
|
|
++
|
|
|
++error log:
|
|
|
++[ 15.733663] ath10k_pci 0000:01:00.0: failed to fetch board file: -2
|
|
|
++[ 15.741474] ath10k_pci 0000:01:00.0: could not probe fw (-2)
|
|
|
++
|
|
|
++This patch adds calibration data support from DT/pre-cal
|
|
|
++file. Below parameters are used to get board id and
|
|
|
++applying calibration parameters from cal data.
|
|
|
++
|
|
|
++ EEPROM[OTP] FLASH[DT/pre-cal file]
|
|
|
++Cal param 0x700 0x10000
|
|
|
++Board id 0x10 0x8000
|
|
|
++
|
|
|
++Tested on QCA9888 with pre-cal file.
|
|
|
++
|
|
|
++Signed-off-by: Anilkumar Kolli <akolli@qti.qualcomm.com>
|
|
|
++Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
|
|
|
++---
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ath/ath10k/bmi.h
|
|
|
+++++ b/drivers/net/wireless/ath/ath10k/bmi.h
|
|
|
++@@ -83,6 +83,8 @@ enum bmi_cmd_id {
|
|
|
++ #define BMI_NVRAM_SEG_NAME_SZ 16
|
|
|
++
|
|
|
++ #define BMI_PARAM_GET_EEPROM_BOARD_ID 0x10
|
|
|
+++#define BMI_PARAM_GET_FLASH_BOARD_ID 0x8000
|
|
|
+++#define BMI_PARAM_FLASH_SECTION_ALL 0x10000
|
|
|
++
|
|
|
++ #define ATH10K_BMI_BOARD_ID_FROM_OTP_MASK 0x7c00
|
|
|
++ #define ATH10K_BMI_BOARD_ID_FROM_OTP_LSB 10
|
|
|
++--- a/drivers/net/wireless/ath/ath10k/core.c
|
|
|
+++++ b/drivers/net/wireless/ath/ath10k/core.c
|
|
|
++@@ -657,7 +657,7 @@ static int ath10k_core_get_board_id_from
|
|
|
++ {
|
|
|
++ u32 result, address;
|
|
|
++ u8 board_id, chip_id;
|
|
|
++- int ret;
|
|
|
+++ int ret, bmi_board_id_param;
|
|
|
++
|
|
|
++ address = ar->hw_params.patch_load_addr;
|
|
|
++
|
|
|
++@@ -681,8 +681,13 @@ static int ath10k_core_get_board_id_from
|
|
|
++ return ret;
|
|
|
++ }
|
|
|
++
|
|
|
++- ret = ath10k_bmi_execute(ar, address, BMI_PARAM_GET_EEPROM_BOARD_ID,
|
|
|
++- &result);
|
|
|
+++ if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
|
|
|
+++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
|
|
|
+++ bmi_board_id_param = BMI_PARAM_GET_FLASH_BOARD_ID;
|
|
|
+++ else
|
|
|
+++ bmi_board_id_param = BMI_PARAM_GET_EEPROM_BOARD_ID;
|
|
|
+++
|
|
|
+++ ret = ath10k_bmi_execute(ar, address, bmi_board_id_param, &result);
|
|
|
++ if (ret) {
|
|
|
++ ath10k_err(ar, "could not execute otp for board id check: %d\n",
|
|
|
++ ret);
|
|
|
++@@ -810,6 +815,11 @@ static int ath10k_download_and_run_otp(s
|
|
|
++ return ret;
|
|
|
++ }
|
|
|
++
|
|
|
+++ /* As of now pre-cal is valid for 10_4 variants */
|
|
|
+++ if (ar->cal_mode == ATH10K_PRE_CAL_MODE_DT ||
|
|
|
+++ ar->cal_mode == ATH10K_PRE_CAL_MODE_FILE)
|
|
|
+++ bmi_otp_exe_param = BMI_PARAM_FLASH_SECTION_ALL;
|
|
|
+++
|
|
|
++ ret = ath10k_bmi_execute(ar, address, bmi_otp_exe_param, &result);
|
|
|
++ if (ret) {
|
|
|
++ ath10k_err(ar, "could not execute otp (%d)\n", ret);
|
|
|
+diff --git a/package/kernel/mac80211/patches/330-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch b/package/kernel/mac80211/patches/330-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..d799ab4a628881f7f702bed762421befe33f1d59
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/330-ath9k-adjust-tx-power-reduction-for-US-regulatory-do.patch
|
|
|
+@@ -0,0 +1,23 @@
|
|
|
++From: Felix Fietkau <nbd@nbd.name>
|
|
|
++Date: Wed, 19 Jul 2017 08:49:31 +0200
|
|
|
++Subject: [PATCH] ath9k: adjust tx power reduction for US regulatory domain
|
|
|
++
|
|
|
++FCC regulatory rules allow for up to 3 dBi antenna gain. Account for
|
|
|
++this in the EEPROM based tx power reduction code.
|
|
|
++
|
|
|
++Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
|
++---
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ath/ath9k/hw.c
|
|
|
+++++ b/drivers/net/wireless/ath/ath9k/hw.c
|
|
|
++@@ -2954,6 +2954,10 @@ void ath9k_hw_apply_txpower(struct ath_h
|
|
|
++ if (ant_gain > max_gain)
|
|
|
++ ant_reduction = ant_gain - max_gain;
|
|
|
++
|
|
|
+++ /* FCC allows maximum antenna gain of 3 dBi */
|
|
|
+++ if (reg->region == NL80211_DFS_FCC)
|
|
|
+++ ant_reduction = max_t(int, ant_reduction - 6, 0);
|
|
|
+++
|
|
|
++ ah->eep_ops->set_txpower(ah, chan, ctl, ant_reduction, new_pwr, test);
|
|
|
++ }
|
|
|
++
|
|
|
+diff --git a/package/kernel/mac80211/patches/331-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch b/package/kernel/mac80211/patches/331-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..1e0761eb1547ba7885e79f8444e302f3c424e24f
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/331-ath9k-fix-more-data-flag-for-buffered-multicast-pack.patch
|
|
|
+@@ -0,0 +1,40 @@
|
|
|
++From: Felix Fietkau <nbd@nbd.name>
|
|
|
++Date: Sun, 23 Jul 2017 14:58:22 +0200
|
|
|
++Subject: [PATCH] ath9k: fix more-data flag for buffered multicast packets
|
|
|
++
|
|
|
++The flag needs to be cleared for the last packet in the list, not the
|
|
|
++first one. Fixes some issues with multicast packet loss for powersave
|
|
|
++clients connected to an ath9k AP.
|
|
|
++
|
|
|
++Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
|
++---
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ath/ath9k/xmit.c
|
|
|
+++++ b/drivers/net/wireless/ath/ath9k/xmit.c
|
|
|
++@@ -2451,7 +2451,6 @@ void ath_tx_cabq(struct ieee80211_hw *hw
|
|
|
++ .txq = sc->beacon.cabq
|
|
|
++ };
|
|
|
++ struct ath_tx_info info = {};
|
|
|
++- struct ieee80211_hdr *hdr;
|
|
|
++ struct ath_buf *bf_tail = NULL;
|
|
|
++ struct ath_buf *bf;
|
|
|
++ LIST_HEAD(bf_q);
|
|
|
++@@ -2495,15 +2494,10 @@ void ath_tx_cabq(struct ieee80211_hw *hw
|
|
|
++ if (list_empty(&bf_q))
|
|
|
++ return;
|
|
|
++
|
|
|
++- bf = list_first_entry(&bf_q, struct ath_buf, list);
|
|
|
++- hdr = (struct ieee80211_hdr *) bf->bf_mpdu->data;
|
|
|
++-
|
|
|
++- if (hdr->frame_control & cpu_to_le16(IEEE80211_FCTL_MOREDATA)) {
|
|
|
++- hdr->frame_control &= ~cpu_to_le16(IEEE80211_FCTL_MOREDATA);
|
|
|
++- dma_sync_single_for_device(sc->dev, bf->bf_buf_addr,
|
|
|
++- sizeof(*hdr), DMA_TO_DEVICE);
|
|
|
++- }
|
|
|
+++ bf = list_last_entry(&bf_q, struct ath_buf, list);
|
|
|
+++ ath9k_set_moredata(sc, bf, false);
|
|
|
++
|
|
|
+++ bf = list_first_entry(&bf_q, struct ath_buf, list);
|
|
|
++ ath_txq_lock(sc, txctl.txq);
|
|
|
++ ath_tx_fill_desc(sc, bf, txctl.txq, 0);
|
|
|
++ ath_tx_txqaddbuf(sc, txctl.txq, &bf_q, false);
|
|
|
+diff --git a/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch b/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch
|
|
|
+index 35d8e8bd42399797d4904f60d61f7118c156ba7c..8ed7ad8a09a13f85e2b0f437020b650cacb89190 100644
|
|
|
+--- a/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch
|
|
|
++++ b/package/kernel/mac80211/patches/531-ath9k_extra_platform_leds.patch
|
|
|
+@@ -56,16 +56,21 @@
|
|
|
+
|
|
|
+ INIT_LIST_HEAD(&sc->leds);
|
|
|
+
|
|
|
+-@@ -144,6 +165,12 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
++@@ -134,6 +155,17 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
+
|
|
|
+- ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger,
|
|
|
+- !sc->sc_ah->config.led_active_high);
|
|
|
++ ath_fill_led_pin(sc);
|
|
|
++
|
|
|
+++ if (pdata && pdata->leds && pdata->num_leds)
|
|
|
+++ for (i = 0; i < pdata->num_leds; i++) {
|
|
|
+++ if (pdata->leds[i].gpio == sc->sc_ah->led_pin)
|
|
|
+++ sc->sc_ah->led_pin = -1;
|
|
|
+++
|
|
|
+++ ath_create_platform_led(sc, &pdata->leds[i]);
|
|
|
+++ }
|
|
|
+ +
|
|
|
+-+ if (!pdata)
|
|
|
+++ if (sc->sc_ah->led_pin < 0)
|
|
|
+ + return;
|
|
|
+ +
|
|
|
+-+ for (i = 0; i < pdata->num_leds; i++)
|
|
|
+-+ ath_create_platform_led(sc, &pdata->leds[i]);
|
|
|
+- }
|
|
|
+- #endif
|
|
|
++ snprintf(led_name, sizeof(led_name), "ath9k-%s",
|
|
|
++ wiphy_name(sc->hw->wiphy));
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch b/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch
|
|
|
+deleted file mode 100644
|
|
|
+index ced72c6c69fe30ebbc1c416c5e60d95dc985d6db..0000000000000000000000000000000000000000
|
|
|
+--- a/package/kernel/mac80211/patches/546-ath9k_platform_led_name.patch
|
|
|
++++ /dev/null
|
|
|
+@@ -1,39 +0,0 @@
|
|
|
+-From: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
|
|
|
+-Date: Sun, 31 Jan 2016 20:45:57 +0100
|
|
|
+-Subject: [PATCH v4 1/8] mac80211: ath9k: enable platform WLAN LED name
|
|
|
+-
|
|
|
+-Enable platform-supplied WLAN LED name for ath9k device. It replaces generic
|
|
|
+-'ath9k-phy*' label with string set during platform initialization.
|
|
|
+-
|
|
|
+-Signed-off-by: Michal Cieslakiewicz <michal.cieslakiewicz@wp.pl>
|
|
|
+----
|
|
|
+- drivers/net/wireless/ath/ath9k/gpio.c | 10 +++++++---
|
|
|
+- include/linux/ath9k_platform.h | 1 +
|
|
|
+- 2 files changed, 8 insertions(+), 3 deletions(-)
|
|
|
+-
|
|
|
+---- a/drivers/net/wireless/ath/ath9k/gpio.c
|
|
|
+-+++ b/drivers/net/wireless/ath/ath9k/gpio.c
|
|
|
+-@@ -155,8 +155,11 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
+-
|
|
|
+- ath_fill_led_pin(sc);
|
|
|
+-
|
|
|
+-- snprintf(led_name, sizeof(led_name), "ath9k-%s",
|
|
|
+-- wiphy_name(sc->hw->wiphy));
|
|
|
+-+ if (pdata && pdata->led_name)
|
|
|
+-+ strncpy(led_name, pdata->led_name, sizeof(led_name));
|
|
|
+-+ else
|
|
|
+-+ snprintf(led_name, sizeof(led_name), "ath9k-%s",
|
|
|
+-+ wiphy_name(sc->hw->wiphy));
|
|
|
+-
|
|
|
+- if (ath9k_led_blink)
|
|
|
+- trigger = sc->led_default_trigger;
|
|
|
+---- a/include/linux/ath9k_platform.h
|
|
|
+-+++ b/include/linux/ath9k_platform.h
|
|
|
+-@@ -49,6 +49,7 @@ struct ath9k_platform_data {
|
|
|
+-
|
|
|
+- int num_leds;
|
|
|
+- const struct gpio_led *leds;
|
|
|
+-+ const char *led_name;
|
|
|
+- };
|
|
|
+-
|
|
|
+- #endif /* _LINUX_ATH9K_PLATFORM_H */
|
|
|
+diff --git a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
|
|
|
+index d4269282d960d857cde3f81d1839359cf3447ff2..31dac29ad77b89626d300d9a82ba3bd2cc2210a1 100644
|
|
|
+--- a/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
|
|
|
++++ b/package/kernel/mac80211/patches/548-ath9k_enable_gpio_chip.patch
|
|
|
+@@ -196,7 +196,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
|
+ return 0;
|
|
|
+ }
|
|
|
+
|
|
|
+-@@ -136,12 +264,18 @@ void ath_deinit_leds(struct ath_softc *s
|
|
|
++@@ -136,17 +264,24 @@ void ath_deinit_leds(struct ath_softc *s
|
|
|
+
|
|
|
+ while (!list_empty(&sc->leds)) {
|
|
|
+ led = list_first_entry(&sc->leds, struct ath_led, list);
|
|
|
+@@ -215,18 +215,31 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
|
+ }
|
|
|
+
|
|
|
+ void ath_init_leds(struct ath_softc *sc)
|
|
|
+-@@ -158,6 +292,8 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
++ {
|
|
|
++ struct ath9k_platform_data *pdata = sc->dev->platform_data;
|
|
|
+++ struct device_node *np = sc->dev->of_node;
|
|
|
++ char led_name[32];
|
|
|
++ const char *trigger;
|
|
|
++ int i;
|
|
|
++@@ -156,6 +291,15 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
++ if (AR_SREV_9100(sc->sc_ah))
|
|
|
++ return;
|
|
|
+
|
|
|
+++ if (!np)
|
|
|
+++ ath9k_register_gpio_chip(sc);
|
|
|
+++
|
|
|
+++ /* setup gpio controller only if requested and skip the led_pin setup */
|
|
|
+++ if (of_property_read_bool(np, "gpio-controller")) {
|
|
|
+++ ath9k_register_gpio_chip(sc);
|
|
|
+++ return;
|
|
|
+++ }
|
|
|
+++
|
|
|
+ ath_fill_led_pin(sc);
|
|
|
+
|
|
|
+-+ ath9k_register_gpio_chip(sc);
|
|
|
+-+
|
|
|
+- if (pdata && pdata->led_name)
|
|
|
+- strncpy(led_name, pdata->led_name, sizeof(led_name));
|
|
|
+- else
|
|
|
+-@@ -178,6 +314,7 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
+- for (i = 0; i < pdata->num_leds; i++)
|
|
|
+- ath_create_platform_led(sc, &pdata->leds[i]);
|
|
|
++ if (pdata && pdata->leds && pdata->num_leds)
|
|
|
++@@ -180,6 +324,7 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
++ ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger,
|
|
|
++ !sc->sc_ah->config.led_active_high);
|
|
|
+ }
|
|
|
+ +
|
|
|
+ #endif
|
|
|
+diff --git a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
|
|
|
+index f40bac93c34660f5d9bb515f79287d768b8d6014..f3fead0a1aef41e05957fda39128b13eaebb9652 100644
|
|
|
+--- a/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
|
|
|
++++ b/package/kernel/mac80211/patches/549-ath9k_enable_gpio_buttons.patch
|
|
|
+@@ -117,29 +117,20 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
|
+ while (!list_empty(&sc->leds)) {
|
|
|
+ led = list_first_entry(&sc->leds, struct ath_led, list);
|
|
|
+ #ifdef CONFIG_GPIOLIB
|
|
|
+-@@ -293,6 +362,7 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
+- ath_fill_led_pin(sc);
|
|
|
++@@ -301,6 +370,7 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
++ }
|
|
|
+
|
|
|
+- ath9k_register_gpio_chip(sc);
|
|
|
++ ath_fill_led_pin(sc);
|
|
|
+ + ath9k_init_buttons(sc);
|
|
|
+
|
|
|
+- if (pdata && pdata->led_name)
|
|
|
+- strncpy(led_name, pdata->led_name, sizeof(led_name));
|
|
|
+-@@ -308,7 +378,7 @@ void ath_init_leds(struct ath_softc *sc)
|
|
|
+- ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger,
|
|
|
+- !sc->sc_ah->config.led_active_high);
|
|
|
+-
|
|
|
+-- if (!pdata)
|
|
|
+-+ if (!pdata || !pdata->leds || !pdata->num_leds)
|
|
|
+- return;
|
|
|
+-
|
|
|
+- for (i = 0; i < pdata->num_leds; i++)
|
|
|
++ if (pdata && pdata->leds && pdata->num_leds)
|
|
|
++ for (i = 0; i < pdata->num_leds; i++) {
|
|
|
+ --- a/include/linux/ath9k_platform.h
|
|
|
+ +++ b/include/linux/ath9k_platform.h
|
|
|
+-@@ -50,6 +50,10 @@ struct ath9k_platform_data {
|
|
|
++@@ -49,6 +49,10 @@ struct ath9k_platform_data {
|
|
|
++
|
|
|
+ int num_leds;
|
|
|
+ const struct gpio_led *leds;
|
|
|
+- const char *led_name;
|
|
|
+ +
|
|
|
+ + unsigned num_btns;
|
|
|
+ + const struct gpio_keys_button *btns;
|
|
|
+diff --git a/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch b/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch
|
|
|
+index 45284c71eed616bcaa5c875e85c209fbefc738a5..bcb0026a69afdc52b3bf5ba074418435b343d1be 100644
|
|
|
+--- a/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch
|
|
|
++++ b/package/kernel/mac80211/patches/551-ath9k_ubnt_uap_plus_hsr.patch
|
|
|
+@@ -375,7 +375,7 @@
|
|
|
+
|
|
|
+ --- a/include/linux/ath9k_platform.h
|
|
|
+ +++ b/include/linux/ath9k_platform.h
|
|
|
+-@@ -54,6 +54,8 @@ struct ath9k_platform_data {
|
|
|
++@@ -53,6 +53,8 @@ struct ath9k_platform_data {
|
|
|
+ unsigned num_btns;
|
|
|
+ const struct gpio_keys_button *btns;
|
|
|
+ unsigned btn_poll_interval;
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch b/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch
|
|
|
+index 2325f37670be46d805d9d5a3deb5b3f8322017aa..dc0f19490e88b0f9aba2fbd9e5b97e3e9b0f299d 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-02-rt2x00-rt2800lib-enable-support-for-RT3883.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -9379,6 +9379,7 @@ static int rt2800_probe_rt(struct rt2x00
|
|
|
++@@ -9397,6 +9397,7 @@ static int rt2800_probe_rt(struct rt2x00
|
|
|
+ case RT3390:
|
|
|
+ case RT3572:
|
|
|
+ case RT3593:
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch b/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch
|
|
|
+index 9775664deb94a087315008637d32a1227a5f488e..45fc9645046bd39f039317bfd4dfd5e7b16e6781 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-03-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch
|
|
|
+@@ -31,7 +31,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ #define RF5362 0x5362
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -8957,6 +8957,66 @@ static const struct rf_channel rf_vals_3
|
|
|
++@@ -8975,6 +8975,66 @@ static const struct rf_channel rf_vals_3
|
|
|
+ {14, 0xF0, 2, 0x18},
|
|
|
+ };
|
|
|
+
|
|
|
+@@ -98,7 +98,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ static const struct rf_channel rf_vals_5592_xtal20[] = {
|
|
|
+ /* Channel, N, K, mod, R */
|
|
|
+ {1, 482, 4, 10, 3},
|
|
|
+-@@ -9220,6 +9280,11 @@ static int rt2800_probe_hw_mode(struct r
|
|
|
++@@ -9238,6 +9298,11 @@ static int rt2800_probe_hw_mode(struct r
|
|
|
+ spec->channels = rf_vals_3x;
|
|
|
+ break;
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch b/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch
|
|
|
+index 5737e015c171d47ff6dc67761de3e7f29080873e..fb32b75d0a63ed0bab62ad8e52b74cde2d6576a4 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-04-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -4855,6 +4855,7 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
++@@ -4871,6 +4871,7 @@ void rt2800_vco_calibration(struct rt2x0
|
|
|
+ case RF3053:
|
|
|
+ case RF3070:
|
|
|
+ case RF3290:
|
|
|
+@@ -18,7 +18,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ case RF5350:
|
|
|
+ case RF5360:
|
|
|
+ case RF5362:
|
|
|
+-@@ -9402,6 +9403,7 @@ static int rt2800_probe_hw_mode(struct r
|
|
|
++@@ -9420,6 +9421,7 @@ static int rt2800_probe_hw_mode(struct r
|
|
|
+ case RF3053:
|
|
|
+ case RF3070:
|
|
|
+ case RF3290:
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch b/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch
|
|
|
+index afcb6bdf4a52ab4e941e5bd996a16952935a948e..266a3fba50b15e20ef1f04c7ce32a76ceec51c89 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-05-rt2x00-rt2800lib-add-channel-configuration-function-.patch
|
|
|
+@@ -223,7 +223,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ #define POWER_BOUND 0x27
|
|
|
+ #define POWER_BOUND_5G 0x2b
|
|
|
+
|
|
|
+-@@ -3565,6 +3770,9 @@ static void rt2800_config_channel(struct
|
|
|
++@@ -3567,6 +3772,9 @@ static void rt2800_config_channel(struct
|
|
|
+ case RF3322:
|
|
|
+ rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info);
|
|
|
+ break;
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch b/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch
|
|
|
+index 95790165955d06913499f3b583ac90da60a0445f..53e6bbb15512dca668782e079abcd3860b22f1d5 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-06-rt2x00-rt2800lib-enable-RF3853-support.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -8882,6 +8882,7 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
++@@ -8900,6 +8900,7 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
+ case RF3290:
|
|
|
+ case RF3320:
|
|
|
+ case RF3322:
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch b/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch
|
|
|
+index 08b54f67269888abeb9f6ee59b8885966fb116f3..cfa95e56bc949f4bf8c3a05eacada49bcc89abff 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-07-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch
|
|
|
+@@ -35,7 +35,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ #define RX_FILTER_CFG 0x1400
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -5485,6 +5485,12 @@ static int rt2800_init_registers(struct
|
|
|
++@@ -5501,6 +5501,12 @@ static int rt2800_init_registers(struct
|
|
|
+ rt2800_register_write(rt2x00dev, TX_SW_CFG2,
|
|
|
+ 0x00000000);
|
|
|
+ }
|
|
|
+@@ -48,7 +48,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ } else if (rt2x00_rt(rt2x00dev, RT5390) ||
|
|
|
+ rt2x00_rt(rt2x00dev, RT5392) ||
|
|
|
+ rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
+-@@ -5698,6 +5704,11 @@ static int rt2800_init_registers(struct
|
|
|
++@@ -5714,6 +5720,11 @@ static int rt2800_init_registers(struct
|
|
|
+ reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002;
|
|
|
+ rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg);
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch b/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch
|
|
|
+index ced3645aef4d6df5cc3fba2c444188dc8c92b1f3..6adb9e1cd24a2a1b3e6dfbb63ff7b6cff79fa2e0 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-09-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch
|
|
|
+@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -6325,6 +6325,47 @@ static void rt2800_init_bbp_3593(struct
|
|
|
++@@ -6341,6 +6341,47 @@ static void rt2800_init_bbp_3593(struct
|
|
|
+ rt2800_bbp_write(rt2x00dev, 103, 0xc0);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -59,7 +59,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev)
|
|
|
+ {
|
|
|
+ int ant, div_mode;
|
|
|
+-@@ -6769,6 +6810,9 @@ static void rt2800_init_bbp(struct rt2x0
|
|
|
++@@ -6785,6 +6826,9 @@ static void rt2800_init_bbp(struct rt2x0
|
|
|
+ case RT3593:
|
|
|
+ rt2800_init_bbp_3593(rt2x00dev);
|
|
|
+ return;
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch b/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch
|
|
|
+index 08e4ffe9ba47893180a23755b132b262932e423d..aa3ead6ee8a397ec6c279e600d841eb3fcb4a863 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-10-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch
|
|
|
+@@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ #define RFCSR2_TX2_EN_MT7620 FIELD8(0x20)
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -7685,6 +7685,144 @@ static void rt2800_init_rfcsr_5350(struc
|
|
|
++@@ -7701,6 +7701,144 @@ static void rt2800_init_rfcsr_5350(struc
|
|
|
+ rt2800_rfcsr_write(rt2x00dev, 63, 0x00);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -166,7 +166,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev)
|
|
|
+ {
|
|
|
+ rt2800_rf_init_calibration(rt2x00dev, 2);
|
|
|
+-@@ -8525,6 +8663,9 @@ static void rt2800_init_rfcsr(struct rt2
|
|
|
++@@ -8543,6 +8681,9 @@ static void rt2800_init_rfcsr(struct rt2
|
|
|
+ case RT3390:
|
|
|
+ rt2800_init_rfcsr_3390(rt2x00dev);
|
|
|
+ break;
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch b/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch
|
|
|
+index c03527b4f704c87f1544b6fb6cd894abe9b1f83e..0ac7b040ec81742d32275b7e85ae5f729a61d798 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-12-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -9059,6 +9059,8 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
++@@ -9077,6 +9077,8 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
+ rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf);
|
|
|
+ else if (rt2x00_rt(rt2x00dev, RT3352))
|
|
|
+ rf = RF3322;
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch b/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
|
|
|
+index 04574db7c18c77ec7e6354ea597a974661bd449a..dc34a96d99c9ab1b214a6dfada39404023fabb5e 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-13-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -3733,6 +3733,36 @@ static char rt2800_txpower_to_dev(struct
|
|
|
++@@ -3735,6 +3735,36 @@ static char rt2800_txpower_to_dev(struct
|
|
|
+ return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER);
|
|
|
+ }
|
|
|
+
|
|
|
+@@ -47,7 +47,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev,
|
|
|
+ struct ieee80211_conf *conf,
|
|
|
+ struct rf_channel *rf,
|
|
|
+-@@ -3751,6 +3781,12 @@ static void rt2800_config_channel(struct
|
|
|
++@@ -3753,6 +3783,12 @@ static void rt2800_config_channel(struct
|
|
|
+ rt2800_txpower_to_dev(rt2x00dev, rf->channel,
|
|
|
+ info->default_power3);
|
|
|
+
|
|
|
+@@ -60,7 +60,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ switch (rt2x00dev->chip.rf) {
|
|
|
+ case RF2020:
|
|
|
+ case RF3020:
|
|
|
+-@@ -3855,6 +3891,15 @@ static void rt2800_config_channel(struct
|
|
|
++@@ -3857,6 +3893,15 @@ static void rt2800_config_channel(struct
|
|
|
+ rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
|
|
|
+ rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain);
|
|
|
+ rt2800_bbp_write(rt2x00dev, 77, 0x98);
|
|
|
+@@ -76,7 +76,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ } else {
|
|
|
+ rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain);
|
|
|
+ rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain);
|
|
|
+-@@ -3868,6 +3913,7 @@ static void rt2800_config_channel(struct
|
|
|
++@@ -3870,6 +3915,7 @@ static void rt2800_config_channel(struct
|
|
|
+ !rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
+ if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) {
|
|
|
+ rt2800_bbp_write(rt2x00dev, 82, 0x62);
|
|
|
+@@ -84,7 +84,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ rt2800_bbp_write(rt2x00dev, 75, 0x46);
|
|
|
+ } else {
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3593))
|
|
|
+-@@ -3876,19 +3922,22 @@ static void rt2800_config_channel(struct
|
|
|
++@@ -3878,19 +3924,22 @@ static void rt2800_config_channel(struct
|
|
|
+ rt2800_bbp_write(rt2x00dev, 82, 0x84);
|
|
|
+ rt2800_bbp_write(rt2x00dev, 75, 0x50);
|
|
|
+ }
|
|
|
+@@ -110,7 +110,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ rt2800_bbp_write(rt2x00dev, 83, 0x9a);
|
|
|
+
|
|
|
+ if (rt2x00_has_cap_external_lna_a(rt2x00dev))
|
|
|
+-@@ -4011,6 +4060,23 @@ static void rt2800_config_channel(struct
|
|
|
++@@ -4013,6 +4062,23 @@ static void rt2800_config_channel(struct
|
|
|
+
|
|
|
+ rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg);
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch b/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch
|
|
|
+index 3412a3e1334438c45e3780ffac395c6ef041e84f..e93d2dd96f92a23158aeb572642767aeacd22eee 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-14-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -3720,13 +3720,15 @@ static char rt2800_txpower_to_dev(struct
|
|
|
++@@ -3722,13 +3722,15 @@ static char rt2800_txpower_to_dev(struct
|
|
|
+ unsigned int channel,
|
|
|
+ char txpower)
|
|
|
+ {
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch b/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch
|
|
|
+index 8d1df8cf77ad955c40ac07bd2c6e7294dc40158d..463346eec4804602a12b399144f91893403e54ec 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-15-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch
|
|
|
+@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -5085,7 +5085,8 @@ static void rt2800_config_txpower(struct
|
|
|
++@@ -5101,7 +5101,8 @@ static void rt2800_config_txpower(struct
|
|
|
+ struct ieee80211_channel *chan,
|
|
|
+ int power_level)
|
|
|
+ {
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch b/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch
|
|
|
+index 9aeb41fe6b167623872cfd6afa06dd8fb7ee2fee..3efac122463b89baa49750942385144fd21ed691 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-16-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch
|
|
|
+@@ -11,7 +11,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -8941,7 +8941,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
|
|
|
++@@ -8959,7 +8959,8 @@ static u8 rt2800_get_txmixer_gain_24g(st
|
|
|
+ {
|
|
|
+ u16 word;
|
|
|
+
|
|
|
+@@ -21,7 +21,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word);
|
|
|
+-@@ -8955,7 +8956,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
|
|
|
++@@ -8973,7 +8974,8 @@ static u8 rt2800_get_txmixer_gain_5g(str
|
|
|
+ {
|
|
|
+ u16 word;
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch b/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch
|
|
|
+index 70c33a1d20431dbc388e39e20501067405c04eea..8c563b89389fcd00d55e916543405a57574f7c7c 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-20-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -5338,7 +5338,8 @@ static u8 rt2800_get_default_vgc(struct
|
|
|
++@@ -5354,7 +5354,8 @@ static u8 rt2800_get_default_vgc(struct
|
|
|
+ else
|
|
|
+ vgc = 0x2e + rt2x00dev->lna_gain;
|
|
|
+ } else { /* 5GHZ band */
|
|
|
+@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3;
|
|
|
+ else if (rt2x00_rt(rt2x00dev, RT5592))
|
|
|
+ vgc = 0x24 + (2 * rt2x00dev->lna_gain);
|
|
|
+-@@ -5358,7 +5359,8 @@ static inline void rt2800_set_vgc(struct
|
|
|
++@@ -5374,7 +5375,8 @@ static inline void rt2800_set_vgc(struct
|
|
|
+ {
|
|
|
+ if (qual->vgc_level != vgc_level) {
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3572) ||
|
|
|
+@@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ rt2800_bbp_write_with_rx_chain(rt2x00dev, 66,
|
|
|
+ vgc_level);
|
|
|
+ } else if (rt2x00_rt(rt2x00dev, RT5592)) {
|
|
|
+-@@ -5405,6 +5407,11 @@ void rt2800_link_tuner(struct rt2x00_dev
|
|
|
++@@ -5421,6 +5423,11 @@ void rt2800_link_tuner(struct rt2x00_dev
|
|
|
+ }
|
|
|
+ break;
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch b/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch
|
|
|
+index a2cfd896ebcf45bc8066c340a0b4833bd3c62d53..6e9ef1071cfa6ca73fd6bf68e2a8377311888dee 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-21-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -9074,7 +9074,8 @@ static int rt2800_validate_eeprom(struct
|
|
|
++@@ -9092,7 +9092,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)
|
|
|
+ rt2x00_set_field16(&word, EEPROM_RSSI_BG2_OFFSET2, 0);
|
|
|
+@@ -20,7 +20,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ if (rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0x00 ||
|
|
|
+ rt2x00_get_field16(word, EEPROM_RSSI_BG2_LNA_A1) == 0xff)
|
|
|
+ rt2x00_set_field16(&word, EEPROM_RSSI_BG2_LNA_A1,
|
|
|
+-@@ -9094,7 +9095,8 @@ static int rt2800_validate_eeprom(struct
|
|
|
++@@ -9112,7 +9113,8 @@ static int rt2800_validate_eeprom(struct
|
|
|
+ rt2800_eeprom_read(rt2x00dev, EEPROM_RSSI_A2, &word);
|
|
|
+ if (abs(rt2x00_get_field16(word, EEPROM_RSSI_A2_OFFSET2)) > 10)
|
|
|
+ rt2x00_set_field16(&word, EEPROM_RSSI_A2_OFFSET2, 0);
|
|
|
+@@ -30,7 +30,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+ if (rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0x00 ||
|
|
|
+ rt2x00_get_field16(word, EEPROM_RSSI_A2_LNA_A2) == 0xff)
|
|
|
+ rt2x00_set_field16(&word, EEPROM_RSSI_A2_LNA_A2,
|
|
|
+-@@ -9102,7 +9104,8 @@ static int rt2800_validate_eeprom(struct
|
|
|
++@@ -9120,7 +9122,8 @@ static int rt2800_validate_eeprom(struct
|
|
|
+ }
|
|
|
+ rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word);
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch b/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch
|
|
|
+index ac8b219efdfa66ee01562653c15365f7504097e1..1a8ccbc9bda98f433e03d459031027f30efbca7c 100644
|
|
|
+--- a/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch
|
|
|
++++ b/package/kernel/mac80211/patches/600-22-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch
|
|
|
+@@ -10,7 +10,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+ +++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+-@@ -4332,6 +4332,9 @@ static u8 rt2800_compensate_txpower(stru
|
|
|
++@@ -4348,6 +4348,9 @@ static u8 rt2800_compensate_txpower(stru
|
|
|
+ if (rt2x00_rt(rt2x00dev, RT3593))
|
|
|
+ return min_t(u8, txpower, 0xc);
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch b/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch
|
|
|
+index 0236683d5f3c1eb723a1665c4d052f9bc841841e..51890e0a3bd7acd3eee965525a2ab40806fb4f34 100644
|
|
|
+--- a/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch
|
|
|
++++ b/package/kernel/mac80211/patches/610-rt2x00-change-led-polarity-from-OF.patch
|
|
|
+@@ -8,7 +8,7 @@
|
|
|
+
|
|
|
+ #include "rt2x00.h"
|
|
|
+ #include "rt2800lib.h"
|
|
|
+-@@ -9261,6 +9262,17 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
++@@ -9279,6 +9280,17 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
+ rt2800_init_led(rt2x00dev, &rt2x00dev->led_assoc, LED_TYPE_ASSOC);
|
|
|
+ rt2800_init_led(rt2x00dev, &rt2x00dev->led_qual, LED_TYPE_QUALITY);
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch b/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..64a62f4b0792168fb60e3f33b20d0f8a751aa911
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/650-rt2x00-add-support-for-external-PA-on-MT7620.patch
|
|
|
+@@ -0,0 +1,118 @@
|
|
|
++From 9782a7f7488443568fa4d6088b73c9aff7eb8510 Mon Sep 17 00:00:00 2001
|
|
|
++From: Daniel Golle <daniel@makrotopia.org>
|
|
|
++Date: Wed, 19 Apr 2017 16:14:53 +0200
|
|
|
++Subject: [PATCH] rt2x00: add support for external PA on MT7620
|
|
|
++To: Stanislaw Gruszka <sgruszka@redhat.com>
|
|
|
++Cc: Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
++ linux-wireless@vger.kernel.org,
|
|
|
++ Kalle Valo <kvalo@codeaurora.org>
|
|
|
++
|
|
|
++Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
++---
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2800.h | 1 +
|
|
|
++ drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 70 +++++++++++++++++++++++++-
|
|
|
++ 2 files changed, 70 insertions(+), 1 deletion(-)
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h
|
|
|
++@@ -2749,6 +2749,7 @@ enum rt2800_eeprom_word {
|
|
|
++ #define EEPROM_NIC_CONF2_RX_STREAM FIELD16(0x000f)
|
|
|
++ #define EEPROM_NIC_CONF2_TX_STREAM FIELD16(0x00f0)
|
|
|
++ #define EEPROM_NIC_CONF2_CRYSTAL FIELD16(0x0600)
|
|
|
+++#define EEPROM_NIC_CONF2_EXTERNAL_PA FIELD16(0xc000)
|
|
|
++
|
|
|
++ /*
|
|
|
++ * EEPROM LNA
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
++@@ -4114,6 +4114,61 @@ static void rt2800_config_channel(struct
|
|
|
++ rt2800_iq_calibrate(rt2x00dev, rf->channel);
|
|
|
++ }
|
|
|
++
|
|
|
+++ if (rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
+++ if (test_bit(CAPABILITY_EXTERNAL_PA_TX0,
|
|
|
+++ &rt2x00dev->cap_flags)) {
|
|
|
+++ rt2x00_warn(rt2x00dev, "Using incomplete support for " \
|
|
|
+++ "external PA\n");
|
|
|
+++ rt2800_register_read(rt2x00dev, RF_CONTROL3, ®);
|
|
|
+++ reg |= 0x00000101;
|
|
|
+++ rt2800_register_write(rt2x00dev, RF_CONTROL3, reg);
|
|
|
+++
|
|
|
+++ rt2800_register_read(rt2x00dev, RF_BYPASS3, ®);
|
|
|
+++ reg |= 0x00000101;
|
|
|
+++ rt2800_register_write(rt2x00dev, RF_BYPASS3, reg);
|
|
|
+++
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 43, 0x73);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 43, 0x73);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 44, 0x73);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 44, 0x73);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 45, 0x73);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0x73);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 46, 0x27);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 46, 0x27);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 48, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 48, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 49, 0x05);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 49, 0x05);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x27);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 55, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 55, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 56, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 56, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 57, 0x05);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 57, 0x05);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 58, 0x27);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 58, 0x27);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 59, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 59, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 60, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 60, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 4, 61, 0x05);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 61, 0x05);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 5, 05, 0x00);
|
|
|
+++ rt2800_rfcsr_write_bank(rt2x00dev, 7, 05, 0x00);
|
|
|
+++
|
|
|
+++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT,
|
|
|
+++ 0x36303636);
|
|
|
+++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_ATTEN,
|
|
|
+++ 0x6C6C6B6C);
|
|
|
+++ rt2800_register_write(rt2x00dev, TX1_RF_GAIN_ATTEN,
|
|
|
+++ 0x6C6C6B6C);
|
|
|
+++ }
|
|
|
+++ }
|
|
|
+++
|
|
|
++ rt2800_bbp_read(rt2x00dev, 4, &bbp);
|
|
|
++ rt2x00_set_field8(&bbp, BBP4_BANDWIDTH, 2 * conf_is_ht40(conf));
|
|
|
++ rt2800_bbp_write(rt2x00dev, 4, bbp);
|
|
|
++@@ -9308,7 +9363,8 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
++ */
|
|
|
++ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom);
|
|
|
++
|
|
|
++- if (rt2x00_rt(rt2x00dev, RT3352)) {
|
|
|
+++ if (rt2x00_rt(rt2x00dev, RT3352) ||
|
|
|
+++ rt2x00_rt(rt2x00dev, RT6352)) {
|
|
|
++ if (rt2x00_get_field16(eeprom,
|
|
|
++ EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352))
|
|
|
++ __set_bit(CAPABILITY_EXTERNAL_PA_TX0,
|
|
|
++@@ -9319,6 +9375,18 @@ static int rt2800_init_eeprom(struct rt2
|
|
|
++ &rt2x00dev->cap_flags);
|
|
|
++ }
|
|
|
++
|
|
|
+++ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF2, &eeprom);
|
|
|
+++
|
|
|
+++ if (rt2x00_rt(rt2x00dev, RT6352) && eeprom != 0 && eeprom != 0xffff) {
|
|
|
+++ if (rt2x00_get_field16(eeprom,
|
|
|
+++ EEPROM_NIC_CONF2_EXTERNAL_PA)) {
|
|
|
+++ __set_bit(CAPABILITY_EXTERNAL_PA_TX0,
|
|
|
+++ &rt2x00dev->cap_flags);
|
|
|
+++ __set_bit(CAPABILITY_EXTERNAL_PA_TX1,
|
|
|
+++ &rt2x00dev->cap_flags);
|
|
|
+++ }
|
|
|
+++ }
|
|
|
+++
|
|
|
++ return 0;
|
|
|
++ }
|
|
|
++
|
|
|
+diff --git a/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch b/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..b65bd7a73e493a52acb52947462565a9ec43c788
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/651-rt2x00-remove-unneccesary-code.patch
|
|
|
+@@ -0,0 +1,132 @@
|
|
|
++From pozega.tomislav@gmail.com Thu May 18 12:42:27 2017
|
|
|
++Return-path: <pozega.tomislav@gmail.com>
|
|
|
++Envelope-to: daniel@makrotopia.org
|
|
|
++Delivery-date: Thu, 18 May 2017 12:42:27 +0200
|
|
|
++Received: from mail by fudo.makrotopia.org with sa-checked (Exim 4.88)
|
|
|
++ (envelope-from <pozega.tomislav@gmail.com>)
|
|
|
++ id 1dBIsy-00088b-PU
|
|
|
++ for daniel@makrotopia.org; Thu, 18 May 2017 12:42:27 +0200
|
|
|
++X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on fudo.makrotopia.org
|
|
|
++X-Spam-Level:
|
|
|
++X-Spam-Status: No, score=-0.8 required=2.5 tests=DKIM_SIGNED,DKIM_VALID,
|
|
|
++ DKIM_VALID_AU,FREEMAIL_FROM,HTML_MESSAGE,RCVD_IN_DNSWL_LOW shortcircuit=no
|
|
|
++ autolearn=ham autolearn_force=no version=3.4.1
|
|
|
++Received: from mail-oi0-x22a.google.com ([2607:f8b0:4003:c06::22a])
|
|
|
++ by fudo.makrotopia.org with esmtps (TLSv1.2:ECDHE-RSA-AES128-GCM-SHA256:128)
|
|
|
++ (Exim 4.88)
|
|
|
++ (envelope-from <pozega.tomislav@gmail.com>)
|
|
|
++ id 1dBIsv-00088Q-Dq
|
|
|
++ for daniel@makrotopia.org; Thu, 18 May 2017 12:42:24 +0200
|
|
|
++Received: by mail-oi0-x22a.google.com with SMTP id w10so48782189oif.0
|
|
|
++ for <daniel@makrotopia.org>; Thu, 18 May 2017 03:42:21 -0700 (PDT)
|
|
|
++DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
|
|
++ d=gmail.com; s=20161025;
|
|
|
++ h=mime-version:from:date:message-id:subject:to;
|
|
|
++ bh=9dF7PHDassYY74+N6dAhmsL/B9i5oG3SEuMzHuazhJo=;
|
|
|
++ b=cBGJ44v+o4ASyCPmHCBRMmRYnJCv4Gx6lzDiScKn0XqYmNHYpZTPg5cAY1GZFUhHdz
|
|
|
++ 9QT5fzhJKFikBliSuJc/7/pI8KzvyEAdvawiWA7/5fbeiTZ+zjJnzRVGezqkYDKxjR6u
|
|
|
++ 7TsoJxR2/oFwo7bOFlThhee+Nwf7qaX8AVal7JdkqovekX79JQ5vsKAa4LapDp7Cl0wr
|
|
|
++ KCh0WRUHGEgpTLJFyQ3ThPmLqc8bhmu+6/V/LJ53VOY7uksZHMhvaKkk9vDCoOuPnBMK
|
|
|
++ Cj2/c7z9RTErz/xlHg6HxnBe/pPc31XUsuPJUleOEdZASczPsreEEKacKCONVlP1wjAB
|
|
|
++ iOkA==
|
|
|
++X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
|
|
|
++ d=1e100.net; s=20161025;
|
|
|
++ h=x-gm-message-state:mime-version:from:date:message-id:subject:to;
|
|
|
++ bh=9dF7PHDassYY74+N6dAhmsL/B9i5oG3SEuMzHuazhJo=;
|
|
|
++ b=LJAe4ZwS9aNJypROW7j+I9aNfRBWyDYy0c8ABnDbLrIoF9P2AA/Vs/Cli5f7GjaAxr
|
|
|
++ 1JCx602ach+7R7QjQq/nqNmLuhRCfSvB0TGrq4R4v+CJ4ADO541+PddnFiU1dlIXQRP2
|
|
|
++ TE2FOydSO0FGJBMg+kY0eFiidBtYj1T5x7IHAhQzufiuiF6/1xZS8h61CYJjLzt/aR5y
|
|
|
++ JxOxsVvu3W2YQ0T5wKmAPlKtarFH6ZZgs446bRYt1MX5KAWzIoBM1+IPMMv7lSCpCaDR
|
|
|
++ fwH05aDyaJW2IzXH5R9Tq7gGYycYjx/SnO7JupJXJVvOzKgBJxp60JwJhCfqCwESDuuD
|
|
|
++ 8nNA==
|
|
|
++X-Gm-Message-State: AODbwcDOpdFZgbxAxFsVsqFdCBN3pRGDvEclZ1heVg2byNZ9BuG5kqJg
|
|
|
++ GvZ9x4NGt0v8lVGa3esDw0N1KiJENg==
|
|
|
++X-Received: by 10.157.17.217 with SMTP id y25mr1310632oty.137.1495104134863;
|
|
|
++ Thu, 18 May 2017 03:42:14 -0700 (PDT)
|
|
|
++MIME-Version: 1.0
|
|
|
++Received: by 10.157.0.105 with HTTP; Thu, 18 May 2017 03:42:14 -0700 (PDT)
|
|
|
++From: Tom Psyborg <pozega.tomislav@gmail.com>
|
|
|
++Date: Thu, 18 May 2017 12:42:14 +0200
|
|
|
++Message-ID: <CAKR_QVJBSKw2uCY4RbHZPvbGkMcvnBh+j6F+9t93mG3BakjX3Q@mail.gmail.com>
|
|
|
++Subject: [PATCH] rt2x00: remove unneccesary code
|
|
|
++To: linux-wireless <linux-wireless@vger.kernel.org>,
|
|
|
++ Linux Kernel Mailing List <linux-kernel@vger.kernel.org>, Arnd Bergmann <arnd@arndb.de>,
|
|
|
++ Jes Sorensen <jes.sorensen@gmail.com>, Stanislaw Gruszka <sgruszka@redhat.com>,
|
|
|
++ David Miller <davem@davemloft.net>, Helmut Schaa <helmut.schaa@googlemail.com>,
|
|
|
++ Kalle Valo <kvalo@codeaurora.org>, Daniel Golle <daniel@makrotopia.org>,
|
|
|
++ Mathias Kresin <dev@kresin.me>, Johannes Berg <johannes.berg@intel.com>,
|
|
|
++ Serge Vasilugin <vasilugin@yandex.ru>, Roman Yeryomin <roman@advem.lv>,
|
|
|
++ Networking <netdev@vger.kernel.org>
|
|
|
++Content-Type: multipart/alternative; boundary="94eb2c1905d2dc6361054fca0e62"
|
|
|
++Status: RO
|
|
|
++Content-Length: 11079
|
|
|
++Lines: 178
|
|
|
++
|
|
|
++--94eb2c1905d2dc6361054fca0e62
|
|
|
++Content-Type: text/plain; charset="UTF-8"
|
|
|
++Content-Transfer-Encoding: quoted-printable
|
|
|
++
|
|
|
++Use chanreg and dccal helpers to reduce the size of ePA code.
|
|
|
++
|
|
|
++Signed-off-by: Tomislav Po=C5=BEega <pozega.tomislav@gmail.com>
|
|
|
++Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
|
|
++[daniel@makrotopia.org: fixed white-space so patch applies]
|
|
|
++---
|
|
|
++
|
|
|
++--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
+++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c
|
|
|
++@@ -4127,38 +4127,22 @@ static void rt2800_config_channel(struct
|
|
|
++ reg |= 0x00000101;
|
|
|
++ rt2800_register_write(rt2x00dev, RF_BYPASS3, reg);
|
|
|
++
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 43, 0x73);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 43, 0x73);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 44, 0x73);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 44, 0x73);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 45, 0x73);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0x73);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 46, 0x27);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 46, 0x27);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 47, 0xC8);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 47, 0xC8);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 48, 0xA4);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 48, 0xA4);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 49, 0x05);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 49, 0x05);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 54, 0x27);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 54, 0x27);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 55, 0xC8);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 55, 0xC8);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 56, 0xA4);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 56, 0xA4);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 57, 0x05);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 57, 0x05);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 58, 0x27);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 58, 0x27);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 59, 0xC8);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 59, 0xC8);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 60, 0xA4);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 60, 0xA4);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 4, 61, 0x05);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 6, 61, 0x05);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 5, 05, 0x00);
|
|
|
++- rt2800_rfcsr_write_bank(rt2x00dev, 7, 05, 0x00);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0x73);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0x73);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0x73);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x27);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x05);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x27);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x05);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x27);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0xC8);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xA4);
|
|
|
+++ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x05);
|
|
|
+++ rt2800_rfcsr_write_dccal(rt2x00dev, 05, 0x00);
|
|
|
++
|
|
|
++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT,
|
|
|
++ 0x36303636);
|
|
|
+diff --git a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch
|
|
|
+index d09057f89686a54db350dbeda2fe49a84134a941..91831188ac4a02532d4dd34c694b70efd9c29b42 100644
|
|
|
+--- a/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch
|
|
|
++++ b/package/kernel/mac80211/patches/860-brcmfmac-register-wiphy-s-during-module_init.patch
|
|
|
+@@ -13,7 +13,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
|
|
|
+
|
|
|
+ --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+ +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c
|
|
|
+-@@ -1196,6 +1196,7 @@ int __init brcmf_core_init(void)
|
|
|
++@@ -1180,6 +1180,7 @@ int __init brcmf_core_init(void)
|
|
|
+ {
|
|
|
+ if (!schedule_work(&brcmf_driver_work))
|
|
|
+ return -EBUSY;
|
|
|
+diff --git a/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch b/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch
|
|
|
+index 0c34d96847a0110779e59f4572bcfd8a1723417d..b966516e577217d60f732f56d2f3a6cabbd90864 100644
|
|
|
+--- a/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch
|
|
|
++++ b/package/kernel/mac80211/patches/921-ath10k_init_devices_synchronously.patch
|
|
|
+@@ -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
|
|
|
+-@@ -2319,6 +2319,16 @@ int ath10k_core_register(struct ath10k *
|
|
|
++@@ -2329,6 +2329,16 @@ int ath10k_core_register(struct ath10k *
|
|
|
+ ar->chip_id = chip_id;
|
|
|
+ queue_work(ar->workqueue, &ar->register_work);
|
|
|
+
|
|
|
+diff --git a/package/kernel/mac80211/patches/936-ath10k-fix-otp-failure-result.patch b/package/kernel/mac80211/patches/936-ath10k-fix-otp-failure-result.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..d302a7d2a3ad7b32db3d83c0438cb606f9d85c99
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/936-ath10k-fix-otp-failure-result.patch
|
|
|
+@@ -0,0 +1,11 @@
|
|
|
++--- a/drivers/net/wireless/ath/ath10k/core.c
|
|
|
+++++ b/drivers/net/wireless/ath/ath10k/core.c
|
|
|
++@@ -691,7 +691,7 @@ static int ath10k_core_get_board_id_from
|
|
|
++ if (ret) {
|
|
|
++ ath10k_err(ar, "could not execute otp for board id check: %d\n",
|
|
|
++ ret);
|
|
|
++- return ret;
|
|
|
+++ return -EOPNOTSUPP;
|
|
|
++ }
|
|
|
++
|
|
|
++ board_id = MS(result, ATH10K_BMI_BOARD_ID_FROM_OTP);
|
|
|
+diff --git a/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch b/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch
|
|
|
+deleted file mode 100644
|
|
|
+index 057995c55acf9015c64291013738e95b18df75a2..0000000000000000000000000000000000000000
|
|
|
+--- a/package/kernel/mac80211/patches/936-ath10k_skip_otp_check.patch
|
|
|
++++ /dev/null
|
|
|
+@@ -1,51 +0,0 @@
|
|
|
+---- a/drivers/net/wireless/ath/ath10k/core.c
|
|
|
+-+++ b/drivers/net/wireless/ath/ath10k/core.c
|
|
|
+-@@ -1362,9 +1362,6 @@ static int ath10k_core_fetch_firmware_fi
|
|
|
+- {
|
|
|
+- int ret;
|
|
|
+-
|
|
|
+-- /* calibration file is optional, don't check for any errors */
|
|
|
+-- ath10k_fetch_cal_file(ar);
|
|
|
+--
|
|
|
+- ar->fw_api = 5;
|
|
|
+- ath10k_dbg(ar, ATH10K_DBG_BOOT, "trying fw api %d\n", ar->fw_api);
|
|
|
+-
|
|
|
+-@@ -2149,7 +2146,7 @@ EXPORT_SYMBOL(ath10k_core_stop);
|
|
|
+- static int ath10k_core_probe_fw(struct ath10k *ar)
|
|
|
+- {
|
|
|
+- struct bmi_target_info target_info;
|
|
|
+-- int ret = 0;
|
|
|
+-+ int calret, ret = 0;
|
|
|
+-
|
|
|
+- ret = ath10k_hif_power_up(ar);
|
|
|
+- if (ret) {
|
|
|
+-@@ -2173,6 +2170,9 @@ static int ath10k_core_probe_fw(struct a
|
|
|
+- goto err_power_down;
|
|
|
+- }
|
|
|
+-
|
|
|
+-+ /* calibration file is optional, don't check for any errors */
|
|
|
+-+ calret = ath10k_fetch_cal_file(ar);
|
|
|
+-+
|
|
|
+- ret = ath10k_core_fetch_firmware_files(ar);
|
|
|
+- if (ret) {
|
|
|
+- ath10k_err(ar, "could not fetch firmware files (%d)\n", ret);
|
|
|
+-@@ -2195,11 +2195,14 @@ static int ath10k_core_probe_fw(struct a
|
|
|
+- "could not load pre cal data: %d\n", ret);
|
|
|
+- }
|
|
|
+-
|
|
|
+-- ret = ath10k_core_get_board_id_from_otp(ar);
|
|
|
+-- if (ret && ret != -EOPNOTSUPP) {
|
|
|
+-- ath10k_err(ar, "failed to get board id from otp: %d\n",
|
|
|
+-- ret);
|
|
|
+-- goto err_free_firmware_files;
|
|
|
+-+ /* otp and board file not needed if calibration data is present */
|
|
|
+-+ if (calret) {
|
|
|
+-+ ret = ath10k_core_get_board_id_from_otp(ar);
|
|
|
+-+ if (ret && ret != -EOPNOTSUPP) {
|
|
|
+-+ ath10k_err(ar, "failed to get board id from otp: %d\n",
|
|
|
+-+ ret);
|
|
|
+-+ goto err_free_firmware_files;
|
|
|
+-+ }
|
|
|
+- }
|
|
|
+-
|
|
|
+- ret = ath10k_core_check_smbios(ar);
|
|
|
+diff --git a/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch b/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..d49be4df703e8039509ecea23de8b5bd8e590765
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/960-0010-ath10k-limit-htt-rx-ring-size.patch
|
|
|
+@@ -0,0 +1,11 @@
|
|
|
++--- a/drivers/net/wireless/ath/ath10k/htt.h
|
|
|
+++++ b/drivers/net/wireless/ath/ath10k/htt.h
|
|
|
++@@ -199,7 +199,7 @@ enum htt_rx_ring_flags {
|
|
|
++ };
|
|
|
++
|
|
|
++ #define HTT_RX_RING_SIZE_MIN 128
|
|
|
++-#define HTT_RX_RING_SIZE_MAX 2048
|
|
|
+++#define HTT_RX_RING_SIZE_MAX 512
|
|
|
++
|
|
|
++ struct htt_rx_ring_setup_ring {
|
|
|
++ __le32 fw_idx_shadow_reg_paddr;
|
|
|
+diff --git a/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch b/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch
|
|
|
+new file mode 100644
|
|
|
+index 0000000000000000000000000000000000000000..a101282d074aeba592b042dcc9944c2a260e40ba
|
|
|
+--- /dev/null
|
|
|
++++ b/package/kernel/mac80211/patches/960-0011-ath10k-limit-pci-buffer-size.patch
|
|
|
+@@ -0,0 +1,38 @@
|
|
|
++--- a/drivers/net/wireless/ath/ath10k/pci.c
|
|
|
+++++ b/drivers/net/wireless/ath/ath10k/pci.c
|
|
|
++@@ -128,7 +128,7 @@ static struct ce_attr host_ce_config_wla
|
|
|
++ .flags = CE_ATTR_FLAGS,
|
|
|
++ .src_nentries = 0,
|
|
|
++ .src_sz_max = 2048,
|
|
|
++- .dest_nentries = 512,
|
|
|
+++ .dest_nentries = 128,
|
|
|
++ .recv_cb = ath10k_pci_htt_htc_rx_cb,
|
|
|
++ },
|
|
|
++
|
|
|
++@@ -137,7 +137,7 @@ static struct ce_attr host_ce_config_wla
|
|
|
++ .flags = CE_ATTR_FLAGS,
|
|
|
++ .src_nentries = 0,
|
|
|
++ .src_sz_max = 2048,
|
|
|
++- .dest_nentries = 128,
|
|
|
+++ .dest_nentries = 64,
|
|
|
++ .recv_cb = ath10k_pci_htc_rx_cb,
|
|
|
++ },
|
|
|
++
|
|
|
++@@ -164,7 +164,7 @@ static struct ce_attr host_ce_config_wla
|
|
|
++ .flags = CE_ATTR_FLAGS,
|
|
|
++ .src_nentries = 0,
|
|
|
++ .src_sz_max = 512,
|
|
|
++- .dest_nentries = 512,
|
|
|
+++ .dest_nentries = 128,
|
|
|
++ .recv_cb = ath10k_pci_htt_rx_cb,
|
|
|
++ },
|
|
|
++
|
|
|
++@@ -189,7 +189,7 @@ static struct ce_attr host_ce_config_wla
|
|
|
++ .flags = CE_ATTR_FLAGS,
|
|
|
++ .src_nentries = 0,
|
|
|
++ .src_sz_max = 2048,
|
|
|
++- .dest_nentries = 128,
|
|
|
+++ .dest_nentries = 96,
|
|
|
++ .recv_cb = ath10k_pci_pktlog_rx_cb,
|
|
|
++ },
|
|
|
++
|
|
|
+diff --git a/package/kernel/mt76/Makefile b/package/kernel/mt76/Makefile
|
|
|
+index 8a6e414e10c35557b2fc6b89f80bec6c2297ee59..8fa3267180c897aaad07466111a1273d72dbceae 100644
|
|
|
+--- a/package/kernel/mt76/Makefile
|
|
|
++++ b/package/kernel/mt76/Makefile
|
|
|
+@@ -1,16 +1,16 @@
|
|
|
+ include $(TOPDIR)/rules.mk
|
|
|
+
|
|
|
+ PKG_NAME:=mt76
|
|
|
+-PKG_RELEASE=2
|
|
|
++PKG_RELEASE=1
|
|
|
+
|
|
|
+ PKG_LICENSE:=GPLv2
|
|
|
+ PKG_LICENSE_FILES:=
|
|
|
+
|
|
|
+ PKG_SOURCE_URL:=https://github.com/openwrt/mt76
|
|
|
+ PKG_SOURCE_PROTO:=git
|
|
|
+-PKG_SOURCE_DATE:=2017-01-31
|
|
|
+-PKG_SOURCE_VERSION:=3c8caafc5e150db79f714b958a51cee8f242f309
|
|
|
+-PKG_MIRROR_HASH:=c03c166466cb7ea825e52cd085511045e3847d927ba2bde2b8fb46595a3ed13a
|
|
|
++PKG_SOURCE_DATE:=2017-07-17
|
|
|
++PKG_SOURCE_VERSION:=3c4c9a647e4feff3a42ee94d477041fdcf26c463
|
|
|
++PKG_MIRROR_HASH:=7ed7ef6356fafc2525cb6204ca2a3d584c1b83340ef5a1f7c581052f3a1982b1
|
|
|
+
|
|
|
+ PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
|
|
+ PKG_BUILD_PARALLEL:=1
|
|
|
+diff --git a/target/linux/generic/files/include/linux/ath9k_platform.h b/target/linux/generic/files/include/linux/ath9k_platform.h
|
|
|
+index 558445ff63a0f7f7bfff35286c39f89e243156de..f1f2ad419c752fc4a6a07c6b7fe366bf0ae8e38f 100644
|
|
|
+--- a/target/linux/generic/files/include/linux/ath9k_platform.h
|
|
|
++++ b/target/linux/generic/files/include/linux/ath9k_platform.h
|
|
|
+@@ -49,7 +49,6 @@ struct ath9k_platform_data {
|
|
|
+
|
|
|
+ int num_leds;
|
|
|
+ const struct gpio_led *leds;
|
|
|
+- const char *led_name;
|
|
|
+
|
|
|
+ unsigned num_btns;
|
|
|
+ const struct gpio_keys_button *btns;
|