diff --git a/config.yml b/config.yml index a09d22cca..9d250bf74 100644 --- a/config.yml +++ b/config.yml @@ -12,4 +12,5 @@ patch_folders: - patches/ipq806x - patches/ipq807x - patches/wifi + - patches/rtkmipsel - patches/rest diff --git a/feeds/rtkmipsel/mac80211/Makefile b/feeds/rtkmipsel/mac80211/Makefile new file mode 100644 index 000000000..8850db55c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/Makefile @@ -0,0 +1,1878 @@ +# +# Copyright (C) 2007-2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=mac80211 + +PKG_VERSION:=2016-01-10 +PKG_RELEASE:=1 +PKG_SOURCE_URL:=http://mirror2.openwrt.org/sources +PKG_BACKPORT_VERSION:= +PKG_MD5SUM:=be5fae2e8d6f7490f9b073374fb895ba + +PKG_SOURCE:=compat-wireless-$(PKG_VERSION)$(PKG_BACKPORT_VERSION).tar.bz2 +PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/compat-wireless-$(PKG_VERSION) +PKG_BUILD_PARALLEL:=1 + +PKG_MAINTAINER:=Felix Fietkau + +PKG_DRIVERS = \ + adm8211 \ + ath ath5k ath9k ath9k-common ath9k-htc ath10k \ + b43 b43legacy \ + carl9170 \ + hermes hermes-pci hermes-pcmcia hermes-plx\ + iwl-legacy iwl3945 iwl4965 iwlwifi \ + lib80211 \ + libipw ipw2100 ipw2200 \ + libertas-sdio libertas-usb libertas-spi \ + mac80211-hwsim \ + mt7601u \ + mwl8k mwifiex-pcie \ + p54-common p54-pci p54-spi p54-usb \ + rt2x00-lib rt2x00-pci rt2x00-usb \ + rt2400-pci rt2500-pci rt2500-usb \ + 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 rtl8192cd \ + rtl8xxxu \ + wlcore wl12xx wl18xx \ + zd1211rw + +PKG_CONFIG_DEPENDS:= \ + CONFIG_PACKAGE_kmod-mac80211 \ + $(patsubst %,CONFIG_PACKAGE_kmod-%,$(PKG_DRIVERS)) \ + CONFIG_PACKAGE_MAC80211_DEBUGFS \ + CONFIG_PACKAGE_MAC80211_MESH \ + CONFIG_PACKAGE_ATH_DEBUG \ + CONFIG_PACKAGE_ATH_DFS \ + CONFIG_PACKAGE_B43_DEBUG \ + CONFIG_PACKAGE_B43_PIO \ + CONFIG_PACKAGE_B43_PHY_G \ + CONFIG_PACKAGE_B43_PHY_N \ + CONFIG_PACKAGE_B43_PHY_LP \ + CONFIG_PACKAGE_B43_PHY_HT \ + CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB \ + CONFIG_PACKAGE_B43_BUSES_BCMA \ + CONFIG_PACKAGE_B43_BUSES_SSB \ + CONFIG_PACKAGE_RTLWIFI_DEBUG \ + CONFIG_ATH_USER_REGD \ + +include $(INCLUDE_DIR)/package.mk + +WMENU:=Wireless Drivers + +define KernelPackage/mac80211/Default + SUBMENU:=$(WMENU) + URL:=https://wireless.wiki.kernel.org/ + MAINTAINER:=Felix Fietkau +endef + +define KernelPackage/cfg80211 + $(call KernelPackage/mac80211/Default) + TITLE:=cfg80211 - wireless configuration API + DEPENDS+= +iw + FILES:= \ + $(PKG_BUILD_DIR)/compat/compat.ko \ + $(PKG_BUILD_DIR)/net/wireless/cfg80211.ko +endef + +define KernelPackage/cfg80211/description +cfg80211 is the Linux wireless LAN (802.11) configuration API. +endef + +define KernelPackage/mac80211 + $(call KernelPackage/mac80211/Default) + TITLE:=Linux 802.11 Wireless Networking Stack + DEPENDS+= +kmod-cfg80211 +hostapd-common +kmod-crypto-core +kmod-crypto-arc4 + KCONFIG:=\ + CONFIG_AVERAGE=y + FILES:= $(PKG_BUILD_DIR)/net/mac80211/mac80211.ko + MENU:=1 +endef + +define KernelPackage/mac80211/config + if PACKAGE_kmod-mac80211 + + config PACKAGE_MAC80211_DEBUGFS + bool "Export mac80211 internals in DebugFS" + select KERNEL_DEBUG_FS + default y + help + Select this to see extensive information about + the internal state of mac80211 in debugfs. + + config PACKAGE_MAC80211_TRACING + bool "Enable tracing (mac80211 and supported drivers)" + select KERNEL_FTRACE + select KERNEL_ENABLE_DEFAULT_TRACERS + default n + help + Select this to enable tracing of mac80211 and + related wifi drivers (using trace-cmd). + + config PACKAGE_MAC80211_MESH + bool "Enable 802.11s mesh support" + default y + + endif +endef + +define KernelPackage/mac80211/description +Generic IEEE 802.11 Networking Stack (mac80211) +endef + +define KernelPackage/adm8211 + $(call KernelPackage/mac80211/Default) + TITLE:=ADMTek 8211 support + DEPENDS+=@PCI_SUPPORT +kmod-mac80211 +kmod-eeprom-93cx6 + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/admtek/adm8211.ko + AUTOLOAD:=$(call AutoProbe,adm8211) +endef + +define KernelPackage/ath/config + if PACKAGE_kmod-ath + config ATH_USER_REGD + bool "Force Atheros drivers to respect the user's regdomain settings" + help + Atheros' idea of regulatory handling is that the EEPROM of the card defines + the regulatory limits and the user is only allowed to restrict the settings + even further, even if the country allows frequencies or power levels that + are forbidden by the EEPROM settings. + + Select this option if you want the driver to respect the user's decision about + regulatory settings. + + config PACKAGE_ATH_DEBUG + bool "Atheros wireless debugging" + help + Say Y, if you want to debug atheros wireless drivers. + Only ath9k & ath10k make use of this. + + config PACKAGE_ATH_DFS + bool "Enable DFS support" + default y + help + Dynamic frequency selection (DFS) is required for most of the 5 GHz band + channels in Europe, US, and Japan. + + Select this option if you want to use such channels. + + endif +endef + +define KernelPackage/ath + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros common driver part + DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx||TARGET_ath25 +kmod-mac80211 + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath.ko + MENU:=1 +endef + +define KernelPackage/ath/description + This module contains some common parts needed by Atheros Wireless drivers. +endef + +define KernelPackage/ath5k + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros 5xxx wireless cards support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath5k + DEPENDS+= @PCI_SUPPORT||@TARGET_ath25 +kmod-ath + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath5k/ath5k.ko + AUTOLOAD:=$(call AutoProbe,ath5k) +endef + +define KernelPackage/ath5k/description + This module adds support for wireless adapters based on + Atheros 5xxx chipset. +endef + +define KernelPackage/ath9k-common + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros 802.11n wireless devices (common code for ath9k and ath9k_htc) + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath9k + DEPENDS+= @PCI_SUPPORT||USB_SUPPORT||TARGET_ar71xx +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT +@KERNEL_RELAY + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_common.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_hw.ko +endef + +define KernelPackage/ath9k + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros 802.11n PCI wireless cards support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath9k + DEPENDS+= @PCI_SUPPORT||TARGET_ar71xx +kmod-ath9k-common + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k.ko + AUTOLOAD:=$(call AutoProbe,ath9k) +endef + +define KernelPackage/ath9k/description +This module adds support for wireless adapters based on +Atheros IEEE 802.11n AR5008 and AR9001 family of chipsets. +endef + +define KernelPackage/ath9k/config + + config ATH9K_SUPPORT_PCOEM + bool "Support chips used in PC OEM cards" + depends on PACKAGE_kmod-ath9k + +endef + +define KernelPackage/ath9k-htc + $(call KernelPackage/mac80211/Default) + TITLE:=Atheros 802.11n USB device support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/ath9k + DEPENDS+= @USB_SUPPORT +kmod-ath9k-common +kmod-usb-core +ath9k-htc-firmware + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath9k/ath9k_htc.ko + AUTOLOAD:=$(call AutoProbe,ath9k_htc) +endef + +define KernelPackage/ath9k-htc/description +This module adds support for wireless adapters based on +Atheros USB AR9271 and AR7010 family of chipsets. +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 + DEPENDS+= @PCI_SUPPORT +kmod-ath +@DRIVER_11N_SUPPORT +@DRIVER_11W_SUPPORT +@KERNEL_RELAY +ath10k-firmware-qca988x + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_core.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ath/ath10k/ath10k_pci.ko + AUTOLOAD:=$(call AutoLoad,55,ath10k_core ath10k_pci) +endef + +define KernelPackage/ath10k/description +This module adds support for wireless adapters based on +Atheros IEEE 802.11ac family of chipsets. For now only +PCI is supported. +endef + +define KernelPackage/rtl8192cd + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek 8192cd wireless module support + DEPENDS+= @(TARGET_realtek||TARGET_rtkmips||TARGET_rtkmipsel) +kmod-mac80211 +@DRIVER_11N_SUPPORT +@DRIVER_11AC_SUPPORT \ + +PACKAGE_kmod-rtl819x_8211F:kmod-rtl819x_8211F +PACKAGE_kmod-rtl819x_83XX:kmod-rtl819x_83XX + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd/rtl8192cd.ko + AUTOLOAD:=$(call AutoProbe,rtl8192cd) +endef + +define KernelPackage/rtl8192cd/description + This module adds support for Realtek rtl8192cd wireless adapters +endef + +#Broadcom firmware +ifneq ($(CONFIG_B43_FW_6_30),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=6.30.163.46 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).wl_apsta.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ + PKG_B43_FWV4_MD5SUM:=6fe97e9368d25342a1ab943d3cf3496d +else +ifneq ($(CONFIG_B43_FW_5_10),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=5.10.56.27.3 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta/wl_prebuilt.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)_mipsel.tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/ + PKG_B43_FWV4_MD5SUM:=3363e3a6b3d9d73c49dea870c7834eac +else +ifneq ($(CONFIG_B43_FW_4_178),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=4.178.10.4 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/ + PKG_B43_FWV4_MD5SUM:=14477e8cbbb91b11896affac9b219fdb +else +ifneq ($(CONFIG_B43_FW_5_100_138),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=5.100.138 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/linux/wl_apsta.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ + PKG_B43_FWV4_MD5SUM:=f4e357b09eaf5d8b1f1920cf3493a555 +else + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=4.150.10.5 + PKG_B43_FWV4_OBJECT:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION)/driver/wl_apsta_mimo.o + PKG_B43_FWV4_SOURCE:=$(PKG_B43_FWV4_NAME)-$(PKG_B43_FWV4_VERSION).tar.bz2 + PKG_B43_FWV4_SOURCE_URL:=http://mirror2.openwrt.org/sources/ + PKG_B43_FWV4_MD5SUM:=0c6ba9687114c6b598e8019e262d9a60 +endif +endif +endif +endif +ifneq ($(CONFIG_B43_OPENFIRMWARE),) + PKG_B43_FWV4_NAME:=broadcom-wl + PKG_B43_FWV4_VERSION:=5.2 + PKG_B43_FWV4_OBJECT:=openfwwf-$(PKG_B43_FWV4_VERSION) + PKG_B43_FWV4_SOURCE:=openfwwf-$(PKG_B43_FWV4_VERSION).tar.gz + PKG_B43_FWV4_SOURCE_URL:=http://www.ing.unibs.it/openfwwf/firmware/ + PKG_B43_FWV4_MD5SUM:=e045a135453274e439ae183f8498b0fa +endif + + +define Download/b43 + FILE:=$(PKG_B43_FWV4_SOURCE) + URL:=$(PKG_B43_FWV4_SOURCE_URL) + MD5SUM:=$(PKG_B43_FWV4_MD5SUM) +endef +$(eval $(call Download,b43)) + +define KernelPackage/b43 + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom 43xx wireless support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/b43 + KCONFIG:= \ + CONFIG_HW_RANDOM=y + # Depend on PCI_SUPPORT to make sure we can select kmod-bcma or kmod-ssb + DEPENDS += \ + @PCI_SUPPORT +kmod-mac80211 \ + $(if $(CONFIG_PACKAGE_B43_USE_SSB),+kmod-ssb) \ + $(if $(CONFIG_PACKAGE_B43_USE_BCMA),+kmod-bcma) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/b43/b43.ko + AUTOLOAD:=$(call AutoProbe,b43) + MENU:=1 +endef + +define KernelPackage/b43/config + +config PACKAGE_B43_USE_SSB + select PACKAGE_kmod-ssb + tristate + depends on !TARGET_brcm47xx && !TARGET_brcm63xx + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA_AND_SSB + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_SSB + +config PACKAGE_B43_USE_BCMA + select PACKAGE_kmod-bcma + tristate + depends on !TARGET_brcm47xx && !TARGET_bcm53xx + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA_AND_SSB + default PACKAGE_kmod-b43 if PACKAGE_B43_BUSES_BCMA + + if PACKAGE_kmod-b43 + + choice + prompt "b43 firmware version" + default B43_FW_5_100_138 + help + This option allows you to select the version of the b43 firmware. + + config B43_FW_4_150 + bool "Firmware 410.2160 from driver 4.150.10.5 (old stable)" + help + Old stable firmware for BCM43xx devices. + + If unsure, select this. + + config B43_FW_4_178 + bool "Firmware 478.104 from driver 4.178.10.4" + help + Older firmware for BCM43xx devices. + + If unsure, select the "stable" firmware. + + config B43_FW_5_10 + bool "Firmware 508.1084 from driver 5.10.56.27" + help + Older firmware for BCM43xx devices. + + If unsure, select the "stable" firmware. + + config B43_FW_5_100_138 + bool "Firmware 666.2 from driver 5.100.138 (stable)" + help + The currently default firmware for BCM43xx devices. + + This firmware currently gets most of the testing and is needed for some N-PHY devices. + + If unsure, select the this firmware. + + config B43_FW_6_30 + bool "Firmware 784.2 from driver 6.30.163.46 (experimental)" + help + Newer experimental firmware for BCM43xx devices. + + This firmware is mostly untested. + + If unsure, select the "stable" firmware. + + config B43_OPENFIRMWARE + bool "Open FirmWare for WiFi networks" + help + Opensource firmware for BCM43xx devices. + + Do _not_ select this, unless you know what you are doing. + The Opensource firmware is not suitable for embedded devices, yet. + It does not support QoS, which is bad for AccessPoints. + It does not support hardware crypto acceleration, which is a showstopper + for embedded devices with low CPU resources. + + If unsure, select the "stable" firmware. + + endchoice + + config B43_FW_SQUASH + bool "Remove unnecessary firmware files" + depends on !B43_OPENFIRMWARE + default y + help + This options allows you to remove unnecessary b43 firmware files + from the final rootfs image. This can reduce the rootfs size by + up to 200k. + + If unsure, say Y. + + config B43_FW_SQUASH_COREREVS + string "Core revisions to include" + depends on B43_FW_SQUASH + default "5,6,7,8,9,10,11,13,15" if TARGET_brcm47xx_legacy + default "16,28,29,30" if TARGET_brcm47xx_mips74k + default "5,6,7,8,9,10,11,13,15,16,28,29,30" + help + This is a comma seperated list of core revision numbers. + + Example (keep files for rev5 only): + 5 + + Example (keep files for rev5 and rev11): + 5,11 + + config B43_FW_SQUASH_PHYTYPES + string "PHY types to include" + depends on B43_FW_SQUASH + default "G,N,LP" if TARGET_brcm47xx_legacy + default "N,HT" if TARGET_brcm47xx_mips74k + default "G,N,LP,HT" + help + This is a comma seperated list of PHY types: + A => A-PHY + AG => Dual A-PHY G-PHY + G => G-PHY + LP => LP-PHY + N => N-PHY + HT => HT-PHY + LCN => LCN-PHY + LCN40 => LCN40-PHY + AC => AC-PHY + + Example (keep files for G-PHY only): + G + + Example (keep files for G-PHY and N-PHY): + G,N + + choice + prompt "Supported buses" + default PACKAGE_B43_BUSES_BCMA_AND_SSB + help + This allows choosing buses that b43 should support. + + config PACKAGE_B43_BUSES_BCMA_AND_SSB + depends on !TARGET_brcm47xx_legacy && !TARGET_brcm47xx_mips74k && !TARGET_bcm53xx + bool "BCMA and SSB" + + config PACKAGE_B43_BUSES_BCMA + depends on !TARGET_brcm47xx_legacy + bool "BCMA only" + + config PACKAGE_B43_BUSES_SSB + depends on !TARGET_brcm47xx_mips74k && !TARGET_bcm53xx + bool "SSB only" + + endchoice + + config PACKAGE_B43_DEBUG + bool "Enable debug output and debugfs for b43" + default n + help + Enable additional debug output and runtime sanity checks for b43 + and enables the debugfs interface. + + If unsure, say N. + + config PACKAGE_B43_PIO + bool "Enable support for PIO transfer mode" + default n + help + Enable support for using PIO instead of DMA. Unless you have DMA + transfer problems you don't need this. + + If unsure, say N. + + config PACKAGE_B43_PHY_G + bool "Enable support for G-PHYs" + default n if TARGET_brcm47xx_mips74k + default y + help + Enable support for G-PHY. This includes support for the following devices: + PCI: BCM4306, BCM4311, BCM4318 + SoC: BCM5352E, BCM4712 + + If unsure, say Y. + + config PACKAGE_B43_PHY_N + bool "Enable support for N-PHYs" + default y + help + Enable support for N-PHY. This includes support for the following devices: + PCI: BCM4321, BCM4322, BCM43222, BCM43224, BCM43225 + SoC: BCM4716, BCM4717, BCM4718 + + Currently only 11g speed is available. + + If unsure, say Y. + + config PACKAGE_B43_PHY_LP + bool "Enable support for LP-PHYs" + default n if TARGET_brcm47xx_mips74k + default y + help + Enable support for LP-PHY. This includes support for the following devices: + PCI: BCM4312 + SoC: BCM5354 + + If unsure, say Y. + + config PACKAGE_B43_PHY_HT + bool "Enable support for HT-PHYs" + default n if TARGET_brcm47xx_legacy + default y + help + Enable support for HT-PHY. This includes support for the following devices: + PCI: BCM4331 + + Currently only 11g speed is available. + + If unsure, say Y. + + config PACKAGE_B43_PHY_LCN + bool "Enable support for LCN-PHYs" + depends on BROKEN + default n + help + Currently broken. + + If unsure, say N. + + endif +endef + +define KernelPackage/b43/description +Kernel module for Broadcom 43xx wireless support (mac80211 stack) new +endef + +define KernelPackage/b43legacy + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom 43xx-legacy wireless support + URL:=https://wireless.wiki.kernel.org/en/users/drivers/b43 + KCONFIG:= \ + CONFIG_HW_RANDOM=y + DEPENDS+= +kmod-mac80211 +!(TARGET_brcm47xx||TARGET_brcm63xx):kmod-ssb +b43legacy-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/b43legacy/b43legacy.ko + AUTOLOAD:=$(call AutoProbe,b43legacy) + MENU:=1 +endef + +define KernelPackage/b43legacy/description +Kernel module for Broadcom 43xx-legacy wireless support (mac80211 stack) new +endef + + +define KernelPackage/brcmutil + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom IEEE802.11n common driver parts + URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 + DEPENDS+=@PCI_SUPPORT||USB_SUPPORT + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmutil/brcmutil.ko + AUTOLOAD:=$(call AutoProbe,brcmutil) + MENU:=1 +endef + +define KernelPackage/brcmutil/description + This module contains some common parts needed by Broadcom Wireless drivers brcmsmac and brcmfmac. +endef + +define KernelPackage/brcmutil/config + if PACKAGE_kmod-brcmutil + + config PACKAGE_BRCM80211_DEBUG + bool "Broadcom wireless driver debugging" + help + Say Y, if you want to debug brcmsmac and brcmfmac wireless driver. + + endif +endef + +PKG_BRCMSMAC_FW_NAME:=broadcom-wl +PKG_BRCMSMAC_FW_VERSION:=5.100.138 +PKG_BRCMSMAC_FW_OBJECT:=$(PKG_BRCMSMAC_FW_NAME)-$(PKG_BRCMSMAC_FW_VERSION)/linux/wl_apsta.o +PKG_BRCMSMAC_FW_SOURCE:=$(PKG_BRCMSMAC_FW_NAME)-$(PKG_BRCMSMAC_FW_VERSION).tar.bz2 +PKG_BRCMSMAC_FW_SOURCE_URL:=http://www.lwfinger.com/b43-firmware/ +PKG_BRCMSMAC_FW_MD5SUM:=f4e357b09eaf5d8b1f1920cf3493a555 + +define Download/brcmsmac + FILE:=$(PKG_BRCMSMAC_FW_SOURCE) + URL:=$(PKG_BRCMSMAC_FW_SOURCE_URL) + MD5SUM:=$(PKG_BRCMSMAC_FW_MD5SUM) +endef +$(eval $(call Download,brcmsmac)) + +define KernelPackage/brcmsmac + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom IEEE802.11n PCIe SoftMAC WLAN driver + URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 + DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT +!TARGET_brcm47xx:kmod-bcma +kmod-lib-cordic +kmod-lib-crc8 +kmod-brcmutil +!BRCMSMAC_USE_FW_FROM_WL:brcmsmac-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/broadcom/brcm80211/brcmsmac/brcmsmac.ko + AUTOLOAD:=$(call AutoProbe,brcmsmac) + MENU:=1 +endef + +define KernelPackage/brcmsmac/description + Kernel module for Broadcom IEEE802.11n PCIe Wireless cards +endef + +define KernelPackage/brcmsmac/config + if PACKAGE_kmod-brcmsmac + + config BRCMSMAC_USE_FW_FROM_WL + bool "Use firmware extracted from broadcom proprietary driver" + default y + help + Instead of using the official brcmsmac firmware a firmware + version 666.2 extracted from the proprietary Broadcom driver + is used. This is needed to get core rev 17 used in bcm4716 + to work. + + If unsure, say Y. + + endif +endef + + +define KernelPackage/brcmfmac + $(call KernelPackage/mac80211/Default) + TITLE:=Broadcom IEEE802.11n USB FullMAC WLAN driver + URL:=https://wireless.wiki.kernel.org/en/users/drivers/brcm80211 + DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +@DRIVER_11N_SUPPORT +kmod-brcmutil \ + +BRCMFMAC_PCIE:brcmfmac-firmware-pcie \ + +BRCMFMAC_SDIO:kmod-mmc +BRCMFMAC_SDIO:brcmfmac-firmware-sdio \ + +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) +endef + +define KernelPackage/brcmfmac/description + Kernel module for Broadcom IEEE802.11n USB Wireless cards +endef + +define KernelPackage/brcmfmac/config + if PACKAGE_kmod-brcmfmac + + config BRCMFMAC_SDIO + bool "Enable SDIO bus interface support" + default n + help + Enable support for cards attached to an SDIO bus. + Select this option only if you are sure that your + board has a Broadcom wireless chip atacched to + that bus. + + config BRCMFMAC_USB + bool "Enable USB bus interface support" + depends on USB_SUPPORT + default y + help + Supported USB connected chipsets: + BCM43235, BCM43236, BCM43238 (all in revision 3 only) + BCM43143, BCM43242, BCM43566, BCM43569 + + config BRCMFMAC_PCIE + bool "Enable PCIE bus interface support" + depends on PCI_SUPPORT + default y + help + Supported PCIe connected chipsets: + BCM4354, BCM4356, BCM43567, BCM43570, BCM43602 + + endif +endef + + +define KernelPackage/carl9170 + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for Atheros AR9170 USB sticks + DEPENDS:=@USB_SUPPORT +kmod-mac80211 +kmod-ath +kmod-usb-core +kmod-input-core +@DRIVER_11N_SUPPORT +carl9170-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ath/carl9170/carl9170.ko + AUTOLOAD:=$(call AutoProbe,carl9170) +endef + + +define KernelPackage/hermes + $(call KernelPackage/mac80211/Default) + TITLE:=Hermes 802.11b chipset support + DEPENDS:=@PCI_SUPPORT||PCMCIA_SUPPORT +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT +kmod-crypto-michael-mic + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco.ko + AUTOLOAD:=$(call AutoProbe,orinoco) +endef + +define KernelPackage/hermes/description + Kernel support for Hermes 802.11b chipsets +endef + +define KernelPackage/hermes-pci + $(call KernelPackage/mac80211/Default) + TITLE:=Intersil Prism 2.5 PCI support + DEPENDS:=@PCI_SUPPORT +kmod-hermes + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_pci.ko + AUTOLOAD:=$(call AutoProbe,orinoco_pci) +endef + +define KernelPackage/hermes-pci/description + Kernel modules for Intersil Prism 2.5 PCI support +endef + +define KernelPackage/hermes-plx + $(call KernelPackage/mac80211/Default) + TITLE:=PLX9052 based PCI adaptor + DEPENDS:=@PCI_SUPPORT +kmod-hermes + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_plx.ko + AUTOLOAD:=$(call AutoProbe,orinoco_plx) +endef + +define KernelPackage/hermes-plx/description + Kernel modules for Hermes in PLX9052 based PCI adaptors +endef + +define KernelPackage/hermes-pcmcia + $(call KernelPackage/mac80211/Default) + TITLE:=Hermes based PCMCIA adaptors + DEPENDS:=@PCMCIA_SUPPORT +kmod-hermes @BROKEN + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/orinoco/orinoco_cs.ko + AUTOLOAD:=$(call AutoProbe,orinoco_cs) +endef + +define KernelPackage/hermes-pcmcia/description + Kernel modules for Hermes based PCMCIA adaptors +endef + + +define KernelPackage/iwlwifi + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 @PCI_SUPPORT +@DRIVER_11N_SUPPORT +iwlwifi-firmware + TITLE:=Intel AGN Wireless support + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/iwlwifi.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/dvm/iwldvm.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlwifi/mvm/iwlmvm.ko + AUTOLOAD:=$(call AutoProbe,iwlwifi iwldvm iwlmvm) + MENU:=1 +endef + +define KernelPackage/iwlwifi/description + iwlwifi kernel module for + Intel Wireless WiFi Link 6250AGN Adapter + Intel 6000 Series Wi-Fi Adapters (6200AGN and 6300AGN) + Intel WiFi Link 1000BGN + Intel Wireless WiFi 5150AGN + Intel Wireless WiFi 5100AGN, 5300AGN, and 5350AGN + Intel 6005 Series Wi-Fi Adapters + Intel 6030 Series Wi-Fi Adapters + Intel Wireless WiFi Link 6150BGN 2 Adapter + Intel 100 Series Wi-Fi Adapters (100BGN and 130BGN) + Intel 2000 Series Wi-Fi Adapters + Intel 7260 Wi-Fi Adapter + Intel 3160 Wi-Fi Adapter + Intel 7265 Wi-Fi Adapter + Intel 8260 Wi-Fi Adapter + Intel 3165 Wi-Fi Adapter +endef + +define KernelPackage/iwlwifi/config + if PACKAGE_kmod-iwlwifi + + config PACKAGE_IWLWIFI_DEBUG + bool "Enable full debugging output in the iwlwifi driver" + default n + help + This option will enable debug tracing output for the iwlwifi drivers + + This will result in the kernel module being ~100k larger. You can + control which debug output is sent to the kernel log by setting the + value in + + /sys/module/iwlwifi/parameters/debug + + This entry will only exist if this option is enabled. + + To set a value, simply echo an 8-byte hex value to the same file: + + % echo 0x43fff > /sys/module/iwlwifi/parameters/debug + + You can find the list of debug mask values in: + drivers/net/wireless/intel/iwlwifi/iwl-debug.h + + If this is your first time using this driver, you should say Y here + as the debug information can assist others in helping you resolve + any problems you may encounter. + + config PACKAGE_IWLWIFI_DEBUGFS + bool "iwlwifi debugfs support" + depends on PACKAGE_MAC80211_DEBUGFS + default n + help + Enable creation of debugfs files for the iwlwifi drivers. This + is a low-impact option that allows getting insight into the + driver's state at runtime. + + endif +endef + +define KernelPackage/iwl-legacy + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 @PCI_SUPPORT + TITLE:=Intel legacy Wireless support + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwlegacy.ko + AUTOLOAD:=$(call AutoProbe,iwlegacy) +endef + +define KernelPackage/iwl-legacy/description + iwl-legacy kernel module for legacy Intel wireless support +endef + +define KernelPackage/iwl3945 + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy +iwl3945-firmware + TITLE:=Intel iwl3945 Wireless support + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwl3945.ko + AUTOLOAD:=$(call AutoProbe,iwl3945) +endef + +define KernelPackage/iwl3945/description + iwl3945 kernel module for Intel 3945 support +endef + +define KernelPackage/iwl4965 + $(call KernelPackage/mac80211/Default) + DEPENDS:= +kmod-mac80211 +kmod-iwl-legacy +@DRIVER_11N_SUPPORT +iwl4965-firmware + TITLE:=Intel iwl4965 Wireless support + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/iwlegacy/iwl4965.ko + AUTOLOAD:=$(call AutoProbe,iwl4965) +endef + +define KernelPackage/iwl4965/description + iwl4965 kernel module for Intel 4965 support +endef + + +define KernelPackage/lib80211 + $(call KernelPackage/mac80211/Default) + TITLE:=802.11 Networking stack + DEPENDS:=+kmod-cfg80211 + FILES:= \ + $(PKG_BUILD_DIR)/net/wireless/lib80211.ko \ + $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_wep.ko \ + $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_ccmp.ko \ + $(PKG_BUILD_DIR)/net/wireless/lib80211_crypt_tkip.ko + AUTOLOAD:=$(call AutoProbe, \ + lib80211 \ + lib80211_crypt_wep \ + lib80211_crypt_ccmp \ + lib80211_crypt_tkip \ + ) +endef + +define KernelPackage/lib80211/description + Kernel modules for 802.11 Networking stack + Includes: + - lib80211 + - lib80211_crypt_wep + - lib80211_crypt_tkip + - lib80211_crytp_ccmp +endef + + +define KernelPackage/libipw + $(call KernelPackage/mac80211/Default) + TITLE:=libipw for ipw2100 and ipw2200 + DEPENDS:=@PCI_SUPPORT +kmod-crypto-michael-mic +kmod-crypto-core +kmod-crypto-arc4 +kmod-lib80211 +kmod-cfg80211 +@DRIVER_WEXT_SUPPORT @!BIG_ENDIAN + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/libipw.ko + AUTOLOAD:=$(call AutoProbe,libipw) +endef + +define KernelPackage/libipw/description + Hardware independent IEEE 802.11 networking stack for ipw2100 and ipw2200. +endef + +IPW2100_NAME:=ipw2100-fw +IPW2100_VERSION:=1.3 + +define Download/ipw2100 + URL:=http://bughost.org/firmware/ + FILE:=$(IPW2100_NAME)-$(IPW2100_VERSION).tgz + MD5SUM=46aa75bcda1a00efa841f9707bbbd113 +endef +$(eval $(call Download,ipw2100)) + +define KernelPackage/ipw2100 + $(call KernelPackage/mac80211/Default) + TITLE:=Intel IPW2100 driver + DEPENDS:=@PCI_SUPPORT +kmod-libipw + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/ipw2100.ko + AUTOLOAD:=$(call AutoProbe,ipw2100) +endef + +define KernelPackage/ipw2100/description + Kernel support for Intel IPW2100 + Includes: + - ipw2100 +endef + +IPW2200_NAME:=ipw2200-fw +IPW2200_VERSION:=3.1 + +define Download/ipw2200 + URL:=http://bughost.org/firmware/ + FILE:=$(IPW2200_NAME)-$(IPW2200_VERSION).tgz + MD5SUM=eaba788643c7cc7483dd67ace70f6e99 +endef +$(eval $(call Download,ipw2200)) + +define KernelPackage/ipw2200 + $(call KernelPackage/mac80211/Default) + TITLE:=Intel IPW2200 driver + DEPENDS:=@PCI_SUPPORT +kmod-libipw + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intel/ipw2x00/ipw2200.ko + AUTOLOAD:=$(call AutoProbe,ipw2200) +endef + +define KernelPackage/ipw2200/description + Kernel support for Intel IPW2200 + Includes: + - ipw2200 +endef + + +define KernelPackage/libertas-usb + $(call KernelPackage/mac80211/Default) + DEPENDS+= @USB_SUPPORT +kmod-cfg80211 +kmod-usb-core +kmod-lib80211 +@DRIVER_WEXT_SUPPORT +libertas-usb-firmware + TITLE:=Marvell 88W8015 Wireless Driver + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/usb8xxx.ko + AUTOLOAD:=$(call AutoProbe,libertas usb8xxx) +endef + +define KernelPackage/libertas-sdio + $(call KernelPackage/mac80211/Default) + DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +kmod-mmc +@DRIVER_WEXT_SUPPORT @!TARGET_uml +libertas-sdio-firmware + TITLE:=Marvell 88W8686 Wireless Driver + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas_sdio.ko + AUTOLOAD:=$(call AutoProbe,libertas libertas_sdio) +endef + +define KernelPackage/libertas-spi + $(call KernelPackage/mac80211/Default) + SUBMENU:=Wireless Drivers + DEPENDS+= +kmod-cfg80211 +kmod-lib80211 +@DRIVER_WEXT_SUPPORT +libertas-spi-firmware + KCONFIG := \ + CONFIG_SPI=y \ + CONFIG_SPI_MASTER=y + TITLE:=Marvell 88W8686 SPI Wireless Driver + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/libertas/libertas_spi.ko + AUTOLOAD:=$(call AutoProbe,libertas libertas_spi) +endef + +define KernelPackage/mac80211-hwsim + $(call KernelPackage/mac80211/Default) + TITLE:=mac80211 HW simulation device + DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mac80211_hwsim.ko + AUTOLOAD:=$(call AutoProbe,mac80211_hwsim) +endef + + +define KernelPackage/mt7601u + $(call KernelPackage/mac80211/Default) + TITLE:=MT7601U-based USB dongles Wireless Driver + DEPENDS+= +kmod-mac80211 +@DRIVER_11N_SUPPORT @USB_SUPPORT +kmod-usb-core +mt7601u-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/mediatek/mt7601u/mt7601u.ko + AUTOLOAD:=$(call AutoProbe,mt7601u) +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 + DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +mwl8k-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwl8k.ko + AUTOLOAD:=$(call AutoProbe,mwl8k) +endef + +define KernelPackage/mwl8k/description + Kernel modules for Marvell TOPDOG 802.11 Wireless cards +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 + DEPENDS+= @PCI_SUPPORT +kmod-mac80211 +@DRIVER_11N_SUPPORT +mwifiex-pcie-firmware + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/marvell/mwifiex/mwifiex_pcie.ko + AUTOLOAD:=$(call AutoProbe,mwifiex_pcie) +endef + +define KernelPackage/mwifiex-pcie/description + Kernel modules for Marvell 802.11n/802.11ac PCIe Wireless cards +endef + + +# Prism54 drivers +P54PCIFW:=2.13.12.0.arm +P54USBFW:=2.13.24.0.lm87.arm +P54SPIFW:=2.13.0.0.a.13.14.arm + +define Download/p54usb + FILE:=$(P54USBFW) + URL:=http://daemonizer.de/prism54/prism54-fw/fw-usb + MD5SUM:=8e8ab005a4f8f0123bcdc51bc25b47f6 +endef +$(eval $(call Download,p54usb)) + +define Download/p54pci + FILE:=$(P54PCIFW) + URL:=http://daemonizer.de/prism54/prism54-fw/fw-softmac + MD5SUM:=ff7536af2092b1c4b21315bd103ef4c4 +endef +$(eval $(call Download,p54pci)) + +define Download/p54spi + FILE:=$(P54SPIFW) + URL:=http://daemonizer.de/prism54/prism54-fw/stlc4560 + MD5SUM:=42661f8ecbadd88012807493f596081d +endef +$(eval $(call Download,p54spi)) + +define KernelPackage/p54/Default + $(call KernelPackage/mac80211/Default) + TITLE:=Prism54 Drivers +endef + +define KernelPackage/p54/description + Kernel module for Prism54 chipsets (mac80211) +endef + +define KernelPackage/p54-common + $(call KernelPackage/p54/Default) + DEPENDS+= @PCI_SUPPORT||@USB_SUPPORT||@TARGET_omap24xx +kmod-mac80211 +kmod-lib-crc-ccitt + TITLE+= (COMMON) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54common.ko +endef + +define KernelPackage/p54-pci + $(call KernelPackage/p54/Default) + TITLE+= (PCI) + DEPENDS+= @PCI_SUPPORT +kmod-p54-common + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54pci.ko + AUTOLOAD:=$(call AutoProbe,p54pci) +endef + +define KernelPackage/p54-usb + $(call KernelPackage/p54/Default) + TITLE+= (USB) + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-p54-common + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54usb.ko + AUTOLOAD:=$(call AutoProbe,p54usb) +endef + +define KernelPackage/p54-spi + $(call KernelPackage/p54/Default) + TITLE+= (SPI) + DEPENDS+= @TARGET_omap24xx +kmod-p54-common + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/intersil/p54/p54spi.ko + AUTOLOAD:=$(call AutoProbe,p54spi) +endef + +define KernelPackage/rt2x00/Default + $(call KernelPackage/mac80211/Default) + TITLE:=Ralink Drivers for RT2x00 cards +endef + +define KernelPackage/rt2x00-lib +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-mac80211 +kmod-lib-crc-itu-t + TITLE+= (LIB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00lib.ko + MENU:=1 +endef + +define KernelPackage/rt2x00-lib/config + if PACKAGE_kmod-rt2x00-lib + + config PACKAGE_RT2X00_LIB_DEBUGFS + bool "Enable rt2x00 debugfs support" + depends on PACKAGE_MAC80211_DEBUGFS + help + Enable creation of debugfs files for the rt2x00 drivers. + These debugfs files support both reading and writing of the + most important register types of the rt2x00 hardware. + + config PACKAGE_RT2X00_DEBUG + bool "Enable rt2x00 debug output" + help + Enable debugging output for all rt2x00 modules + + endif +endef + +define KernelPackage/rt2x00-mmio +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @(PCI_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-eeprom-93cx6 + HIDDEN:=1 + TITLE+= (MMIO) + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00mmio.ko +endef + +define KernelPackage/rt2x00-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-mmio +kmod-rt2x00-lib + HIDDEN:=1 + TITLE+= (PCI) + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00pci.ko + AUTOLOAD:=$(call AutoProbe,rt2x00pci) +endef + +define KernelPackage/rt2x00-usb +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-lib +kmod-usb-core + HIDDEN:=1 + TITLE+= (USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00usb.ko + AUTOLOAD:=$(call AutoProbe,rt2x00usb) +endef + +define KernelPackage/rt2800-lib +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT||TARGET_ramips) +kmod-rt2x00-lib +kmod-lib-crc-ccitt +@DRIVER_11N_SUPPORT + HIDDEN:=1 + TITLE+= (rt2800 LIB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800lib.ko +endef + +define KernelPackage/rt2400-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci + TITLE+= (RT2400 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2400pci.ko + AUTOLOAD:=$(call AutoProbe,rt2400pci) +endef + +define KernelPackage/rt2500-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci + TITLE+= (RT2500 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2500pci.ko + AUTOLOAD:=$(call AutoProbe,rt2500pci) +endef + +define KernelPackage/rt2500-usb +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb + TITLE+= (RT2500 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2500usb.ko + AUTOLOAD:=$(call AutoProbe,rt2500usb) +endef + +define KernelPackage/rt2800-mmio +$(call KernelPackage/rt2x00/Default) + TITLE += (RT28xx/RT3xxx MMIO) + DEPENDS += +kmod-rt2800-lib +kmod-rt2x00-mmio + HIDDEN:=1 + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800mmio.ko +endef + +define KernelPackage/rt2800-soc +$(call KernelPackage/rt2x00/Default) + DEPENDS += @(TARGET_ramips_rt288x||TARGET_ramips_rt305x||TARGET_ramips_rt3883||TARGET_ramips_mt7620) +kmod-rt2800-mmio +kmod-rt2800-lib + TITLE += (RT28xx/RT3xxx SoC) + FILES := \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2x00soc.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800soc.ko + AUTOLOAD:=$(call AutoProbe,rt2800soc) +endef + +define KernelPackage/rt2800-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci +kmod-rt2800-lib +kmod-rt2800-mmio +rt2800-pci-firmware + TITLE+= (RT2860 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800pci.ko + AUTOLOAD:=$(call AutoProbe,rt2800pci) +endef + +define KernelPackage/rt2800-usb +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb +kmod-rt2800-lib +kmod-lib-crc-ccitt +rt2800-usb-firmware + TITLE+= (RT2870 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt2800usb.ko + AUTOLOAD:=$(call AutoProbe,rt2800usb) +endef + + +define KernelPackage/rt61-pci +$(call KernelPackage/rt2x00/Default) + DEPENDS+= @PCI_SUPPORT +kmod-rt2x00-pci +rt61-pci-firmware + TITLE+= (RT2x61 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt61pci.ko + AUTOLOAD:=$(call AutoProbe,rt61pci) +endef + +define KernelPackage/rt73-usb + $(call KernelPackage/rt2x00/Default) + DEPENDS+= @USB_SUPPORT +kmod-rt2x00-usb +rt73-usb-firmware + TITLE+= (RT73 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/ralink/rt2x00/rt73usb.ko + AUTOLOAD:=$(call AutoProbe,rt73usb) +endef + + +define KernelPackage/rtl818x/Default + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek Drivers for RTL818x devices + URL:=http://wireless.kernel.org/en/users/Drivers/rtl8187 + DEPENDS+= +kmod-eeprom-93cx6 +kmod-mac80211 +endef + +define KernelPackage/rtl8180 + $(call KernelPackage/rtl818x/Default) + DEPENDS+= @PCI_SUPPORT + TITLE+= (RTL8180 PCI) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl818x/rtl8180/rtl818x_pci.ko + AUTOLOAD:=$(call AutoProbe,rtl818x_pci) +endef + +define KernelPackage/rtl8187 +$(call KernelPackage/rtl818x/Default) + DEPENDS+= @USB_SUPPORT +kmod-usb-core + TITLE+= (RTL8187 USB) + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl818x/rtl8187/rtl8187.ko + AUTOLOAD:=$(call AutoProbe,rtl8187) +endef + +define KernelPackage/rtlwifi/config + config PACKAGE_RTLWIFI_DEBUG + bool "Realtek wireless debugging" + depends on PACKAGE_kmod-rtlwifi + help + Say Y, if you want to debug realtek wireless drivers. + +endef + +define KernelPackage/rtlwifi + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek common driver part + DEPENDS+= @(PCI_SUPPORT||USB_SUPPORT) +kmod-mac80211 +@DRIVER_11N_SUPPORT + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtlwifi.ko + HIDDEN:=1 +endef + +define KernelPackage/rtlwifi-pci + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek common driver part (PCI support) + DEPENDS+= @PCI_SUPPORT +kmod-rtlwifi + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl_pci.ko + AUTOLOAD:=$(call AutoProbe,rtl_pci) + HIDDEN:=1 +endef + +define KernelPackage/rtlwifi-usb + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek common driver part (USB support) + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-rtlwifi + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl_usb.ko + AUTOLOAD:=$(call AutoProbe,rtl_usb) + HIDDEN:=1 +endef + +define KernelPackage/rtl8192c-common + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192CE/RTL8192CU common support module + DEPENDS+= +kmod-rtlwifi + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192c/rtl8192c-common.ko + HIDDEN:=1 +endef + +define KernelPackage/rtl8192ce + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192CE/RTL8188CE support + DEPENDS+= +kmod-rtlwifi-pci +kmod-rtl8192c-common +rtl8192ce-firmware + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192ce/rtl8192ce.ko + AUTOLOAD:=$(call AutoProbe,rtl8192ce) +endef + +define KernelPackage/rtl8192se + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192SE/RTL8191SE support + DEPENDS+= +kmod-rtlwifi-pci +rtl8192se-firmware + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192se/rtl8192se.ko + AUTOLOAD:=$(call AutoProbe,rtl8192se) +endef + +define KernelPackage/rtl8192de + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192DE/RTL8188DE support + DEPENDS+= +kmod-rtlwifi-pci +rtl8192de-firmware + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192de/rtl8192de.ko + AUTOLOAD:=$(call AutoProbe,rtl8192de) +endef + +define KernelPackage/rtl8192cu + $(call KernelPackage/mac80211/Default) + TITLE:=Realtek RTL8192CU/RTL8188CU support + DEPENDS+= +kmod-rtlwifi-usb +kmod-rtl8192c-common +rtl8192cu-firmware + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtlwifi/rtl8192cu/rtl8192cu.ko + AUTOLOAD:=$(call AutoProbe,rtl8192cu) +endef + + +define KernelPackage/rtl8xxxu + $(call KernelPackage/mac80211/Default) + TITLE:=alternative Realtek RTL8XXXU support + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211 + FILES:= $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8xxxu/rtl8xxxu.ko + AUTOLOAD:=$(call AutoProbe,rtl8xxxu) +endef + +define KernelPackage/rtl8xxxu/description + This is an alternative driver for various Realtek RTL8XXX + parts written to utilize the Linux mac80211 stack. + The driver is known to work with a number of RTL8723AU, + RL8188CU, RTL8188RU, RTL8191CU, and RTL8192CU devices + + This driver is under development and has a limited feature + set. In particular it does not yet support 40MHz channels + and power management. However it should have a smaller + memory footprint than the vendor drivers and benetifs + from the in kernel mac80211 stack. + + It can coexist with drivers from drivers/staging/rtl8723au, + drivers/staging/rtl8192u, and drivers/net/wireless/rtlwifi, + but you will need to control which module you wish to load. + + RTL8XXXU_UNTESTED is enabled + This option enables detection of Realtek 8723/8188/8191/8192 WiFi + USB devices which have not been tested directly by the driver + author or reported to be working by third parties. + + Please report your results! +endef + + +define KernelPackage/wlcore + $(call KernelPackage/mac80211/Default) + TITLE:=TI common driver part + DEPENDS+= @TARGET_omap +kmod-mac80211 +@DRIVER_11N_SUPPORT + FILES:= \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore.ko \ + $(PKG_BUILD_DIR)/drivers/net/wireless/ti/wlcore/wlcore_sdio.ko + AUTOLOAD:=$(call AutoProbe,wlcore wlcore_sdio) +endef + +define KernelPackage/wlcore/description + This module contains some common parts needed by TI Wireless drivers. +endef + +define KernelPackage/wl12xx + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for TI WL12xx + URL:=http://wireless.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) +endef + +define KernelPackage/wl12xx/description + Kernel modules for TI WL12xx +endef + +define KernelPackage/wl18xx + $(call KernelPackage/mac80211/Default) + TITLE:=Driver for TI WL18xx + URL:=http://wireless.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) +endef + +define KernelPackage/wl18xx/description + Kernel modules for TI WL18xx +endef + + +ZD1211FW_NAME:=zd1211-firmware +ZD1211FW_VERSION:=1.4 +define Download/zd1211rw + FILE:=$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2 + URL:=@SF/zd1211/ + MD5SUM:=19f28781d76569af8551c9d11294c870 +endef +$(eval $(call Download,zd1211rw)) + +define KernelPackage/zd1211rw + $(call KernelPackage/mac80211/Default) + TITLE:=Zydas ZD1211 support + DEPENDS+= @USB_SUPPORT +kmod-usb-core +kmod-mac80211 + FILES:=$(PKG_BUILD_DIR)/drivers/net/wireless/zydas/zd1211rw/zd1211rw.ko + AUTOLOAD:=$(call AutoProbe,zd1211rw) +endef + + + +config_package=$(if $(CONFIG_PACKAGE_kmod-$(1)),m) + +config-y:= \ + WLAN \ + NL80211_TESTMODE \ + CFG80211_WEXT \ + CFG80211_INTERNAL_REGDB \ + CFG80211_CERTIFICATION_ONUS \ + MAC80211_RC_MINSTREL \ + MAC80211_RC_MINSTREL_HT \ + MAC80211_RC_MINSTREL_VHT \ + MAC80211_RC_DEFAULT_MINSTREL \ + WLAN_VENDOR_ADMTEK \ + WLAN_VENDOR_ATH \ + WLAN_VENDOR_ATMEL \ + WLAN_VENDOR_BROADCOM \ + WLAN_VENDOR_INTEL \ + WLAN_VENDOR_INTERSIL \ + WLAN_VENDOR_MARVELL \ + WLAN_VENDOR_MEDIATEK \ + WLAN_VENDOR_RALINK \ + WLAN_VENDOR_REALTEK \ + WLAN_VENDOR_RSI \ + WLAN_VENDOR_ST \ + WLAN_VENDOR_TI \ + WLAN_VENDOR_ZYDAS \ + +config-$(call config_package,cfg80211) += CFG80211 + +config-$(call config_package,mac80211) += MAC80211 +config-$(CONFIG_PACKAGE_MAC80211_MESH) += MAC80211_MESH +ifdef CONFIG_PACKAGE_MAC80211_DEBUGFS + config-y += \ + CFG80211_DEBUGFS \ + MAC80211_DEBUGFS \ + ATH9K_DEBUGFS \ + ATH9K_HTC_DEBUGFS \ + ATH10K_DEBUGFS \ + CARL9170_DEBUGFS \ + ATH5K_DEBUG +endif + +ifdef CONFIG_PACKAGE_MAC80211_TRACING + config-y += \ + ATH10K_TRACING \ + ATH6KL_TRACING \ + ATH_TRACEPOINTS \ + WIL6210_TRACING \ + ATH5K_TRACER \ + IWLWIFI_DEVICE_TRACING +endif + +config-$(call config_package,lib80211) += LIB80211 LIB80211_CRYPT_WEP LIB80211_CRYPT_CCMP LIB80211_CRYPT_TKIP + +config-$(call config_package,ath) += ATH_CARDS ATH_COMMON +config-$(CONFIG_PACKAGE_ATH_DEBUG) += ATH_DEBUG ATH10K_DEBUG +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_PCI) += ATH9K_PCI +config-$(CONFIG_ATH_USER_REGD) += ATH_USER_REGD +config-$(CONFIG_ATH9K_SUPPORT_PCOEM) += ATH9K_PCOEM + +config-$(call config_package,ath9k-htc) += ATH9K_HTC +config-$(call config_package,ath10k) += ATH10K ATH10K_PCI + +config-$(call config_package,ath5k) += ATH5K +ifdef CONFIG_TARGET_ath25 + config-y += ATH5K_AHB +else + config-y += ATH5K_PCI +endif + +config-$(call config_package,carl9170) += CARL9170 + +config-$(call config_package,b43) += B43 +config-$(CONFIG_PACKAGE_B43_BUSES_BCMA_AND_SSB) += B43_BUSES_BCMA_AND_SSB +config-$(CONFIG_PACKAGE_B43_BUSES_BCMA) += B43_BUSES_BCMA +config-$(CONFIG_PACKAGE_B43_BUSES_SSB) += B43_BUSES_SSB +config-$(CONFIG_PACKAGE_B43_PHY_G) += B43_PHY_G +config-$(CONFIG_PACKAGE_B43_PHY_N) += B43_PHY_N +config-$(CONFIG_PACKAGE_B43_PHY_LP) += B43_PHY_LP +config-$(CONFIG_PACKAGE_B43_PHY_HT) += B43_PHY_HT +config-$(CONFIG_PACKAGE_B43_PIO) += B43_PIO +config-$(CONFIG_PACKAGE_B43_DEBUG) += B43_DEBUG + +config-$(call config_package,b43legacy) += B43LEGACY +config-y += B43LEGACY_DMA_MODE + +config-$(call config_package,brcmutil) += BRCMUTIL +config-$(call config_package,brcmsmac) += BRCMSMAC +config-$(call config_package,brcmfmac) += BRCMFMAC +config-$(CONFIG_BRCMFMAC_SDIO) += BRCMFMAC_SDIO +config-$(CONFIG_BRCMFMAC_USB) += BRCMFMAC_USB +config-$(CONFIG_BRCMFMAC_PCIE) += BRCMFMAC_PCIE +config-$(CONFIG_PACKAGE_BRCM80211_DEBUG) += BRCMDBG + +config-$(call config_package,mac80211-hwsim) += MAC80211_HWSIM +config-$(call config_package,mt7601u) += MT7601U +config-y += WL_MEDIATEK + +config-$(call config_package,rt2x00-lib) += RT2X00 RT2X00_LIB +config-$(call config_package,rt2x00-pci) += RT2X00_LIB_PCI +config-$(call config_package,rt2x00-mmio) += RT2X00_LIB_MMIO +config-$(call config_package,rt2x00-usb) += RT2X00_LIB_USB +config-$(CONFIG_PACKAGE_RT2X00_LIB_DEBUGFS) += RT2X00_LIB_DEBUGFS +config-$(CONFIG_PACKAGE_RT2X00_DEBUG) += RT2X00_DEBUG + +config-$(call config_package,rt2400-pci) += RT2400PCI +config-$(call config_package,rt2500-pci) += RT2500PCI +config-$(call config_package,rt2500-usb) += RT2500USB +config-$(call config_package,rt61-pci) += RT61PCI +config-$(call config_package,rt73-usb) += RT73USB + +config-$(call config_package,rt2800-lib) += RT2800_LIB + +config-$(call config_package,rt2800-soc) += RT2800SOC +config-$(call config_package,rt2800-pci) += RT2800PCI +config-y += RT2800PCI_RT33XX RT2800PCI_RT35XX RT2800PCI_RT53XX RT2800PCI_RT3290 + +config-$(call config_package,rt2800-usb) += RT2800USB +config-y += RT2800USB_RT33XX RT2800USB_RT35XX RT2800USB_RT3573 RT2800USB_RT53XX RT2800USB_RT55XX RT2800USB_UNKNOWN + +config-$(call config_package,iwl-legacy) += IWLEGACY +config-$(call config_package,iwl3945) += IWL3945 +config-$(call config_package,iwl4965) += IWL4965 +config-$(call config_package,iwlwifi) += IWLWIFI IWLDVM IWLMVM +config-$(CONFIG_PACKAGE_IWLWIFI_DEBUG)+= IWLWIFI_DEBUG +config-$(CONFIG_PACKAGE_IWLWIFI_DEBUGFS)+= IWLWIFI_DEBUGFS + +config-$(call config_package,libipw) += LIBIPW +config-$(call config_package,ipw2100) += IPW2100 +config-$(call config_package,ipw2200) += IPW2200 + +config-$(call config_package,p54-common) += P54_COMMON +config-$(call config_package,p54-pci) += P54_PCI +config-$(call config_package,p54-usb) += P54_USB +config-$(call config_package,p54-spi) += P54_SPI + +config-$(call config_package,hermes) += HERMES +config-$(call config_package,hermes-pci) += PCI_HERMES +config-$(call config_package,hermes-plx) += PLX_HERMES +config-$(call config_package,hermes-pcmcia) += PCMCIA_HERMES +config-y += HERMES_PRISM + +config-$(call config_package,adm8211) += ADM8211 +config-$(call config_package,libertas-sdio) += LIBERTAS LIBERTAS_SDIO +config-$(call config_package,libertas-usb) += LIBERTAS LIBERTAS_USB +config-$(call config_package,libertas-spi) += LIBERTAS LIBERTAS_SPI +config-$(call config_package,mwl8k) += MWL8K +config-$(call config_package,mwifiex-pcie) += MWIFIEX MWIFIEX_PCIE +config-$(call config_package,rtl8180) += RTL8180 +config-$(call config_package,rtl8187) += RTL8187 +config-$(call config_package,wlcore) += WLCORE WLCORE_SDIO +config-$(call config_package,wl12xx) += WL12XX +config-$(call config_package,wl18xx) += WL18XX +config-y += WL_TI WILINK_PLATFORM_DATA +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-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-$(CONFIG_PACKAGE_RTLWIFI_DEBUG) += RTLWIFI_DEBUG +config-$(call config_package,rtl8192cd) += RTL8192CD + +config-$(call config_package,rtl8xxxu) += RTL8XXXU +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)" \ + EXTRA_CFLAGS="-I$(PKG_BUILD_DIR)/include $(IREMAP_CFLAGS)" \ + KLIB_BUILD="$(LINUX_DIR)" \ + MODPROBE=true \ + KLIB=$(TARGET_MODULES_DIR) \ + KERNEL_SUBLEVEL=$(lastword $(subst ., ,$(KERNEL_PATCHVER))) \ + KBUILD_LDFLAGS_MODULE_PREREQ= + +ifneq ($(findstring c,$(OPENWRT_VERBOSE)),) + MAKE_OPTS += V=1 +endif + +ifeq ($(CONFIG_PACKAGE_kmod-rtl8192cd),y) + MAKE_OPTS += "EXTRA_CFLAGS += -I$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd \ + -I$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd/phydm \ + -I$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd/WlanHAL \ + -I$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/RTL88XX \ + -I$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/HalMac88XX \ + -DDM_ODM_SUPPORT_TYPE=0x1" +endif +ifeq ($(CONFIG_TARGET_rtkmipsel_rtl8197f),y) +MAKE_OPTS += "EXTRA_CFLAGS += -I$(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd/efuse_97f" +endif + +define ConfigVars +$(subst $(space),,$(foreach opt,$(config-$(1)),CPTCFG_$(opt)=$(1) +)) +endef + +define mac80211_config +$(call ConfigVars,m)$(call ConfigVars,y) +endef +$(eval $(call shexport,mac80211_config)) + +define Build/Prepare + rm -rf $(PKG_BUILD_DIR) + mkdir -p $(PKG_BUILD_DIR) + $(PKG_UNPACK) +#rtk workaround + mkdir -p $(PKG_BUILD_DIR)/drivers/net/wireless + $(CP) -r $(LINUX_DIR)/drivers/net/wireless/rtl8192cd $(PKG_BUILD_DIR)/drivers/net/wireless/realtek +#-------------- +#ignitenet workaround +ifneq ($(wildcard $(PLATFORM_DIR)/files-$(PROFILE)/),) + $(CP) -vr $(PLATFORM_DIR)/files-$(PROFILE)/* $(PKG_BUILD_DIR)/ +endif +#-------------- + $(Build/Patch) + $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IPW2100_NAME)-$(IPW2100_VERSION).tgz + $(TAR) -C $(PKG_BUILD_DIR) -xzf $(DL_DIR)/$(IPW2200_NAME)-$(IPW2200_VERSION).tgz + $(TAR) -C $(PKG_BUILD_DIR) -xjf $(DL_DIR)/$(ZD1211FW_NAME)-$(ZD1211FW_VERSION).tar.bz2 + rm -rf \ + $(PKG_BUILD_DIR)/include/linux/ssb \ + $(PKG_BUILD_DIR)/include/linux/bcma \ + $(PKG_BUILD_DIR)/include/net/bluetooth + + rm -f \ + $(PKG_BUILD_DIR)/include/linux/cordic.h \ + $(PKG_BUILD_DIR)/include/linux/crc8.h \ + $(PKG_BUILD_DIR)/include/linux/eeprom_93cx6.h \ + $(PKG_BUILD_DIR)/include/linux/wl12xx.h \ + $(PKG_BUILD_DIR)/include/linux/spi/libertas_spi.h \ + $(PKG_BUILD_DIR)/include/net/ieee80211.h \ + $(PKG_BUILD_DIR)/backport-include/linux/bcm47xx_nvram.h + + echo 'compat-wireless-$(PKG_VERSION)-$(PKG_RELEASE)-$(REVISION)' > $(PKG_BUILD_DIR)/compat_version + $(CP) ./files/regdb.txt $(PKG_BUILD_DIR)/net/wireless/db.txt +#ignitenet workaround +ifneq ($(wildcard ./files/regdb_$(PROFILE).txt),) + $(CP) ./files/regdb_$(PROFILE).txt $(PKG_BUILD_DIR)/net/wireless/db.txt +endif +#-------------- +endef + +ifneq ($(CONFIG_PACKAGE_kmod-cfg80211)$(CONFIG_PACKAGE_kmod-lib80211),) + define Build/Compile/kmod + rm -rf $(PKG_BUILD_DIR)/modules + +$(MAKE) $(PKG_JOBS) $(MAKE_OPTS) modules + endef +endif + +define Build/Configure + cmp $(PKG_BUILD_DIR)/include/linux/ath9k_platform.h $(LINUX_DIR)/include/linux/ath9k_platform.h + cmp $(PKG_BUILD_DIR)/include/linux/ath5k_platform.h $(LINUX_DIR)/include/linux/ath5k_platform.h + cmp $(PKG_BUILD_DIR)/include/linux/rt2x00_platform.h $(LINUX_DIR)/include/linux/rt2x00_platform.h +endef + +define Build/Compile + $(SH_FUNC) var2file "$(call shvar,mac80211_config)" $(PKG_BUILD_DIR)/.config + $(MAKE) $(MAKE_OPTS) allnoconfig + $(call Build/Compile/kmod) +endef + +define Build/InstallDev + mkdir -p \ + $(1)/usr/include/mac80211 \ + $(1)/usr/include/mac80211-backport \ + $(1)/usr/include/mac80211/ath \ + $(1)/usr/include/net/mac80211 + $(CP) $(PKG_BUILD_DIR)/net/mac80211/*.h $(PKG_BUILD_DIR)/include/* $(1)/usr/include/mac80211/ + $(CP) $(PKG_BUILD_DIR)/backport-include/* $(1)/usr/include/mac80211-backport/ + $(CP) $(PKG_BUILD_DIR)/net/mac80211/rate.h $(1)/usr/include/net/mac80211/ + $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/ath/*.h $(1)/usr/include/mac80211/ath/ +#ifeq($(CONFIG_PACKAGE_kmod-rtl8192cd),y) + $(CP) $(PKG_BUILD_DIR)/drivers/net/wireless/realtek/rtl8192cd/sysfs_stats.h $(1)/usr/include/ +#endif + rm -f $(1)/usr/include/mac80211-backport/linux/module.h +endef + + +define KernelPackage/b43/install + rm -rf $(1)/lib/firmware/ +ifeq ($(CONFIG_B43_OPENFIRMWARE),y) + tar xzf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)" +else + tar xjf "$(DL_DIR)/$(PKG_B43_FWV4_SOURCE)" -C "$(PKG_BUILD_DIR)" +endif + $(INSTALL_DIR) $(1)/lib/firmware/ +ifeq ($(CONFIG_B43_OPENFIRMWARE),y) + $(MAKE) -C "$(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/" + $(INSTALL_DIR) $(1)/lib/firmware/b43-open/ + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/ucode5.fw $(1)/lib/firmware/b43-open/ucode5.fw + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0bsinitvals5.fw $(1)/lib/firmware/b43-open/b0g0bsinitvals5.fw + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT)/b0g0initvals5.fw $(1)/lib/firmware/b43-open/b0g0initvals5.fw +else + b43-fwcutter -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_B43_FWV4_OBJECT) +endif +ifneq ($(CONFIG_B43_FW_SQUASH),) + b43-fwsquash.py "$(CONFIG_B43_FW_SQUASH_PHYTYPES)" "$(CONFIG_B43_FW_SQUASH_COREREVS)" "$(1)/lib/firmware/b43" +endif +endef + +define KernelPackage/brcmsmac/install + $(INSTALL_DIR) $(1)/lib/firmware/brcm +ifeq ($(CONFIG_BRCMSMAC_USE_FW_FROM_WL),y) + tar xjf "$(DL_DIR)/$(PKG_BRCMSMAC_FW_SOURCE)" -C "$(PKG_BUILD_DIR)" + b43-fwcutter --brcmsmac -w $(1)/lib/firmware/ $(PKG_BUILD_DIR)/$(PKG_BRCMSMAC_FW_OBJECT) +endif +endef + +define KernelPackage/cfg80211/install + $(INSTALL_DIR) $(1)/lib/wifi $(1)/lib/netifd/wireless + $(INSTALL_DATA) ./files/lib/wifi/mac80211.sh $(1)/lib/wifi + $(INSTALL_BIN) ./files/lib/netifd/wireless/mac80211.sh $(1)/lib/netifd/wireless + $(INSTALL_DIR) $(1)/etc/hotplug.d/ieee80211 + $(INSTALL_DATA) ./files/mac80211.hotplug $(1)/etc/hotplug.d/ieee80211/10-wifi-detect +endef + +define KernelPackage/ipw2100/install + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(PKG_BUILD_DIR)/ipw2100-$(IPW2100_VERSION)*.fw $(1)/lib/firmware +endef + +define KernelPackage/ipw2200/install + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(IPW2200_NAME)-$(IPW2200_VERSION)/ipw2200*.fw $(1)/lib/firmware +endef + +define KernelPackage/p54-pci/install + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(DL_DIR)/$(P54PCIFW) $(1)/lib/firmware/isl3886pci +endef + +define KernelPackage/p54-usb/install + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(DL_DIR)/$(P54USBFW) $(1)/lib/firmware/isl3887usb +endef + +define KernelPackage/p54-spi/install + $(INSTALL_DIR) $(1)/lib/firmware + $(INSTALL_DATA) $(DL_DIR)/$(P54SPIFW) $(1)/lib/firmware/3826.arm +endef + +define KernelPackage/zd1211rw/install + $(INSTALL_DIR) $(1)/lib/firmware/zd1211 + $(INSTALL_DATA) $(PKG_BUILD_DIR)/$(ZD1211FW_NAME)/zd1211* $(1)/lib/firmware/zd1211 +endef + + +$(eval $(call KernelPackage,adm8211)) +$(eval $(call KernelPackage,ath)) +$(eval $(call KernelPackage,ath10k)) +$(eval $(call KernelPackage,ath5k)) +$(eval $(call KernelPackage,ath9k)) +$(eval $(call KernelPackage,ath9k-common)) +$(eval $(call KernelPackage,ath9k-htc)) +$(eval $(call KernelPackage,b43)) +$(eval $(call KernelPackage,b43legacy)) +$(eval $(call KernelPackage,brcmsmac)) +$(eval $(call KernelPackage,brcmfmac)) +$(eval $(call KernelPackage,brcmutil)) +$(eval $(call KernelPackage,carl9170)) +$(eval $(call KernelPackage,cfg80211)) +$(eval $(call KernelPackage,hermes)) +$(eval $(call KernelPackage,hermes-pci)) +$(eval $(call KernelPackage,hermes-plx)) +$(eval $(call KernelPackage,hermes-pcmcia)) +$(eval $(call KernelPackage,iwlwifi)) +$(eval $(call KernelPackage,iwl-legacy)) +$(eval $(call KernelPackage,iwl4965)) +$(eval $(call KernelPackage,iwl3945)) +$(eval $(call KernelPackage,lib80211)) +$(eval $(call KernelPackage,libertas-usb)) +$(eval $(call KernelPackage,libertas-sdio)) +$(eval $(call KernelPackage,libertas-spi)) +$(eval $(call KernelPackage,libipw)) +$(eval $(call KernelPackage,ipw2100)) +$(eval $(call KernelPackage,ipw2200)) +$(eval $(call KernelPackage,mac80211)) +$(eval $(call KernelPackage,mac80211-hwsim)) +$(eval $(call KernelPackage,mt7601u)) +$(eval $(call KernelPackage,mwl8k)) +$(eval $(call KernelPackage,mwifiex-pcie)) +$(eval $(call KernelPackage,p54-common)) +$(eval $(call KernelPackage,p54-pci)) +$(eval $(call KernelPackage,p54-usb)) +$(eval $(call KernelPackage,p54-spi)) +$(eval $(call KernelPackage,rt2x00-lib)) +$(eval $(call KernelPackage,rt2x00-mmio)) +$(eval $(call KernelPackage,rt2x00-pci)) +$(eval $(call KernelPackage,rt2x00-usb)) +$(eval $(call KernelPackage,rt2800-lib)) +$(eval $(call KernelPackage,rt2400-pci)) +$(eval $(call KernelPackage,rt2500-pci)) +$(eval $(call KernelPackage,rt2500-usb)) +$(eval $(call KernelPackage,rt2800-mmio)) +$(eval $(call KernelPackage,rt2800-soc)) +$(eval $(call KernelPackage,rt2800-pci)) +$(eval $(call KernelPackage,rt2800-usb)) +$(eval $(call KernelPackage,rt61-pci)) +$(eval $(call KernelPackage,rt73-usb)) +$(eval $(call KernelPackage,rtl8180)) +$(eval $(call KernelPackage,rtl8187)) +$(eval $(call KernelPackage,rtlwifi)) +$(eval $(call KernelPackage,rtlwifi-pci)) +$(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,rtl8xxxu)) +$(eval $(call KernelPackage,wlcore)) +$(eval $(call KernelPackage,wl12xx)) +$(eval $(call KernelPackage,wl18xx)) +$(eval $(call KernelPackage,zd1211rw)) +$(eval $(call KernelPackage,rtl8192cd)) diff --git a/feeds/rtkmipsel/mac80211/files/lib/netifd/wireless/mac80211.sh b/feeds/rtkmipsel/mac80211/files/lib/netifd/wireless/mac80211.sh new file mode 100644 index 000000000..7bd3d9f11 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/files/lib/netifd/wireless/mac80211.sh @@ -0,0 +1,754 @@ +#!/bin/sh +. /lib/netifd/netifd-wireless.sh +. /lib/netifd/hostapd.sh + +init_wireless_driver "$@" + +MP_CONFIG_INT="mesh_retry_timeout mesh_confirm_timeout mesh_holding_timeout mesh_max_peer_links + mesh_max_retries mesh_ttl mesh_element_ttl mesh_hwmp_max_preq_retries + mesh_path_refresh_time mesh_min_discovery_timeout mesh_hwmp_active_path_timeout + mesh_hwmp_preq_min_interval mesh_hwmp_net_diameter_traversal_time mesh_hwmp_rootmode + mesh_hwmp_rann_interval mesh_gate_announcements mesh_sync_offset_max_neighor + mesh_rssi_threshold mesh_hwmp_active_path_to_root_timeout mesh_hwmp_root_interval + mesh_hwmp_confirmation_interval mesh_awake_window mesh_plink_timeout" +MP_CONFIG_BOOL="mesh_auto_open_plinks mesh_fwding" +MP_CONFIG_STRING="mesh_power_mode" + +drv_mac80211_init_device_config() { + hostapd_common_add_device_config + + config_add_string path phy 'macaddr:macaddr' + config_add_string hwmode + config_add_int beacon_int chanbw frag rts + config_add_int rxantenna txantenna antenna_gain txpower distance + config_add_boolean noscan ht_coex + config_add_array ht_capab + config_add_boolean \ + rxldpc \ + short_gi_80 \ + short_gi_160 \ + tx_stbc_2by1 \ + su_beamformer \ + su_beamformee \ + mu_beamformer \ + mu_beamformee \ + vht_txop_ps \ + htc_vht \ + rx_antenna_pattern \ + tx_antenna_pattern + config_add_int vht_max_a_mpdu_len_exp vht_max_mpdu vht_link_adapt vht160 rx_stbc tx_stbc + config_add_boolean \ + ldpc \ + greenfield \ + short_gi_20 \ + short_gi_40 \ + max_amsdu \ + dsss_cck_40 +} + +drv_mac80211_init_iface_config() { + hostapd_common_add_bss_config + + config_add_string 'macaddr:macaddr' ifname + + config_add_boolean wds powersave + config_add_int maxassoc + config_add_int max_listen_int + config_add_int dtim_period + config_add_int start_disabled + + # mesh + config_add_string mesh_id + config_add_int $MP_CONFIG_INT + config_add_boolean $MP_CONFIG_BOOL + config_add_string $MP_CONFIG_STRING +} + +mac80211_add_capabilities() { + local __var="$1"; shift + local __mask="$1"; shift + local __out= oifs + + oifs="$IFS" + IFS=: + for capab in "$@"; do + set -- $capab + + [ "$(($4))" -gt 0 ] || continue + [ "$(($__mask & $2))" -eq "$((${3:-$2}))" ] || continue + __out="$__out[$1]" + done + IFS="$oifs" + + export -n -- "$__var=$__out" +} + +mac80211_hostapd_setup_base() { + local phy="$1" + + json_select config + + [ "$auto_channel" -gt 0 ] && channel=acs_survey + + json_get_vars noscan ht_coex + json_get_values ht_capab_list ht_capab + + ieee80211n=1 + ht_capab= + case "$htmode" in + VHT20|HT20) ;; + HT40*|VHT40|VHT80|VHT160) + case "$hwmode" in + a) + case "$(( ($channel / 4) % 2 ))" in + 1) ht_capab="[HT40+]";; + 0) ht_capab="[HT40-]";; + esac + ;; + *) + case "$htmode" in + HT40+) ht_capab="[HT40+]";; + HT40-) ht_capab="[HT40-]";; + *) + if [ "$channel" -lt 7 ]; then + ht_capab="[HT40+]" + else + ht_capab="[HT40-]" + fi + ;; + esac + ;; + esac + [ "$auto_channel" -gt 0 ] && ht_capab="[HT40+]" + ;; + *) ieee80211n= ;; + esac + + [ -n "$ieee80211n" ] && { + append base_cfg "ieee80211n=1" "$N" + + set_default ht_coex 0 + append base_cfg "ht_coex=$ht_coex" "$N" + + json_get_vars \ + ldpc:1 \ + greenfield:0 \ + short_gi_20:1 \ + short_gi_40:1 \ + tx_stbc:1 \ + rx_stbc:3 \ + max_amsdu:1 \ + dsss_cck_40:1 + + ht_cap_mask=0 + for cap in $(iw phy "$phy" info | grep 'Capabilities:' | cut -d: -f2); do + ht_cap_mask="$(($ht_cap_mask | $cap))" + done + + cap_rx_stbc=$((($ht_cap_mask >> 8) & 3)) + [ "$rx_stbc" -lt "$cap_rx_stbc" ] && cap_rx_stbc="$rx_stbc" + ht_cap_mask="$(( ($ht_cap_mask & ~(0x300)) | ($cap_rx_stbc << 8) ))" + + mac80211_add_capabilities ht_capab_flags $ht_cap_mask \ + LDPC:0x1::$ldpc \ + GF:0x10::$greenfield \ + SHORT-GI-20:0x20::$short_gi_20 \ + SHORT-GI-40:0x40::$short_gi_40 \ + TX-STBC:0x80::$tx_stbc \ + RX-STBC1:0x300:0x100:1 \ + RX-STBC12:0x300:0x200:1 \ + RX-STBC123:0x300:0x300:1 \ + MAX-AMSDU-7935:0x800::$max_amsdu \ + DSSS_CCK-40:0x1000::$dsss_cck_40 + + ht_capab="$ht_capab$ht_capab_flags" + [ -n "$ht_capab" ] && append base_cfg "ht_capab=$ht_capab" "$N" + } + + # 802.11ac + enable_ac=0 + idx="$channel" + case "$htmode" in + VHT20) enable_ac=1;; + VHT40) + case "$(( ($channel / 4) % 2 ))" in + 1) idx=$(($channel + 2));; + 0) idx=$(($channel - 2));; + esac + enable_ac=1 + append base_cfg "vht_oper_chwidth=0" "$N" + append base_cfg "vht_oper_centr_freq_seg0_idx=$idx" "$N" + ;; + VHT80) + case "$(( ($channel / 4) % 4 ))" in + 1) idx=$(($channel + 6));; + 2) idx=$(($channel + 2));; + 3) idx=$(($channel - 2));; + 0) idx=$(($channel - 6));; + esac + enable_ac=1 + append base_cfg "vht_oper_chwidth=1" "$N" + append base_cfg "vht_oper_centr_freq_seg0_idx=$idx" "$N" + ;; + VHT160) + case "$channel" in + 36|40|44|48|52|56|60|64) idx=50;; + 100|104|108|112|116|120|124|128) idx=114;; + esac + enable_ac=1 + append base_cfg "vht_oper_chwidth=2" "$N" + append base_cfg "vht_oper_centr_freq_seg0_idx=$idx" "$N" + ;; + esac + + if [ "$enable_ac" != "0" ]; then + json_get_vars \ + rxldpc:1 \ + short_gi_80:1 \ + short_gi_160:1 \ + tx_stbc_2by1:1 \ + su_beamformer:1 \ + su_beamformee:1 \ + mu_beamformer:1 \ + mu_beamformee:1 \ + vht_txop_ps:1 \ + htc_vht:1 \ + rx_antenna_pattern:1 \ + tx_antenna_pattern:1 \ + vht_max_a_mpdu_len_exp:7 \ + vht_max_mpdu:11454 \ + rx_stbc:4 \ + tx_stbc:4 \ + vht_link_adapt:3 \ + vht160:2 + + append base_cfg "ieee80211ac=1" "$N" + vht_cap=0 + for cap in $(iw phy "$phy" info | awk -F "[()]" '/VHT Capabilities/ { print $2 }'); do + vht_cap="$(($vht_cap | $cap))" + done + + cap_rx_stbc=$((($vht_cap >> 8) & 7)) + [ "$rx_stbc" -lt "$cap_rx_stbc" ] && cap_rx_stbc="$rx_stbc" + ht_cap_mask="$(( ($vht_cap & ~(0x700)) | ($cap_rx_stbc << 8) ))" + + mac80211_add_capabilities vht_capab $vht_cap \ + RXLDPC:0x10::$rxldpc \ + SHORT-GI-80:0x20::$short_gi_80 \ + SHORT-GI-160:0x40::$short_gi_160 \ + TX-STBC-2BY1:0x80::$tx_stbc \ + SU-BEAMFORMER:0x800::$su_beamformer \ + SU-BEAMFORMEE:0x1000::$su_beamformee \ + MU-BEAMFORMER:0x80000::$mu_beamformer \ + MU-BEAMFORMEE:0x100000::$mu_beamformee \ + VHT-TXOP-PS:0x200000::$vht_txop_ps \ + HTC-VHT:0x400000::$htc_vht \ + RX-ANTENNA-PATTERN:0x10000000::$rx_antenna_pattern \ + TX-ANTENNA-PATTERN:0x20000000::$tx_antenna_pattern \ + RX-STBC1:0x700:0x100:1 \ + RX-STBC12:0x700:0x200:1 \ + RX-STBC123:0x700:0x300:1 \ + RX-STBC1234:0x700:0x400:1 \ + + # supported Channel widths + vht160_hw=0 + [ "$(($vht_cap & 12))" -eq 4 -a 1 -le "$vht160" ] && \ + vht160_hw=1 + [ "$(($vht_cap & 12))" -eq 8 -a 2 -le "$vht160" ] && \ + vht160_hw=2 + [ "$vht160_hw" = 1 ] && vht_capab="$vht_capab[VHT160]" + [ "$vht160_hw" = 2 ] && vht_capab="$vht_capab[VHT160-80PLUS80]" + + # maximum MPDU length + vht_max_mpdu_hw=3895 + [ "$(($vht_cap & 3))" -ge 1 -a 7991 -le "$vht_max_mpdu" ] && \ + vht_max_mpdu_hw=7991 + [ "$(($vht_cap & 3))" -ge 2 -a 11454 -le "$vht_max_mpdu" ] && \ + vht_max_mpdu_hw=11454 + [ "$vht_max_mpdu_hw" != 3895 ] && \ + vht_capab="$vht_capab[MAX-MPDU-$vht_max_mpdu_hw]" + + # maximum A-MPDU length exponent + vht_max_a_mpdu_len_exp_hw=0 + [ "$(($vht_cap & 58720256))" -ge 8388608 -a 1 -le "$vht_max_a_mpdu_len_exp" ] && \ + vht_max_a_mpdu_len_exp_hw=1 + [ "$(($vht_cap & 58720256))" -ge 16777216 -a 2 -le "$vht_max_a_mpdu_len_exp" ] && \ + vht_max_a_mpdu_len_exp_hw=2 + [ "$(($vht_cap & 58720256))" -ge 25165824 -a 3 -le "$vht_max_a_mpdu_len_exp" ] && \ + vht_max_a_mpdu_len_exp_hw=3 + [ "$(($vht_cap & 58720256))" -ge 33554432 -a 4 -le "$vht_max_a_mpdu_len_exp" ] && \ + vht_max_a_mpdu_len_exp_hw=4 + [ "$(($vht_cap & 58720256))" -ge 41943040 -a 5 -le "$vht_max_a_mpdu_len_exp" ] && \ + vht_max_a_mpdu_len_exp_hw=5 + [ "$(($vht_cap & 58720256))" -ge 50331648 -a 6 -le "$vht_max_a_mpdu_len_exp" ] && \ + vht_max_a_mpdu_len_exp_hw=6 + [ "$(($vht_cap & 58720256))" -ge 58720256 -a 7 -le "$vht_max_a_mpdu_len_exp" ] && \ + vht_max_a_mpdu_len_exp_hw=7 + vht_capab="$vht_capab[MAX-A-MPDU-LEN-EXP$vht_max_a_mpdu_len_exp_hw]" + + # whether or not the STA supports link adaptation using VHT variant + vht_link_adapt_hw=0 + [ "$(($vht_cap & 201326592))" -ge 134217728 -a 2 -le "$vht_link_adapt" ] && \ + vht_link_adapt_hw=2 + [ "$(($vht_cap & 201326592))" -ge 201326592 -a 3 -le "$vht_link_adapt" ] && \ + vht_link_adapt_hw=3 + [ "$vht_link_adapt_hw" != 0 ] && \ + vht_capab="$vht_capab[VHT-LINK-ADAPT-$vht_link_adapt_hw]" + + [ -n "$vht_capab" ] && append base_cfg "vht_capab=$vht_capab" "$N" + fi + + hostapd_prepare_device_config "$hostapd_conf_file" nl80211 + cat >> "$hostapd_conf_file" <> /var/run/hostapd-$phy.conf </dev/null); do + grep -i -q "$macaddr" "/sys/class/ieee80211/${phy}/macaddress" && return 0 + done + } + return 1 +} + +mac80211_check_ap() { + has_ap=1 +} + +mac80211_prepare_vif() { + json_select config + + json_get_vars ifname mode ssid wds powersave macaddr + + [ -n "$ifname" ] || ifname="wlan${phy#phy}${if_idx:+-$if_idx}" + if_idx=$((${if_idx:-0} + 1)) + + set_default wds 0 + set_default powersave 0 + + json_select .. + + [ -n "$macaddr" ] || { + macaddr="$(mac80211_generate_mac $phy)" + macidx="$(($macidx + 1))" + } + + json_add_object data + json_add_string ifname "$ifname" + json_close_object + json_select config + + # It is far easier to delete and create the desired interface + case "$mode" in + adhoc) + iw phy "$phy" interface add "$ifname" type adhoc + ;; + ap) + # Hostapd will handle recreating the interface and + # subsequent virtual APs belonging to the same PHY + if [ -n "$hostapd_ctrl" ]; then + type=bss + else + type=interface + fi + + mac80211_hostapd_setup_bss "$phy" "$ifname" "$macaddr" "$type" || return + + [ -n "$hostapd_ctrl" ] || { + iw phy "$phy" interface add "$ifname" type __ap + hostapd_ctrl="${hostapd_ctrl:-/var/run/hostapd/$ifname}" + } + ;; + mesh) + iw phy "$phy" interface add "$ifname" type mp + ;; + monitor) + iw phy "$phy" interface add "$ifname" type monitor + ;; + sta) + local wdsflag= + staidx="$(($staidx + 1))" + [ "$wds" -gt 0 ] && wdsflag="4addr on" + iw phy "$phy" interface add "$ifname" type managed $wdsflag + [ "$powersave" -gt 0 ] && powersave="on" || powersave="off" + iw "$ifname" set power_save "$powersave" + ;; + esac + + case "$mode" in + monitor|mesh) + [ "$auto_channel" -gt 0 ] || iw dev "$ifname" set channel "$channel" $htmode + ;; + esac + + if [ "$mode" != "ap" ]; then + # ALL ap functionality will be passed to hostapd + # All interfaces must have unique mac addresses + # which can either be explicitly set in the device + # section, or automatically generated + ifconfig "$ifname" hw ether "$macaddr" + fi + + json_select .. +} + +mac80211_setup_supplicant() { + wpa_supplicant_prepare_interface "$ifname" nl80211 || return 1 + wpa_supplicant_add_network "$ifname" + wpa_supplicant_run "$ifname" ${hostapd_ctrl:+-H $hostapd_ctrl} +} + +mac80211_setup_adhoc_htmode() { + case "$htmode" in + VHT20|HT20) ibss_htmode=HT20;; + HT40*|VHT40|VHT80|VHT160) + case "$hwmode" in + a) + case "$(( ($channel / 4) % 2 ))" in + 1) ibss_htmode="HT40+" ;; + 0) ibss_htmode="HT40-";; + esac + ;; + *) + case "$htmode" in + HT40+) ibss_htmode="HT40+";; + HT40-) ibss_htmode="HT40-";; + *) + if [ "$channel" -lt 7 ]; then + ibss_htmode="HT40+" + else + ibss_htmode="HT40-" + fi + ;; + esac + ;; + esac + [ "$auto_channel" -gt 0 ] && ibss_htmode="HT40+" + ;; + NONE|NOHT) + ibss_htmode="NOHT" + ;; + *) ibss_htmode="" ;; + esac + +} + +mac80211_setup_adhoc() { + json_get_vars bssid ssid key mcast_rate + + keyspec= + [ "$auth_type" = "wep" ] && { + set_default key 1 + case "$key" in + [1234]) + local idx + for idx in 1 2 3 4; do + json_get_var ikey "key$idx" + + [ -n "$ikey" ] && { + ikey="$(($idx - 1)):$(prepare_key_wep "$ikey")" + [ $idx -eq $key ] && ikey="d:$ikey" + append keyspec "$ikey" + } + done + ;; + *) + append keyspec "d:0:$(prepare_key_wep "$key")" + ;; + esac + } + + brstr= + for br in $basic_rate_list; do + wpa_supplicant_add_rate brstr "$br" + done + + mcval= + [ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate" + + iw dev "$ifname" ibss join "$ssid" $freq $ibss_htmode fixed-freq $bssid \ + ${beacon_int:+beacon-interval $beacon_int} \ + ${brstr:+basic-rates $brstr} \ + ${mcval:+mcast-rate $mcval} \ + ${keyspec:+keys $keyspec} +} + +mac80211_setup_vif() { + local name="$1" + local failed + + json_select data + json_get_vars ifname + json_select .. + + json_select config + json_get_vars mode + json_get_var vif_txpower txpower + + ifconfig "$ifname" up || { + wireless_setup_vif_failed IFUP_ERROR + json_select .. + return + } + + set_default vif_txpower "$txpower" + [ -z "$vif_txpower" ] || iw dev "$ifname" set txpower fixed "${vif_txpower%%.*}00" + + case "$mode" in + mesh) + # authsae or wpa_supplicant + json_get_vars key + if [ -n "$key" ]; then + if [ -e "/lib/wifi/authsae.sh" ]; then + . /lib/wifi/authsae.sh + authsae_start_interface || failed=1 + else + wireless_vif_parse_encryption + mac80211_setup_supplicant || failed=1 + fi + else + json_get_vars mesh_id mcast_rate + + mcval= + [ -n "$mcast_rate" ] && wpa_supplicant_add_rate mcval "$mcast_rate" + + iw dev "$ifname" mesh join "$mesh_id" ${mcval:+mcast-rate $mcval} + fi + + for var in $MP_CONFIG_INT $MP_CONFIG_BOOL $MP_CONFIG_STRING; do + json_get_var mp_val "$var" + [ -n "$mp_val" ] && iw dev "$ifname" set mesh_param "$var" "$mp_val" + done + ;; + adhoc) + wireless_vif_parse_encryption + mac80211_setup_adhoc_htmode + if [ "$wpa" -gt 0 -o "$auto_channel" -gt 0 ]; then + mac80211_setup_supplicant || failed=1 + else + mac80211_setup_adhoc + fi + ;; + sta) + mac80211_setup_supplicant || failed=1 + ;; + esac + + json_select .. + [ -n "$failed" ] || wireless_add_vif "$name" "$ifname" +} + +get_freq() { + local phy="$1" + local chan="$2" + iw "$phy" info | grep -E -m1 "(\* ${chan:-....} MHz${chan:+|\\[$chan\\]})" | grep MHz | awk '{print $2}' +} + +mac80211_interface_cleanup() { + local phy="$1" + + for wdev in $(list_phy_interfaces "$phy"); do + ifconfig "$wdev" down 2>/dev/null + iw dev "$wdev" del + done +} + +drv_mac80211_cleanup() { + hostapd_common_cleanup +} + +drv_mac80211_setup() { + json_select config + json_get_vars \ + phy macaddr path \ + country chanbw distance \ + txpower antenna_gain \ + rxantenna txantenna \ + frag rts beacon_int htmode + json_get_values basic_rate_list basic_rate + json_select .. + + find_phy || { + echo "Could not find PHY for device '$1'" + wireless_set_retry 0 + return 1 + } + + wireless_set_data phy="$phy" + mac80211_interface_cleanup "$phy" + + # convert channel to frequency + [ "$auto_channel" -gt 0 ] || freq="$(get_freq "$phy" "$channel")" + + [ -n "$country" ] && { + iw reg get | grep -q "^country $country:" || { + iw reg set "$country" + sleep 1 + } + } + + hostapd_conf_file="/var/run/hostapd-$phy.conf" + + no_ap=1 + macidx=0 + staidx=0 + + [ -n "$chanbw" ] && { + for file in /sys/kernel/debug/ieee80211/$phy/ath9k/chanbw /sys/kernel/debug/ieee80211/$phy/ath5k/bwmode; do + [ -f "$file" ] && echo "$chanbw" > "$file" + done + } + + set_default rxantenna all + set_default txantenna all + set_default distance 0 + set_default antenna_gain 0 + + iw phy "$phy" set antenna $txantenna $rxantenna >/dev/null 2>&1 + iw phy "$phy" set antenna_gain $antenna_gain + iw phy "$phy" set distance "$distance" + + [ -n "$frag" ] && iw phy "$phy" set frag "${frag%%.*}" + [ -n "$rts" ] && iw phy "$phy" set rts "${rts%%.*}" + + has_ap= + hostapd_ctrl= + for_each_interface "ap" mac80211_check_ap + + rm -f "$hostapd_conf_file" + [ -n "$has_ap" ] && mac80211_hostapd_setup_base "$phy" +# rtk : reoder the prepare_vif flow to workaround + for_each_interface "ap" mac80211_prepare_vif + for_each_interface "sta adhoc mesh monitor" mac80211_prepare_vif +# for_each_interface "ap" mac80211_prepare_vif + + [ -n "$hostapd_ctrl" ] && { + /usr/sbin/hostapd -P /var/run/wifi-$phy.pid -B "$hostapd_conf_file" + ret="$?" + wireless_add_process "$(cat /var/run/wifi-$phy.pid)" "/usr/sbin/hostapd" 1 + [ "$ret" != 0 ] && { + wireless_setup_failed HOSTAPD_START_FAILED + return + } + } + + for_each_interface "ap sta adhoc mesh monitor" mac80211_setup_vif + + wireless_set_up +} + +list_phy_interfaces() { + local phy="$1" + if [ -d "/sys/class/ieee80211/${phy}/device/net" ]; then + ls "/sys/class/ieee80211/${phy}/device/net" 2>/dev/null; + else + ls "/sys/class/ieee80211/${phy}/device" 2>/dev/null | grep net: | sed -e 's,net:,,g' + fi +} + +drv_mac80211_teardown() { + wireless_process_kill_all + + json_select data + json_get_vars phy + json_select .. + + mac80211_interface_cleanup "$phy" +} + +add_driver mac80211 diff --git a/feeds/rtkmipsel/mac80211/files/lib/wifi/mac80211.sh b/feeds/rtkmipsel/mac80211/files/lib/wifi/mac80211.sh new file mode 100644 index 000000000..6f20f74c4 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/files/lib/wifi/mac80211.sh @@ -0,0 +1,190 @@ +#!/bin/sh + +append DRIVERS "mac80211" + +lookup_phy() { + [ -n "$phy" ] && { + [ -d /sys/class/ieee80211/$phy ] && return + } + + local devpath + config_get devpath "$device" path + [ -n "$devpath" ] && { + phy="$(iwinfo nl80211 phyname "path=$devpath")" + [ -n "$phy" ] && return + } + + local macaddr="$(config_get "$device" macaddr | tr 'A-Z' 'a-z')" + [ -n "$macaddr" ] && { + for _phy in /sys/class/ieee80211/*; do + [ -e "$_phy" ] || continue + + [ "$macaddr" = "$(cat ${_phy}/macaddress)" ] || continue + phy="${_phy##*/}" + return + done + } + phy= + return +} + +find_mac80211_phy() { + local device="$1" + + config_get phy "$device" phy + lookup_phy + [ -n "$phy" -a -d "/sys/class/ieee80211/$phy" ] || { + echo "PHY for wifi device $1 not found" + return 1 + } + config_set "$device" phy "$phy" + + config_get macaddr "$device" macaddr + [ -z "$macaddr" ] && { + config_set "$device" macaddr "$(cat /sys/class/ieee80211/${phy}/macaddress)" + } + + return 0 +} + +check_mac80211_device() { + config_get phy "$1" phy + [ -z "$phy" ] && { + find_mac80211_phy "$1" >/dev/null || return 0 + config_get phy "$1" phy + } + [ "$phy" = "$dev" ] && found=1 +} + + +__get_band_defaults() { + local phy="$1" + + ( iw phy "$phy" info; echo ) | awk ' +BEGIN { + bands = "" +} + +($1 == "Band" || $1 == "") && band { + if (channel) { + mode="NOHT" + if (ht) mode="HT20" + if (vht && band != "1:") mode="VHT80" + if (he) mode="HE80" + if (he && band == "1:") mode="HE20" + sub("\\[", "", channel) + sub("\\]", "", channel) + bands = bands band channel ":" mode " " + } + band="" +} + +$1 == "Band" { + band = $2 + channel = "" + vht = "" + ht = "" + he = "" +} + +$0 ~ "Capabilities:" { + ht=1 +} + +$0 ~ "VHT Capabilities" { + vht=1 +} + +$0 ~ "HE Iftypes" { + he=1 +} + +$1 == "*" && $3 == "MHz" && $0 !~ /disabled/ && band && !channel { + channel = $4 +} + +END { + print bands +}' +} + +get_band_defaults() { + local phy="$1" + + for c in $(__get_band_defaults "$phy"); do + local band="${c%%:*}" + c="${c#*:}" + local chan="${c%%:*}" + c="${c#*:}" + local mode="${c%%:*}" + + case "$band" in + 1) band=2g;; + 2) band=5g;; + 3) band=60g;; + 4) band=6g;; + *) band="";; + esac + + [ -n "$band" ] || continue + [ -n "$mode_band" -a "$band" = "6g" ] && return + + mode_band="$band" + channel="$chan" + htmode="$mode" + done +} + +detect_mac80211() { + devidx=0 + config_load wireless + while :; do + config_get type "radio$devidx" type + [ -n "$type" ] || break + devidx=$(($devidx + 1)) + done + + for _dev in /sys/class/ieee80211/*; do + [ -e "$_dev" ] || continue + + dev="${_dev##*/}" + + found=0 + config_foreach check_mac80211_device wifi-device + [ "$found" -gt 0 ] && continue + + mode_band="" + channel="" + htmode="" + ht_capab="" + + get_band_defaults "$dev" + + path="$(iwinfo nl80211 path "$dev")" + if [ -n "$path" ]; then + dev_id="set wireless.radio${devidx}.path='$path'" + else + dev_id="set wireless.radio${devidx}.macaddr=$(cat /sys/class/ieee80211/${dev}/macaddress)" + fi + + uci -q batch <<-EOF + set wireless.radio${devidx}=wifi-device + set wireless.radio${devidx}.type=mac80211 + ${dev_id} + set wireless.radio${devidx}.channel=${channel} + set wireless.radio${devidx}.band=${mode_band} + set wireless.radio${devidx}.htmode=$htmode + set wireless.radio${devidx}.disabled=0 + + set wireless.default_radio${devidx}=wifi-iface + set wireless.default_radio${devidx}.device=radio${devidx} + set wireless.default_radio${devidx}.network=lan + set wireless.default_radio${devidx}.mode=ap + set wireless.default_radio${devidx}.ssid=OpenWrt + set wireless.default_radio${devidx}.encryption=none +EOF + uci -q commit wireless + + devidx=$(($devidx + 1)) + done +} diff --git a/feeds/rtkmipsel/mac80211/files/mac80211.hotplug b/feeds/rtkmipsel/mac80211/files/mac80211.hotplug new file mode 100644 index 000000000..b86555266 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/files/mac80211.hotplug @@ -0,0 +1,5 @@ +#!/bin/sh + +[ "${ACTION}" = "add" ] && { + /sbin/wifi config +} diff --git a/feeds/rtkmipsel/mac80211/files/regdb.txt b/feeds/rtkmipsel/mac80211/files/regdb.txt new file mode 100644 index 000000000..463ace3a3 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/files/regdb.txt @@ -0,0 +1,1262 @@ +# This is the world regulatory domain +country 00: + (2402 - 2472 @ 40), (20) + # Channel 12 - 13. + (2457 - 2482 @ 20), (20), NO-IR, AUTO-BW + # Channel 14. Only JP enables this and for 802.11b only + (2474 - 2494 @ 20), (20), NO-IR, NO-OFDM + # Channel 36 - 48 + (5170 - 5250 @ 80), (20), AUTO-BW + # Channel 52 - 64 + (5250 - 5330 @ 80), (20), NO-IR, DFS, AUTO-BW + # Channel 100 - 144 + (5490 - 5730 @ 160), (20), NO-IR, DFS + # Channel 149 - 165 + (5735 - 5835 @ 80), (20), NO-IR + # IEEE 802.11ad (60GHz), channels 1..3 + (57240 - 63720 @ 2160), (0) + + +country AD: + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20) + (5250 - 5330 @ 80), (20), DFS + (5490 - 5710 @ 80), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country AE: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country AF: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +# Source: +# http://pucanguilla.org/Downloads/January2005-Anguilla%20Table%20of%20Allocations.pdf +country AI: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country AL: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20.00), AUTO-BW + (5250 - 5330 @ 80), (20.00), DFS, AUTO-BW + (5490 - 5710 @ 160), (27.00), DFS + +country AM: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 20), (18) + (5250 - 5330 @ 20), (18), DFS + +country AN: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country AR: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country AS: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country AT: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +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) + +country AW: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country AZ: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (18), AUTO-BW + (5250 - 5330 @ 80), (18), DFS, AUTO-BW + +country BA: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country BB: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (23), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + +country BD: DFS-JP + (2402 - 2482 @ 40), (20) + (5735 - 5835 @ 80), (30) + +country BE: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country BF: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country BG: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 5 GHz Short Range Devices, ref: + # Etsi EN 300 440-1 + # Etsi EN 300 440-2 + # http://crc.bg/files/_bg/Spisak_2015.pdf + # http://crc.bg/files/_bg/Pravila_2015_resh24.pdf + (5725 - 5875 @ 80), (14) + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country BH: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 20), (20) + (5250 - 5330 @ 20), (20), DFS + (5735 - 5835 @ 20), (20) + +country BL: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country BM: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country BN: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5735 - 5835 @ 80), (20) + +country BO: DFS-JP + (2402 - 2482 @ 40), (20) + (5250 - 5330 @ 80), (30), DFS + (5735 - 5835 @ 80), (30) + +country BR: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country BS: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +# Source: +# http://www.bicma.gov.bt/paper/publication/nrrpart4.pdf +country BT: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country BY: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country BZ: DFS-JP + (2402 - 2482 @ 40), (30) + (5735 - 5835 @ 80), (30) + +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 + (5650 - 5730 @ 80), (24), DFS + (5735 - 5835 @ 80), (30) + +# Source: +# http://www.art-rca.org +country CF: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 40), (17) + (5250 - 5330 @ 40), (24), DFS + (5490 - 5730 @ 40), (24), DFS + (5735 - 5835 @ 40), (30) + +country CH: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country CI: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country CL: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5735 - 5835 @ 80), (20) + +country CN: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (23), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + # 60 GHz band channels 1,4: 28dBm, channels 2,3: 44dBm + # ref: http://www.miit.gov.cn/n11293472/n11505629/n11506593/n11960250/n11960606/n11960700/n12330791.files/n12330790.pdf + (57240 - 59400 @ 2160), (28) + (59400 - 63720 @ 2160), (44) + (63720 - 65880 @ 2160), (28) + +country CO: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country CR: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 20), (17) + (5250 - 5330 @ 20), (24), DFS + (5490 - 5730 @ 20), (24), DFS + (5735 - 5835 @ 20), (30) + +country CX: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country CY: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +# Data from http://www.ctu.eu/164/download/VOR/VOR-12-08-2005-34.pdf +# and http://www.ctu.eu/164/download/VOR/VOR-12-05-2007-6-AN.pdf +# Power at 5250 - 5350 MHz and 5470 - 5725 MHz can be doubled if TPC is +# implemented. +country CZ: DFS-ETSI + (2400 - 2483.5 @ 40), (100 mW) + (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW + (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW + (5470 - 5725 @ 160), (500 mW), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +# Data from "Frequenznutzungsplan" (as published in April 2008), downloaded from +# http://www.bundesnetzagentur.de/cae/servlet/contentblob/38448/publicationFile/2659/Frequenznutzungsplan2008_Id17448pdf.pdf +# For the 5GHz range also see +# http://www.bundesnetzagentur.de/cae/servlet/contentblob/38216/publicationFile/6579/WLAN5GHzVfg7_2010_28042010pdf.pdf +# The values have been reduced by a factor of 2 (3db) for non TPC devices +# (in other words: devices with TPC can use twice the tx power of this table). +# Note that the docs do not require TPC for 5150--5250; the reduction to +# 100mW thus is not strictly required -- however the conservative 100mW +# limit is used here as the non-interference with radar and satellite +# apps relies on the attenuation by the building walls only in the +# absence of DFS; the neighbour countries have 100mW limit here as well. + +country DE: DFS-ETSI + # entries 279004 and 280006 + (2400 - 2483.5 @ 40), (100 mW) + # entry 303005 + (5150 - 5250 @ 80), (100 mW), NO-OUTDOOR, AUTO-BW + # entries 304002 and 305002 + (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW + # entries 308002, 309001 and 310003 + (5470 - 5725 @ 160), (500 mW), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country DK: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +# Source: +# http://www.ntrcdom.org/index.php?option=com_content&view=category&layout=blog&id=10&Itemid=55 +country DM: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + +country DO: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + +country DZ: DFS-JP + (2402 - 2482 @ 40), (20) + (5170.000 - 5250.000 @ 80.000), (23.00), AUTO-BW + (5250.000 - 5330.000 @ 80.000), (23.00), DFS, AUTO-BW + (5490.000 - 5670.000 @ 160.000), (23.00), DFS + +country EC: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 20), (17) + (5250 - 5330 @ 20), (24), DFS + (5490 - 5730 @ 20), (24), DFS + (5735 - 5835 @ 20), (30) + +country EE: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country EG: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 40), (20) + (5250 - 5330 @ 40), (20), DFS + +# Orden IET/787/2013, de 25 de abril, por la que se aprueba +# el cuadro nacional de atribución de frecuencias. +# http://www.boe.es/diario_boe/txt.php?id=BOE-A-2013-4845 +# +# more info at "Cuadro nacional de atribución de frecuencias (CNAF)": +# http://www.minetur.gob.es/telecomunicaciones/espectro/paginas/cnaf.aspx + +country ES: DFS-ETSI + (2400 - 2483.5 @ 40), (100 mW) + (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW + (5250 - 5350 @ 80), (100 mW), NO-OUTDOOR, DFS, AUTO-BW + (5470 - 5725 @ 160), (500 mW), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country ET: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country FI: DFS-ETSI + (2400 - 2483.5 @ 40), (20) + (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW + (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW + (5470 - 5725 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country FM: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country FR: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country GB: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country GD: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country GE: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (18), AUTO-BW + (5250 - 5330 @ 80), (18), DFS, AUTO-BW + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country GF: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country GH: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country GL: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country GP: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country GR: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country GT: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + +country GU: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 20), (17) + (5250 - 5330 @ 20), (24), DFS + (5490 - 5730 @ 20), (24), DFS + (5735 - 5835 @ 20), (30) + +country GY: + (2402 - 2482 @ 40), (30) + (5735 - 5835 @ 80), (30) + +country HK: 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) + +country HN: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country HR: DFS-ETSI + (2400 - 2483.5 @ 40), (20) + (5150 - 5250 @ 80), (23), NO-OUTDOOR, AUTO-BW + (5250 - 5350 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW + (5470 - 5725 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country HT: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country HU: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country ID: DFS-JP + # ref: http://www.postel.go.id/content/ID/regulasi/standardisasi/kepdir/bwa%205,8%20ghz.pdf + (2402 - 2482 @ 20), (20) + (5735 - 5815 @ 20), (23) + +country IE: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country IL: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5150 - 5250 @ 80), (200 mW), NO-OUTDOOR, AUTO-BW + (5250 - 5350 @ 80), (200 mW), NO-OUTDOOR, DFS, AUTO-BW + +country IN: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5735 - 5835 @ 80), (20) + +country IR: DFS-JP + (2402 - 2482 @ 40), (20) + (5735 - 5835 @ 80), (30) + +country IS: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country IT: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country JM: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country JO: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (23) + (5735 - 5835 @ 80), (23) + +country JP: DFS-JP + (2402 - 2482 @ 40), (20) + (2474 - 2494 @ 20), (20), NO-OFDM + (4910 - 4990 @ 40), (23) + (5030 - 5090 @ 40), (23) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (23), DFS + # 60 GHz band channels 2-4 at 10mW, + # ref: http://www.arib.or.jp/english/html/overview/doc/1-STD-T74v1_1.pdf + (59000 - 66000 @ 2160), (10 mW) + +country KE: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (23) + (5490 - 5570 @ 80), (30), DFS + (5735 - 5775 @ 40), (23) + +country KH: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +# Source +# http://ntrc.kn/?page_id=7 +country KN: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (30), DFS + (5735 - 5815 @ 80), (30) + +country KP: DFS-JP + (2402 - 2482 @ 20), (20) + (5170 - 5250 @ 20), (20) + (5250 - 5330 @ 20), (20), DFS + (5490 - 5630 @ 20), (30), DFS + (5735 - 5815 @ 20), (30) + +country KR: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (30), DFS + (5735 - 5835 @ 80), (30) + +country KW: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + +country KY: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country KZ: + (2402 - 2482 @ 40), (20) + +country LB: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +# Source: +# http://www.ntrc.org.lc/operational_structures.htm +country LC: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (30), DFS + (5735 - 5815 @ 80), (30) + +country LI: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country LK: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 20), (17) + (5250 - 5330 @ 20), (24), DFS + (5490 - 5730 @ 20), (24), DFS + (5735 - 5835 @ 20), (30) + +# Source: +# http://lca.org.ls/images/documents/lesotho_national_frequency_allocation_plan.pdf +country LS: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country LT: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country LU: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country LV: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country MA: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + +country MC: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +# Source: +# http://www.cnfr.md/index.php?pag=sec&id=117&l=en +country MD: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +# Source: +# http://www.cept.org/files/1050/Tools%20and%20Services/EFIS%20-%20ECO%20Frequency%20Information%20System/National%20frequency%20tables/Montenegro%20NAFT%20-%202010.pdf +country ME: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country MF: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country MH: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country MK: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country MN: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country MO: DFS-FCC + (2402 - 2482 @ 40), (23) + (5170 - 5250 @ 80), (23), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5490 - 5730 @ 160), (30), DFS + (5735 - 5835 @ 80), (30) + +country MP: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country MQ: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +# Source: +# http://www.are.mr/pdfs/telec_freq_TNAbf_2010.pdf +country MR: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country MT: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country MU: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +# Source: +# http://www.cam.gov.mv/docs/tech_standards/TAM-TS-100-2004-WLAN.pdf +country MV: DFS-ETSI + (2400 - 2483.5 @ 40), (100 mW) + (5150 - 5250 @ 80), (200 mW), AUTO-BW + (5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW + (5725 - 5850 @ 80), (100 mW) + +country MW: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country MX: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country MY: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5650 @ 160), (24), DFS + (5735 - 5835 @ 80), (24) + +country NG: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5250 - 5330 @ 80), (30), DFS + (5735 - 5835 @ 80), (30) + +country NI: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country NL: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW + (5250 - 5330 @ 80), (20), NO-OUTDOOR, DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +# Data from http://www.lovdata.no/dokument/SF/forskrift/2012-01-19-77 +# Power at 5250 - 5350 MHz, 5470 - 5725 MHz and 5815 – 5850 MHz can +# be doubled if TPC is implemented. +# Up to 2W (or 4W with TPC) is allowed in the 5725 – 5795 MHz band +# which has been merged with 5470 - 5725 MHz to allow wide channels +country NO: DFS-ETSI + (2400 - 2483.5 @ 40), (100 mW) + (5150 - 5250 @ 80), (200 mW), AUTO-BW + (5250 - 5350 @ 80), (100 mW), DFS, AUTO-BW + (5470 - 5795 @ 160), (500 mW), DFS + (5815 - 5850 @ 35), (2000 mW), DFS + (17100 - 17300 @ 200), (100 mW) + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country NP: DFS-JP + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5735 - 5835 @ 80), (20) + +country NZ: DFS-ETSI + (2402 - 2482 @ 40), (30) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country OM: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country PA: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + +country PE: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country PF: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country PG: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country PH: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country PK: DFS-JP + (2402 - 2482 @ 40), (20) + (5735 - 5835 @ 80), (30) + +country PL: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country PM: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country PR: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country PT: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country PW: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country PY: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country QA: DFS-JP + (2402 - 2482 @ 40), (20) + (5735 - 5835 @ 80), (30) + +country RE: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country RO: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + + +# Source: +# http://www.ratel.rs/upload/documents/Plan_namene/Plan_namene-sl_glasnik.pdf +country RS: DFS-ETSI + (2400 - 2483.5 @ 40), (100 mW) + (5150 - 5350 @ 40), (200 mW), NO-OUTDOOR + (5470 - 5725 @ 20), (1000 mW), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country RU: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5650 - 5730 @ 80), (30), DFS + (5735 - 5835 @ 80), (30) + # 60 GHz band channels 1-4, ref: Changes to NLA 124_Order â„–129_22042015.pdf + (57000 - 66000 @ 2160), (40) + +country RW: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country SA: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country SE: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country SG: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country SI: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country SK: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +# Source: +# Regulation N° 2004-005 ART/DG/DRC/D.Rég +country SN: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country SR: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country SV: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 20), (17) + (5250 - 5330 @ 20), (23), DFS + (5735 - 5835 @ 20), (30) + +country SY: + (2402 - 2482 @ 40), (20) + +# Source: +# http://www.telecommission.tc/Spectrum-plan20110324-101210.html +country TC: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country TD: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country TG: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 40), (20) + (5250 - 5330 @ 40), (20), DFS + (5490 - 5710 @ 40), (27), DFS + +country TH: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country TN: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + +country TR: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country TT: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +# Source: +# Table of Frequency Allocations of Republic of China (Taiwan) / Nov 2014: +# http://www.motc.gov.tw/websitedowndoc?file=post/201411171137330.doc& \ +# filedisplay=Table+of+radio+frequency+allocation.doc +# LP0002 Low-power Radio-frequency Devices Technical Regulations / 28 Jun 2011: +# http://www.ncc.gov.tw/english/show_file.aspx?table_name=news&file_sn=681 +# (section 3.10.1, 4.7) +country TW: DFS-FCC + (2400 - 2483.5 @ 40), (30) + # Follow US 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients + (5150 - 5250 @ 80), (23), AUTO-BW + (5250 - 5350 @ 80), (23), DFS, AUTO-BW + (5470 - 5725 @ 160), (23), DFS + (5725 - 5850 @ 80), (30) + +country TZ: + (2402 - 2482 @ 40), (20) + (5735 - 5835 @ 80), (30) + +# Source: +# #914 / 06 Sep 2007: http://www.ucrf.gov.ua/uk/doc/nkrz/1196068874 +# #1174 / 23 Oct 2008: http://www.nkrz.gov.ua/uk/activities/ruling/1225269361 +# (appendix 8) +# Listed 5GHz range is a lowest common denominator for all related +# rules in the referenced laws. Such a range is used because of +# disputable definitions there. +country UA: DFS-ETSI + (2400 - 2483.5 @ 40), (20), NO-OUTDOOR + (5150 - 5250 @ 80), (20), NO-OUTDOOR, AUTO-BW + (5250 - 5350 @ 80), (20), DFS, NO-OUTDOOR, AUTO-BW + (5490 - 5670 @ 160), (20), DFS + (5735 - 5835 @ 80), (20) + # 60 GHz band channels 1-4, ref: Etsi En 302 567 + (57000 - 66000 @ 2160), (40) + +country UG: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country US: DFS-FCC + (2402 - 2472 @ 40), (30) + # 5.15 ~ 5.25 GHz: 30 dBm for master mode, 23 dBm for clients + (5170 - 5250 @ 80), (23), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5490 - 5730 @ 160), (23), DFS + (5735 - 5835 @ 80), (30) + # 60g band + # reference: http://cfr.regstoday.com/47cfr15.aspx#47_CFR_15p255 + # channels 1,2,3, EIRP=40dBm(43dBm peak) + (57240 - 63720 @ 2160), (40) + +country UY: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (23), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + +# Source: +# http://cemc.uz/article/1976/ +country UZ: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + +# Source: +# http://www.ntrc.vc/regulations/Jun_2006_Spectrum_Managment_Regulations.pdf +country VC: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +# Source: +# Official Gazette (Gaceta Oficial) concerning Unlicensed transmitter use +# (10 June 2013) +# http://www.conatel.gob.ve/ +country VE: DFS-FCC + (2402 - 2482 @ 40), (30) + (5170 - 5250 @ 80), (23), AUTO-BW + (5250 - 5330 @ 80), (23), DFS, AUTO-BW + (5735 - 5835 @ 80), (30) + +country VI: DFS-FCC + (2402 - 2472 @ 40), (30) + (5170 - 5250 @ 80), (24), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country VN: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17) + (5250 - 5330 @ 80), (24), DFS + (5490 - 5730 @ 80), (24), DFS + (5735 - 5835 @ 80), (30) + +# Source: +# http://www.trr.vu/attachments/category/130/GURL_for_Short-range_Radiocommunication_Devices2.pdf +country VU: DFS-FCC + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (17), AUTO-BW + (5250 - 5330 @ 80), (24), DFS, AUTO-BW + (5490 - 5730 @ 160), (24), DFS + (5735 - 5835 @ 80), (30) + +country WF: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country WS: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 40), (20) + (5250 - 5330 @ 40), (20), DFS + (5490 - 5710 @ 40), (27), DFS + +country YE: + (2402 - 2482 @ 40), (20) + +country YT: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + +country ZA: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (30) + +country ZW: DFS-ETSI + (2402 - 2482 @ 40), (20) + (5170 - 5250 @ 80), (20), AUTO-BW + (5250 - 5330 @ 80), (20), DFS, AUTO-BW + (5490 - 5710 @ 160), (27), DFS + diff --git a/feeds/rtkmipsel/mac80211/patches/000-fix_kconfig.patch b/feeds/rtkmipsel/mac80211/patches/000-fix_kconfig.patch new file mode 100644 index 000000000..3987aae4f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/000-fix_kconfig.patch @@ -0,0 +1,14 @@ +--- a/kconf/Makefile ++++ b/kconf/Makefile +@@ -1,9 +1,9 @@ +-CFLAGS=-Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer ++CFLAGS=-Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer -DKBUILD_NO_NLS + + LXDIALOG := lxdialog/checklist.o lxdialog/inputbox.o lxdialog/menubox.o lxdialog/textbox.o lxdialog/util.o lxdialog/yesno.o + + conf: conf.o zconf.tab.o +-mconf_CFLAGS := $(shell ./lxdialog/check-lxdialog.sh -ccflags) -DLOCALE ++mconf_CFLAGS := $(shell ./lxdialog/check-lxdialog.sh -ccflags) + mconf_LDFLAGS := $(shell ./lxdialog/check-lxdialog.sh -ldflags $(CC)) + mconf: CFLAGS += $(mconf_CFLAGS) + diff --git a/feeds/rtkmipsel/mac80211/patches/001-fix_build.patch b/feeds/rtkmipsel/mac80211/patches/001-fix_build.patch new file mode 100644 index 000000000..402649d2c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/001-fix_build.patch @@ -0,0 +1,167 @@ +--- a/Makefile ++++ b/Makefile +@@ -5,7 +5,7 @@ + ifeq ($(KERNELRELEASE),) + + MAKEFLAGS += --no-print-directory +-SHELL := /bin/bash ++SHELL := /usr/bin/env bash + BACKPORT_DIR := $(shell pwd) + + KMODDIR ?= updates +@@ -19,6 +19,7 @@ KLIB_BUILD ?= $(KLIB)/build/ + KERNEL_CONFIG := $(KLIB_BUILD)/.config + KERNEL_MAKEFILE := $(KLIB_BUILD)/Makefile + CONFIG_MD5 := $(shell md5sum $(KERNEL_CONFIG) 2>/dev/null | sed 's/\s.*//') ++STAMP_KERNEL_CONFIG := .kernel_config_md5_$(CONFIG_MD5) + + export KLIB KLIB_BUILD BACKPORT_DIR KMODDIR KMODPATH_ARG + +@@ -36,7 +37,8 @@ mrproper: + @rm -f .kernel_config_md5 Kconfig.versions Kconfig.kernel + @rm -f backport-include/backport/autoconf.h + +-.DEFAULT: ++.SILENT: $(STAMP_KERNEL_CONFIG) ++$(STAMP_KERNEL_CONFIG): + @set -e ; test -f .local-symbols || ( \ + echo "/--------------" ;\ + echo "| You shouldn't run make in the backports tree, but only in" ;\ +@@ -60,57 +62,61 @@ mrproper: + echo "| (that isn't currently running.)" ;\ + echo "\\--" ;\ + false) +- @set -e ; if [ "$$(cat .kernel_config_md5 2>/dev/null)" != "$(CONFIG_MD5)" ] ;\ +- then \ +- echo -n "Generating local configuration database from kernel ..." ;\ +- grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \ +- while read l ; do \ +- if [ "$${l:0:7}" != "CONFIG_" ] ; then \ +- continue ;\ +- fi ;\ +- l=$${l:7} ;\ +- n=$${l%%=*} ;\ +- v=$${l#*=} ;\ +- if [ "$$v" = "m" ] ; then \ +- echo config $$n ;\ +- echo ' tristate' ;\ +- elif [ "$$v" = "y" ] ; then \ +- echo config $$n ;\ +- echo ' bool' ;\ +- else \ +- continue ;\ +- fi ;\ +- echo " default $$v" ;\ +- echo "" ;\ +- done \ +- ) > Kconfig.kernel ;\ +- kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \ +- sed 's/^\(\([3-4]\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\ +- test "$$kver" != "" || echo "Kernel version parse failed!" ;\ +- test "$$kver" != "" ;\ +- kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\ +- kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\ +- kvers="$$kvers $$(seq 0 99 | sed 's/^/4./')" ;\ +- print=0 ;\ +- for v in $$kvers ; do \ +- if [ "$$print" = "1" ] ; then \ +- echo config KERNEL_$$(echo $$v | tr . _) ;\ +- echo " def_bool y" ;\ +- fi ;\ +- if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\ +- done > Kconfig.versions ;\ +- # RHEL as well, sadly we need to grep for it ;\ +- RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \ +- sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ +- RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \ +- sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ +- for v in $$(seq 0 $$RHEL_MINOR) ; do \ +- echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\ +- echo " def_bool y" ;\ +- done >> Kconfig.versions ;\ +- echo " done." ;\ +- fi ;\ +- echo "$(CONFIG_MD5)" > .kernel_config_md5 ++ @rm -f .kernel_config_md5_* ++ @touch $@ ++ ++Kconfig.kernel: $(STAMP_KERNEL_CONFIG) .local-symbols ++ @printf "Generating local configuration database from kernel ..." ++ @grep -v -f .local-symbols $(KERNEL_CONFIG) | grep = | ( \ ++ while read l ; do \ ++ if [ "$${l:0:7}" != "CONFIG_" ] ; then \ ++ continue ;\ ++ fi ;\ ++ l=$${l:7} ;\ ++ n=$${l%%=*} ;\ ++ v=$${l#*=} ;\ ++ if [ "$$v" = "m" ] ; then \ ++ echo config $$n ;\ ++ echo ' tristate' ;\ ++ elif [ "$$v" = "y" ] ; then \ ++ echo config $$n ;\ ++ echo ' bool' ;\ ++ else \ ++ continue ;\ ++ fi ;\ ++ echo " default $$v" ;\ ++ echo "" ;\ ++ done \ ++ ) > $@ ++ @echo " done." ++ ++Kconfig.versions: Kconfig.kernel ++ @kver=$$($(MAKE) --no-print-directory -C $(KLIB_BUILD) kernelversion | \ ++ sed 's/^\(\([3-4]\|2\.6\)\.[0-9]\+\).*/\1/;t;d') ;\ ++ test "$$kver" != "" || echo "Kernel version parse failed!" ;\ ++ test "$$kver" != "" ;\ ++ kvers="$$(seq 14 39 | sed 's/^/2.6./')" ;\ ++ kvers="$$kvers $$(seq 0 19 | sed 's/^/3./')" ;\ ++ kvers="$$kvers $$(seq 0 99 | sed 's/^/4./')" ;\ ++ print=0 ;\ ++ for v in $$kvers ; do \ ++ if [ "$$print" = "1" ] ; then \ ++ echo config KERNEL_$$(echo $$v | tr . _) ;\ ++ echo " def_bool y" ;\ ++ fi ;\ ++ if [ "$$v" = "$$kver" ] ; then print=1 ; fi ;\ ++ done > $@ ++ @RHEL_MAJOR=$$(grep '^RHEL_MAJOR' $(KERNEL_MAKEFILE) | \ ++ sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ ++ RHEL_MINOR=$$(grep '^RHEL_MINOR' $(KERNEL_MAKEFILE) | \ ++ sed 's/.*=\s*\([0-9]*\)/\1/;t;d') ;\ ++ for v in $$(seq 0 $$RHEL_MINOR) ; do \ ++ echo config BACKPORT_RHEL_KERNEL_$${RHEL_MAJOR}_$$v ;\ ++ echo " def_bool y" ;\ ++ done >> $@ ++ ++.DEFAULT: ++ @$(MAKE) Kconfig.versions + @$(MAKE) -f Makefile.real "$@" + + .PHONY: defconfig-help +--- a/Makefile.real ++++ b/Makefile.real +@@ -59,7 +59,7 @@ defconfig-%:: + + backport-include/backport/autoconf.h: .config Kconfig.versions Kconfig.kernel + @$(MAKE) oldconfig +- @echo -n "Building backport-include/backport/autoconf.h ..." ++ @printf "Building backport-include/backport/autoconf.h ..." + @grep -f .local-symbols .config | ( \ + echo "#ifndef COMPAT_AUTOCONF_INCLUDED" ;\ + echo "#define COMPAT_AUTOCONF_INCLUDED" ;\ +@@ -80,7 +80,12 @@ backport-include/backport/autoconf.h: .c + esac ;\ + done ;\ + echo "#endif /* COMPAT_AUTOCONF_INCLUDED */" ;\ +- ) > backport-include/backport/autoconf.h ++ ) > $@.new ++ @if cmp -s $@ $@.new; then \ ++ rm -f $@.new; \ ++ else \ ++ mv $@.new $@; \ ++ fi + @echo " done." + + .PHONY: modules diff --git a/feeds/rtkmipsel/mac80211/patches/002-change_allconfig.patch b/feeds/rtkmipsel/mac80211/patches/002-change_allconfig.patch new file mode 100644 index 000000000..bd5bebfa4 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/002-change_allconfig.patch @@ -0,0 +1,64 @@ +--- a/kconf/conf.c ++++ b/kconf/conf.c +@@ -593,40 +593,12 @@ int main(int ac, char **av) + case oldconfig: + case listnewconfig: + case olddefconfig: +- conf_read(NULL); +- break; + case allnoconfig: + case allyesconfig: + case allmodconfig: + case alldefconfig: + case randconfig: +- name = getenv("KCONFIG_ALLCONFIG"); +- if (!name) +- break; +- if ((strcmp(name, "") != 0) && (strcmp(name, "1") != 0)) { +- if (conf_read_simple(name, S_DEF_USER)) { +- fprintf(stderr, +- _("*** Can't read seed configuration \"%s\"!\n"), +- name); +- exit(1); +- } +- break; +- } +- switch (input_mode) { +- case allnoconfig: name = "allno.config"; break; +- case allyesconfig: name = "allyes.config"; break; +- case allmodconfig: name = "allmod.config"; break; +- case alldefconfig: name = "alldef.config"; break; +- case randconfig: name = "allrandom.config"; break; +- default: break; +- } +- if (conf_read_simple(name, S_DEF_USER) && +- conf_read_simple("all.config", S_DEF_USER)) { +- fprintf(stderr, +- _("*** KCONFIG_ALLCONFIG set, but no \"%s\" or \"all.config\" file found\n"), +- name); +- exit(1); +- } ++ conf_read(NULL); + break; + default: + break; +--- a/kconf/confdata.c ++++ b/kconf/confdata.c +@@ -1169,6 +1169,8 @@ bool conf_set_all_new_symbols(enum conf_ + } + bool has_changed = false; + ++ sym_clear_all_valid(); ++ + for_all_symbols(i, sym) { + if (sym_has_value(sym) || (sym->flags & SYMBOL_VALID)) + continue; +@@ -1212,8 +1214,6 @@ bool conf_set_all_new_symbols(enum conf_ + + } + +- sym_clear_all_valid(); +- + /* + * We have different type of choice blocks. + * If curr.tri equals to mod then we can select several diff --git a/feeds/rtkmipsel/mac80211/patches/003-remove_bogus_modparams.patch b/feeds/rtkmipsel/mac80211/patches/003-remove_bogus_modparams.patch new file mode 100644 index 000000000..8fa465a7e --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/003-remove_bogus_modparams.patch @@ -0,0 +1,34 @@ +--- a/compat/main.c ++++ b/compat/main.c +@@ -20,31 +20,6 @@ MODULE_LICENSE("GPL"); + #error "You need a CPTCFG_VERSION" + #endif + +-static char *backported_kernel_name = CPTCFG_KERNEL_NAME; +- +-module_param(backported_kernel_name, charp, 0400); +-MODULE_PARM_DESC(backported_kernel_name, +- "The kernel tree name that was used for this backport (" CPTCFG_KERNEL_NAME ")"); +- +-#ifdef BACKPORTS_GIT_TRACKED +-static char *backports_tracker_id = BACKPORTS_GIT_TRACKED; +-module_param(backports_tracker_id, charp, 0400); +-MODULE_PARM_DESC(backports_tracker_id, +- "The version of the tree containing this backport (" BACKPORTS_GIT_TRACKED ")"); +-#else +-static char *backported_kernel_version = CPTCFG_KERNEL_VERSION; +-static char *backports_version = CPTCFG_VERSION; +- +-module_param(backported_kernel_version, charp, 0400); +-MODULE_PARM_DESC(backported_kernel_version, +- "The kernel version that was used for this backport (" CPTCFG_KERNEL_VERSION ")"); +- +-module_param(backports_version, charp, 0400); +-MODULE_PARM_DESC(backports_version, +- "The git version of the backports tree used to generate this backport (" CPTCFG_VERSION ")"); +- +-#endif +- + void backport_dependency_symbol(void) + { + } diff --git a/feeds/rtkmipsel/mac80211/patches/004-backports-add-skb_free_frag.patch b/feeds/rtkmipsel/mac80211/patches/004-backports-add-skb_free_frag.patch new file mode 100644 index 000000000..9adfd8f71 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/004-backports-add-skb_free_frag.patch @@ -0,0 +1,21 @@ +From: Felix Fietkau +Date: Thu, 28 Jan 2016 15:16:35 +0100 +Subject: [PATCH] backports: add skb_free_frag() + +Signed-off-by: Felix Fietkau +--- + +--- a/backport-include/linux/skbuff.h ++++ b/backport-include/linux/skbuff.h +@@ -300,4 +300,11 @@ int skb_ensure_writable(struct sk_buff * + + #endif /* LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) */ + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(4,2,0) ++static inline void skb_free_frag(void *data) ++{ ++ put_page(virt_to_head_page(data)); ++} ++#endif ++ + #endif /* __BACKPORT_SKBUFF_H */ diff --git a/feeds/rtkmipsel/mac80211/patches/005-backports-add-napi_alloc_frag.patch b/feeds/rtkmipsel/mac80211/patches/005-backports-add-napi_alloc_frag.patch new file mode 100644 index 000000000..9b672a8d1 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/005-backports-add-napi_alloc_frag.patch @@ -0,0 +1,20 @@ +From: Felix Fietkau +Date: Thu, 28 Jan 2016 15:19:22 +0100 +Subject: [PATCH] backports: add napi_alloc_frag + +Signed-off-by: Felix Fietkau +--- + +--- a/backport-include/linux/netdevice.h ++++ b/backport-include/linux/netdevice.h +@@ -232,6 +232,10 @@ static inline void backport_unregister_n + #define unregister_netdevice_many LINUX_BACKPORT(unregister_netdevice_many) + #endif + ++#if LINUX_VERSION_CODE < KERNEL_VERSION(3,19,0) ++#define napi_alloc_frag netdev_alloc_frag ++#endif ++ + /* + * Complicated way of saying: We only backport netdev_rss_key stuff on kernels + * that either already have net_get_random_once() (>= 3.13) or where we've been diff --git a/feeds/rtkmipsel/mac80211/patches/010-disable_rfkill.patch b/feeds/rtkmipsel/mac80211/patches/010-disable_rfkill.patch new file mode 100644 index 000000000..c5a92d6b4 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/010-disable_rfkill.patch @@ -0,0 +1,13 @@ +--- a/backport-include/linux/rfkill.h ++++ b/backport-include/linux/rfkill.h +@@ -2,6 +2,10 @@ + #define __COMPAT_RFKILL_H + #include + ++#undef CONFIG_RFKILL ++#undef CONFIG_RFKILL_LEDS ++#undef CONFIG_RFKILL_MODULE ++ + #if LINUX_VERSION_CODE >= KERNEL_VERSION(3,10,0) + #include_next + #else diff --git a/feeds/rtkmipsel/mac80211/patches/030-rt2x00_options.patch b/feeds/rtkmipsel/mac80211/patches/030-rt2x00_options.patch new file mode 100644 index 000000000..a4ca8848c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/030-rt2x00_options.patch @@ -0,0 +1,47 @@ +--- a/drivers/net/wireless/ralink/rt2x00/Kconfig ++++ b/drivers/net/wireless/ralink/rt2x00/Kconfig +@@ -225,36 +225,37 @@ config RT2800SOC + + + config RT2800_LIB +- tristate ++ tristate "RT2800 USB/PCI support" + depends on m + + config RT2800_LIB_MMIO +- tristate ++ tristate "RT2800 MMIO support" + depends on m + select RT2X00_LIB_MMIO + select RT2800_LIB + + config RT2X00_LIB_MMIO +- tristate ++ tristate "RT2x00 MMIO support" + depends on m + + config RT2X00_LIB_PCI +- tristate ++ tristate "RT2x00 PCI support" + depends on m + select RT2X00_LIB + + config RT2X00_LIB_SOC +- tristate ++ tristate "RT2x00 SoC support" ++ depends on SOC_RT288X || SOC_RT305X + depends on m + select RT2X00_LIB + + config RT2X00_LIB_USB +- tristate ++ tristate "RT2x00 USB support" + depends on m + select RT2X00_LIB + + config RT2X00_LIB +- tristate ++ tristate "RT2x00 support" + depends on m + + config RT2X00_LIB_FIRMWARE diff --git a/feeds/rtkmipsel/mac80211/patches/040-brcmutil_option.patch b/feeds/rtkmipsel/mac80211/patches/040-brcmutil_option.patch new file mode 100644 index 000000000..167332d91 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/040-brcmutil_option.patch @@ -0,0 +1,9 @@ +--- a/drivers/net/wireless/broadcom/brcm80211/Kconfig ++++ b/drivers/net/wireless/broadcom/brcm80211/Kconfig +@@ -1,5 +1,5 @@ + config BRCMUTIL +- tristate ++ tristate "Broadcom 802.11 driver utility functions" + depends on m + + config BRCMSMAC diff --git a/feeds/rtkmipsel/mac80211/patches/050-lib80211_option.patch b/feeds/rtkmipsel/mac80211/patches/050-lib80211_option.patch new file mode 100644 index 000000000..3fc8c0520 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/050-lib80211_option.patch @@ -0,0 +1,30 @@ +--- a/net/wireless/Kconfig ++++ b/net/wireless/Kconfig +@@ -171,7 +171,7 @@ config CFG80211_WEXT_EXPORT + wext compatibility symbols to be exported. + + config LIB80211 +- tristate ++ tristate "lib80211" + depends on m + default n + help +@@ -181,15 +181,15 @@ config LIB80211 + Drivers should select this themselves if needed. + + config LIB80211_CRYPT_WEP +- tristate ++ tristate "lib80211 WEP support" + depends on m + + config LIB80211_CRYPT_CCMP +- tristate ++ tristate "lib80211 CCMP support" + depends on m + + config LIB80211_CRYPT_TKIP +- tristate ++ tristate "lib80211 TKIP support" + depends on m + + config LIB80211_DEBUG diff --git a/feeds/rtkmipsel/mac80211/patches/060-no_local_ssb_bcma.patch b/feeds/rtkmipsel/mac80211/patches/060-no_local_ssb_bcma.patch new file mode 100644 index 000000000..fd1e1cff3 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/060-no_local_ssb_bcma.patch @@ -0,0 +1,131 @@ +--- a/.local-symbols ++++ b/.local-symbols +@@ -476,44 +476,6 @@ USB_IPHETH= + USB_SIERRA_NET= + USB_VL600= + USB_NET_CH9200= +-SSB_POSSIBLE= +-SSB= +-SSB_SPROM= +-SSB_BLOCKIO= +-SSB_PCIHOST_POSSIBLE= +-SSB_PCIHOST= +-SSB_B43_PCI_BRIDGE= +-SSB_PCMCIAHOST_POSSIBLE= +-SSB_PCMCIAHOST= +-SSB_SDIOHOST_POSSIBLE= +-SSB_SDIOHOST= +-SSB_HOST_SOC= +-SSB_SILENT= +-SSB_DEBUG= +-SSB_SERIAL= +-SSB_DRIVER_PCICORE_POSSIBLE= +-SSB_DRIVER_PCICORE= +-SSB_PCICORE_HOSTMODE= +-SSB_DRIVER_MIPS= +-SSB_SFLASH= +-SSB_EMBEDDED= +-SSB_DRIVER_EXTIF= +-SSB_DRIVER_GIGE= +-SSB_DRIVER_GPIO= +-BCMA_POSSIBLE= +-BCMA= +-BCMA_BLOCKIO= +-BCMA_HOST_PCI_POSSIBLE= +-BCMA_HOST_PCI= +-BCMA_HOST_SOC= +-BCMA_DRIVER_PCI= +-BCMA_DRIVER_PCI_HOSTMODE= +-BCMA_DRIVER_MIPS= +-BCMA_SFLASH= +-BCMA_NFLASH= +-BCMA_DRIVER_GMAC_CMN= +-BCMA_DRIVER_GPIO= +-BCMA_DEBUG= + NFC= + NFC_DIGITAL= + NFC_NCI= +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -2866,7 +2866,7 @@ static struct ssb_device *b43_ssb_gpio_d + { + struct ssb_bus *bus = dev->dev->sdev->bus; + +-#ifdef CPTCFG_SSB_DRIVER_PCICORE ++#ifdef CONFIG_SSB_DRIVER_PCICORE + return (bus->chipco.dev ? bus->chipco.dev : bus->pcicore.dev); + #else + return bus->chipco.dev; +@@ -4903,7 +4903,7 @@ static int b43_wireless_core_init(struct + } + if (sprom->boardflags_lo & B43_BFL_XTAL_NOSLOW) + hf |= B43_HF_DSCRQ; /* Disable slowclock requests from ucode. */ +-#if defined(CPTCFG_B43_SSB) && defined(CPTCFG_SSB_DRIVER_PCICORE) ++#if defined(CPTCFG_B43_SSB) && defined(CONFIG_SSB_DRIVER_PCICORE) + if (dev->dev->bus_type == B43_BUS_SSB && + dev->dev->sdev->bus->bustype == SSB_BUSTYPE_PCI && + dev->dev->sdev->bus->pcicore.dev->id.revision <= 10) +--- a/drivers/net/wireless/broadcom/b43legacy/main.c ++++ b/drivers/net/wireless/broadcom/b43legacy/main.c +@@ -1937,7 +1937,7 @@ static int b43legacy_gpio_init(struct b4 + if (dev->dev->id.revision >= 2) + mask |= 0x0010; /* FIXME: This is redundant. */ + +-#ifdef CPTCFG_SSB_DRIVER_PCICORE ++#ifdef CONFIG_SSB_DRIVER_PCICORE + pcidev = bus->pcicore.dev; + #endif + gpiodev = bus->chipco.dev ? : pcidev; +@@ -1956,7 +1956,7 @@ static void b43legacy_gpio_cleanup(struc + struct ssb_bus *bus = dev->dev->bus; + struct ssb_device *gpiodev, *pcidev = NULL; + +-#ifdef CPTCFG_SSB_DRIVER_PCICORE ++#ifdef CONFIG_SSB_DRIVER_PCICORE + pcidev = bus->pcicore.dev; + #endif + gpiodev = bus->chipco.dev ? : pcidev; +--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/Makefile ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/Makefile +@@ -43,6 +43,6 @@ brcmsmac-y := \ + brcms_trace_events.o \ + debug.o + +-brcmsmac-$(CPTCFG_BCMA_DRIVER_GPIO) += led.o ++brcmsmac-$(CONFIG_BCMA_DRIVER_GPIO) += led.o + + obj-$(CPTCFG_BRCMSMAC) += brcmsmac.o +--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/led.h +@@ -22,7 +22,7 @@ struct brcms_led { + bool active_low; + }; + +-#ifdef CPTCFG_BCMA_DRIVER_GPIO ++#ifdef CONFIG_BCMA_DRIVER_GPIO + void brcms_led_unregister(struct brcms_info *wl); + int brcms_led_register(struct brcms_info *wl); + #else +--- a/Kconfig.sources ++++ b/Kconfig.sources +@@ -9,9 +9,6 @@ source "$BACKPORT_DIR/drivers/net/wirele + source "$BACKPORT_DIR/drivers/net/ethernet/Kconfig" + source "$BACKPORT_DIR/drivers/net/usb/Kconfig" + +-source "$BACKPORT_DIR/drivers/ssb/Kconfig" +-source "$BACKPORT_DIR/drivers/bcma/Kconfig" +- + source "$BACKPORT_DIR/net/nfc/Kconfig" + + source "$BACKPORT_DIR/drivers/media/Kconfig" +--- a/Makefile.kernel ++++ b/Makefile.kernel +@@ -38,8 +38,6 @@ obj-$(CPTCFG_MAC80211) += net/mac80211/ + obj-$(CPTCFG_WLAN) += drivers/net/wireless/ + obj-$(CPTCFG_BT) += net/bluetooth/ + obj-$(CPTCFG_BT) += drivers/bluetooth/ +-obj-$(CPTCFG_SSB) += drivers/ssb/ +-obj-$(CPTCFG_BCMA) += drivers/bcma/ + obj-$(CPTCFG_ETHERNET) += drivers/net/ethernet/ + obj-$(CPTCFG_USB_NET_RNDIS_WLAN) += drivers/net/usb/ + obj-$(CPTCFG_NFC) += net/nfc/ diff --git a/feeds/rtkmipsel/mac80211/patches/070-ath_common_config.patch b/feeds/rtkmipsel/mac80211/patches/070-ath_common_config.patch new file mode 100644 index 000000000..41774fe53 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/070-ath_common_config.patch @@ -0,0 +1,9 @@ +--- a/drivers/net/wireless/ath/Kconfig ++++ b/drivers/net/wireless/ath/Kconfig +@@ -1,5 +1,5 @@ + config ATH_COMMON +- tristate ++ tristate "ath.ko" + depends on m + + config WLAN_VENDOR_ATH diff --git a/feeds/rtkmipsel/mac80211/patches/080-disable_clk_backport.patch b/feeds/rtkmipsel/mac80211/patches/080-disable_clk_backport.patch new file mode 100644 index 000000000..3765591eb --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/080-disable_clk_backport.patch @@ -0,0 +1,20 @@ +--- a/compat/compat-3.6.c ++++ b/compat/compat-3.6.c +@@ -147,17 +147,3 @@ int sg_alloc_table_from_pages(struct sg_ + return 0; + } + EXPORT_SYMBOL_GPL(sg_alloc_table_from_pages); +- +-/* whoopsie ! */ +-#ifndef CONFIG_COMMON_CLK +-int clk_enable(struct clk *clk) +-{ +- return 0; +-} +-EXPORT_SYMBOL_GPL(clk_enable); +- +-void clk_disable(struct clk *clk) +-{ +-} +-EXPORT_SYMBOL_GPL(clk_disable); +-#endif diff --git a/feeds/rtkmipsel/mac80211/patches/100-remove-cryptoapi-dependencies.patch b/feeds/rtkmipsel/mac80211/patches/100-remove-cryptoapi-dependencies.patch new file mode 100644 index 000000000..02f46c778 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/100-remove-cryptoapi-dependencies.patch @@ -0,0 +1,376 @@ +--- a/net/mac80211/Kconfig ++++ b/net/mac80211/Kconfig +@@ -5,8 +5,6 @@ config MAC80211 + depends on CRYPTO + depends on CRYPTO_ARC4 + depends on CRYPTO_AES +- select BPAUTO_CRYPTO_CCM +- depends on CRYPTO_GCM + depends on CRC32 + ---help--- + This option enables the hardware independent IEEE 802.11 +--- a/net/mac80211/Makefile ++++ b/net/mac80211/Makefile +@@ -16,9 +16,7 @@ mac80211-y := \ + michael.o \ + tkip.o \ + aes_ccm.o \ +- aes_gcm.o \ + aes_cmac.o \ +- aes_gmac.o \ + cfg.o \ + ethtool.o \ + rx.o \ +--- a/net/mac80211/aes_ccm.c ++++ b/net/mac80211/aes_ccm.c +@@ -13,89 +13,132 @@ + #include + #include + #include ++#include + + #include + #include "key.h" + #include "aes_ccm.h" + +-void ieee80211_aes_ccm_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, +- u8 *data, size_t data_len, u8 *mic, +- size_t mic_len) ++static void aes_ccm_prepare(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, u8 *s_0, ++ u8 *a, u8 *b) + { +- struct scatterlist sg[3]; ++ int i; ++ ++ crypto_cipher_encrypt_one(tfm, b, b_0); ++ ++ /* Extra Authenticate-only data (always two AES blocks) */ ++ for (i = 0; i < AES_BLOCK_SIZE; i++) ++ aad[i] ^= b[i]; ++ crypto_cipher_encrypt_one(tfm, b, aad); ++ ++ aad += AES_BLOCK_SIZE; ++ ++ for (i = 0; i < AES_BLOCK_SIZE; i++) ++ aad[i] ^= b[i]; ++ crypto_cipher_encrypt_one(tfm, a, aad); + +- char aead_req_data[sizeof(struct aead_request) + +- crypto_aead_reqsize(tfm)] +- __aligned(__alignof__(struct aead_request)); +- struct aead_request *aead_req = (void *) aead_req_data; ++ /* Mask out bits from auth-only-b_0 */ ++ b_0[0] &= 0x07; + +- memset(aead_req, 0, sizeof(aead_req_data)); ++ /* S_0 is used to encrypt T (= MIC) */ ++ b_0[14] = 0; ++ b_0[15] = 0; ++ crypto_cipher_encrypt_one(tfm, s_0, b_0); ++} + +- sg_init_table(sg, 3); +- sg_set_buf(&sg[0], &aad[2], be16_to_cpup((__be16 *)aad)); +- sg_set_buf(&sg[1], data, data_len); +- sg_set_buf(&sg[2], mic, mic_len); + +- aead_request_set_tfm(aead_req, tfm); +- aead_request_set_crypt(aead_req, sg, sg, data_len, b_0); +- aead_request_set_ad(aead_req, sg[0].length); ++void ieee80211_aes_ccm_encrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic, ++ size_t mic_len) ++{ ++ int i, j, last_len, num_blocks; ++ u8 b[AES_BLOCK_SIZE]; ++ u8 s_0[AES_BLOCK_SIZE]; ++ u8 e[AES_BLOCK_SIZE]; ++ u8 *pos, *cpos; ++ ++ num_blocks = DIV_ROUND_UP(data_len, AES_BLOCK_SIZE); ++ last_len = data_len % AES_BLOCK_SIZE; ++ aes_ccm_prepare(tfm, b_0, aad, s_0, b, b); ++ ++ /* Process payload blocks */ ++ pos = data; ++ cpos = data; ++ for (j = 1; j <= num_blocks; j++) { ++ int blen = (j == num_blocks && last_len) ? ++ last_len : AES_BLOCK_SIZE; ++ ++ /* Authentication followed by encryption */ ++ for (i = 0; i < blen; i++) ++ b[i] ^= pos[i]; ++ crypto_cipher_encrypt_one(tfm, b, b); ++ ++ b_0[14] = (j >> 8) & 0xff; ++ b_0[15] = j & 0xff; ++ crypto_cipher_encrypt_one(tfm, e, b_0); ++ for (i = 0; i < blen; i++) ++ *cpos++ = *pos++ ^ e[i]; ++ } + +- crypto_aead_encrypt(aead_req); ++ for (i = 0; i < mic_len; i++) ++ mic[i] = b[i] ^ s_0[i]; + } + +-int ieee80211_aes_ccm_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, ++int ieee80211_aes_ccm_decrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, + u8 *data, size_t data_len, u8 *mic, + size_t mic_len) + { +- struct scatterlist sg[3]; +- char aead_req_data[sizeof(struct aead_request) + +- crypto_aead_reqsize(tfm)] +- __aligned(__alignof__(struct aead_request)); +- struct aead_request *aead_req = (void *) aead_req_data; +- +- if (data_len == 0) +- return -EINVAL; +- +- memset(aead_req, 0, sizeof(aead_req_data)); +- +- sg_init_table(sg, 3); +- sg_set_buf(&sg[0], &aad[2], be16_to_cpup((__be16 *)aad)); +- sg_set_buf(&sg[1], data, data_len); +- sg_set_buf(&sg[2], mic, mic_len); +- +- aead_request_set_tfm(aead_req, tfm); +- aead_request_set_crypt(aead_req, sg, sg, data_len + mic_len, b_0); +- aead_request_set_ad(aead_req, sg[0].length); ++ int i, j, last_len, num_blocks; ++ u8 *pos, *cpos; ++ u8 a[AES_BLOCK_SIZE]; ++ u8 b[AES_BLOCK_SIZE]; ++ u8 s_0[AES_BLOCK_SIZE]; ++ ++ num_blocks = DIV_ROUND_UP(data_len, AES_BLOCK_SIZE); ++ last_len = data_len % AES_BLOCK_SIZE; ++ aes_ccm_prepare(tfm, b_0, aad, s_0, a, b); ++ ++ /* Process payload blocks */ ++ cpos = data; ++ pos = data; ++ for (j = 1; j <= num_blocks; j++) { ++ int blen = (j == num_blocks && last_len) ? ++ last_len : AES_BLOCK_SIZE; ++ ++ /* Decryption followed by authentication */ ++ b_0[14] = (j >> 8) & 0xff; ++ b_0[15] = j & 0xff; ++ crypto_cipher_encrypt_one(tfm, b, b_0); ++ for (i = 0; i < blen; i++) { ++ *pos = *cpos++ ^ b[i]; ++ a[i] ^= *pos++; ++ } ++ crypto_cipher_encrypt_one(tfm, a, a); ++ } ++ ++ for (i = 0; i < mic_len; i++) { ++ if ((mic[i] ^ s_0[i]) != a[i]) ++ return -1; ++ } + +- return crypto_aead_decrypt(aead_req); ++ return 0; + } + +-struct crypto_aead *ieee80211_aes_key_setup_encrypt(const u8 key[], +- size_t key_len, +- size_t mic_len) ++struct crypto_cipher *ieee80211_aes_key_setup_encrypt(const u8 key[], ++ size_t key_len, ++ size_t mic_len) + { +- struct crypto_aead *tfm; +- int err; ++ struct crypto_cipher *tfm; + +- tfm = crypto_alloc_aead("ccm(aes)", 0, CRYPTO_ALG_ASYNC); +- if (IS_ERR(tfm)) +- return tfm; +- +- err = crypto_aead_setkey(tfm, key, key_len); +- if (err) +- goto free_aead; +- err = crypto_aead_setauthsize(tfm, mic_len); +- if (err) +- goto free_aead; ++ tfm = crypto_alloc_cipher("aes", 0, CRYPTO_ALG_ASYNC); ++ if (!IS_ERR(tfm)) ++ crypto_cipher_setkey(tfm, key, key_len); + + return tfm; +- +-free_aead: +- crypto_free_aead(tfm); +- return ERR_PTR(err); + } + +-void ieee80211_aes_key_free(struct crypto_aead *tfm) ++ ++void ieee80211_aes_key_free(struct crypto_cipher *tfm) + { +- crypto_free_aead(tfm); ++ crypto_free_cipher(tfm); + } +--- a/net/mac80211/aes_ccm.h ++++ b/net/mac80211/aes_ccm.h +@@ -12,15 +12,15 @@ + + #include + +-struct crypto_aead *ieee80211_aes_key_setup_encrypt(const u8 key[], +- size_t key_len, +- size_t mic_len); +-void ieee80211_aes_ccm_encrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, ++struct crypto_cipher *ieee80211_aes_key_setup_encrypt(const u8 key[], ++ size_t key_len, ++ size_t mic_len); ++void ieee80211_aes_ccm_encrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, + u8 *data, size_t data_len, u8 *mic, + size_t mic_len); +-int ieee80211_aes_ccm_decrypt(struct crypto_aead *tfm, u8 *b_0, u8 *aad, ++int ieee80211_aes_ccm_decrypt(struct crypto_cipher *tfm, u8 *b_0, u8 *aad, + u8 *data, size_t data_len, u8 *mic, + size_t mic_len); +-void ieee80211_aes_key_free(struct crypto_aead *tfm); ++void ieee80211_aes_key_free(struct crypto_cipher *tfm); + + #endif /* AES_CCM_H */ +--- a/net/mac80211/aes_gcm.h ++++ b/net/mac80211/aes_gcm.h +@@ -11,12 +11,28 @@ + + #include + +-void ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, +- u8 *data, size_t data_len, u8 *mic); +-int ieee80211_aes_gcm_decrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, +- u8 *data, size_t data_len, u8 *mic); +-struct crypto_aead *ieee80211_aes_gcm_key_setup_encrypt(const u8 key[], +- size_t key_len); +-void ieee80211_aes_gcm_key_free(struct crypto_aead *tfm); ++static inline void ++ieee80211_aes_gcm_encrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic) ++{ ++} ++ ++static inline int ++ieee80211_aes_gcm_decrypt(struct crypto_aead *tfm, u8 *j_0, u8 *aad, ++ u8 *data, size_t data_len, u8 *mic) ++{ ++ return -EOPNOTSUPP; ++} ++ ++static inline struct crypto_aead * ++ieee80211_aes_gcm_key_setup_encrypt(const u8 key[], size_t key_len) ++{ ++ return NULL; ++} ++ ++static inline void ++ieee80211_aes_gcm_key_free(struct crypto_aead *tfm) ++{ ++} + + #endif /* AES_GCM_H */ +--- a/net/mac80211/aes_gmac.h ++++ b/net/mac80211/aes_gmac.h +@@ -11,10 +11,22 @@ + + #include + +-struct crypto_aead *ieee80211_aes_gmac_key_setup(const u8 key[], +- size_t key_len); +-int ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce, +- const u8 *data, size_t data_len, u8 *mic); +-void ieee80211_aes_gmac_key_free(struct crypto_aead *tfm); ++static inline struct crypto_aead * ++ieee80211_aes_gmac_key_setup(const u8 key[], size_t key_len) ++{ ++ return NULL; ++} ++ ++static inline int ++ieee80211_aes_gmac(struct crypto_aead *tfm, const u8 *aad, u8 *nonce, ++ const u8 *data, size_t data_len, u8 *mic) ++{ ++ return -EOPNOTSUPP; ++} ++ ++static inline void ++ieee80211_aes_gmac_key_free(struct crypto_aead *tfm) ++{ ++} + + #endif /* AES_GMAC_H */ +--- a/net/mac80211/key.h ++++ b/net/mac80211/key.h +@@ -84,7 +84,7 @@ struct ieee80211_key { + * Management frames. + */ + u8 rx_pn[IEEE80211_NUM_TIDS + 1][IEEE80211_CCMP_PN_LEN]; +- struct crypto_aead *tfm; ++ struct crypto_cipher *tfm; + u32 replays; /* dot11RSNAStatsCCMPReplays */ + } ccmp; + struct { +--- a/net/mac80211/wpa.c ++++ b/net/mac80211/wpa.c +@@ -307,7 +307,8 @@ ieee80211_crypto_tkip_decrypt(struct iee + } + + +-static void ccmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *b_0, u8 *aad) ++static void ccmp_special_blocks(struct sk_buff *skb, u8 *pn, u8 *b_0, u8 *aad, ++ u16 data_len) + { + __le16 mask_fc; + int a4_included, mgmt; +@@ -337,14 +338,8 @@ static void ccmp_special_blocks(struct s + else + qos_tid = 0; + +- /* In CCM, the initial vectors (IV) used for CTR mode encryption and CBC +- * mode authentication are not allowed to collide, yet both are derived +- * from this vector b_0. We only set L := 1 here to indicate that the +- * data size can be represented in (L+1) bytes. The CCM layer will take +- * care of storing the data length in the top (L+1) bytes and setting +- * and clearing the other bits as is required to derive the two IVs. +- */ +- b_0[0] = 0x1; ++ /* First block, b_0 */ ++ b_0[0] = 0x59; /* flags: Adata: 1, M: 011, L: 001 */ + + /* Nonce: Nonce Flags | A2 | PN + * Nonce Flags: Priority (b0..b3) | Management (b4) | Reserved (b5..b7) +@@ -352,6 +347,8 @@ static void ccmp_special_blocks(struct s + b_0[1] = qos_tid | (mgmt << 4); + memcpy(&b_0[2], hdr->addr2, ETH_ALEN); + memcpy(&b_0[8], pn, IEEE80211_CCMP_PN_LEN); ++ /* l(m) */ ++ put_unaligned_be16(data_len, &b_0[14]); + + /* AAD (extra authenticate-only data) / masked 802.11 header + * FC | A1 | A2 | A3 | SC | [A4] | [QC] */ +@@ -463,7 +460,7 @@ static int ccmp_encrypt_skb(struct ieee8 + return 0; + + pos += IEEE80211_CCMP_HDR_LEN; +- ccmp_special_blocks(skb, pn, b_0, aad); ++ ccmp_special_blocks(skb, pn, b_0, aad, len); + ieee80211_aes_ccm_encrypt(key->u.ccmp.tfm, b_0, aad, pos, len, + skb_put(skb, mic_len), mic_len); + +@@ -534,7 +531,7 @@ ieee80211_crypto_ccmp_decrypt(struct iee + u8 aad[2 * AES_BLOCK_SIZE]; + u8 b_0[AES_BLOCK_SIZE]; + /* hardware didn't decrypt/verify MIC */ +- ccmp_special_blocks(skb, pn, b_0, aad); ++ ccmp_special_blocks(skb, pn, b_0, aad, data_len); + + if (ieee80211_aes_ccm_decrypt( + key->u.ccmp.tfm, b_0, aad, diff --git a/feeds/rtkmipsel/mac80211/patches/110-mac80211_keep_keys_on_stop_ap.patch b/feeds/rtkmipsel/mac80211/patches/110-mac80211_keep_keys_on_stop_ap.patch new file mode 100644 index 000000000..d1d9fbd9b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/110-mac80211_keep_keys_on_stop_ap.patch @@ -0,0 +1,12 @@ +Used for AP+STA support in OpenWrt - preserve AP mode keys across STA reconnects + +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -846,7 +846,6 @@ static int ieee80211_stop_ap(struct wiph + sdata->u.ap.driver_smps_mode = IEEE80211_SMPS_OFF; + + __sta_info_flush(sdata, true); +- ieee80211_free_keys(sdata, true); + + sdata->vif.bss_conf.enable_beacon = false; + sdata->vif.bss_conf.ssid_len = 0; diff --git a/feeds/rtkmipsel/mac80211/patches/120-cfg80211_allow_perm_addr_change.patch b/feeds/rtkmipsel/mac80211/patches/120-cfg80211_allow_perm_addr_change.patch new file mode 100644 index 000000000..ffd8807cc --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/120-cfg80211_allow_perm_addr_change.patch @@ -0,0 +1,43 @@ +--- a/net/wireless/sysfs.c ++++ b/net/wireless/sysfs.c +@@ -24,18 +24,35 @@ static inline struct cfg80211_registered + return container_of(dev, struct cfg80211_registered_device, wiphy.dev); + } + +-#define SHOW_FMT(name, fmt, member) \ ++#define SHOW_FMT(name, fmt, member, mode) \ + static ssize_t name ## _show(struct device *dev, \ + struct device_attribute *attr, \ + char *buf) \ + { \ + return sprintf(buf, fmt "\n", dev_to_rdev(dev)->member); \ + } \ +-static DEVICE_ATTR_RO(name) ++static DEVICE_ATTR_##mode(name) + +-SHOW_FMT(index, "%d", wiphy_idx); +-SHOW_FMT(macaddress, "%pM", wiphy.perm_addr); +-SHOW_FMT(address_mask, "%pM", wiphy.addr_mask); ++static ssize_t macaddress_store(struct device *dev, ++ struct device_attribute *attr, ++ const char *buf, size_t len) ++{ ++ u8 mac[ETH_ALEN]; ++ ++ if (!mac_pton(buf, mac)) ++ return -EINVAL; ++ ++ if (buf[3 * ETH_ALEN - 1] && buf[3 * ETH_ALEN - 1] != '\n') ++ return -EINVAL; ++ ++ memcpy(dev_to_rdev(dev)->wiphy.perm_addr, mac, ETH_ALEN); ++ ++ return strnlen(buf, len); ++} ++ ++SHOW_FMT(index, "%d", wiphy_idx, RO); ++SHOW_FMT(macaddress, "%pM", wiphy.perm_addr, RW); ++SHOW_FMT(address_mask, "%pM", wiphy.addr_mask, RO); + + static ssize_t name_show(struct device *dev, + struct device_attribute *attr, diff --git a/feeds/rtkmipsel/mac80211/patches/150-disable_addr_notifier.patch b/feeds/rtkmipsel/mac80211/patches/150-disable_addr_notifier.patch new file mode 100644 index 000000000..2855a88af --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/150-disable_addr_notifier.patch @@ -0,0 +1,67 @@ +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -291,7 +291,7 @@ void ieee80211_restart_hw(struct ieee802 + } + EXPORT_SYMBOL(ieee80211_restart_hw); + +-#ifdef CONFIG_INET ++#ifdef __disabled__CONFIG_INET + static int ieee80211_ifa_changed(struct notifier_block *nb, + unsigned long data, void *arg) + { +@@ -350,7 +350,7 @@ static int ieee80211_ifa_changed(struct + } + #endif + +-#if IS_ENABLED(CONFIG_IPV6) ++#if IS_ENABLED(__disabled__CONFIG_IPV6) + static int ieee80211_ifa6_changed(struct notifier_block *nb, + unsigned long data, void *arg) + { +@@ -1087,14 +1087,14 @@ int ieee80211_register_hw(struct ieee802 + + rtnl_unlock(); + +-#ifdef CONFIG_INET ++#ifdef __disabled__CONFIG_INET + local->ifa_notifier.notifier_call = ieee80211_ifa_changed; + result = register_inetaddr_notifier(&local->ifa_notifier); + if (result) + goto fail_ifa; + #endif + +-#if IS_ENABLED(CONFIG_IPV6) ++#if IS_ENABLED(__disabled__CONFIG_IPV6) + local->ifa6_notifier.notifier_call = ieee80211_ifa6_changed; + result = register_inet6addr_notifier(&local->ifa6_notifier); + if (result) +@@ -1103,13 +1103,13 @@ int ieee80211_register_hw(struct ieee802 + + return 0; + +-#if IS_ENABLED(CONFIG_IPV6) ++#if IS_ENABLED(__disabled__CONFIG_IPV6) + fail_ifa6: +-#ifdef CONFIG_INET ++#ifdef __disabled__CONFIG_INET + unregister_inetaddr_notifier(&local->ifa_notifier); + #endif + #endif +-#if defined(CONFIG_INET) || defined(CONFIG_IPV6) ++#if defined(__disabled__CONFIG_INET) || defined(__disabled__CONFIG_IPV6) + fail_ifa: + #endif + rtnl_lock(); +@@ -1137,10 +1137,10 @@ void ieee80211_unregister_hw(struct ieee + tasklet_kill(&local->tx_pending_tasklet); + tasklet_kill(&local->tasklet); + +-#ifdef CONFIG_INET ++#ifdef __disabled__CONFIG_INET + unregister_inetaddr_notifier(&local->ifa_notifier); + #endif +-#if IS_ENABLED(CONFIG_IPV6) ++#if IS_ENABLED(__disabled__CONFIG_IPV6) + unregister_inet6addr_notifier(&local->ifa6_notifier); + #endif + diff --git a/feeds/rtkmipsel/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch b/feeds/rtkmipsel/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch new file mode 100644 index 000000000..21516ffde --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/201-ath5k-WAR-for-AR71xx-PCI-bug.patch @@ -0,0 +1,38 @@ +--- a/drivers/net/wireless/ath/ath5k/initvals.c ++++ b/drivers/net/wireless/ath/ath5k/initvals.c +@@ -62,8 +62,14 @@ static const struct ath5k_ini ar5210_ini + { AR5K_IMR, 0 }, + { AR5K_IER, AR5K_IER_DISABLE }, + { AR5K_BSR, 0, AR5K_INI_READ }, ++#if !defined(CONFIG_ATHEROS_AR71XX) && !defined(CONFIG_ATH79) + { AR5K_TXCFG, AR5K_DMASIZE_128B }, + { AR5K_RXCFG, AR5K_DMASIZE_128B }, ++#else ++ /* WAR for AR71xx PCI bug */ ++ { AR5K_TXCFG, AR5K_DMASIZE_128B }, ++ { AR5K_RXCFG, AR5K_DMASIZE_4B }, ++#endif + { AR5K_CFG, AR5K_INIT_CFG }, + { AR5K_TOPS, 8 }, + { AR5K_RXNOFRM, 8 }, +--- a/drivers/net/wireless/ath/ath5k/dma.c ++++ b/drivers/net/wireless/ath/ath5k/dma.c +@@ -869,10 +869,18 @@ ath5k_hw_dma_init(struct ath5k_hw *ah) + * guess we can tweak it and see how it goes ;-) + */ + if (ah->ah_version != AR5K_AR5210) { ++#if !defined(CONFIG_ATHEROS_AR71XX) && !defined(CONFIG_ATH79) + AR5K_REG_WRITE_BITS(ah, AR5K_TXCFG, + AR5K_TXCFG_SDMAMR, AR5K_DMASIZE_128B); + AR5K_REG_WRITE_BITS(ah, AR5K_RXCFG, + AR5K_RXCFG_SDMAMW, AR5K_DMASIZE_128B); ++#else ++ /* WAR for AR71xx PCI bug */ ++ AR5K_REG_WRITE_BITS(ah, AR5K_TXCFG, ++ AR5K_TXCFG_SDMAMR, AR5K_DMASIZE_128B); ++ AR5K_REG_WRITE_BITS(ah, AR5K_RXCFG, ++ AR5K_RXCFG_SDMAMW, AR5K_DMASIZE_4B); ++#endif + } + + /* Pre-enable interrupts on 5211/5212*/ diff --git a/feeds/rtkmipsel/mac80211/patches/210-ap_scan.patch b/feeds/rtkmipsel/mac80211/patches/210-ap_scan.patch new file mode 100644 index 000000000..a99cbd2be --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/210-ap_scan.patch @@ -0,0 +1,11 @@ +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -1999,7 +1999,7 @@ static int ieee80211_scan(struct wiphy * + * the frames sent while scanning on other channel will be + * lost) + */ +- if (sdata->u.ap.beacon && ++ if (0 && sdata->u.ap.beacon && + (!(wiphy->features & NL80211_FEATURE_AP_SCAN) || + !(req->flags & NL80211_SCAN_FLAG_AP))) + return -EOPNOTSUPP; diff --git a/feeds/rtkmipsel/mac80211/patches/300-ath9k-force-rx_clear-when-disabling-rx.patch b/feeds/rtkmipsel/mac80211/patches/300-ath9k-force-rx_clear-when-disabling-rx.patch new file mode 100644 index 000000000..bddb15ad1 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/300-ath9k-force-rx_clear-when-disabling-rx.patch @@ -0,0 +1,31 @@ +From: Felix Fietkau +Date: Sun, 7 Jun 2015 13:53:35 +0200 +Subject: [PATCH] ath9k: force rx_clear when disabling rx + +This makes stopping Rx more reliable and should reduce the frequency of +Rx related DMA stop warnings + +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/mac.c ++++ b/drivers/net/wireless/ath/ath9k/mac.c +@@ -677,13 +677,15 @@ void ath9k_hw_startpcureceive(struct ath + + ath9k_ani_reset(ah, is_scanning); + +- REG_CLR_BIT(ah, AR_DIAG_SW, (AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT)); ++ REG_CLR_BIT(ah, AR_DIAG_SW, ++ AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT | AR_DIAG_FORCE_RX_CLEAR); + } + EXPORT_SYMBOL(ath9k_hw_startpcureceive); + + void ath9k_hw_abortpcurecv(struct ath_hw *ah) + { +- REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_ABORT | AR_DIAG_RX_DIS); ++ REG_SET_BIT(ah, AR_DIAG_SW, ++ AR_DIAG_RX_DIS | AR_DIAG_RX_ABORT | AR_DIAG_FORCE_RX_CLEAR); + + ath9k_hw_disable_mib_counters(ah); + } diff --git a/feeds/rtkmipsel/mac80211/patches/301-ath9k-limit-retries-for-powersave-response-frames.patch b/feeds/rtkmipsel/mac80211/patches/301-ath9k-limit-retries-for-powersave-response-frames.patch new file mode 100644 index 000000000..a160dc4f0 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/301-ath9k-limit-retries-for-powersave-response-frames.patch @@ -0,0 +1,121 @@ +From: Felix Fietkau +Date: Thu, 2 Jul 2015 15:20:56 +0200 +Subject: [PATCH] ath9k: limit retries for powersave response frames + +In some cases, the channel might be busy enough that an ath9k AP's +response to PS-Poll frames might be too slow and the station has already +gone to sleep. To avoid wasting too much airtime on this, limit the +number of retries on such frames and ensure that no sample rate gets +used. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/xmit.c ++++ b/drivers/net/wireless/ath/ath9k/xmit.c +@@ -136,10 +136,25 @@ static void ath_send_bar(struct ath_atx_ + } + + static void ath_set_rates(struct ieee80211_vif *vif, struct ieee80211_sta *sta, +- struct ath_buf *bf) ++ struct ath_buf *bf, bool ps) + { ++ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(bf->bf_mpdu); ++ ++ if (ps) { ++ /* Clear the first rate to avoid using a sample rate for PS frames */ ++ info->control.rates[0].idx = -1; ++ info->control.rates[0].count = 0; ++ } ++ + ieee80211_get_tx_rates(vif, sta, bf->bf_mpdu, bf->rates, + ARRAY_SIZE(bf->rates)); ++ if (!ps) ++ return; ++ ++ if (bf->rates[0].count > 2) ++ bf->rates[0].count = 2; ++ ++ bf->rates[1].idx = -1; + } + + static void ath_txq_skb_done(struct ath_softc *sc, struct ath_txq *txq, +@@ -1419,7 +1434,7 @@ ath_tx_form_burst(struct ath_softc *sc, + if (tx_info->flags & IEEE80211_TX_CTL_AMPDU) + break; + +- ath_set_rates(tid->an->vif, tid->an->sta, bf); ++ ath_set_rates(tid->an->vif, tid->an->sta, bf, false); + } while (1); + } + +@@ -1450,7 +1465,7 @@ static bool ath_tx_sched_aggr(struct ath + return false; + } + +- ath_set_rates(tid->an->vif, tid->an->sta, bf); ++ ath_set_rates(tid->an->vif, tid->an->sta, bf, false); + if (aggr) + last = ath_tx_form_aggr(sc, txq, tid, &bf_q, bf, + tid_q, &aggr_len); +@@ -1647,7 +1662,7 @@ void ath9k_release_buffered_frames(struc + + __skb_unlink(bf->bf_mpdu, tid_q); + list_add_tail(&bf->list, &bf_q); +- ath_set_rates(tid->an->vif, tid->an->sta, bf); ++ ath_set_rates(tid->an->vif, tid->an->sta, bf, true); + if (bf_isampdu(bf)) { + ath_tx_addto_baw(sc, tid, bf); + bf->bf_state.bf_type &= ~BUF_AGGR; +@@ -2293,7 +2308,7 @@ int ath_tx_start(struct ieee80211_hw *hw + struct ath_txq *txq = txctl->txq; + struct ath_atx_tid *tid = NULL; + struct ath_buf *bf; +- bool queue, skip_uapsd = false, ps_resp; ++ bool queue, ps_resp; + int q, ret; + + if (vif) +@@ -2346,13 +2361,13 @@ int ath_tx_start(struct ieee80211_hw *hw + if (!txctl->an) + txctl->an = &avp->mcast_node; + queue = true; +- skip_uapsd = true; ++ ps_resp = false; + } + + if (txctl->an && queue) + tid = ath_get_skb_tid(sc, txctl->an, skb); + +- if (!skip_uapsd && ps_resp) { ++ if (ps_resp) { + ath_txq_unlock(sc, txq); + txq = sc->tx.uapsdq; + ath_txq_lock(sc, txq); +@@ -2390,7 +2405,7 @@ int ath_tx_start(struct ieee80211_hw *hw + if (txctl->paprd) + bf->bf_state.bfs_paprd_timestamp = jiffies; + +- ath_set_rates(vif, sta, bf); ++ ath_set_rates(vif, sta, bf, ps_resp); + ath_tx_send_normal(sc, txq, tid, skb); + + out: +@@ -2429,7 +2444,7 @@ void ath_tx_cabq(struct ieee80211_hw *hw + break; + + bf->bf_lastbf = bf; +- ath_set_rates(vif, NULL, bf); ++ ath_set_rates(vif, NULL, bf, false); + ath_buf_set_rate(sc, bf, &info, fi->framelen, false); + duration += info.rates[0].PktDuration; + if (bf_tail) +@@ -2932,7 +2947,7 @@ int ath9k_tx99_send(struct ath_softc *sc + return -EINVAL; + } + +- ath_set_rates(sc->tx99_vif, NULL, bf); ++ ath_set_rates(sc->tx99_vif, NULL, bf, false); + + ath9k_hw_set_desc_link(sc->sc_ah, bf->bf_desc, bf->bf_daddr); + ath9k_hw_tx99_start(sc->sc_ah, txctl->txq->axq_qnum); diff --git a/feeds/rtkmipsel/mac80211/patches/302-ath9k_hw-add-low-power-tx-gain-table-for-AR953x.patch b/feeds/rtkmipsel/mac80211/patches/302-ath9k_hw-add-low-power-tx-gain-table-for-AR953x.patch new file mode 100644 index 000000000..22b987aa7 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/302-ath9k_hw-add-low-power-tx-gain-table-for-AR953x.patch @@ -0,0 +1,95 @@ +From: Felix Fietkau +Date: Thu, 14 Jan 2016 03:14:03 +0100 +Subject: [PATCH] ath9k_hw: add low power tx gain table for AR953x + +Used in some newer TP-Link AR9533 devices. + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/ar9003_hw.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_hw.c +@@ -698,6 +698,9 @@ static void ar9003_tx_gain_table_mode2(s + else if (AR_SREV_9340(ah)) + INIT_INI_ARRAY(&ah->iniModesTxGain, + ar9340Modes_low_ob_db_tx_gain_table_1p0); ++ else if (AR_SREV_9531_11(ah)) ++ INIT_INI_ARRAY(&ah->iniModesTxGain, ++ qca953x_1p1_modes_no_xpa_low_power_tx_gain_table); + else if (AR_SREV_9485_11_OR_LATER(ah)) + INIT_INI_ARRAY(&ah->iniModesTxGain, + ar9485Modes_low_ob_db_tx_gain_1_1); +--- a/drivers/net/wireless/ath/ath9k/ar953x_initvals.h ++++ b/drivers/net/wireless/ath/ath9k/ar953x_initvals.h +@@ -757,6 +757,71 @@ static const u32 qca953x_1p1_modes_xpa_t + {0x00016448, 0x6c927a70}, + }; + ++static const u32 qca953x_1p1_modes_no_xpa_low_power_tx_gain_table[][2] = { ++ /* Addr allmodes */ ++ {0x0000a2dc, 0xfff55592}, ++ {0x0000a2e0, 0xfff99924}, ++ {0x0000a2e4, 0xfffe1e00}, ++ {0x0000a2e8, 0xffffe000}, ++ {0x0000a410, 0x000050d6}, ++ {0x0000a500, 0x00000069}, ++ {0x0000a504, 0x0400006b}, ++ {0x0000a508, 0x0800006d}, ++ {0x0000a50c, 0x0c000269}, ++ {0x0000a510, 0x1000026b}, ++ {0x0000a514, 0x1400026d}, ++ {0x0000a518, 0x18000669}, ++ {0x0000a51c, 0x1c00066b}, ++ {0x0000a520, 0x1d000a68}, ++ {0x0000a524, 0x21000a6a}, ++ {0x0000a528, 0x25000a6c}, ++ {0x0000a52c, 0x29000a6e}, ++ {0x0000a530, 0x2d0012a9}, ++ {0x0000a534, 0x310012ab}, ++ {0x0000a538, 0x350012ad}, ++ {0x0000a53c, 0x39001b0a}, ++ {0x0000a540, 0x3d001b0c}, ++ {0x0000a544, 0x41001b0e}, ++ {0x0000a548, 0x43001bae}, ++ {0x0000a54c, 0x45001914}, ++ {0x0000a550, 0x47001916}, ++ {0x0000a554, 0x49001b96}, ++ {0x0000a558, 0x49001b96}, ++ {0x0000a55c, 0x49001b96}, ++ {0x0000a560, 0x49001b96}, ++ {0x0000a564, 0x49001b96}, ++ {0x0000a568, 0x49001b96}, ++ {0x0000a56c, 0x49001b96}, ++ {0x0000a570, 0x49001b96}, ++ {0x0000a574, 0x49001b96}, ++ {0x0000a578, 0x49001b96}, ++ {0x0000a57c, 0x49001b96}, ++ {0x0000a600, 0x00000000}, ++ {0x0000a604, 0x00000000}, ++ {0x0000a608, 0x00000000}, ++ {0x0000a60c, 0x00000000}, ++ {0x0000a610, 0x00000000}, ++ {0x0000a614, 0x00000000}, ++ {0x0000a618, 0x00804201}, ++ {0x0000a61c, 0x01408201}, ++ {0x0000a620, 0x01408502}, ++ {0x0000a624, 0x01408502}, ++ {0x0000a628, 0x01408502}, ++ {0x0000a62c, 0x01408502}, ++ {0x0000a630, 0x01408502}, ++ {0x0000a634, 0x01408502}, ++ {0x0000a638, 0x01408502}, ++ {0x0000a63c, 0x01408502}, ++ {0x0000b2dc, 0xfff55592}, ++ {0x0000b2e0, 0xfff99924}, ++ {0x0000b2e4, 0xfffe1e00}, ++ {0x0000b2e8, 0xffffe000}, ++ {0x00016044, 0x044922db}, ++ {0x00016048, 0x6c927a70}, ++ {0x00016444, 0x044922db}, ++ {0x00016448, 0x6c927a70}, ++}; ++ + static const u32 qca953x_2p0_baseband_core[][2] = { + /* Addr allmodes */ + {0x00009800, 0xafe68e30}, diff --git a/feeds/rtkmipsel/mac80211/patches/303-rt2x00-fix-monitor-mode-regression.patch b/feeds/rtkmipsel/mac80211/patches/303-rt2x00-fix-monitor-mode-regression.patch new file mode 100644 index 000000000..7bb74353e --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/303-rt2x00-fix-monitor-mode-regression.patch @@ -0,0 +1,156 @@ +From: Eli Cooper +Date: Thu, 14 Jan 2016 00:07:12 +0800 +Subject: [PATCH] rt2x00: fix monitor mode regression + +Since commit df1404650ccbfeb76a84f301f22316be0d00a864 monitor mode for rt2x00 +has been made effectively useless because the hardware filter is configured to +drop packets whose intended recipient is not the device, regardless of the +presence of monitor mode interfaces. + +This patch fixes this regression by adding explicit monitor mode support, and +configuring the hardware filter accordingly. + +Signed-off-by: Eli Cooper +--- + +--- a/drivers/net/wireless/ralink/rt2x00/rt2400pci.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2400pci.c +@@ -273,8 +273,10 @@ static void rt2400pci_config_filter(stru + !(filter_flags & FIF_PLCPFAIL)); + rt2x00_set_field32(®, RXCSR0_DROP_CONTROL, + !(filter_flags & FIF_CONTROL)); +- rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, 1); ++ rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, ++ !rt2x00dev->is_monitoring); + rt2x00_set_field32(®, RXCSR0_DROP_TODS, ++ !rt2x00dev->is_monitoring && + !rt2x00dev->intf_ap_count); + rt2x00_set_field32(®, RXCSR0_DROP_VERSION_ERROR, 1); + rt2x00mmio_register_write(rt2x00dev, RXCSR0, reg); +--- a/drivers/net/wireless/ralink/rt2x00/rt2500pci.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2500pci.c +@@ -274,8 +274,10 @@ static void rt2500pci_config_filter(stru + !(filter_flags & FIF_PLCPFAIL)); + rt2x00_set_field32(®, RXCSR0_DROP_CONTROL, + !(filter_flags & FIF_CONTROL)); +- rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, 1); ++ rt2x00_set_field32(®, RXCSR0_DROP_NOT_TO_ME, ++ !rt2x00dev->is_monitoring); + rt2x00_set_field32(®, RXCSR0_DROP_TODS, ++ !rt2x00dev->is_monitoring && + !rt2x00dev->intf_ap_count); + rt2x00_set_field32(®, RXCSR0_DROP_VERSION_ERROR, 1); + rt2x00_set_field32(®, RXCSR0_DROP_MCAST, +--- a/drivers/net/wireless/ralink/rt2x00/rt2500usb.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2500usb.c +@@ -437,8 +437,10 @@ static void rt2500usb_config_filter(stru + !(filter_flags & FIF_PLCPFAIL)); + rt2x00_set_field16(®, TXRX_CSR2_DROP_CONTROL, + !(filter_flags & FIF_CONTROL)); +- rt2x00_set_field16(®, TXRX_CSR2_DROP_NOT_TO_ME, 1); ++ rt2x00_set_field16(®, TXRX_CSR2_DROP_NOT_TO_ME, ++ !rt2x00dev->is_monitoring); + rt2x00_set_field16(®, TXRX_CSR2_DROP_TODS, ++ !rt2x00dev->is_monitoring && + !rt2x00dev->intf_ap_count); + rt2x00_set_field16(®, TXRX_CSR2_DROP_VERSION_ERROR, 1); + rt2x00_set_field16(®, TXRX_CSR2_DROP_MULTICAST, +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -1490,7 +1490,8 @@ void rt2800_config_filter(struct rt2x00_ + !(filter_flags & FIF_FCSFAIL)); + rt2x00_set_field32(®, RX_FILTER_CFG_DROP_PHY_ERROR, + !(filter_flags & FIF_PLCPFAIL)); +- rt2x00_set_field32(®, RX_FILTER_CFG_DROP_NOT_TO_ME, 1); ++ rt2x00_set_field32(®, RX_FILTER_CFG_DROP_NOT_TO_ME, ++ !rt2x00dev->is_monitoring); + rt2x00_set_field32(®, RX_FILTER_CFG_DROP_NOT_MY_BSSD, 0); + rt2x00_set_field32(®, RX_FILTER_CFG_DROP_VER_ERROR, 1); + rt2x00_set_field32(®, RX_FILTER_CFG_DROP_MULTICAST, +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -844,11 +844,13 @@ struct rt2x00_dev { + * - Open sta interface count. + * - Association count. + * - Beaconing enabled count. ++ * - Whether the device is monitoring. + */ + unsigned int intf_ap_count; + unsigned int intf_sta_count; + unsigned int intf_associated; + unsigned int intf_beaconing; ++ bool is_monitoring; + + /* + * Interface combinations +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00config.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00config.c +@@ -244,6 +244,16 @@ void rt2x00lib_config(struct rt2x00_dev + (ieee80211_flags & IEEE80211_CONF_CHANGE_PS)) + cancel_delayed_work_sync(&rt2x00dev->autowakeup_work); + ++ if (ieee80211_flags & IEEE80211_CONF_CHANGE_MONITOR) { ++ if (conf->flags & IEEE80211_CONF_MONITOR) { ++ rt2x00_dbg(rt2x00dev, "Monitor mode is enabled\n"); ++ rt2x00dev->is_monitoring = true; ++ } else { ++ rt2x00_dbg(rt2x00dev, "Monitor mode is disabled\n"); ++ rt2x00dev->is_monitoring = false; ++ } ++ } ++ + /* + * Start configuration. + */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +@@ -1204,6 +1204,7 @@ int rt2x00lib_start(struct rt2x00_dev *r + rt2x00dev->intf_ap_count = 0; + rt2x00dev->intf_sta_count = 0; + rt2x00dev->intf_associated = 0; ++ rt2x00dev->is_monitoring = false; + + /* Enable the radio */ + retval = rt2x00lib_enable_radio(rt2x00dev); +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c +@@ -385,11 +385,6 @@ void rt2x00mac_configure_filter(struct i + *total_flags |= FIF_PSPOLL; + } + +- /* +- * Check if there is any work left for us. +- */ +- if (rt2x00dev->packet_filter == *total_flags) +- return; + rt2x00dev->packet_filter = *total_flags; + + rt2x00dev->ops->lib->config_filter(rt2x00dev, *total_flags); +--- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c +@@ -530,8 +530,10 @@ static void rt61pci_config_filter(struct + !(filter_flags & FIF_PLCPFAIL)); + rt2x00_set_field32(®, TXRX_CSR0_DROP_CONTROL, + !(filter_flags & (FIF_CONTROL | FIF_PSPOLL))); +- rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, 1); ++ rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, ++ !rt2x00dev->is_monitoring); + rt2x00_set_field32(®, TXRX_CSR0_DROP_TO_DS, ++ !rt2x00dev->is_monitoring && + !rt2x00dev->intf_ap_count); + rt2x00_set_field32(®, TXRX_CSR0_DROP_VERSION_ERROR, 1); + rt2x00_set_field32(®, TXRX_CSR0_DROP_MULTICAST, +--- a/drivers/net/wireless/ralink/rt2x00/rt73usb.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt73usb.c +@@ -480,8 +480,10 @@ static void rt73usb_config_filter(struct + !(filter_flags & FIF_PLCPFAIL)); + rt2x00_set_field32(®, TXRX_CSR0_DROP_CONTROL, + !(filter_flags & (FIF_CONTROL | FIF_PSPOLL))); +- rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, 1); ++ rt2x00_set_field32(®, TXRX_CSR0_DROP_NOT_TO_ME, ++ !rt2x00dev->is_monitoring); + rt2x00_set_field32(®, TXRX_CSR0_DROP_TO_DS, ++ !rt2x00dev->is_monitoring && + !rt2x00dev->intf_ap_count); + rt2x00_set_field32(®, TXRX_CSR0_DROP_VERSION_ERROR, 1); + rt2x00_set_field32(®, TXRX_CSR0_DROP_MULTICAST, diff --git a/feeds/rtkmipsel/mac80211/patches/304-ath9k-avoid-ANI-restart-if-no-trigger.patch b/feeds/rtkmipsel/mac80211/patches/304-ath9k-avoid-ANI-restart-if-no-trigger.patch new file mode 100644 index 000000000..049059aa2 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/304-ath9k-avoid-ANI-restart-if-no-trigger.patch @@ -0,0 +1,32 @@ +From: Miaoqing Pan +Date: Fri, 15 Jan 2016 18:17:17 +0800 +Subject: [PATCH] ath9k: avoid ANI restart if no trigger + +Fixes commit 54da20d83f0e ("ath9k_hw: improve ANI processing and rx desensitizing parameters") + +Call ath9k_ani_restart() only when the phy error rate reach the +ANI immunity threshold. Sync the logic with internal code base. + +Signed-off-by: Miaoqing Pan +--- + +--- a/drivers/net/wireless/ath/ath9k/ani.c ++++ b/drivers/net/wireless/ath/ath9k/ani.c +@@ -444,14 +444,16 @@ void ath9k_hw_ani_monitor(struct ath_hw + ofdmPhyErrRate < ah->config.ofdm_trig_low) { + ath9k_hw_ani_lower_immunity(ah); + aniState->ofdmsTurn = !aniState->ofdmsTurn; ++ ath9k_ani_restart(ah); + } else if (ofdmPhyErrRate > ah->config.ofdm_trig_high) { + ath9k_hw_ani_ofdm_err_trigger(ah); + aniState->ofdmsTurn = false; ++ ath9k_ani_restart(ah); + } else if (cckPhyErrRate > ah->config.cck_trig_high) { + ath9k_hw_ani_cck_err_trigger(ah); + aniState->ofdmsTurn = true; ++ ath9k_ani_restart(ah); + } +- ath9k_ani_restart(ah); + } + } + EXPORT_SYMBOL(ath9k_hw_ani_monitor); diff --git a/feeds/rtkmipsel/mac80211/patches/305-ath9k-clean-up-ANI-per-channel-pointer-checking.patch b/feeds/rtkmipsel/mac80211/patches/305-ath9k-clean-up-ANI-per-channel-pointer-checking.patch new file mode 100644 index 000000000..a1ac67c82 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/305-ath9k-clean-up-ANI-per-channel-pointer-checking.patch @@ -0,0 +1,91 @@ +From: Miaoqing Pan +Date: Fri, 15 Jan 2016 18:17:18 +0800 +Subject: [PATCH] ath9k: clean up ANI per-channel pointer checking + +commit c24bd3620c50 ("ath9k: Do not maintain ANI state per-channel") +removed per-channel handling, the code to check 'curchan' also +should be removed as never used. + +Signed-off-by: Miaoqing Pan +--- + +--- a/drivers/net/wireless/ath/ath9k/ani.c ++++ b/drivers/net/wireless/ath/ath9k/ani.c +@@ -126,12 +126,8 @@ static void ath9k_hw_update_mibstats(str + + static void ath9k_ani_restart(struct ath_hw *ah) + { +- struct ar5416AniState *aniState; +- +- if (!ah->curchan) +- return; ++ struct ar5416AniState *aniState = &ah->ani; + +- aniState = &ah->ani; + aniState->listenTime = 0; + + ENABLE_REGWRITE_BUFFER(ah); +@@ -221,12 +217,7 @@ static void ath9k_hw_set_ofdm_nil(struct + + static void ath9k_hw_ani_ofdm_err_trigger(struct ath_hw *ah) + { +- struct ar5416AniState *aniState; +- +- if (!ah->curchan) +- return; +- +- aniState = &ah->ani; ++ struct ar5416AniState *aniState = &ah->ani; + + if (aniState->ofdmNoiseImmunityLevel < ATH9K_ANI_OFDM_MAX_LEVEL) + ath9k_hw_set_ofdm_nil(ah, aniState->ofdmNoiseImmunityLevel + 1, false); +@@ -281,12 +272,7 @@ static void ath9k_hw_set_cck_nil(struct + + static void ath9k_hw_ani_cck_err_trigger(struct ath_hw *ah) + { +- struct ar5416AniState *aniState; +- +- if (!ah->curchan) +- return; +- +- aniState = &ah->ani; ++ struct ar5416AniState *aniState = &ah->ani; + + if (aniState->cckNoiseImmunityLevel < ATH9K_ANI_CCK_MAX_LEVEL) + ath9k_hw_set_cck_nil(ah, aniState->cckNoiseImmunityLevel + 1, +@@ -299,9 +285,7 @@ static void ath9k_hw_ani_cck_err_trigger + */ + static void ath9k_hw_ani_lower_immunity(struct ath_hw *ah) + { +- struct ar5416AniState *aniState; +- +- aniState = &ah->ani; ++ struct ar5416AniState *aniState = &ah->ani; + + /* lower OFDM noise immunity */ + if (aniState->ofdmNoiseImmunityLevel > 0 && +@@ -329,7 +313,7 @@ void ath9k_ani_reset(struct ath_hw *ah, + struct ath_common *common = ath9k_hw_common(ah); + int ofdm_nil, cck_nil; + +- if (!ah->curchan) ++ if (!chan) + return; + + BUG_ON(aniState == NULL); +@@ -416,14 +400,10 @@ static bool ath9k_hw_ani_read_counters(s + + void ath9k_hw_ani_monitor(struct ath_hw *ah, struct ath9k_channel *chan) + { +- struct ar5416AniState *aniState; ++ struct ar5416AniState *aniState = &ah->ani; + struct ath_common *common = ath9k_hw_common(ah); + u32 ofdmPhyErrRate, cckPhyErrRate; + +- if (!ah->curchan) +- return; +- +- aniState = &ah->ani; + if (!ath9k_hw_ani_read_counters(ah)) + return; + diff --git a/feeds/rtkmipsel/mac80211/patches/306-ath9k-do-not-reset-while-BB-panic-0x4000409-on-ar956.patch b/feeds/rtkmipsel/mac80211/patches/306-ath9k-do-not-reset-while-BB-panic-0x4000409-on-ar956.patch new file mode 100644 index 000000000..cf8194aa3 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/306-ath9k-do-not-reset-while-BB-panic-0x4000409-on-ar956.patch @@ -0,0 +1,31 @@ +From: Miaoqing Pan +Date: Fri, 15 Jan 2016 18:17:19 +0800 +Subject: [PATCH] ath9k: do not reset while BB panic(0x4000409) on ar9561 + +BB panic(0x4000409) observed while AP enabling/disabling +bursting. + +Signed-off-by: Miaoqing Pan +--- + +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -2071,7 +2071,8 @@ void ar9003_hw_attach_phy_ops(struct ath + * to be disabled. + * + * 0x04000409: Packet stuck on receive. +- * Full chip reset is required for all chips except AR9340. ++ * Full chip reset is required for all chips except ++ * AR9340, AR9531 and AR9561. + */ + + /* +@@ -2100,7 +2101,7 @@ bool ar9003_hw_bb_watchdog_check(struct + case 0x04000b09: + return true; + case 0x04000409: +- if (AR_SREV_9340(ah) || AR_SREV_9531(ah)) ++ if (AR_SREV_9340(ah) || AR_SREV_9531(ah) || AR_SREV_9561(ah)) + return false; + else + return true; diff --git a/feeds/rtkmipsel/mac80211/patches/307-ath9k-fix-inconsistent-use-of-tab-and-space-in-inden.patch b/feeds/rtkmipsel/mac80211/patches/307-ath9k-fix-inconsistent-use-of-tab-and-space-in-inden.patch new file mode 100644 index 000000000..80b781ca5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/307-ath9k-fix-inconsistent-use-of-tab-and-space-in-inden.patch @@ -0,0 +1,27 @@ +From: Miaoqing Pan +Date: Fri, 15 Jan 2016 18:17:20 +0800 +Subject: [PATCH] ath9k: fix inconsistent use of tab and space in + indentation + +Minor changes for indenting. + +Signed-off-by: Miaoqing Pan +--- + +--- a/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_eeprom.c +@@ -5485,11 +5485,11 @@ unsigned int ar9003_get_paprd_scale_fact + AR9300_PAPRD_SCALE_1); + else { + if (chan->channel >= 5700) +- return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20), +- AR9300_PAPRD_SCALE_1); ++ return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt20), ++ AR9300_PAPRD_SCALE_1); + else if (chan->channel >= 5400) + return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40), +- AR9300_PAPRD_SCALE_2); ++ AR9300_PAPRD_SCALE_2); + else + return MS(le32_to_cpu(eep->modalHeader5G.papdRateMaskHt40), + AR9300_PAPRD_SCALE_1); diff --git a/feeds/rtkmipsel/mac80211/patches/308-ath9k-fix-data-bus-error-on-ar9300-and-ar9580.patch b/feeds/rtkmipsel/mac80211/patches/308-ath9k-fix-data-bus-error-on-ar9300-and-ar9580.patch new file mode 100644 index 000000000..d4088664b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/308-ath9k-fix-data-bus-error-on-ar9300-and-ar9580.patch @@ -0,0 +1,65 @@ +From: Miaoqing Pan +Date: Fri, 15 Jan 2016 18:17:21 +0800 +Subject: [PATCH] ath9k: fix data bus error on ar9300 and ar9580 + +One crash issue be found on ar9300: RTC_RC reg read leads crash, leading +the data bus error, due to RTC_RC reg write not happen properly. + +Warm Reset trigger in continuous beacon stuck for one of the customer for +other chip, noticed the MAC was stuck in RTC reset. After analysis noticed +DMA did not complete when RTC was put in reset. + +So, before resetting the MAC need to make sure there are no pending DMA +transactions because this reset does not reset all parts of the chip. + +The 12th and 11th bit of MAC _DMA_CFG register used to do that. + 12 cfg_halt_ack 0x0 + 0 DMA has not yet halted + 1 DMA has halted + 11 cfg_halt_req 0x0 + 0 DMA logic operates normally + 1 Request DMA logic to stop so software can reset the MAC + +The Bit [12] of this register indicates when the halt has taken effect or +not. the DMA halt IS NOT recoverable; once software sets bit [11] to +request a DMA halt, software must wait for bit [12] to be set and reset +the MAC. + +So, the same thing we implemented for ar9580 chip. + +Signed-off-by: Miaoqing Pan +--- + +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1368,6 +1368,16 @@ static bool ath9k_hw_set_reset(struct at + if (ath9k_hw_mci_is_enabled(ah)) + ar9003_mci_check_gpm_offset(ah); + ++ /* DMA HALT added to resolve ar9300 and ar9580 bus error during ++ * RTC_RC reg read ++ */ ++ if (AR_SREV_9300(ah) || AR_SREV_9580(ah)) { ++ REG_SET_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); ++ ath9k_hw_wait(ah, AR_CFG, AR_CFG_HALT_ACK, AR_CFG_HALT_ACK, ++ 20 * AH_WAIT_TIMEOUT); ++ REG_CLR_BIT(ah, AR_CFG, AR_CFG_HALT_REQ); ++ } ++ + REG_WRITE(ah, AR_RTC_RC, rst_flags); + + REGWRITE_BUFFER_FLUSH(ah); +--- a/drivers/net/wireless/ath/ath9k/reg.h ++++ b/drivers/net/wireless/ath/ath9k/reg.h +@@ -34,8 +34,10 @@ + #define AR_CFG_SWRG 0x00000010 + #define AR_CFG_AP_ADHOC_INDICATION 0x00000020 + #define AR_CFG_PHOK 0x00000100 +-#define AR_CFG_CLK_GATE_DIS 0x00000400 + #define AR_CFG_EEBS 0x00000200 ++#define AR_CFG_CLK_GATE_DIS 0x00000400 ++#define AR_CFG_HALT_REQ 0x00000800 ++#define AR_CFG_HALT_ACK 0x00001000 + #define AR_CFG_PCI_MASTER_REQ_Q_THRESH 0x00060000 + #define AR_CFG_PCI_MASTER_REQ_Q_THRESH_S 17 + diff --git a/feeds/rtkmipsel/mac80211/patches/309-01-brcmfmac-add-missing-include.patch b/feeds/rtkmipsel/mac80211/patches/309-01-brcmfmac-add-missing-include.patch new file mode 100644 index 000000000..d9511c8d5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/309-01-brcmfmac-add-missing-include.patch @@ -0,0 +1,19 @@ +From: Felix Fietkau +Date: Fri, 15 Jan 2016 15:59:45 +0100 +Subject: [PATCH] brcmfmac: add missing include + +linux/module.h is required for defining module parameters + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/common.c +@@ -17,6 +17,7 @@ + #include + #include + #include ++#include + #include + #include + #include "core.h" diff --git a/feeds/rtkmipsel/mac80211/patches/309-02-brcmfmac-fix-sdio-sg-table-alloc-crash.patch b/feeds/rtkmipsel/mac80211/patches/309-02-brcmfmac-fix-sdio-sg-table-alloc-crash.patch new file mode 100644 index 000000000..711e019e2 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/309-02-brcmfmac-fix-sdio-sg-table-alloc-crash.patch @@ -0,0 +1,118 @@ +From: Hante Meuleman +Date: Tue, 19 Jan 2016 12:39:24 +0100 +Subject: [PATCH] brcmfmac: fix sdio sg table alloc crash + +With commit 7d34b0560567 ("brcmfmac: Move all module parameters to +one place") a bug was introduced causing a null pointer exception. +This patch fixes the bug by initializing the sg table till after +the settings have been initialized. + +Fixes: 7d34b0560567 ("brcmfmac: Move all module parameters to one place") +Reported-by: Marc Zyngier +Tested-by: Marc Zyngier +Reviewed-by: Arend Van Spriel +Reviewed-by: Franky (Zhenhui) Lin +Reviewed-by: Pieter-Paul Giesberts +Signed-off-by: Hante Meuleman +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c +@@ -879,11 +879,24 @@ int brcmf_sdiod_abort(struct brcmf_sdio_ + return 0; + } + +-static void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev) ++void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev) + { ++ struct sdio_func *func; ++ struct mmc_host *host; ++ uint max_blocks; + uint nents; + int err; + ++ func = sdiodev->func[2]; ++ host = func->card->host; ++ sdiodev->sg_support = host->max_segs > 1; ++ max_blocks = min_t(uint, host->max_blk_count, 511u); ++ sdiodev->max_request_size = min_t(uint, host->max_req_size, ++ max_blocks * func->cur_blksize); ++ sdiodev->max_segment_count = min_t(uint, host->max_segs, ++ SG_MAX_SINGLE_ALLOC); ++ sdiodev->max_segment_size = host->max_seg_size; ++ + if (!sdiodev->sg_support) + return; + +@@ -1021,9 +1034,6 @@ static void brcmf_sdiod_host_fixup(struc + + static int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev) + { +- struct sdio_func *func; +- struct mmc_host *host; +- uint max_blocks; + int ret = 0; + + sdiodev->num_funcs = 2; +@@ -1054,26 +1064,6 @@ static int brcmf_sdiod_probe(struct brcm + goto out; + } + +- /* +- * determine host related variables after brcmf_sdiod_probe() +- * as func->cur_blksize is properly set and F2 init has been +- * completed successfully. +- */ +- func = sdiodev->func[2]; +- host = func->card->host; +- sdiodev->sg_support = host->max_segs > 1; +- max_blocks = min_t(uint, host->max_blk_count, 511u); +- sdiodev->max_request_size = min_t(uint, host->max_req_size, +- max_blocks * func->cur_blksize); +- sdiodev->max_segment_count = min_t(uint, host->max_segs, +- SG_MAX_SINGLE_ALLOC); +- sdiodev->max_segment_size = host->max_seg_size; +- +- /* allocate scatter-gather table. sg support +- * will be disabled upon allocation failure. +- */ +- brcmf_sdiod_sgtable_alloc(sdiodev); +- + ret = brcmf_sdiod_freezer_attach(sdiodev); + if (ret) + goto out; +@@ -1084,7 +1074,7 @@ static int brcmf_sdiod_probe(struct brcm + ret = -ENODEV; + goto out; + } +- brcmf_sdiod_host_fixup(host); ++ brcmf_sdiod_host_fixup(sdiodev->func[2]->card->host); + out: + if (ret) + brcmf_sdiod_remove(sdiodev); +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -4114,6 +4114,11 @@ struct brcmf_sdio *brcmf_sdio_probe(stru + goto fail; + } + ++ /* allocate scatter-gather table. sg support ++ * will be disabled upon allocation failure. ++ */ ++ brcmf_sdiod_sgtable_alloc(bus->sdiodev); ++ + /* Query the F2 block size, set roundup accordingly */ + bus->blocksize = bus->sdiodev->func[2]->cur_blksize; + bus->roundup = min(max_roundup, bus->blocksize); +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h +@@ -342,6 +342,7 @@ int brcmf_sdiod_ramrw(struct brcmf_sdio_ + + /* Issue an abort to the specified function */ + int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, uint fn); ++void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev); + void brcmf_sdiod_change_state(struct brcmf_sdio_dev *sdiodev, + enum brcmf_sdiod_state state); + #ifdef CONFIG_PM_SLEEP diff --git a/feeds/rtkmipsel/mac80211/patches/310-ath9k_hw-ignore-eeprom-magic-mismatch-on-flash-based.patch b/feeds/rtkmipsel/mac80211/patches/310-ath9k_hw-ignore-eeprom-magic-mismatch-on-flash-based.patch new file mode 100644 index 000000000..287d6e13b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/310-ath9k_hw-ignore-eeprom-magic-mismatch-on-flash-based.patch @@ -0,0 +1,38 @@ +From: Felix Fietkau +Date: Thu, 21 Jan 2016 16:28:44 +0100 +Subject: [PATCH] ath9k_hw: ignore eeprom magic mismatch on flash based devices + +Many AR913x based devices (maybe others too) do not have a valid EEPROM +magic in their calibration data partition. + +Fixes: 6fa658fd5ab2 ("ath9k: Simplify and fix eeprom endianness swapping") +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/eeprom.c ++++ b/drivers/net/wireless/ath/ath9k/eeprom.c +@@ -150,18 +150,18 @@ int ath9k_hw_nvram_swap_data(struct ath_ + return -EIO; + } + +- if (magic == AR5416_EEPROM_MAGIC) { +- *swap_needed = false; +- } else if (swab16(magic) == AR5416_EEPROM_MAGIC) { ++ *swap_needed = false; ++ if (swab16(magic) == AR5416_EEPROM_MAGIC) { + if (ah->ah_flags & AH_NO_EEP_SWAP) { + ath_info(common, + "Ignoring endianness difference in EEPROM magic bytes.\n"); +- +- *swap_needed = false; + } else { + *swap_needed = true; + } +- } else { ++ } else if (magic != AR5416_EEPROM_MAGIC) { ++ if (ath9k_hw_use_flash(ah)) ++ return 0; ++ + ath_err(common, + "Invalid EEPROM Magic (0x%04x).\n", magic); + return -EINVAL; diff --git a/feeds/rtkmipsel/mac80211/patches/311-ath9k-do-not-limit-the-number-of-DFS-interfaces-to-1.patch b/feeds/rtkmipsel/mac80211/patches/311-ath9k-do-not-limit-the-number-of-DFS-interfaces-to-1.patch new file mode 100644 index 000000000..070efa98e --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/311-ath9k-do-not-limit-the-number-of-DFS-interfaces-to-1.patch @@ -0,0 +1,55 @@ +From: Felix Fietkau +Date: Fri, 22 Jan 2016 01:05:56 +0100 +Subject: [PATCH] ath9k: do not limit the number of DFS interfaces to 1 + +Signed-off-by: Felix Fietkau +--- + +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -751,14 +751,6 @@ static const struct ieee80211_iface_comb + + #endif /* CPTCFG_ATH9K_CHANNEL_CONTEXT */ + +-static const struct ieee80211_iface_limit if_dfs_limits[] = { +- { .max = 1, .types = BIT(NL80211_IFTYPE_AP) | +-#ifdef CPTCFG_MAC80211_MESH +- BIT(NL80211_IFTYPE_MESH_POINT) | +-#endif +- BIT(NL80211_IFTYPE_ADHOC) }, +-}; +- + static const struct ieee80211_iface_combination if_comb[] = { + { + .limits = if_limits, +@@ -766,6 +758,11 @@ static const struct ieee80211_iface_comb + .max_interfaces = 2048, + .num_different_channels = 1, + .beacon_int_infra_match = true, ++#ifdef CPTCFG_ATH9K_DFS_CERTIFIED ++ .radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) | ++ BIT(NL80211_CHAN_WIDTH_20) | ++ BIT(NL80211_CHAN_WIDTH_40), ++#endif + }, + { + .limits = wds_limits, +@@ -774,18 +771,6 @@ static const struct ieee80211_iface_comb + .num_different_channels = 1, + .beacon_int_infra_match = true, + }, +-#ifdef CPTCFG_ATH9K_DFS_CERTIFIED +- { +- .limits = if_dfs_limits, +- .n_limits = ARRAY_SIZE(if_dfs_limits), +- .max_interfaces = 1, +- .num_different_channels = 1, +- .beacon_int_infra_match = true, +- .radar_detect_widths = BIT(NL80211_CHAN_WIDTH_20_NOHT) | +- BIT(NL80211_CHAN_WIDTH_20) | +- BIT(NL80211_CHAN_WIDTH_40), +- } +-#endif + }; + + #ifdef CPTCFG_ATH9K_CHANNEL_CONTEXT diff --git a/feeds/rtkmipsel/mac80211/patches/312-mac80211-fix-txq-queue-related-crashes.patch b/feeds/rtkmipsel/mac80211/patches/312-mac80211-fix-txq-queue-related-crashes.patch new file mode 100644 index 000000000..61cafc762 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/312-mac80211-fix-txq-queue-related-crashes.patch @@ -0,0 +1,27 @@ +From: Michal Kazior +Date: Thu, 21 Jan 2016 14:23:07 +0100 +Subject: [PATCH] mac80211: fix txq queue related crashes + +The driver can access the queue simultanously +while mac80211 tears down the interface. Without +spinlock protection this could lead to corrupting +sk_buff_head and subsequently to an invalid +pointer dereference. + +Fixes: ba8c3d6f16a1 ("mac80211: add an intermediate software queue implementation") +Signed-off-by: Michal Kazior +--- + +--- a/net/mac80211/iface.c ++++ b/net/mac80211/iface.c +@@ -977,7 +977,10 @@ static void ieee80211_do_stop(struct iee + if (sdata->vif.txq) { + struct txq_info *txqi = to_txq_info(sdata->vif.txq); + ++ spin_lock_bh(&txqi->queue.lock); + ieee80211_purge_tx_queue(&local->hw, &txqi->queue); ++ spin_unlock_bh(&txqi->queue.lock); ++ + atomic_set(&sdata->txqs_len[txqi->txq.ac], 0); + } + diff --git a/feeds/rtkmipsel/mac80211/patches/313-mac80211-fix-unnecessary-frame-drops-in-mesh-fwding.patch b/feeds/rtkmipsel/mac80211/patches/313-mac80211-fix-unnecessary-frame-drops-in-mesh-fwding.patch new file mode 100644 index 000000000..844d43bfc --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/313-mac80211-fix-unnecessary-frame-drops-in-mesh-fwding.patch @@ -0,0 +1,57 @@ +From: Michal Kazior +Date: Mon, 25 Jan 2016 14:43:24 +0100 +Subject: [PATCH] mac80211: fix unnecessary frame drops in mesh fwding + +The ieee80211_queue_stopped() expects hw queue +number but it was given raw WMM AC number instead. + +This could cause frame drops and problems with +traffic in some cases - most notably if driver +doesn't map AC numbers to queue numbers 1:1 and +uses ieee80211_stop_queues() and +ieee80211_wake_queue() only without ever calling +ieee80211_wake_queues(). + +On ath10k it was possible to hit this problem in +the following case: + + 1. wlan0 uses queue 0 + (ath10k maps queues per vif) + 2. offchannel uses queue 15 + 3. queues 1-14 are unused + 4. ieee80211_stop_queues() + 5. ieee80211_wake_queue(q=0) + 6. ieee80211_wake_queue(q=15) + (other queues are not woken up because both + driver and mac80211 know other queues are + unused) + 7. ieee80211_rx_h_mesh_fwding() + 8. ieee80211_select_queue_80211() returns 2 + 9. ieee80211_queue_stopped(q=2) returns true + 10. frame is dropped (oops!) + +Fixes: d3c1597b8d1b ("mac80211: fix forwarded mesh frame queue mapping") +Signed-off-by: Michal Kazior +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -2235,7 +2235,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 + struct ieee80211_local *local = rx->local; + struct ieee80211_sub_if_data *sdata = rx->sdata; + struct ieee80211_if_mesh *ifmsh = &sdata->u.mesh; +- u16 q, hdrlen; ++ u16 ac, q, hdrlen; + + hdr = (struct ieee80211_hdr *) skb->data; + hdrlen = ieee80211_hdrlen(hdr->frame_control); +@@ -2304,7 +2304,8 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 + ether_addr_equal(sdata->vif.addr, hdr->addr3)) + return RX_CONTINUE; + +- q = ieee80211_select_queue_80211(sdata, skb, hdr); ++ ac = ieee80211_select_queue_80211(sdata, skb, hdr); ++ q = sdata->vif.hw_queue[ac]; + if (ieee80211_queue_stopped(&local->hw, q)) { + IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_congestion); + return RX_DROP_MONITOR; diff --git a/feeds/rtkmipsel/mac80211/patches/314-mac80211-Requeue-work-after-scan-complete-for-all-VI.patch b/feeds/rtkmipsel/mac80211/patches/314-mac80211-Requeue-work-after-scan-complete-for-all-VI.patch new file mode 100644 index 000000000..5b3efbdc5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/314-mac80211-Requeue-work-after-scan-complete-for-all-VI.patch @@ -0,0 +1,103 @@ +From: Sachin Kulkarni +Date: Tue, 12 Jan 2016 14:30:19 +0530 +Subject: [PATCH] mac80211: Requeue work after scan complete for all VIF + types. + +During a sw scan ieee80211_iface_work ignores work items for all vifs. +However after the scan complete work is requeued only for STA, ADHOC +and MESH iftypes. + +This occasionally results in event processing getting delayed/not +processed for iftype AP when it coexists with a STA. This can result +in data halt and eventually disconnection on the AP interface. + +Signed-off-by: Sachin Kulkarni +Cc: linux-wireless@vger.kernel.org +Cc: johannes@sipsolutions.net +--- + +--- a/net/mac80211/ibss.c ++++ b/net/mac80211/ibss.c +@@ -1731,7 +1731,6 @@ void ieee80211_ibss_notify_scan_complete + if (sdata->vif.type != NL80211_IFTYPE_ADHOC) + continue; + sdata->u.ibss.last_scan_completed = jiffies; +- ieee80211_queue_work(&local->hw, &sdata->work); + } + mutex_unlock(&local->iflist_mtx); + } +--- a/net/mac80211/mesh.c ++++ b/net/mac80211/mesh.c +@@ -1369,17 +1369,6 @@ out: + sdata_unlock(sdata); + } + +-void ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local) +-{ +- struct ieee80211_sub_if_data *sdata; +- +- rcu_read_lock(); +- list_for_each_entry_rcu(sdata, &local->interfaces, list) +- if (ieee80211_vif_is_mesh(&sdata->vif) && +- ieee80211_sdata_running(sdata)) +- ieee80211_queue_work(&local->hw, &sdata->work); +- rcu_read_unlock(); +-} + + void ieee80211_mesh_init_sdata(struct ieee80211_sub_if_data *sdata) + { +--- a/net/mac80211/mesh.h ++++ b/net/mac80211/mesh.h +@@ -362,14 +362,10 @@ static inline bool mesh_path_sel_is_hwmp + return sdata->u.mesh.mesh_pp_id == IEEE80211_PATH_PROTOCOL_HWMP; + } + +-void ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local); +- + void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata); + void mesh_sync_adjust_tbtt(struct ieee80211_sub_if_data *sdata); + void ieee80211s_stop(void); + #else +-static inline void +-ieee80211_mesh_notify_scan_completed(struct ieee80211_local *local) {} + static inline bool mesh_path_sel_is_hwmp(struct ieee80211_sub_if_data *sdata) + { return false; } + static inline void mesh_path_flush_by_iface(struct ieee80211_sub_if_data *sdata) +--- a/net/mac80211/mlme.c ++++ b/net/mac80211/mlme.c +@@ -3978,8 +3978,6 @@ static void ieee80211_restart_sta_timer( + if (!ieee80211_hw_check(&sdata->local->hw, CONNECTION_MONITOR)) + ieee80211_queue_work(&sdata->local->hw, + &sdata->u.mgd.monitor_work); +- /* and do all the other regular work too */ +- ieee80211_queue_work(&sdata->local->hw, &sdata->work); + } + } + +--- a/net/mac80211/scan.c ++++ b/net/mac80211/scan.c +@@ -314,6 +314,7 @@ static void __ieee80211_scan_completed(s + bool was_scanning = local->scanning; + struct cfg80211_scan_request *scan_req; + struct ieee80211_sub_if_data *scan_sdata; ++ struct ieee80211_sub_if_data *sdata; + + lockdep_assert_held(&local->mtx); + +@@ -373,7 +374,15 @@ static void __ieee80211_scan_completed(s + + ieee80211_mlme_notify_scan_completed(local); + ieee80211_ibss_notify_scan_completed(local); +- ieee80211_mesh_notify_scan_completed(local); ++ ++ /* Requeue all the work that might have been ignored while ++ * the scan was in progress ++ */ ++ list_for_each_entry_rcu(sdata, &local->interfaces, list) { ++ if (ieee80211_sdata_running(sdata)) ++ ieee80211_queue_work(&sdata->local->hw, &sdata->work); ++ } ++ + if (was_scanning) + ieee80211_start_next_roc(local); + } diff --git a/feeds/rtkmipsel/mac80211/patches/315-mac80211-fix-ibss-scan-parameters.patch b/feeds/rtkmipsel/mac80211/patches/315-mac80211-fix-ibss-scan-parameters.patch new file mode 100644 index 000000000..52fecb96b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/315-mac80211-fix-ibss-scan-parameters.patch @@ -0,0 +1,57 @@ +From: Sara Sharon +Date: Mon, 25 Jan 2016 15:46:35 +0200 +Subject: [PATCH] mac80211: fix ibss scan parameters + +When joining IBSS a full scan should be initiated in order to search +for existing cell, unless the fixed_channel parameter was set. +A default channel to create the IBSS on if no cell was found is +provided as well. +However - a scan is initiated only on the default channel provided +regardless of whether ifibss->fixed_channel is set or not, with the +obvious result of the cell not joining existing IBSS cell that is +on another channel. + +Fixes: 76bed0f43b27 ("mac80211: IBSS fix scan request") +Signed-off-by: Sara Sharon +Signed-off-by: Emmanuel Grumbach +--- + +--- a/net/mac80211/ibss.c ++++ b/net/mac80211/ibss.c +@@ -7,6 +7,7 @@ + * Copyright 2007, Michael Wu + * Copyright 2009, Johannes Berg + * Copyright 2013-2014 Intel Mobile Communications GmbH ++ * Copyright(c) 2016 Intel Deutschland GmbH + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as +@@ -1483,14 +1484,21 @@ static void ieee80211_sta_find_ibss(stru + + sdata_info(sdata, "Trigger new scan to find an IBSS to join\n"); + +- num = ieee80211_ibss_setup_scan_channels(local->hw.wiphy, +- &ifibss->chandef, +- channels, +- ARRAY_SIZE(channels)); + scan_width = cfg80211_chandef_to_scan_width(&ifibss->chandef); +- ieee80211_request_ibss_scan(sdata, ifibss->ssid, +- ifibss->ssid_len, channels, num, +- scan_width); ++ ++ if (ifibss->fixed_channel) { ++ num = ieee80211_ibss_setup_scan_channels(local->hw.wiphy, ++ &ifibss->chandef, ++ channels, ++ ARRAY_SIZE(channels)); ++ ieee80211_request_ibss_scan(sdata, ifibss->ssid, ++ ifibss->ssid_len, channels, ++ num, scan_width); ++ } else { ++ ieee80211_request_ibss_scan(sdata, ifibss->ssid, ++ ifibss->ssid_len, NULL, ++ 0, scan_width); ++ } + } else { + int interval = IEEE80211_SCAN_INTERVAL; + diff --git a/feeds/rtkmipsel/mac80211/patches/316-net-mac80211-agg-rx.c-fix-use-of-uninitialised-value.patch b/feeds/rtkmipsel/mac80211/patches/316-net-mac80211-agg-rx.c-fix-use-of-uninitialised-value.patch new file mode 100644 index 000000000..e78df3660 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/316-net-mac80211-agg-rx.c-fix-use-of-uninitialised-value.patch @@ -0,0 +1,50 @@ +From: Chris Bainbridge +Date: Wed, 27 Jan 2016 15:46:18 +0000 +Subject: [PATCH] net/mac80211/agg-rx.c: fix use of uninitialised values + +Use kzalloc instead of kmalloc for struct tid_ampdu_rx. Fixes: + +[ 7.976605] UBSAN: Undefined behaviour in net/mac80211/rx.c:932:29 +[ 7.976608] load of value 2 is not a valid value for type '_Bool' +[ 7.976611] CPU: 3 PID: 1134 Comm: kworker/u16:7 Not tainted 4.5.0-rc1+ #265 +[ 7.976613] Hardware name: Apple Inc. MacBookPro10,2/Mac-AFD8A9D944EA4843, BIOS MBP102.88Z.0106.B0A.1509130955 09/13/2015 +[ 7.976616] Workqueue: phy0 rt2x00usb_work_rxdone +[ 7.976619] 0000000000000004 ffff880254a7ba50 ffffffff8181d866 0000000000000007 +[ 7.976622] ffff880254a7ba78 ffff880254a7ba68 ffffffff8188422d ffffffff8379b500 +[ 7.976626] ffff880254a7bab8 ffffffff81884747 0000000000000202 0000000348620032 +[ 7.976629] Call Trace: +[ 7.976633] [] dump_stack+0x45/0x5f +[ 7.976637] [] ubsan_epilogue+0xd/0x40 +[ 7.976642] [] __ubsan_handle_load_invalid_value+0x67/0x70 +[ 7.976646] [] ieee80211_sta_reorder_release.isra.16+0x5ed/0x730 +[ 7.976650] [] ieee80211_prepare_and_rx_handle+0xd04/0x1c00 +[ 7.976654] [] ? usb_hcd_map_urb_for_dma+0x65e/0x960 +[ 7.976659] [] __ieee80211_rx_handle_packet+0x1f3/0x750 +[ 7.976663] [] ieee80211_rx_napi+0x447/0x990 +[ 7.976667] [] rt2x00lib_rxdone+0x305/0xbd0 +[ 7.976670] [] ? dequeue_task_fair+0x64f/0x1de0 +[ 7.976674] [] ? sched_clock_cpu+0xe6/0x150 +[ 7.976678] [] rt2x00usb_work_rxdone+0x7c/0x140 +[ 7.976682] [] process_one_work+0x226/0x860 +[ 7.976686] [] worker_thread+0x5c/0x680 +[ 7.976690] [] ? process_one_work+0x860/0x860 +[ 7.976693] [] kthread+0xf6/0x150 +[ 7.976697] [] ? kthread_worker_fn+0x310/0x310 +[ 7.976700] [] ret_from_fork+0x3f/0x70 +[ 7.976703] [] ? kthread_worker_fn+0x310/0x310 + +Link: https://lkml.org/lkml/2016/1/26/230 +Signed-off-by: Chris Bainbridge +--- + +--- a/net/mac80211/agg-rx.c ++++ b/net/mac80211/agg-rx.c +@@ -327,7 +327,7 @@ void __ieee80211_start_rx_ba_session(str + } + + /* prepare A-MPDU MLME for Rx aggregation */ +- tid_agg_rx = kmalloc(sizeof(struct tid_ampdu_rx), GFP_KERNEL); ++ tid_agg_rx = kzalloc(sizeof(struct tid_ampdu_rx), GFP_KERNEL); + if (!tid_agg_rx) + goto end; + diff --git a/feeds/rtkmipsel/mac80211/patches/317-mac80211-minstrel_ht-fix-out-of-bound-in-minstrel_ht.patch b/feeds/rtkmipsel/mac80211/patches/317-mac80211-minstrel_ht-fix-out-of-bound-in-minstrel_ht.patch new file mode 100644 index 000000000..5bf53b918 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/317-mac80211-minstrel_ht-fix-out-of-bound-in-minstrel_ht.patch @@ -0,0 +1,45 @@ +From: Konstantin Khlebnikov +Date: Fri, 29 Jan 2016 11:35:12 +0300 +Subject: [PATCH] mac80211: minstrel_ht: fix out-of-bound in + minstrel_ht_set_best_prob_rate + +Patch fixes this splat + +BUG: KASAN: slab-out-of-bounds in minstrel_ht_update_stats.isra.7+0x6e1/0x9e0 +[mac80211] at addr ffff8800cee640f4 Read of size 4 by task swapper/3/0 + +Signed-off-by: Konstantin Khlebnikov +Link: http://lkml.kernel.org/r/CALYGNiNyJhSaVnE35qS6UCGaSb2Dx1_i5HcRavuOX14oTz2P+w@mail.gmail.com +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -414,15 +414,16 @@ minstrel_ht_set_best_prob_rate(struct mi + (max_tp_group != MINSTREL_CCK_GROUP)) + return; + ++ max_gpr_group = mg->max_group_prob_rate / MCS_GROUP_RATES; ++ max_gpr_idx = mg->max_group_prob_rate % MCS_GROUP_RATES; ++ max_gpr_prob = mi->groups[max_gpr_group].rates[max_gpr_idx].prob_ewma; ++ + if (mrs->prob_ewma > MINSTREL_FRAC(75, 100)) { + cur_tp_avg = minstrel_ht_get_tp_avg(mi, cur_group, cur_idx, + mrs->prob_ewma); + if (cur_tp_avg > tmp_tp_avg) + mi->max_prob_rate = index; + +- max_gpr_group = mg->max_group_prob_rate / MCS_GROUP_RATES; +- max_gpr_idx = mg->max_group_prob_rate % MCS_GROUP_RATES; +- max_gpr_prob = mi->groups[max_gpr_group].rates[max_gpr_idx].prob_ewma; + max_gpr_tp_avg = minstrel_ht_get_tp_avg(mi, max_gpr_group, + max_gpr_idx, + max_gpr_prob); +@@ -431,7 +432,7 @@ minstrel_ht_set_best_prob_rate(struct mi + } else { + if (mrs->prob_ewma > tmp_prob) + mi->max_prob_rate = index; +- if (mrs->prob_ewma > mg->rates[mg->max_group_prob_rate].prob_ewma) ++ if (mrs->prob_ewma > max_gpr_prob) + mg->max_group_prob_rate = index; + } + } diff --git a/feeds/rtkmipsel/mac80211/patches/318-mac80211-move-A-MSDU-skb_linearize-call-to-ieee80211.patch b/feeds/rtkmipsel/mac80211/patches/318-mac80211-move-A-MSDU-skb_linearize-call-to-ieee80211.patch new file mode 100644 index 000000000..655dc4bfa --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/318-mac80211-move-A-MSDU-skb_linearize-call-to-ieee80211.patch @@ -0,0 +1,35 @@ +From: Felix Fietkau +Date: Tue, 2 Feb 2016 14:39:08 +0100 +Subject: [PATCH] mac80211: move A-MSDU skb_linearize call to + ieee80211_amsdu_to_8023s + +Prepararation for zero-copy A-MSDU support with page fragment SKBs + +Signed-off-by: Felix Fietkau +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -2203,9 +2203,6 @@ ieee80211_rx_h_amsdu(struct ieee80211_rx + skb->dev = dev; + __skb_queue_head_init(&frame_list); + +- if (skb_linearize(skb)) +- return RX_DROP_UNUSABLE; +- + ieee80211_amsdu_to_8023s(skb, &frame_list, dev->dev_addr, + rx->sdata->vif.type, + rx->local->hw.extra_tx_headroom, true); +--- a/net/wireless/util.c ++++ b/net/wireless/util.c +@@ -657,6 +657,9 @@ void ieee80211_amsdu_to_8023s(struct sk_ + int remaining, err; + u8 dst[ETH_ALEN], src[ETH_ALEN]; + ++ if (skb_linearize(skb)) ++ goto out; ++ + if (has_80211_header) { + err = ieee80211_data_to_8023(skb, addr, iftype); + if (err) diff --git a/feeds/rtkmipsel/mac80211/patches/319-cfg80211-add-function-for-802.3-conversion-with-sepa.patch b/feeds/rtkmipsel/mac80211/patches/319-cfg80211-add-function-for-802.3-conversion-with-sepa.patch new file mode 100644 index 000000000..b646ab36d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/319-cfg80211-add-function-for-802.3-conversion-with-sepa.patch @@ -0,0 +1,186 @@ +From: Felix Fietkau +Date: Tue, 2 Feb 2016 14:39:09 +0100 +Subject: [PATCH] cfg80211: add function for 802.3 conversion with separate + output buffer + +Use skb_copy_bits in preparation for allowing fragmented skbs + +Signed-off-by: Felix Fietkau +Signed-off-by: Johannes Berg +--- + +--- a/net/wireless/util.c ++++ b/net/wireless/util.c +@@ -393,9 +393,9 @@ unsigned int ieee80211_get_hdrlen_from_s + } + EXPORT_SYMBOL(ieee80211_get_hdrlen_from_skb); + +-unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr) ++static unsigned int __ieee80211_get_mesh_hdrlen(u8 flags) + { +- int ae = meshhdr->flags & MESH_FLAGS_AE; ++ int ae = flags & MESH_FLAGS_AE; + /* 802.11-2012, 8.2.4.7.3 */ + switch (ae) { + default: +@@ -407,21 +407,31 @@ unsigned int ieee80211_get_mesh_hdrlen(s + return 18; + } + } ++ ++unsigned int ieee80211_get_mesh_hdrlen(struct ieee80211s_hdr *meshhdr) ++{ ++ return __ieee80211_get_mesh_hdrlen(meshhdr->flags); ++} + EXPORT_SYMBOL(ieee80211_get_mesh_hdrlen); + +-int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, +- enum nl80211_iftype iftype) ++static int __ieee80211_data_to_8023(struct sk_buff *skb, struct ethhdr *ehdr, ++ const u8 *addr, enum nl80211_iftype iftype) + { + struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data; +- u16 hdrlen, ethertype; +- u8 *payload; +- u8 dst[ETH_ALEN]; +- u8 src[ETH_ALEN] __aligned(2); ++ struct { ++ u8 hdr[ETH_ALEN] __aligned(2); ++ __be16 proto; ++ } payload; ++ struct ethhdr tmp; ++ u16 hdrlen; ++ u8 mesh_flags = 0; + + if (unlikely(!ieee80211_is_data_present(hdr->frame_control))) + return -1; + + hdrlen = ieee80211_hdrlen(hdr->frame_control); ++ if (skb->len < hdrlen + 8) ++ return -1; + + /* convert IEEE 802.11 header + possible LLC headers into Ethernet + * header +@@ -432,8 +442,11 @@ int ieee80211_data_to_8023(struct sk_buf + * 1 0 BSSID SA DA n/a + * 1 1 RA TA DA SA + */ +- memcpy(dst, ieee80211_get_DA(hdr), ETH_ALEN); +- memcpy(src, ieee80211_get_SA(hdr), ETH_ALEN); ++ memcpy(tmp.h_dest, ieee80211_get_DA(hdr), ETH_ALEN); ++ memcpy(tmp.h_source, ieee80211_get_SA(hdr), ETH_ALEN); ++ ++ if (iftype == NL80211_IFTYPE_MESH_POINT) ++ skb_copy_bits(skb, hdrlen, &mesh_flags, 1); + + switch (hdr->frame_control & + cpu_to_le16(IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) { +@@ -450,44 +463,31 @@ int ieee80211_data_to_8023(struct sk_buf + iftype != NL80211_IFTYPE_STATION)) + return -1; + if (iftype == NL80211_IFTYPE_MESH_POINT) { +- struct ieee80211s_hdr *meshdr = +- (struct ieee80211s_hdr *) (skb->data + hdrlen); +- /* make sure meshdr->flags is on the linear part */ +- if (!pskb_may_pull(skb, hdrlen + 1)) +- return -1; +- if (meshdr->flags & MESH_FLAGS_AE_A4) ++ if (mesh_flags & MESH_FLAGS_AE_A4) + return -1; +- if (meshdr->flags & MESH_FLAGS_AE_A5_A6) { ++ if (mesh_flags & MESH_FLAGS_AE_A5_A6) { + skb_copy_bits(skb, hdrlen + + offsetof(struct ieee80211s_hdr, eaddr1), +- dst, ETH_ALEN); +- skb_copy_bits(skb, hdrlen + +- offsetof(struct ieee80211s_hdr, eaddr2), +- src, ETH_ALEN); ++ tmp.h_dest, 2 * ETH_ALEN); + } +- hdrlen += ieee80211_get_mesh_hdrlen(meshdr); ++ hdrlen += __ieee80211_get_mesh_hdrlen(mesh_flags); + } + break; + case cpu_to_le16(IEEE80211_FCTL_FROMDS): + if ((iftype != NL80211_IFTYPE_STATION && + iftype != NL80211_IFTYPE_P2P_CLIENT && + iftype != NL80211_IFTYPE_MESH_POINT) || +- (is_multicast_ether_addr(dst) && +- ether_addr_equal(src, addr))) ++ (is_multicast_ether_addr(tmp.h_dest) && ++ ether_addr_equal(tmp.h_source, addr))) + return -1; + if (iftype == NL80211_IFTYPE_MESH_POINT) { +- struct ieee80211s_hdr *meshdr = +- (struct ieee80211s_hdr *) (skb->data + hdrlen); +- /* make sure meshdr->flags is on the linear part */ +- if (!pskb_may_pull(skb, hdrlen + 1)) +- return -1; +- if (meshdr->flags & MESH_FLAGS_AE_A5_A6) ++ if (mesh_flags & MESH_FLAGS_AE_A5_A6) + return -1; +- if (meshdr->flags & MESH_FLAGS_AE_A4) ++ if (mesh_flags & MESH_FLAGS_AE_A4) + skb_copy_bits(skb, hdrlen + + offsetof(struct ieee80211s_hdr, eaddr1), +- src, ETH_ALEN); +- hdrlen += ieee80211_get_mesh_hdrlen(meshdr); ++ tmp.h_source, ETH_ALEN); ++ hdrlen += __ieee80211_get_mesh_hdrlen(mesh_flags); + } + break; + case cpu_to_le16(0): +@@ -498,33 +498,33 @@ int ieee80211_data_to_8023(struct sk_buf + break; + } + +- if (!pskb_may_pull(skb, hdrlen + 8)) +- return -1; +- +- payload = skb->data + hdrlen; +- ethertype = (payload[6] << 8) | payload[7]; ++ skb_copy_bits(skb, hdrlen, &payload, sizeof(payload)); ++ tmp.h_proto = payload.proto; + +- if (likely((ether_addr_equal(payload, rfc1042_header) && +- ethertype != ETH_P_AARP && ethertype != ETH_P_IPX) || +- ether_addr_equal(payload, bridge_tunnel_header))) { ++ if (likely((ether_addr_equal(payload.hdr, rfc1042_header) && ++ tmp.h_proto != htons(ETH_P_AARP) && ++ tmp.h_proto != htons(ETH_P_IPX)) || ++ ether_addr_equal(payload.hdr, bridge_tunnel_header))) + /* remove RFC1042 or Bridge-Tunnel encapsulation and + * replace EtherType */ +- skb_pull(skb, hdrlen + 6); +- memcpy(skb_push(skb, ETH_ALEN), src, ETH_ALEN); +- memcpy(skb_push(skb, ETH_ALEN), dst, ETH_ALEN); +- } else { +- struct ethhdr *ehdr; +- __be16 len; ++ hdrlen += ETH_ALEN + 2; ++ else ++ tmp.h_proto = htons(skb->len); + +- skb_pull(skb, hdrlen); +- len = htons(skb->len); ++ pskb_pull(skb, hdrlen); ++ ++ if (!ehdr) + ehdr = (struct ethhdr *) skb_push(skb, sizeof(struct ethhdr)); +- memcpy(ehdr->h_dest, dst, ETH_ALEN); +- memcpy(ehdr->h_source, src, ETH_ALEN); +- ehdr->h_proto = len; +- } ++ memcpy(ehdr, &tmp, sizeof(tmp)); ++ + return 0; + } ++ ++int ieee80211_data_to_8023(struct sk_buff *skb, const u8 *addr, ++ enum nl80211_iftype iftype) ++{ ++ return __ieee80211_data_to_8023(skb, NULL, addr, iftype); ++} + EXPORT_SYMBOL(ieee80211_data_to_8023); + + int ieee80211_data_from_8023(struct sk_buff *skb, const u8 *addr, diff --git a/feeds/rtkmipsel/mac80211/patches/320-cfg80211-add-support-for-non-linear-skbs-in-ieee8021.patch b/feeds/rtkmipsel/mac80211/patches/320-cfg80211-add-support-for-non-linear-skbs-in-ieee8021.patch new file mode 100644 index 000000000..2eeed22af --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/320-cfg80211-add-support-for-non-linear-skbs-in-ieee8021.patch @@ -0,0 +1,159 @@ +From: Felix Fietkau +Date: Tue, 2 Feb 2016 14:39:10 +0100 +Subject: [PATCH] cfg80211: add support for non-linear skbs in + ieee80211_amsdu_to_8023s + +Signed-off-by: Felix Fietkau +Signed-off-by: Johannes Berg +--- + +--- a/net/wireless/util.c ++++ b/net/wireless/util.c +@@ -644,73 +644,75 @@ int ieee80211_data_from_8023(struct sk_b + } + EXPORT_SYMBOL(ieee80211_data_from_8023); + ++static struct sk_buff * ++__ieee80211_amsdu_copy(struct sk_buff *skb, unsigned int hlen, ++ int offset, int len) ++{ ++ struct sk_buff *frame; ++ ++ if (skb->len - offset < len) ++ return NULL; ++ ++ /* ++ * Allocate and reserve two bytes more for payload ++ * alignment since sizeof(struct ethhdr) is 14. ++ */ ++ frame = dev_alloc_skb(hlen + sizeof(struct ethhdr) + 2 + len); ++ ++ skb_reserve(frame, hlen + sizeof(struct ethhdr) + 2); ++ skb_copy_bits(skb, offset, skb_put(frame, len), len); ++ ++ return frame; ++} + + void ieee80211_amsdu_to_8023s(struct sk_buff *skb, struct sk_buff_head *list, + const u8 *addr, enum nl80211_iftype iftype, + const unsigned int extra_headroom, + bool has_80211_header) + { ++ unsigned int hlen = ALIGN(extra_headroom, 4); + struct sk_buff *frame = NULL; + u16 ethertype; + u8 *payload; +- const struct ethhdr *eth; +- int remaining, err; +- u8 dst[ETH_ALEN], src[ETH_ALEN]; +- +- if (skb_linearize(skb)) +- goto out; ++ int offset = 0, remaining, err; ++ struct ethhdr eth; ++ bool reuse_skb = true; ++ bool last = false; + + if (has_80211_header) { +- err = ieee80211_data_to_8023(skb, addr, iftype); ++ err = __ieee80211_data_to_8023(skb, ð, addr, iftype); + if (err) + goto out; +- +- /* skip the wrapping header */ +- eth = (struct ethhdr *) skb_pull(skb, sizeof(struct ethhdr)); +- if (!eth) +- goto out; +- } else { +- eth = (struct ethhdr *) skb->data; + } + +- while (skb != frame) { ++ while (!last) { ++ unsigned int subframe_len; ++ int len; + u8 padding; +- __be16 len = eth->h_proto; +- unsigned int subframe_len = sizeof(struct ethhdr) + ntohs(len); +- +- remaining = skb->len; +- memcpy(dst, eth->h_dest, ETH_ALEN); +- memcpy(src, eth->h_source, ETH_ALEN); + ++ skb_copy_bits(skb, offset, ð, sizeof(eth)); ++ len = ntohs(eth.h_proto); ++ subframe_len = sizeof(struct ethhdr) + len; + padding = (4 - subframe_len) & 0x3; ++ + /* the last MSDU has no padding */ ++ remaining = skb->len - offset; + if (subframe_len > remaining) + goto purge; + +- skb_pull(skb, sizeof(struct ethhdr)); ++ offset += sizeof(struct ethhdr); + /* reuse skb for the last subframe */ +- if (remaining <= subframe_len + padding) ++ last = remaining <= subframe_len + padding; ++ if (!skb_is_nonlinear(skb) && last) { ++ skb_pull(skb, offset); + frame = skb; +- else { +- unsigned int hlen = ALIGN(extra_headroom, 4); +- /* +- * Allocate and reserve two bytes more for payload +- * alignment since sizeof(struct ethhdr) is 14. +- */ +- frame = dev_alloc_skb(hlen + subframe_len + 2); ++ reuse_skb = true; ++ } else { ++ frame = __ieee80211_amsdu_copy(skb, hlen, offset, len); + if (!frame) + goto purge; + +- skb_reserve(frame, hlen + sizeof(struct ethhdr) + 2); +- memcpy(skb_put(frame, ntohs(len)), skb->data, +- ntohs(len)); +- +- eth = (struct ethhdr *)skb_pull(skb, ntohs(len) + +- padding); +- if (!eth) { +- dev_kfree_skb(frame); +- goto purge; +- } ++ offset += len + padding; + } + + skb_reset_network_header(frame); +@@ -719,24 +721,20 @@ void ieee80211_amsdu_to_8023s(struct sk_ + + payload = frame->data; + ethertype = (payload[6] << 8) | payload[7]; +- + if (likely((ether_addr_equal(payload, rfc1042_header) && + ethertype != ETH_P_AARP && ethertype != ETH_P_IPX) || + ether_addr_equal(payload, bridge_tunnel_header))) { +- /* remove RFC1042 or Bridge-Tunnel +- * encapsulation and replace EtherType */ +- skb_pull(frame, 6); +- memcpy(skb_push(frame, ETH_ALEN), src, ETH_ALEN); +- memcpy(skb_push(frame, ETH_ALEN), dst, ETH_ALEN); +- } else { +- memcpy(skb_push(frame, sizeof(__be16)), &len, +- sizeof(__be16)); +- memcpy(skb_push(frame, ETH_ALEN), src, ETH_ALEN); +- memcpy(skb_push(frame, ETH_ALEN), dst, ETH_ALEN); ++ eth.h_proto = htons(ethertype); ++ skb_pull(frame, ETH_ALEN + 2); + } ++ ++ memcpy(skb_push(frame, sizeof(eth)), ð, sizeof(eth)); + __skb_queue_tail(list, frame); + } + ++ if (!reuse_skb) ++ dev_kfree_skb(skb); ++ + return; + + purge: diff --git a/feeds/rtkmipsel/mac80211/patches/321-mac80211-Parse-legacy-and-HT-rate-in-injected-frames.patch b/feeds/rtkmipsel/mac80211/patches/321-mac80211-Parse-legacy-and-HT-rate-in-injected-frames.patch new file mode 100644 index 000000000..c4155a118 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/321-mac80211-Parse-legacy-and-HT-rate-in-injected-frames.patch @@ -0,0 +1,155 @@ +From: Sven Eckelmann +Date: Tue, 26 Jan 2016 17:11:13 +0100 +Subject: [PATCH] mac80211: Parse legacy and HT rate in injected frames + +Drivers/devices without their own rate control algorithm can get the +information what rates they should use from either the radiotap header of +injected frames or from the rate control algorithm. But the parsing of the +legacy rate information from the radiotap header was removed in commit +e6a9854b05c1 ("mac80211/drivers: rewrite the rate control API"). + +The removal of this feature heavily reduced the usefulness of frame +injection when wanting to simulate specific transmission behavior. Having +rate parsing together with MCS rates and retry support allows a fine +grained selection of the tx behavior of injected frames for these kind of +tests. + +Signed-off-by: Sven Eckelmann +Cc: Simon Wunderlich +Signed-off-by: Johannes Berg +--- + +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -708,12 +708,14 @@ enum mac80211_tx_info_flags { + * protocol frame (e.g. EAP) + * @IEEE80211_TX_CTRL_PS_RESPONSE: This frame is a response to a poll + * frame (PS-Poll or uAPSD). ++ * @IEEE80211_TX_CTRL_RATE_INJECT: This frame is injected with rate information + * + * These flags are used in tx_info->control.flags. + */ + enum mac80211_tx_control_flags { + IEEE80211_TX_CTRL_PORT_CTRL_PROTO = BIT(0), + IEEE80211_TX_CTRL_PS_RESPONSE = BIT(1), ++ IEEE80211_TX_CTRL_RATE_INJECT = BIT(2), + }; + + /* +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -710,6 +710,10 @@ ieee80211_tx_h_rate_ctrl(struct ieee8021 + + info->control.short_preamble = txrc.short_preamble; + ++ /* don't ask rate control when rate already injected via radiotap */ ++ if (info->control.flags & IEEE80211_TX_CTRL_RATE_INJECT) ++ return TX_CONTINUE; ++ + if (tx->sta) + assoc = test_sta_flag(tx->sta, WLAN_STA_ASSOC); + +@@ -1665,15 +1669,24 @@ void ieee80211_xmit(struct ieee80211_sub + ieee80211_tx(sdata, sta, skb, false); + } + +-static bool ieee80211_parse_tx_radiotap(struct sk_buff *skb) ++static bool ieee80211_parse_tx_radiotap(struct ieee80211_local *local, ++ struct sk_buff *skb) + { + struct ieee80211_radiotap_iterator iterator; + struct ieee80211_radiotap_header *rthdr = + (struct ieee80211_radiotap_header *) skb->data; + struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); ++ struct ieee80211_supported_band *sband = ++ local->hw.wiphy->bands[info->band]; + int ret = ieee80211_radiotap_iterator_init(&iterator, rthdr, skb->len, + NULL); + u16 txflags; ++ u16 rate = 0; ++ bool rate_found = false; ++ u8 rate_retries = 0; ++ u16 rate_flags = 0; ++ u8 mcs_known, mcs_flags; ++ int i; + + info->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT | + IEEE80211_TX_CTL_DONTFRAG; +@@ -1724,6 +1737,35 @@ static bool ieee80211_parse_tx_radiotap( + info->flags |= IEEE80211_TX_CTL_NO_ACK; + break; + ++ case IEEE80211_RADIOTAP_RATE: ++ rate = *iterator.this_arg; ++ rate_flags = 0; ++ rate_found = true; ++ break; ++ ++ case IEEE80211_RADIOTAP_DATA_RETRIES: ++ rate_retries = *iterator.this_arg; ++ break; ++ ++ case IEEE80211_RADIOTAP_MCS: ++ mcs_known = iterator.this_arg[0]; ++ mcs_flags = iterator.this_arg[1]; ++ if (!(mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_MCS)) ++ break; ++ ++ rate_found = true; ++ rate = iterator.this_arg[2]; ++ rate_flags = IEEE80211_TX_RC_MCS; ++ ++ if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_GI && ++ mcs_flags & IEEE80211_RADIOTAP_MCS_SGI) ++ rate_flags |= IEEE80211_TX_RC_SHORT_GI; ++ ++ if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_BW && ++ mcs_flags & IEEE80211_RADIOTAP_MCS_BW_40) ++ rate_flags |= IEEE80211_TX_RC_40_MHZ_WIDTH; ++ break; ++ + /* + * Please update the file + * Documentation/networking/mac80211-injection.txt +@@ -1738,6 +1780,32 @@ static bool ieee80211_parse_tx_radiotap( + if (ret != -ENOENT) /* ie, if we didn't simply run out of fields */ + return false; + ++ if (rate_found) { ++ info->control.flags |= IEEE80211_TX_CTRL_RATE_INJECT; ++ ++ for (i = 0; i < IEEE80211_TX_MAX_RATES; i++) { ++ info->control.rates[i].idx = -1; ++ info->control.rates[i].flags = 0; ++ info->control.rates[i].count = 0; ++ } ++ ++ if (rate_flags & IEEE80211_TX_RC_MCS) { ++ info->control.rates[0].idx = rate; ++ } else { ++ for (i = 0; i < sband->n_bitrates; i++) { ++ if (rate * 5 != sband->bitrates[i].bitrate) ++ continue; ++ ++ info->control.rates[0].idx = i; ++ break; ++ } ++ } ++ ++ info->control.rates[0].flags = rate_flags; ++ info->control.rates[0].count = min_t(u8, rate_retries + 1, ++ local->hw.max_rate_tries); ++ } ++ + /* + * remove the radiotap header + * iterator->_max_length was sanity-checked against +@@ -1819,7 +1887,7 @@ netdev_tx_t ieee80211_monitor_start_xmit + IEEE80211_TX_CTL_INJECTED; + + /* process and remove the injection radiotap header */ +- if (!ieee80211_parse_tx_radiotap(skb)) ++ if (!ieee80211_parse_tx_radiotap(local, skb)) + goto fail; + + rcu_read_lock(); diff --git a/feeds/rtkmipsel/mac80211/patches/322-mac80211-add-A-MSDU-tx-support.patch b/feeds/rtkmipsel/mac80211/patches/322-mac80211-add-A-MSDU-tx-support.patch new file mode 100644 index 000000000..e7bfb9c83 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/322-mac80211-add-A-MSDU-tx-support.patch @@ -0,0 +1,317 @@ +From: Felix Fietkau +Date: Fri, 5 Feb 2016 01:38:51 +0100 +Subject: [PATCH] mac80211: add A-MSDU tx support + +Requires software tx queueing support. frag_list support (for zero-copy) +is optional. + +Signed-off-by: Felix Fietkau +--- + +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -709,6 +709,7 @@ enum mac80211_tx_info_flags { + * @IEEE80211_TX_CTRL_PS_RESPONSE: This frame is a response to a poll + * frame (PS-Poll or uAPSD). + * @IEEE80211_TX_CTRL_RATE_INJECT: This frame is injected with rate information ++ * @IEEE80211_TX_CTRL_AMSDU: This frame is an A-MSDU frame + * + * These flags are used in tx_info->control.flags. + */ +@@ -716,6 +717,7 @@ enum mac80211_tx_control_flags { + IEEE80211_TX_CTRL_PORT_CTRL_PROTO = BIT(0), + IEEE80211_TX_CTRL_PS_RESPONSE = BIT(1), + IEEE80211_TX_CTRL_RATE_INJECT = BIT(2), ++ IEEE80211_TX_CTRL_AMSDU = BIT(3), + }; + + /* +@@ -1728,6 +1730,7 @@ struct ieee80211_sta_rates { + * size is min(max_amsdu_len, 7935) bytes. + * Both additional HT limits must be enforced by the low level driver. + * This is defined by the spec (IEEE 802.11-2012 section 8.3.2.2 NOTE 2). ++ * @max_rc_amsdu_len: Maximum A-MSDU size in bytes recommended by rate control. + * @txq: per-TID data TX queues (if driver uses the TXQ abstraction) + */ + struct ieee80211_sta { +@@ -1748,6 +1751,7 @@ struct ieee80211_sta { + bool mfp; + u8 max_amsdu_subframes; + u16 max_amsdu_len; ++ u16 max_rc_amsdu_len; + + struct ieee80211_txq *txq[IEEE80211_NUM_TIDS]; + +@@ -1961,6 +1965,15 @@ struct ieee80211_txq { + * order and does not need to manage its own reorder buffer or BA session + * timeout. + * ++ * @IEEE80211_HW_TX_AMSDU: Hardware (or driver) supports software aggregated ++ * A-MSDU frames. Requires software tx queueing and fast-xmit support. ++ * When not using minstrel/minstrel_ht rate control, the driver should ++ * limit the maximum A-MSDU size based on the current tx rate by setting ++ * max_rc_amsdu_len in struct ieee80211_sta. ++ * ++ * @IEEE80211_HW_TX_FRAG_LIST: Hardware (or driver) supports sending frag_list ++ * skbs, needed for zero-copy software A-MSDU. ++ * + * @NUM_IEEE80211_HW_FLAGS: number of hardware flags, used for sizing arrays + */ + enum ieee80211_hw_flags { +@@ -1998,6 +2011,8 @@ enum ieee80211_hw_flags { + IEEE80211_HW_BEACON_TX_STATUS, + IEEE80211_HW_NEEDS_UNIQUE_STA_ADDR, + IEEE80211_HW_SUPPORTS_REORDERING_BUFFER, ++ IEEE80211_HW_TX_AMSDU, ++ IEEE80211_HW_TX_FRAG_LIST, + + /* keep last, obviously */ + NUM_IEEE80211_HW_FLAGS +@@ -2070,6 +2085,9 @@ enum ieee80211_hw_flags { + * size is smaller (an example is LinkSys WRT120N with FW v1.0.07 + * build 002 Jun 18 2012). + * ++ * @max_tx_fragments: maximum number of tx buffers per (A)-MSDU, sum ++ * of 1 + skb_shinfo(skb)->nr_frags for each skb in the frag_list. ++ * + * @offchannel_tx_hw_queue: HW queue ID to use for offchannel TX + * (if %IEEE80211_HW_QUEUE_CONTROL is set) + * +@@ -2124,6 +2142,7 @@ struct ieee80211_hw { + u8 max_rate_tries; + u8 max_rx_aggregation_subframes; + u8 max_tx_aggregation_subframes; ++ u8 max_tx_fragments; + u8 offchannel_tx_hw_queue; + u8 radiotap_mcs_details; + u16 radiotap_vht_details; +--- a/net/mac80211/agg-tx.c ++++ b/net/mac80211/agg-tx.c +@@ -935,6 +935,7 @@ void ieee80211_process_addba_resp(struct + size_t len) + { + struct tid_ampdu_tx *tid_tx; ++ struct ieee80211_txq *txq; + u16 capab, tid; + u8 buf_size; + bool amsdu; +@@ -945,6 +946,10 @@ void ieee80211_process_addba_resp(struct + buf_size = (capab & IEEE80211_ADDBA_PARAM_BUF_SIZE_MASK) >> 6; + buf_size = min(buf_size, local->hw.max_tx_aggregation_subframes); + ++ txq = sta->sta.txq[tid]; ++ if (!amsdu && txq) ++ set_bit(IEEE80211_TXQ_NO_AMSDU, &to_txq_info(txq)->flags); ++ + mutex_lock(&sta->ampdu_mlme.mtx); + + tid_tx = rcu_dereference_protected_tid_tx(sta, tid); +--- a/net/mac80211/debugfs.c ++++ b/net/mac80211/debugfs.c +@@ -127,6 +127,8 @@ static const char *hw_flag_names[NUM_IEE + FLAG(BEACON_TX_STATUS), + FLAG(NEEDS_UNIQUE_STA_ADDR), + FLAG(SUPPORTS_REORDERING_BUFFER), ++ FLAG(TX_AMSDU), ++ FLAG(TX_FRAG_LIST), + + /* keep last for the build bug below */ + (void *)0x1 +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -799,6 +799,7 @@ struct mac80211_qos_map { + enum txq_info_flags { + IEEE80211_TXQ_STOP, + IEEE80211_TXQ_AMPDU, ++ IEEE80211_TXQ_NO_AMSDU, + }; + + struct txq_info { +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1318,6 +1318,10 @@ struct sk_buff *ieee80211_tx_dequeue(str + out: + spin_unlock_bh(&txqi->queue.lock); + ++ if (skb && skb_has_frag_list(skb) && ++ !ieee80211_hw_check(&local->hw, TX_FRAG_LIST)) ++ skb_linearize(skb); ++ + return skb; + } + EXPORT_SYMBOL(ieee80211_tx_dequeue); +@@ -2757,6 +2761,163 @@ void ieee80211_clear_fast_xmit(struct st + kfree_rcu(fast_tx, rcu_head); + } + ++static bool ieee80211_amsdu_realloc_pad(struct ieee80211_local *local, ++ struct sk_buff *skb, int headroom, ++ int *subframe_len) ++{ ++ int amsdu_len = *subframe_len + sizeof(struct ethhdr); ++ int padding = (4 - amsdu_len) & 3; ++ ++ if (skb_headroom(skb) < headroom || skb_tailroom(skb) < padding) { ++ I802_DEBUG_INC(local->tx_expand_skb_head); ++ ++ if (pskb_expand_head(skb, headroom, padding, GFP_ATOMIC)) { ++ wiphy_debug(local->hw.wiphy, ++ "failed to reallocate TX buffer\n"); ++ return false; ++ } ++ } ++ ++ if (padding) { ++ *subframe_len += padding; ++ memset(skb_put(skb, padding), 0, padding); ++ } ++ ++ return true; ++} ++ ++static bool ieee80211_amsdu_prepare_head(struct ieee80211_sub_if_data *sdata, ++ struct ieee80211_fast_tx *fast_tx, ++ struct sk_buff *skb) ++{ ++ struct ieee80211_local *local = sdata->local; ++ struct ieee80211_tx_info *info = IEEE80211_SKB_CB(skb); ++ struct ieee80211_hdr *hdr; ++ struct ethhdr amsdu_hdr; ++ int hdr_len = fast_tx->hdr_len - sizeof(rfc1042_header); ++ int subframe_len = skb->len - hdr_len; ++ void *data; ++ u8 *qc; ++ ++ if (info->flags & IEEE80211_TX_CTL_RATE_CTRL_PROBE) ++ return false; ++ ++ if (info->control.flags & IEEE80211_TX_CTRL_AMSDU) ++ return true; ++ ++ if (!ieee80211_amsdu_realloc_pad(local, skb, sizeof(amsdu_hdr), ++ &subframe_len)) ++ return false; ++ ++ amsdu_hdr.h_proto = cpu_to_be16(subframe_len); ++ memcpy(amsdu_hdr.h_source, skb->data + fast_tx->sa_offs, ETH_ALEN); ++ memcpy(amsdu_hdr.h_dest, skb->data + fast_tx->da_offs, ETH_ALEN); ++ ++ data = skb_push(skb, sizeof(amsdu_hdr)); ++ memmove(data, data + sizeof(amsdu_hdr), hdr_len); ++ memcpy(data + hdr_len, &amsdu_hdr, sizeof(amsdu_hdr)); ++ ++ hdr = data; ++ qc = ieee80211_get_qos_ctl(hdr); ++ *qc |= IEEE80211_QOS_CTL_A_MSDU_PRESENT; ++ ++ info->control.flags |= IEEE80211_TX_CTRL_AMSDU; ++ ++ return true; ++} ++ ++static bool ieee80211_amsdu_aggregate(struct ieee80211_sub_if_data *sdata, ++ struct sta_info *sta, ++ struct ieee80211_fast_tx *fast_tx, ++ struct sk_buff *skb) ++{ ++ struct ieee80211_local *local = sdata->local; ++ u8 tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK; ++ struct ieee80211_txq *txq = sta->sta.txq[tid]; ++ struct txq_info *txqi; ++ struct sk_buff **frag_tail, *head; ++ int subframe_len = skb->len - ETH_ALEN; ++ u8 max_subframes = sta->sta.max_amsdu_subframes; ++ int max_frags = local->hw.max_tx_fragments; ++ int max_amsdu_len = sta->sta.max_amsdu_len; ++ __be16 len; ++ void *data; ++ bool ret = false; ++ int n = 1, nfrags; ++ ++ if (!ieee80211_hw_check(&local->hw, TX_AMSDU)) ++ return false; ++ ++ if (!txq) ++ return false; ++ ++ txqi = to_txq_info(txq); ++ if (test_bit(IEEE80211_TXQ_NO_AMSDU, &txqi->flags)) ++ return false; ++ ++ if (sta->sta.max_rc_amsdu_len) ++ max_amsdu_len = min_t(int, max_amsdu_len, ++ sta->sta.max_rc_amsdu_len); ++ ++ spin_lock_bh(&txqi->queue.lock); ++ ++ head = skb_peek_tail(&txqi->queue); ++ if (!head) ++ goto out; ++ ++ if (skb->len + head->len > max_amsdu_len) ++ goto out; ++ ++ /* ++ * HT A-MPDU limits maximum MPDU size to 4095 bytes. Since aggregation ++ * sessions are started/stopped without txq flush, use the limit here ++ * to avoid having to de-aggregate later. ++ */ ++ if (skb->len + head->len > 4095 && ++ !sta->sta.vht_cap.vht_supported) ++ goto out; ++ ++ if (!ieee80211_amsdu_prepare_head(sdata, fast_tx, head)) ++ goto out; ++ ++ nfrags = 1 + skb_shinfo(skb)->nr_frags; ++ nfrags += 1 + skb_shinfo(head)->nr_frags; ++ frag_tail = &skb_shinfo(head)->frag_list; ++ while (*frag_tail) { ++ nfrags += 1 + skb_shinfo(*frag_tail)->nr_frags; ++ frag_tail = &(*frag_tail)->next; ++ n++; ++ } ++ ++ if (max_subframes && n > max_subframes) ++ goto out; ++ ++ if (max_frags && nfrags > max_frags) ++ goto out; ++ ++ if (!ieee80211_amsdu_realloc_pad(local, skb, sizeof(rfc1042_header) + 2, ++ &subframe_len)) ++ return false; ++ ++ ret = true; ++ data = skb_push(skb, ETH_ALEN + 2); ++ memmove(data, data + ETH_ALEN + 2, 2 * ETH_ALEN); ++ ++ data += 2 * ETH_ALEN; ++ len = cpu_to_be16(subframe_len); ++ memcpy(data, &len, 2); ++ memcpy(data + 2, rfc1042_header, sizeof(rfc1042_header)); ++ ++ head->len += skb->len; ++ head->data_len += skb->len; ++ *frag_tail = skb; ++ ++out: ++ spin_unlock_bh(&txqi->queue.lock); ++ ++ return ret; ++} ++ + static bool ieee80211_xmit_fast(struct ieee80211_sub_if_data *sdata, + struct net_device *dev, struct sta_info *sta, + struct ieee80211_fast_tx *fast_tx, +@@ -2811,6 +2972,10 @@ static bool ieee80211_xmit_fast(struct i + + ieee80211_tx_stats(dev, skb->len + extra_head); + ++ if ((hdr->frame_control & cpu_to_le16(IEEE80211_STYPE_QOS_DATA)) && ++ ieee80211_amsdu_aggregate(sdata, sta, fast_tx, skb)) ++ return true; ++ + /* will not be crypto-handled beyond what we do here, so use false + * as the may-encrypt argument for the resize to not account for + * more room than we already have in 'extra_head' diff --git a/feeds/rtkmipsel/mac80211/patches/323-0000-brcmfmac-fix-setting-primary-channel-for-80-MHz-widt.patch b/feeds/rtkmipsel/mac80211/patches/323-0000-brcmfmac-fix-setting-primary-channel-for-80-MHz-widt.patch new file mode 100644 index 000000000..9277b2cab --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/323-0000-brcmfmac-fix-setting-primary-channel-for-80-MHz-widt.patch @@ -0,0 +1,64 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Wed, 20 Jan 2016 16:46:04 +0100 +Subject: [PATCH] brcmfmac: fix setting primary channel for 80 MHz width +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +First of all it changes the way we calculate primary channel offset. If +we use e.g. 80 MHz channel with primary frequency 5180 MHz (which means +center frequency is 5210 MHz) it makes sense to calculate primary offset +as -30 MHz. +Then it fixes values we compare primary_offset with. We were comparing +offset in MHz against -2 or 2 which was resulting in picking a wrong +primary channel. + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -247,7 +247,7 @@ static u16 chandef_to_chanspec(struct br + brcmf_dbg(TRACE, "chandef: control %d center %d width %d\n", + ch->chan->center_freq, ch->center_freq1, ch->width); + ch_inf.chnum = ieee80211_frequency_to_channel(ch->center_freq1); +- primary_offset = ch->center_freq1 - ch->chan->center_freq; ++ primary_offset = ch->chan->center_freq - ch->center_freq1; + switch (ch->width) { + case NL80211_CHAN_WIDTH_20: + case NL80211_CHAN_WIDTH_20_NOHT: +@@ -256,24 +256,21 @@ static u16 chandef_to_chanspec(struct br + break; + case NL80211_CHAN_WIDTH_40: + ch_inf.bw = BRCMU_CHAN_BW_40; +- if (primary_offset < 0) ++ if (primary_offset > 0) + ch_inf.sb = BRCMU_CHAN_SB_U; + else + ch_inf.sb = BRCMU_CHAN_SB_L; + break; + case NL80211_CHAN_WIDTH_80: + ch_inf.bw = BRCMU_CHAN_BW_80; +- if (primary_offset < 0) { +- if (primary_offset < -CH_10MHZ_APART) +- ch_inf.sb = BRCMU_CHAN_SB_UU; +- else +- ch_inf.sb = BRCMU_CHAN_SB_UL; +- } else { +- if (primary_offset > CH_10MHZ_APART) +- ch_inf.sb = BRCMU_CHAN_SB_LL; +- else +- ch_inf.sb = BRCMU_CHAN_SB_LU; +- } ++ if (primary_offset == -30) ++ ch_inf.sb = BRCMU_CHAN_SB_LL; ++ else if (primary_offset == -10) ++ ch_inf.sb = BRCMU_CHAN_SB_LU; ++ else if (primary_offset == 10) ++ ch_inf.sb = BRCMU_CHAN_SB_UL; ++ else ++ ch_inf.sb = BRCMU_CHAN_SB_UU; + break; + case NL80211_CHAN_WIDTH_80P80: + case NL80211_CHAN_WIDTH_160: diff --git a/feeds/rtkmipsel/mac80211/patches/323-0001-brcmfmac-analyze-descriptors-of-current-component-on.patch b/feeds/rtkmipsel/mac80211/patches/323-0001-brcmfmac-analyze-descriptors-of-current-component-on.patch new file mode 100644 index 000000000..d7018dab3 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/323-0001-brcmfmac-analyze-descriptors-of-current-component-on.patch @@ -0,0 +1,51 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 26 Jan 2016 17:57:01 +0100 +Subject: [PATCH] brcmfmac: analyze descriptors of current component only +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +So far we were looking for address descriptors without a check for +crossing current component border. In case of dealing with unsupported +descriptor or descriptor missing at all the code would incorrectly get +data from another component. + +Consider this binary-described component from BCM4366 EROM: +4bf83b01 TAG==CI CID==0x83b +20080201 TAG==CI PORTS==0+1 WRAPPERS==0+1 +18400035 TAG==ADDR SZ_SZD TYPE_SLAVE +00050000 +18107085 TAG==ADDR SZ_4K TYPE_SWRAP + +Driver was assigning invalid base address to this core: +brcmfmac: [6 ] core 0x83b:32 base 0x18109000 wrap 0x18107000 +which came from totally different component defined in EROM: +43b36701 TAG==CI CID==0x367 +00000201 TAG==CI PORTS==0+1 WRAPPERS==0+0 +18109005 TAG==ADDR SZ_4K TYPE_SLAVE + +This change will also allow us to support components without wrapper +address in the future. + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c +@@ -803,7 +803,14 @@ static int brcmf_chip_dmp_get_regaddr(st + *eromaddr -= 4; + return -EFAULT; + } +- } while (desc != DMP_DESC_ADDRESS); ++ } while (desc != DMP_DESC_ADDRESS && ++ desc != DMP_DESC_COMPONENT); ++ ++ /* stop if we crossed current component border */ ++ if (desc == DMP_DESC_COMPONENT) { ++ *eromaddr -= 4; ++ return 0; ++ } + + /* skip upper 32-bit address descriptor */ + if (val & DMP_DESC_ADDRSIZE_GT32) diff --git a/feeds/rtkmipsel/mac80211/patches/323-0002-brcmfmac-allow-storing-PMU-core-without-wrapper-addr.patch b/feeds/rtkmipsel/mac80211/patches/323-0002-brcmfmac-allow-storing-PMU-core-without-wrapper-addr.patch new file mode 100644 index 000000000..045ab4953 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/323-0002-brcmfmac-allow-storing-PMU-core-without-wrapper-addr.patch @@ -0,0 +1,28 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 26 Jan 2016 17:57:02 +0100 +Subject: [PATCH] brcmfmac: allow storing PMU core without wrapper address +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Separated PMU core can be found in new devices and should be used for +accessing PMU registers (which were routed through ChipCommon so far). +This core is one of exceptions that doesn't have or need wrapper address +to be still safely accessible. + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c +@@ -883,7 +883,8 @@ int brcmf_chip_dmp_erom_scan(struct brcm + rev = (val & DMP_COMP_REVISION) >> DMP_COMP_REVISION_S; + + /* need core with ports */ +- if (nmw + nsw == 0) ++ if (nmw + nsw == 0 && ++ id != BCMA_CORE_PMU) + continue; + + /* try to obtain register address info */ diff --git a/feeds/rtkmipsel/mac80211/patches/323-0003-brcmfmac-read-extended-capabilities-of-ChipCommon-co.patch b/feeds/rtkmipsel/mac80211/patches/323-0003-brcmfmac-read-extended-capabilities-of-ChipCommon-co.patch new file mode 100644 index 000000000..7b7ba4f74 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/323-0003-brcmfmac-read-extended-capabilities-of-ChipCommon-co.patch @@ -0,0 +1,43 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 26 Jan 2016 17:57:03 +0100 +Subject: [PATCH] brcmfmac: read extended capabilities of ChipCommon core +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is an extra bitfield with info about some present hardware. + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c +@@ -1025,6 +1025,9 @@ static int brcmf_chip_setup(struct brcmf + /* get chipcommon capabilites */ + pub->cc_caps = chip->ops->read32(chip->ctx, + CORE_CC_REG(base, capabilities)); ++ pub->cc_caps_ext = chip->ops->read32(chip->ctx, ++ CORE_CC_REG(base, ++ capabilities_ext)); + + /* get pmu caps & rev */ + if (pub->cc_caps & CC_CAP_PMU) { +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h +@@ -27,6 +27,7 @@ + * @chip: chip identifier. + * @chiprev: chip revision. + * @cc_caps: chipcommon core capabilities. ++ * @cc_caps_ext: chipcommon core extended capabilities. + * @pmucaps: PMU capabilities. + * @pmurev: PMU revision. + * @rambase: RAM base address (only applicable for ARM CR4 chips). +@@ -38,6 +39,7 @@ struct brcmf_chip { + u32 chip; + u32 chiprev; + u32 cc_caps; ++ u32 cc_caps_ext; + u32 pmucaps; + u32 pmurev; + u32 rambase; diff --git a/feeds/rtkmipsel/mac80211/patches/323-0004-brcmfmac-access-PMU-registers-using-standalone-PMU-c.patch b/feeds/rtkmipsel/mac80211/patches/323-0004-brcmfmac-access-PMU-registers-using-standalone-PMU-c.patch new file mode 100644 index 000000000..2af6fd93b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/323-0004-brcmfmac-access-PMU-registers-using-standalone-PMU-c.patch @@ -0,0 +1,148 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 26 Jan 2016 17:57:04 +0100 +Subject: [PATCH] brcmfmac: access PMU registers using standalone PMU core if + available +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On recent Broadcom chipsets PMU is present as separated core and it +can't be accessed using ChipCommon anymore as it fails with e.g.: +[ 18.198412] Unhandled fault: imprecise external abort (0x1406) at 0xb6da200f + +Add a new helper function that will return a proper core that should be +used for accessing PMU registers. + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.c +@@ -1014,6 +1014,7 @@ static int brcmf_chip_setup(struct brcmf + { + struct brcmf_chip *pub; + struct brcmf_core_priv *cc; ++ struct brcmf_core *pmu; + u32 base; + u32 val; + int ret = 0; +@@ -1030,9 +1031,10 @@ static int brcmf_chip_setup(struct brcmf + capabilities_ext)); + + /* get pmu caps & rev */ ++ pmu = brcmf_chip_get_pmu(pub); /* after reading cc_caps_ext */ + if (pub->cc_caps & CC_CAP_PMU) { + val = chip->ops->read32(chip->ctx, +- CORE_CC_REG(base, pmucapabilities)); ++ CORE_CC_REG(pmu->base, pmucapabilities)); + pub->pmurev = val & PCAP_REV_MASK; + pub->pmucaps = val; + } +@@ -1131,6 +1133,23 @@ struct brcmf_core *brcmf_chip_get_chipco + return &cc->pub; + } + ++struct brcmf_core *brcmf_chip_get_pmu(struct brcmf_chip *pub) ++{ ++ struct brcmf_core *cc = brcmf_chip_get_chipcommon(pub); ++ struct brcmf_core *pmu; ++ ++ /* See if there is separated PMU core available */ ++ if (cc->rev >= 35 && ++ pub->cc_caps_ext & BCMA_CC_CAP_EXT_AOB_PRESENT) { ++ pmu = brcmf_chip_get_core(pub, BCMA_CORE_PMU); ++ if (pmu) ++ return pmu; ++ } ++ ++ /* Fallback to ChipCommon core for older hardware */ ++ return cc; ++} ++ + bool brcmf_chip_iscoreup(struct brcmf_core *pub) + { + struct brcmf_core_priv *core; +@@ -1301,6 +1320,7 @@ bool brcmf_chip_sr_capable(struct brcmf_ + { + u32 base, addr, reg, pmu_cc3_mask = ~0; + struct brcmf_chip_priv *chip; ++ struct brcmf_core *pmu = brcmf_chip_get_pmu(pub); + + brcmf_dbg(TRACE, "Enter\n"); + +@@ -1320,9 +1340,9 @@ bool brcmf_chip_sr_capable(struct brcmf_ + case BRCM_CC_4335_CHIP_ID: + case BRCM_CC_4339_CHIP_ID: + /* read PMU chipcontrol register 3 */ +- addr = CORE_CC_REG(base, chipcontrol_addr); ++ addr = CORE_CC_REG(pmu->base, chipcontrol_addr); + chip->ops->write32(chip->ctx, addr, 3); +- addr = CORE_CC_REG(base, chipcontrol_data); ++ addr = CORE_CC_REG(pmu->base, chipcontrol_data); + reg = chip->ops->read32(chip->ctx, addr); + return (reg & pmu_cc3_mask) != 0; + case BRCM_CC_43430_CHIP_ID: +@@ -1330,12 +1350,12 @@ bool brcmf_chip_sr_capable(struct brcmf_ + reg = chip->ops->read32(chip->ctx, addr); + return reg != 0; + default: +- addr = CORE_CC_REG(base, pmucapabilities_ext); ++ addr = CORE_CC_REG(pmu->base, pmucapabilities_ext); + reg = chip->ops->read32(chip->ctx, addr); + if ((reg & PCAPEXT_SR_SUPPORTED_MASK) == 0) + return false; + +- addr = CORE_CC_REG(base, retention_ctl); ++ addr = CORE_CC_REG(pmu->base, retention_ctl); + reg = chip->ops->read32(chip->ctx, addr); + return (reg & (PMU_RCTL_MACPHY_DISABLE_MASK | + PMU_RCTL_LOGIC_DISABLE_MASK)) == 0; +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/chip.h +@@ -85,6 +85,7 @@ struct brcmf_chip *brcmf_chip_attach(voi + void brcmf_chip_detach(struct brcmf_chip *chip); + struct brcmf_core *brcmf_chip_get_core(struct brcmf_chip *chip, u16 coreid); + struct brcmf_core *brcmf_chip_get_chipcommon(struct brcmf_chip *chip); ++struct brcmf_core *brcmf_chip_get_pmu(struct brcmf_chip *pub); + bool brcmf_chip_iscoreup(struct brcmf_core *core); + void brcmf_chip_coredisable(struct brcmf_core *core, u32 prereset, u32 reset); + void brcmf_chip_resetcore(struct brcmf_core *core, u32 prereset, u32 reset, +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -3615,7 +3615,6 @@ brcmf_sdio_drivestrengthinit(struct brcm + const struct sdiod_drive_str *str_tab = NULL; + u32 str_mask; + u32 str_shift; +- u32 base; + u32 i; + u32 drivestrength_sel = 0; + u32 cc_data_temp; +@@ -3658,14 +3657,15 @@ brcmf_sdio_drivestrengthinit(struct brcm + } + + if (str_tab != NULL) { ++ struct brcmf_core *pmu = brcmf_chip_get_pmu(ci); ++ + for (i = 0; str_tab[i].strength != 0; i++) { + if (drivestrength >= str_tab[i].strength) { + drivestrength_sel = str_tab[i].sel; + break; + } + } +- base = brcmf_chip_get_chipcommon(ci)->base; +- addr = CORE_CC_REG(base, chipcontrol_addr); ++ addr = CORE_CC_REG(pmu->base, chipcontrol_addr); + brcmf_sdiod_regwl(sdiodev, addr, 1, NULL); + cc_data_temp = brcmf_sdiod_regrl(sdiodev, addr, NULL); + cc_data_temp &= ~str_mask; +@@ -3835,8 +3835,7 @@ brcmf_sdio_probe_attach(struct brcmf_sdi + goto fail; + + /* set PMUControl so a backplane reset does PMU state reload */ +- reg_addr = CORE_CC_REG(brcmf_chip_get_chipcommon(bus->ci)->base, +- pmucontrol); ++ reg_addr = CORE_CC_REG(brcmf_chip_get_pmu(bus->ci)->base, pmucontrol); + reg_val = brcmf_sdiod_regrl(bus->sdiodev, reg_addr, &err); + if (err) + goto fail; diff --git a/feeds/rtkmipsel/mac80211/patches/323-0005-brcmfmac-add-support-for-14e4-4365-PCI-ID-with-BCM43.patch b/feeds/rtkmipsel/mac80211/patches/323-0005-brcmfmac-add-support-for-14e4-4365-PCI-ID-with-BCM43.patch new file mode 100644 index 000000000..35887fcb5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/323-0005-brcmfmac-add-support-for-14e4-4365-PCI-ID-with-BCM43.patch @@ -0,0 +1,38 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Tue, 26 Jan 2016 17:57:05 +0100 +Subject: [PATCH] brcmfmac: add support for 14e4:4365 PCI ID with BCM4366 + chipset +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +On Broadcom ARM routers BCM4366 cards are available with 14e4:4365 ID. +Unfortunately this ID was already used by Broadcom for cards with +BCM43142, a totally different chipset requiring SoftMAC driver. To avoid +a conflict between brcmfmac and bcma use more specific ID entry with +subvendor and subdevice specified. + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +@@ -1951,6 +1951,9 @@ static const struct dev_pm_ops brcmf_pci + + #define BRCMF_PCIE_DEVICE(dev_id) { BRCM_PCIE_VENDOR_ID_BROADCOM, dev_id,\ + PCI_ANY_ID, PCI_ANY_ID, PCI_CLASS_NETWORK_OTHER << 8, 0xffff00, 0 } ++#define BRCMF_PCIE_DEVICE_SUB(dev_id, subvend, subdev) { \ ++ BRCM_PCIE_VENDOR_ID_BROADCOM, dev_id,\ ++ subvend, subdev, PCI_CLASS_NETWORK_OTHER << 8, 0xffff00, 0 } + + static struct pci_device_id brcmf_pcie_devid_table[] = { + BRCMF_PCIE_DEVICE(BRCM_PCIE_4350_DEVICE_ID), +@@ -1966,6 +1969,7 @@ static struct pci_device_id brcmf_pcie_d + BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_DEVICE_ID), + BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_2G_DEVICE_ID), + BRCMF_PCIE_DEVICE(BRCM_PCIE_4365_5G_DEVICE_ID), ++ BRCMF_PCIE_DEVICE_SUB(0x4365, BRCM_PCIE_VENDOR_ID_BROADCOM, 0x4365), + BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_DEVICE_ID), + BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_2G_DEVICE_ID), + BRCMF_PCIE_DEVICE(BRCM_PCIE_4366_5G_DEVICE_ID), diff --git a/feeds/rtkmipsel/mac80211/patches/324-brcmfmac-treat-NULL-character-in-NVRAM-as-separator.patch b/feeds/rtkmipsel/mac80211/patches/324-brcmfmac-treat-NULL-character-in-NVRAM-as-separator.patch new file mode 100644 index 000000000..6ce60f196 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/324-brcmfmac-treat-NULL-character-in-NVRAM-as-separator.patch @@ -0,0 +1,32 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Sun, 31 Jan 2016 12:14:34 +0100 +Subject: [PATCH] brcmfmac: treat NULL character in NVRAM as separator +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Platform NVRAM (stored on a flash partition) has entries separated by a +NULL (\0) char. Our parsing code switches from VALUE state to IDLE +whenever it meets a NULL (\0). When that happens our IDLE handler should +simply consume it and analyze whatever is placed ahead. + +This fixes harmless warnings spamming debugging output: +[ 155.165624] brcmfmac: brcmf_nvram_handle_idle warning: ln=1:col=20: ignoring invalid character +[ 155.180806] brcmfmac: brcmf_nvram_handle_idle warning: ln=1:col=44: ignoring invalid character +[ 155.195971] brcmfmac: brcmf_nvram_handle_idle warning: ln=1:col=63: ignoring invalid character + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +@@ -93,7 +93,7 @@ static enum nvram_parser_state brcmf_nvr + c = nvp->data[nvp->pos]; + if (c == '\n') + return COMMENT; +- if (is_whitespace(c)) ++ if (is_whitespace(c) || c == '\0') + goto proceed; + if (c == '#') + return COMMENT; diff --git a/feeds/rtkmipsel/mac80211/patches/325-brcmfmac-sdio-Increase-the-default-timeouts-a-bit.patch b/feeds/rtkmipsel/mac80211/patches/325-brcmfmac-sdio-Increase-the-default-timeouts-a-bit.patch new file mode 100644 index 000000000..012dea1e3 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/325-brcmfmac-sdio-Increase-the-default-timeouts-a-bit.patch @@ -0,0 +1,41 @@ +From: Sjoerd Simons +Date: Mon, 25 Jan 2016 11:47:29 +0100 +Subject: [PATCH] brcmfmac: sdio: Increase the default timeouts a bit + +On a Radxa Rock2 board with a Ampak AP6335 (Broadcom 4339 core) it seems +the card responds very quickly most of the time, unfortunately during +initialisation it sometimes seems to take just a bit over 2 seconds to +respond. + +This results intialization failing with message like: + brcmf_c_preinit_dcmds: Retreiving cur_etheraddr failed, -52 + brcmf_bus_start: failed: -52 + brcmf_sdio_firmware_callback: dongle is not responding + +Increasing the timeout to allow for a bit more headroom allows the +card to initialize reliably. + +A quick search online after diagnosing/fixing this showed that Google +has a similar patch in their ChromeOS tree, so this doesn't seem +specific to the board I'm using. + +Signed-off-by: Sjoerd Simons +Reviewed-by: Julian Calaby +Acked-by: Arend van Spriel +Reviewed-by: Douglas Anderson +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +@@ -45,8 +45,8 @@ + #include "chip.h" + #include "firmware.h" + +-#define DCMD_RESP_TIMEOUT msecs_to_jiffies(2000) +-#define CTL_DONE_TIMEOUT msecs_to_jiffies(2000) ++#define DCMD_RESP_TIMEOUT msecs_to_jiffies(2500) ++#define CTL_DONE_TIMEOUT msecs_to_jiffies(2500) + + #ifdef DEBUG + diff --git a/feeds/rtkmipsel/mac80211/patches/326-ath9k-make-NF-load-complete-quickly-and-reliably.patch b/feeds/rtkmipsel/mac80211/patches/326-ath9k-make-NF-load-complete-quickly-and-reliably.patch new file mode 100644 index 000000000..71f7a4043 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/326-ath9k-make-NF-load-complete-quickly-and-reliably.patch @@ -0,0 +1,87 @@ +From: Miaoqing Pan +Date: Fri, 5 Feb 2016 09:45:50 +0800 +Subject: [PATCH] ath9k: make NF load complete quickly and reliably + +Make NF load complete quickly and reliably. NF load execution +is delayed by HW to end of frame if frame Rx or Tx is ongoing. +Increasing timeout to max frame duration. If NF cal is ongoing +before NF load, stop it before load, and restart it afterwards. + +Signed-off-by: Miaoqing Pan +--- + +--- a/drivers/net/wireless/ath/ath9k/calib.c ++++ b/drivers/net/wireless/ath/ath9k/calib.c +@@ -241,6 +241,7 @@ int ath9k_hw_loadnf(struct ath_hw *ah, s + u8 chainmask = (ah->rxchainmask << 3) | ah->rxchainmask; + struct ath_common *common = ath9k_hw_common(ah); + s16 default_nf = ath9k_hw_get_default_nf(ah, chan); ++ u32 bb_agc_ctl = REG_READ(ah, AR_PHY_AGC_CONTROL); + + if (ah->caldata) + h = ah->caldata->nfCalHist; +@@ -264,6 +265,16 @@ int ath9k_hw_loadnf(struct ath_hw *ah, s + } + + /* ++ * stop NF cal if ongoing to ensure NF load completes immediately ++ * (or after end rx/tx frame if ongoing) ++ */ ++ if (bb_agc_ctl & AR_PHY_AGC_CONTROL_NF) { ++ REG_CLR_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); ++ REG_RMW_BUFFER_FLUSH(ah); ++ ENABLE_REG_RMW_BUFFER(ah); ++ } ++ ++ /* + * Load software filtered NF value into baseband internal minCCApwr + * variable. + */ +@@ -276,18 +287,33 @@ int ath9k_hw_loadnf(struct ath_hw *ah, s + + /* + * Wait for load to complete, should be fast, a few 10s of us. +- * The max delay was changed from an original 250us to 10000us +- * since 250us often results in NF load timeout and causes deaf +- * condition during stress testing 12/12/2009 ++ * The max delay was changed from an original 250us to 22.2 msec. ++ * This would increase timeout to the longest possible frame ++ * (11n max length 22.1 msec) + */ +- for (j = 0; j < 10000; j++) { ++ for (j = 0; j < 22200; j++) { + if ((REG_READ(ah, AR_PHY_AGC_CONTROL) & +- AR_PHY_AGC_CONTROL_NF) == 0) ++ AR_PHY_AGC_CONTROL_NF) == 0) + break; + udelay(10); + } + + /* ++ * Restart NF so it can continue. ++ */ ++ if (bb_agc_ctl & AR_PHY_AGC_CONTROL_NF) { ++ ENABLE_REG_RMW_BUFFER(ah); ++ if (bb_agc_ctl & AR_PHY_AGC_CONTROL_ENABLE_NF) ++ REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, ++ AR_PHY_AGC_CONTROL_ENABLE_NF); ++ if (bb_agc_ctl & AR_PHY_AGC_CONTROL_NO_UPDATE_NF) ++ REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, ++ AR_PHY_AGC_CONTROL_NO_UPDATE_NF); ++ REG_SET_BIT(ah, AR_PHY_AGC_CONTROL, AR_PHY_AGC_CONTROL_NF); ++ REG_RMW_BUFFER_FLUSH(ah); ++ } ++ ++ /* + * We timed out waiting for the noisefloor to load, probably due to an + * in-progress rx. Simply return here and allow the load plenty of time + * to complete before the next calibration interval. We need to avoid +@@ -296,7 +322,7 @@ int ath9k_hw_loadnf(struct ath_hw *ah, s + * here, the baseband nf cal will just be capped by our present + * noisefloor until the next calibration timer. + */ +- if (j == 10000) { ++ if (j == 22200) { + ath_dbg(common, ANY, + "Timeout while waiting for nf to load: AR_PHY_AGC_CONTROL=0x%x\n", + REG_READ(ah, AR_PHY_AGC_CONTROL)); diff --git a/feeds/rtkmipsel/mac80211/patches/327-mac80211-Remove-MPP-table-entries-with-MPath.patch b/feeds/rtkmipsel/mac80211/patches/327-mac80211-Remove-MPP-table-entries-with-MPath.patch new file mode 100644 index 000000000..f7f9df946 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/327-mac80211-Remove-MPP-table-entries-with-MPath.patch @@ -0,0 +1,54 @@ +From: Henning Rogge +Date: Wed, 3 Feb 2016 13:58:36 +0100 +Subject: [PATCH] mac80211: Remove MPP table entries with MPath + +Make the mesh_path_del() function remove all mpp table entries +that are proxied by the removed mesh path. + +Acked-by: Bob Copeland +Signed-off-by: Henning Rogge +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/mesh_pathtbl.c ++++ b/net/mac80211/mesh_pathtbl.c +@@ -835,6 +835,29 @@ void mesh_path_flush_by_nexthop(struct s + rcu_read_unlock(); + } + ++static void mpp_flush_by_proxy(struct ieee80211_sub_if_data *sdata, ++ const u8 *proxy) ++{ ++ struct mesh_table *tbl; ++ struct mesh_path *mpp; ++ struct mpath_node *node; ++ int i; ++ ++ rcu_read_lock(); ++ read_lock_bh(&pathtbl_resize_lock); ++ tbl = resize_dereference_mpp_paths(); ++ for_each_mesh_entry(tbl, node, i) { ++ mpp = node->mpath; ++ if (ether_addr_equal(mpp->mpp, proxy)) { ++ spin_lock(&tbl->hashwlock[i]); ++ __mesh_path_del(tbl, node); ++ spin_unlock(&tbl->hashwlock[i]); ++ } ++ } ++ read_unlock_bh(&pathtbl_resize_lock); ++ rcu_read_unlock(); ++} ++ + static void table_flush_by_iface(struct mesh_table *tbl, + struct ieee80211_sub_if_data *sdata) + { +@@ -892,6 +915,9 @@ int mesh_path_del(struct ieee80211_sub_i + int hash_idx; + int err = 0; + ++ /* flush relevant mpp entries first */ ++ mpp_flush_by_proxy(sdata, addr); ++ + read_lock_bh(&pathtbl_resize_lock); + tbl = resize_dereference_mesh_paths(); + hash_idx = mesh_table_hash(addr, sdata, tbl); diff --git a/feeds/rtkmipsel/mac80211/patches/328-mac80211-let-unused-MPP-table-entries-timeout.patch b/feeds/rtkmipsel/mac80211/patches/328-mac80211-let-unused-MPP-table-entries-timeout.patch new file mode 100644 index 000000000..740993c9e --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/328-mac80211-let-unused-MPP-table-entries-timeout.patch @@ -0,0 +1,104 @@ +From: Henning Rogge +Date: Wed, 3 Feb 2016 13:58:37 +0100 +Subject: [PATCH] mac80211: let unused MPP table entries timeout + +Remember the last time when a mpp table entry is used for +rx or tx and remove them after MESH_PATH_EXPIRE time. + +Acked-by: Bob Copeland +Signed-off-by: Henning Rogge +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/mesh_pathtbl.c ++++ b/net/mac80211/mesh_pathtbl.c +@@ -942,6 +942,46 @@ enddel: + } + + /** ++ * mpp_path_del - delete a mesh proxy path from the table ++ * ++ * @addr: addr address (ETH_ALEN length) ++ * @sdata: local subif ++ * ++ * Returns: 0 if successful ++ */ ++static int mpp_path_del(struct ieee80211_sub_if_data *sdata, const u8 *addr) ++{ ++ struct mesh_table *tbl; ++ struct mesh_path *mpath; ++ struct mpath_node *node; ++ struct hlist_head *bucket; ++ int hash_idx; ++ int err = 0; ++ ++ read_lock_bh(&pathtbl_resize_lock); ++ tbl = resize_dereference_mpp_paths(); ++ hash_idx = mesh_table_hash(addr, sdata, tbl); ++ bucket = &tbl->hash_buckets[hash_idx]; ++ ++ spin_lock(&tbl->hashwlock[hash_idx]); ++ hlist_for_each_entry(node, bucket, list) { ++ mpath = node->mpath; ++ if (mpath->sdata == sdata && ++ ether_addr_equal(addr, mpath->dst)) { ++ __mesh_path_del(tbl, node); ++ goto enddel; ++ } ++ } ++ ++ err = -ENXIO; ++enddel: ++ mesh_paths_generation++; ++ spin_unlock(&tbl->hashwlock[hash_idx]); ++ read_unlock_bh(&pathtbl_resize_lock); ++ return err; ++} ++ ++/** + * mesh_path_tx_pending - sends pending frames in a mesh path queue + * + * @mpath: mesh path to activate +@@ -1157,6 +1197,17 @@ void mesh_path_expire(struct ieee80211_s + time_after(jiffies, mpath->exp_time + MESH_PATH_EXPIRE)) + mesh_path_del(mpath->sdata, mpath->dst); + } ++ ++ tbl = rcu_dereference(mpp_paths); ++ for_each_mesh_entry(tbl, node, i) { ++ if (node->mpath->sdata != sdata) ++ continue; ++ mpath = node->mpath; ++ if ((!(mpath->flags & MESH_PATH_FIXED)) && ++ time_after(jiffies, mpath->exp_time + MESH_PATH_EXPIRE)) ++ mpp_path_del(mpath->sdata, mpath->dst); ++ } ++ + rcu_read_unlock(); + } + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -2291,6 +2291,7 @@ ieee80211_rx_h_mesh_fwding(struct ieee80 + spin_lock_bh(&mppath->state_lock); + if (!ether_addr_equal(mppath->mpp, mpp_addr)) + memcpy(mppath->mpp, mpp_addr, ETH_ALEN); ++ mppath->exp_time = jiffies; + spin_unlock_bh(&mppath->state_lock); + } + rcu_read_unlock(); +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -2171,8 +2171,11 @@ static struct sk_buff *ieee80211_build_h + mpp_lookup = true; + } + +- if (mpp_lookup) ++ if (mpp_lookup) { + mppath = mpp_path_lookup(sdata, skb->data); ++ if (mppath) ++ mppath->exp_time = jiffies; ++ } + + if (mppath && mpath) + mesh_path_del(mpath->sdata, mpath->dst); diff --git a/feeds/rtkmipsel/mac80211/patches/329-mac80211-Unify-mesh-and-mpp-path-removal-function.patch b/feeds/rtkmipsel/mac80211/patches/329-mac80211-Unify-mesh-and-mpp-path-removal-function.patch new file mode 100644 index 000000000..0c36b1d56 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/329-mac80211-Unify-mesh-and-mpp-path-removal-function.patch @@ -0,0 +1,143 @@ +From: Henning Rogge +Date: Wed, 3 Feb 2016 13:58:38 +0100 +Subject: [PATCH] mac80211: Unify mesh and mpp path removal function + +mpp_path_del() and mesh_path_del() are mostly the same function. +Move common code into a new static function. + +Acked-by: Bob Copeland +Signed-off-by: Henning Rogge +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/mesh_pathtbl.c ++++ b/net/mac80211/mesh_pathtbl.c +@@ -55,16 +55,21 @@ int mpp_paths_generation; + static DEFINE_RWLOCK(pathtbl_resize_lock); + + ++static inline struct mesh_table *resize_dereference_paths( ++ struct mesh_table __rcu *table) ++{ ++ return rcu_dereference_protected(table, ++ lockdep_is_held(&pathtbl_resize_lock)); ++} ++ + static inline struct mesh_table *resize_dereference_mesh_paths(void) + { +- return rcu_dereference_protected(mesh_paths, +- lockdep_is_held(&pathtbl_resize_lock)); ++ return resize_dereference_paths(mesh_paths); + } + + static inline struct mesh_table *resize_dereference_mpp_paths(void) + { +- return rcu_dereference_protected(mpp_paths, +- lockdep_is_held(&pathtbl_resize_lock)); ++ return resize_dereference_paths(mpp_paths); + } + + /* +@@ -899,14 +904,17 @@ void mesh_path_flush_by_iface(struct iee + } + + /** +- * mesh_path_del - delete a mesh path from the table ++ * table_path_del - delete a path from the mesh or mpp table + * +- * @addr: dst address (ETH_ALEN length) ++ * @tbl: mesh or mpp path table + * @sdata: local subif ++ * @addr: dst address (ETH_ALEN length) + * + * Returns: 0 if successful + */ +-int mesh_path_del(struct ieee80211_sub_if_data *sdata, const u8 *addr) ++static int table_path_del(struct mesh_table __rcu *rcu_tbl, ++ struct ieee80211_sub_if_data *sdata, ++ const u8 *addr) + { + struct mesh_table *tbl; + struct mesh_path *mpath; +@@ -915,11 +923,7 @@ int mesh_path_del(struct ieee80211_sub_i + int hash_idx; + int err = 0; + +- /* flush relevant mpp entries first */ +- mpp_flush_by_proxy(sdata, addr); +- +- read_lock_bh(&pathtbl_resize_lock); +- tbl = resize_dereference_mesh_paths(); ++ tbl = resize_dereference_paths(rcu_tbl); + hash_idx = mesh_table_hash(addr, sdata, tbl); + bucket = &tbl->hash_buckets[hash_idx]; + +@@ -935,9 +939,30 @@ int mesh_path_del(struct ieee80211_sub_i + + err = -ENXIO; + enddel: +- mesh_paths_generation++; + spin_unlock(&tbl->hashwlock[hash_idx]); ++ return err; ++} ++ ++/** ++ * mesh_path_del - delete a mesh path from the table ++ * ++ * @addr: dst address (ETH_ALEN length) ++ * @sdata: local subif ++ * ++ * Returns: 0 if successful ++ */ ++int mesh_path_del(struct ieee80211_sub_if_data *sdata, const u8 *addr) ++{ ++ int err = 0; ++ ++ /* flush relevant mpp entries first */ ++ mpp_flush_by_proxy(sdata, addr); ++ ++ read_lock_bh(&pathtbl_resize_lock); ++ err = table_path_del(mesh_paths, sdata, addr); ++ mesh_paths_generation++; + read_unlock_bh(&pathtbl_resize_lock); ++ + return err; + } + +@@ -951,33 +976,13 @@ enddel: + */ + static int mpp_path_del(struct ieee80211_sub_if_data *sdata, const u8 *addr) + { +- struct mesh_table *tbl; +- struct mesh_path *mpath; +- struct mpath_node *node; +- struct hlist_head *bucket; +- int hash_idx; + int err = 0; + + read_lock_bh(&pathtbl_resize_lock); +- tbl = resize_dereference_mpp_paths(); +- hash_idx = mesh_table_hash(addr, sdata, tbl); +- bucket = &tbl->hash_buckets[hash_idx]; +- +- spin_lock(&tbl->hashwlock[hash_idx]); +- hlist_for_each_entry(node, bucket, list) { +- mpath = node->mpath; +- if (mpath->sdata == sdata && +- ether_addr_equal(addr, mpath->dst)) { +- __mesh_path_del(tbl, node); +- goto enddel; +- } +- } +- +- err = -ENXIO; +-enddel: +- mesh_paths_generation++; +- spin_unlock(&tbl->hashwlock[hash_idx]); ++ err = table_path_del(mpp_paths, sdata, addr); ++ mpp_paths_generation++; + read_unlock_bh(&pathtbl_resize_lock); ++ + return err; + } + diff --git a/feeds/rtkmipsel/mac80211/patches/330-mac80211-minstrel-Change-expected-throughput-unit-ba.patch b/feeds/rtkmipsel/mac80211/patches/330-mac80211-minstrel-Change-expected-throughput-unit-ba.patch new file mode 100644 index 000000000..4dc6d663e --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/330-mac80211-minstrel-Change-expected-throughput-unit-ba.patch @@ -0,0 +1,51 @@ +From: Sven Eckelmann +Date: Tue, 2 Feb 2016 08:12:26 +0100 +Subject: [PATCH] mac80211: minstrel: Change expected throughput unit back to + Kbps + +The change from cur_tp to the function +minstrel_get_tp_avg/minstrel_ht_get_tp_avg changed the unit used for the +current throughput. For example in minstrel_ht the correct +conversion between them would be: + + mrs->cur_tp / 10 == minstrel_ht_get_tp_avg(..). + +This factor 10 must also be included in the calculation of +minstrel_get_expected_throughput and minstrel_ht_get_expected_throughput to +return values with the unit [Kbps] instead of [10Kbps]. Otherwise routing +algorithms like B.A.T.M.A.N. V will make incorrect decision based on these +values. Its kernel based implementation expects expected_throughput always +to have the unit [Kbps] and not sometimes [10Kbps] and sometimes [Kbps]. + +The same requirement has iw or olsrdv2's nl80211 based statistics module +which retrieve the same data via NL80211_STA_INFO_TX_BITRATE. + +Cc: stable@vger.kernel.org +Fixes: 6a27b2c40b48 ("mac80211: restructure per-rate throughput calculation into function") +Signed-off-by: Sven Eckelmann +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/rc80211_minstrel.c ++++ b/net/mac80211/rc80211_minstrel.c +@@ -711,7 +711,7 @@ static u32 minstrel_get_expected_through + * computing cur_tp + */ + tmp_mrs = &mi->r[idx].stats; +- tmp_cur_tp = minstrel_get_tp_avg(&mi->r[idx], tmp_mrs->prob_ewma); ++ tmp_cur_tp = minstrel_get_tp_avg(&mi->r[idx], tmp_mrs->prob_ewma) * 10; + tmp_cur_tp = tmp_cur_tp * 1200 * 8 / 1024; + + return tmp_cur_tp; +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -1335,7 +1335,8 @@ static u32 minstrel_ht_get_expected_thro + prob = mi->groups[i].rates[j].prob_ewma; + + /* convert tp_avg from pkt per second in kbps */ +- tp_avg = minstrel_ht_get_tp_avg(mi, i, j, prob) * AVG_PKT_SIZE * 8 / 1024; ++ tp_avg = minstrel_ht_get_tp_avg(mi, i, j, prob) * 10; ++ tp_avg = tp_avg * AVG_PKT_SIZE * 8 / 1024; + + return tp_avg; + } diff --git a/feeds/rtkmipsel/mac80211/patches/331-brcmfmac-Increase-nr-of-supported-flowrings.patch b/feeds/rtkmipsel/mac80211/patches/331-brcmfmac-Increase-nr-of-supported-flowrings.patch new file mode 100644 index 000000000..1fd016f7f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/331-brcmfmac-Increase-nr-of-supported-flowrings.patch @@ -0,0 +1,307 @@ +From: Hante Meuleman +Date: Sun, 7 Feb 2016 18:08:24 +0100 +Subject: [PATCH] brcmfmac: Increase nr of supported flowrings. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +New generation devices have firmware which has more than 256 flowrings. +E.g. following debugging message comes from 14e4:4365 BCM4366: +[ 194.606245] brcmfmac: brcmf_pcie_init_ringbuffers Nr of flowrings is 264 + +At various code places (related to flowrings) we were using u8 which +could lead to storing wrong number or infinite loops when indexing with +this type. This issue was quite easy to spot in brcmf_flowring_detach +where it led to infinite loop e.g. on failed initialization. + +This patch switches code to proper types and increases the maximum +number of supported flowrings to 512. + +Originally this change was sent in September 2015, but back it was +causing a regression on BCM43602 resulting in: +Unable to handle kernel NULL pointer dereference at virtual address ... + +The reason for this regression was missing update (s/u8/u16) of struct +brcmf_flowring_ring. This problem was handled in 9f64df9 ("brcmfmac: Fix +bug in flowring management."). Starting with that it's safe to apply +this original patch as it doesn't cause a regression anymore. + +This patch fixes an infinite loop on BCM4366 which is supported since +4.4 so it makes sense to apply it to stable 4.4+. + +Cc: # 4.4+ +Reviewed-by: Arend Van Spriel +Reviewed-by: Franky (Zhenhui) Lin +Reviewed-by: Pieter-Paul Giesberts +Signed-off-by: Hante Meuleman +Signed-off-by: Arend van Spriel +Signed-off-by: RafaÅ‚ MiÅ‚ecki +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.c +@@ -32,7 +32,7 @@ + #define BRCMF_FLOWRING_LOW (BRCMF_FLOWRING_HIGH - 256) + #define BRCMF_FLOWRING_INVALID_IFIDX 0xff + +-#define BRCMF_FLOWRING_HASH_AP(da, fifo, ifidx) (da[5] + fifo + ifidx * 16) ++#define BRCMF_FLOWRING_HASH_AP(da, fifo, ifidx) (da[5] * 2 + fifo + ifidx * 16) + #define BRCMF_FLOWRING_HASH_STA(fifo, ifidx) (fifo + ifidx * 16) + + static const u8 brcmf_flowring_prio2fifo[] = { +@@ -68,7 +68,7 @@ u32 brcmf_flowring_lookup(struct brcmf_f + u8 prio, u8 ifidx) + { + struct brcmf_flowring_hash *hash; +- u8 hash_idx; ++ u16 hash_idx; + u32 i; + bool found; + bool sta; +@@ -88,6 +88,7 @@ u32 brcmf_flowring_lookup(struct brcmf_f + } + hash_idx = sta ? BRCMF_FLOWRING_HASH_STA(fifo, ifidx) : + BRCMF_FLOWRING_HASH_AP(mac, fifo, ifidx); ++ hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1); + found = false; + hash = flow->hash; + for (i = 0; i < BRCMF_FLOWRING_HASHSIZE; i++) { +@@ -98,6 +99,7 @@ u32 brcmf_flowring_lookup(struct brcmf_f + break; + } + hash_idx++; ++ hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1); + } + if (found) + return hash[hash_idx].flowid; +@@ -111,7 +113,7 @@ u32 brcmf_flowring_create(struct brcmf_f + { + struct brcmf_flowring_ring *ring; + struct brcmf_flowring_hash *hash; +- u8 hash_idx; ++ u16 hash_idx; + u32 i; + bool found; + u8 fifo; +@@ -131,6 +133,7 @@ u32 brcmf_flowring_create(struct brcmf_f + } + hash_idx = sta ? BRCMF_FLOWRING_HASH_STA(fifo, ifidx) : + BRCMF_FLOWRING_HASH_AP(mac, fifo, ifidx); ++ hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1); + found = false; + hash = flow->hash; + for (i = 0; i < BRCMF_FLOWRING_HASHSIZE; i++) { +@@ -140,6 +143,7 @@ u32 brcmf_flowring_create(struct brcmf_f + break; + } + hash_idx++; ++ hash_idx &= (BRCMF_FLOWRING_HASHSIZE - 1); + } + if (found) { + for (i = 0; i < flow->nrofrings; i++) { +@@ -169,7 +173,7 @@ u32 brcmf_flowring_create(struct brcmf_f + } + + +-u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u8 flowid) ++u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid) + { + struct brcmf_flowring_ring *ring; + +@@ -179,7 +183,7 @@ u8 brcmf_flowring_tid(struct brcmf_flowr + } + + +-static void brcmf_flowring_block(struct brcmf_flowring *flow, u8 flowid, ++static void brcmf_flowring_block(struct brcmf_flowring *flow, u16 flowid, + bool blocked) + { + struct brcmf_flowring_ring *ring; +@@ -228,10 +232,10 @@ static void brcmf_flowring_block(struct + } + + +-void brcmf_flowring_delete(struct brcmf_flowring *flow, u8 flowid) ++void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid) + { + struct brcmf_flowring_ring *ring; +- u8 hash_idx; ++ u16 hash_idx; + struct sk_buff *skb; + + ring = flow->rings[flowid]; +@@ -253,7 +257,7 @@ void brcmf_flowring_delete(struct brcmf_ + } + + +-u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u8 flowid, ++u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid, + struct sk_buff *skb) + { + struct brcmf_flowring_ring *ring; +@@ -279,7 +283,7 @@ u32 brcmf_flowring_enqueue(struct brcmf_ + } + + +-struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u8 flowid) ++struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid) + { + struct brcmf_flowring_ring *ring; + struct sk_buff *skb; +@@ -300,7 +304,7 @@ struct sk_buff *brcmf_flowring_dequeue(s + } + + +-void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u8 flowid, ++void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid, + struct sk_buff *skb) + { + struct brcmf_flowring_ring *ring; +@@ -311,7 +315,7 @@ void brcmf_flowring_reinsert(struct brcm + } + + +-u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u8 flowid) ++u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid) + { + struct brcmf_flowring_ring *ring; + +@@ -326,7 +330,7 @@ u32 brcmf_flowring_qlen(struct brcmf_flo + } + + +-void brcmf_flowring_open(struct brcmf_flowring *flow, u8 flowid) ++void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid) + { + struct brcmf_flowring_ring *ring; + +@@ -340,10 +344,10 @@ void brcmf_flowring_open(struct brcmf_fl + } + + +-u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u8 flowid) ++u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid) + { + struct brcmf_flowring_ring *ring; +- u8 hash_idx; ++ u16 hash_idx; + + ring = flow->rings[flowid]; + hash_idx = ring->hash_id; +@@ -384,7 +388,7 @@ void brcmf_flowring_detach(struct brcmf_ + struct brcmf_pub *drvr = bus_if->drvr; + struct brcmf_flowring_tdls_entry *search; + struct brcmf_flowring_tdls_entry *remove; +- u8 flowid; ++ u16 flowid; + + for (flowid = 0; flowid < flow->nrofrings; flowid++) { + if (flow->rings[flowid]) +@@ -408,7 +412,7 @@ void brcmf_flowring_configure_addr_mode( + struct brcmf_bus *bus_if = dev_get_drvdata(flow->dev); + struct brcmf_pub *drvr = bus_if->drvr; + u32 i; +- u8 flowid; ++ u16 flowid; + + if (flow->addr_mode[ifidx] != addr_mode) { + for (i = 0; i < ARRAY_SIZE(flow->hash); i++) { +@@ -434,7 +438,7 @@ void brcmf_flowring_delete_peer(struct b + struct brcmf_flowring_tdls_entry *prev; + struct brcmf_flowring_tdls_entry *search; + u32 i; +- u8 flowid; ++ u16 flowid; + bool sta; + + sta = (flow->addr_mode[ifidx] == ADDR_INDIRECT); +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/flowring.h +@@ -16,7 +16,7 @@ + #define BRCMFMAC_FLOWRING_H + + +-#define BRCMF_FLOWRING_HASHSIZE 256 ++#define BRCMF_FLOWRING_HASHSIZE 512 /* has to be 2^x */ + #define BRCMF_FLOWRING_INVALID_ID 0xFFFFFFFF + + +@@ -24,7 +24,7 @@ struct brcmf_flowring_hash { + u8 mac[ETH_ALEN]; + u8 fifo; + u8 ifidx; +- u8 flowid; ++ u16 flowid; + }; + + enum ring_status { +@@ -61,16 +61,16 @@ u32 brcmf_flowring_lookup(struct brcmf_f + u8 prio, u8 ifidx); + u32 brcmf_flowring_create(struct brcmf_flowring *flow, u8 da[ETH_ALEN], + u8 prio, u8 ifidx); +-void brcmf_flowring_delete(struct brcmf_flowring *flow, u8 flowid); +-void brcmf_flowring_open(struct brcmf_flowring *flow, u8 flowid); +-u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u8 flowid); +-u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u8 flowid, ++void brcmf_flowring_delete(struct brcmf_flowring *flow, u16 flowid); ++void brcmf_flowring_open(struct brcmf_flowring *flow, u16 flowid); ++u8 brcmf_flowring_tid(struct brcmf_flowring *flow, u16 flowid); ++u32 brcmf_flowring_enqueue(struct brcmf_flowring *flow, u16 flowid, + struct sk_buff *skb); +-struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u8 flowid); +-void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u8 flowid, ++struct sk_buff *brcmf_flowring_dequeue(struct brcmf_flowring *flow, u16 flowid); ++void brcmf_flowring_reinsert(struct brcmf_flowring *flow, u16 flowid, + struct sk_buff *skb); +-u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u8 flowid); +-u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u8 flowid); ++u32 brcmf_flowring_qlen(struct brcmf_flowring *flow, u16 flowid); ++u8 brcmf_flowring_ifidx_get(struct brcmf_flowring *flow, u16 flowid); + struct brcmf_flowring *brcmf_flowring_attach(struct device *dev, u16 nrofrings); + void brcmf_flowring_detach(struct brcmf_flowring *flow); + void brcmf_flowring_configure_addr_mode(struct brcmf_flowring *flow, int ifidx, +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.c +@@ -677,7 +677,7 @@ static u32 brcmf_msgbuf_flowring_create( + } + + +-static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u8 flowid) ++static void brcmf_msgbuf_txflow(struct brcmf_msgbuf *msgbuf, u16 flowid) + { + struct brcmf_flowring *flow = msgbuf->flow; + struct brcmf_commonring *commonring; +@@ -1310,7 +1310,7 @@ int brcmf_proto_msgbuf_rx_trigger(struct + } + + +-void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid) ++void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u16 flowid) + { + struct brcmf_msgbuf *msgbuf = (struct brcmf_msgbuf *)drvr->proto->pd; + struct msgbuf_tx_flowring_delete_req *delete; +@@ -1415,6 +1415,13 @@ int brcmf_proto_msgbuf_attach(struct brc + u32 count; + + if_msgbuf = drvr->bus_if->msgbuf; ++ ++ if (if_msgbuf->nrof_flowrings >= BRCMF_FLOWRING_HASHSIZE) { ++ brcmf_err("driver not configured for this many flowrings %d\n", ++ if_msgbuf->nrof_flowrings); ++ if_msgbuf->nrof_flowrings = BRCMF_FLOWRING_HASHSIZE - 1; ++ } ++ + msgbuf = kzalloc(sizeof(*msgbuf), GFP_KERNEL); + if (!msgbuf) + goto fail; +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/msgbuf.h +@@ -33,7 +33,7 @@ + + + int brcmf_proto_msgbuf_rx_trigger(struct device *dev); +-void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u8 flowid); ++void brcmf_msgbuf_delete_flowring(struct brcmf_pub *drvr, u16 flowid); + int brcmf_proto_msgbuf_attach(struct brcmf_pub *drvr); + void brcmf_proto_msgbuf_detach(struct brcmf_pub *drvr); + #else diff --git a/feeds/rtkmipsel/mac80211/patches/332-cfg80211-fix-faulty-variable-initialization-in-ieee8.patch b/feeds/rtkmipsel/mac80211/patches/332-cfg80211-fix-faulty-variable-initialization-in-ieee8.patch new file mode 100644 index 000000000..e414f2378 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/332-cfg80211-fix-faulty-variable-initialization-in-ieee8.patch @@ -0,0 +1,22 @@ +From: Felix Fietkau +Date: Mon, 8 Feb 2016 14:24:36 +0100 +Subject: [PATCH] cfg80211: fix faulty variable initialization in + ieee80211_amsdu_to_8023s + +reuse_skb is set to true if the code decides to use the last segment. +Fixes a memory leak + +Signed-off-by: Felix Fietkau +--- + +--- a/net/wireless/util.c ++++ b/net/wireless/util.c +@@ -676,7 +676,7 @@ void ieee80211_amsdu_to_8023s(struct sk_ + u8 *payload; + int offset = 0, remaining, err; + struct ethhdr eth; +- bool reuse_skb = true; ++ bool reuse_skb = false; + bool last = false; + + if (has_80211_header) { diff --git a/feeds/rtkmipsel/mac80211/patches/333-cfg80211-reuse-existing-page-fragments-in-A-MSDU-rx.patch b/feeds/rtkmipsel/mac80211/patches/333-cfg80211-reuse-existing-page-fragments-in-A-MSDU-rx.patch new file mode 100644 index 000000000..6e2d0cf5b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/333-cfg80211-reuse-existing-page-fragments-in-A-MSDU-rx.patch @@ -0,0 +1,132 @@ +From: Felix Fietkau +Date: Mon, 8 Feb 2016 14:33:19 +0100 +Subject: [PATCH] cfg80211: reuse existing page fragments in A-MSDU rx + +This massively reduces data copying and thus improves rx performance + +Signed-off-by: Felix Fietkau +--- + +--- a/net/wireless/util.c ++++ b/net/wireless/util.c +@@ -644,23 +644,93 @@ int ieee80211_data_from_8023(struct sk_b + } + EXPORT_SYMBOL(ieee80211_data_from_8023); + ++static void ++__frame_add_frag(struct sk_buff *skb, struct page *page, ++ void *ptr, int len, int size) ++{ ++ struct skb_shared_info *sh = skb_shinfo(skb); ++ int page_offset; ++ ++ atomic_inc(&page->_count); ++ page_offset = ptr - page_address(page); ++ skb_add_rx_frag(skb, sh->nr_frags, page, page_offset, len, size); ++} ++ ++static void ++__ieee80211_amsdu_copy_frag(struct sk_buff *skb, struct sk_buff *frame, ++ int offset, int len) ++{ ++ struct skb_shared_info *sh = skb_shinfo(skb); ++ const skb_frag_t *frag = &sh->frags[-1]; ++ struct page *frag_page; ++ void *frag_ptr; ++ int frag_len, frag_size; ++ int head_size = skb->len - skb->data_len; ++ int cur_len; ++ ++ frag_page = virt_to_head_page(skb->head); ++ frag_ptr = skb->data; ++ frag_size = head_size; ++ ++ while (offset >= frag_size) { ++ offset -= frag_size; ++ frag++; ++ frag_page = skb_frag_page(frag); ++ frag_ptr = skb_frag_address(frag); ++ frag_size = skb_frag_size(frag); ++ } ++ ++ frag_ptr += offset; ++ frag_len = frag_size - offset; ++ ++ cur_len = min(len, frag_len); ++ ++ __frame_add_frag(frame, frag_page, frag_ptr, cur_len, frag_size); ++ len -= cur_len; ++ ++ while (len > 0) { ++ frag++; ++ frag_len = skb_frag_size(frag); ++ cur_len = min(len, frag_len); ++ __frame_add_frag(frame, skb_frag_page(frag), ++ skb_frag_address(frag), cur_len, frag_len); ++ len -= cur_len; ++ } ++} ++ + static struct sk_buff * + __ieee80211_amsdu_copy(struct sk_buff *skb, unsigned int hlen, +- int offset, int len) ++ int offset, int len, bool reuse_frag) + { + struct sk_buff *frame; ++ int cur_len = len; + + if (skb->len - offset < len) + return NULL; + + /* ++ * When reusing framents, copy some data to the head to simplify ++ * ethernet header handling and speed up protocol header processing ++ * in the stack later. ++ */ ++ if (reuse_frag) ++ cur_len = min_t(int, len, 32); ++ ++ /* + * Allocate and reserve two bytes more for payload + * alignment since sizeof(struct ethhdr) is 14. + */ +- frame = dev_alloc_skb(hlen + sizeof(struct ethhdr) + 2 + len); ++ frame = dev_alloc_skb(hlen + sizeof(struct ethhdr) + 2 + cur_len); + + skb_reserve(frame, hlen + sizeof(struct ethhdr) + 2); +- skb_copy_bits(skb, offset, skb_put(frame, len), len); ++ skb_copy_bits(skb, offset, skb_put(frame, cur_len), cur_len); ++ ++ len -= cur_len; ++ if (!len) ++ return frame; ++ ++ offset += cur_len; ++ __ieee80211_amsdu_copy_frag(skb, frame, offset, len); + + return frame; + } +@@ -676,6 +746,7 @@ void ieee80211_amsdu_to_8023s(struct sk_ + u8 *payload; + int offset = 0, remaining, err; + struct ethhdr eth; ++ bool reuse_frag = skb->head_frag && !skb_has_frag_list(skb); + bool reuse_skb = false; + bool last = false; + +@@ -703,12 +774,13 @@ void ieee80211_amsdu_to_8023s(struct sk_ + offset += sizeof(struct ethhdr); + /* reuse skb for the last subframe */ + last = remaining <= subframe_len + padding; +- if (!skb_is_nonlinear(skb) && last) { ++ if (!skb_is_nonlinear(skb) && !reuse_frag && last) { + skb_pull(skb, offset); + frame = skb; + reuse_skb = true; + } else { +- frame = __ieee80211_amsdu_copy(skb, hlen, offset, len); ++ frame = __ieee80211_amsdu_copy(skb, hlen, offset, len, ++ reuse_frag); + if (!frame) + goto purge; + diff --git a/feeds/rtkmipsel/mac80211/patches/334-mac80211-fix-wiphy-supported_band-access.patch b/feeds/rtkmipsel/mac80211/patches/334-mac80211-fix-wiphy-supported_band-access.patch new file mode 100644 index 000000000..f8f4f0999 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/334-mac80211-fix-wiphy-supported_band-access.patch @@ -0,0 +1,36 @@ +From: Lorenzo Bianconi +Date: Wed, 10 Feb 2016 16:08:17 +0100 +Subject: [PATCH] mac80211: fix wiphy supported_band access + +Fix wiphy supported_band access in tx radiotap parsing. In particular, +info->band is always set to 0 (IEEE80211_BAND_2GHZ) since it has not +assigned yet. This cause a kernel crash on 5GHz only devices. +Move ieee80211_parse_tx_radiotap() after info->band assignment + +Signed-off-by: Lorenzo Bianconi +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1890,10 +1890,6 @@ netdev_tx_t ieee80211_monitor_start_xmit + info->flags = IEEE80211_TX_CTL_REQ_TX_STATUS | + IEEE80211_TX_CTL_INJECTED; + +- /* process and remove the injection radiotap header */ +- if (!ieee80211_parse_tx_radiotap(local, skb)) +- goto fail; +- + rcu_read_lock(); + + /* +@@ -1955,6 +1951,10 @@ netdev_tx_t ieee80211_monitor_start_xmit + goto fail_rcu; + + info->band = chandef->chan->band; ++ /* process and remove the injection radiotap header */ ++ if (!ieee80211_parse_tx_radiotap(local, skb)) ++ goto fail_rcu; ++ + ieee80211_xmit(sdata, NULL, skb); + rcu_read_unlock(); + diff --git a/feeds/rtkmipsel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch b/feeds/rtkmipsel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch new file mode 100644 index 000000000..acaacf7ca --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/335-mac80211-minstrel_ht-set-A-MSDU-tx-limits-based-on-s.patch @@ -0,0 +1,61 @@ +From: Felix Fietkau +Date: Thu, 18 Feb 2016 19:30:05 +0100 +Subject: [PATCH] mac80211: minstrel_ht: set A-MSDU tx limits based on selected + max_prob_rate + +Prevents excessive A-MSDU aggregation at low data rates or bad +conditions. + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -883,6 +883,39 @@ minstrel_ht_set_rate(struct minstrel_pri + ratetbl->rate[offset].flags = flags; + } + ++static int ++minstrel_ht_get_max_amsdu_len(struct minstrel_ht_sta *mi) ++{ ++ int group = mi->max_prob_rate / MCS_GROUP_RATES; ++ const struct mcs_group *g = &minstrel_mcs_groups[group]; ++ int rate = mi->max_prob_rate % MCS_GROUP_RATES; ++ ++ /* Disable A-MSDU if max_prob_rate is bad */ ++ if (mi->groups[group].rates[rate].prob_ewma < MINSTREL_FRAC(50, 100)) ++ return 1; ++ ++ /* If the rate is slower than single-stream MCS1, make A-MSDU limit small */ ++ if (g->duration[rate] > MCS_DURATION(1, 0, 52)) ++ return 500; ++ ++ /* ++ * If the rate is slower than single-stream MCS4, limit A-MSDU to usual ++ * data packet size ++ */ ++ if (g->duration[rate] > MCS_DURATION(1, 0, 104)) ++ return 1500; ++ ++ /* ++ * If the rate is slower than single-stream MCS7, limit A-MSDU to twice ++ * the usual data packet size ++ */ ++ if (g->duration[rate] > MCS_DURATION(1, 0, 260)) ++ return 3000; ++ ++ /* unlimited */ ++ return 0; ++} ++ + static void + minstrel_ht_update_rates(struct minstrel_priv *mp, struct minstrel_ht_sta *mi) + { +@@ -907,6 +940,7 @@ minstrel_ht_update_rates(struct minstrel + minstrel_ht_set_rate(mp, mi, rates, i++, mi->max_prob_rate); + } + ++ mi->sta->max_rc_amsdu_len = minstrel_ht_get_max_amsdu_len(mi); + rates->rate[i].idx = -1; + rate_control_set_rates(mp->hw, mi->sta, rates); + } diff --git a/feeds/rtkmipsel/mac80211/patches/336-mac80211-minstrel_ht-set-default-tx-aggregation-time.patch b/feeds/rtkmipsel/mac80211/patches/336-mac80211-minstrel_ht-set-default-tx-aggregation-time.patch new file mode 100644 index 000000000..32a2ad6f0 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/336-mac80211-minstrel_ht-set-default-tx-aggregation-time.patch @@ -0,0 +1,31 @@ +From: Felix Fietkau +Date: Thu, 18 Feb 2016 19:45:33 +0100 +Subject: [PATCH] mac80211: minstrel_ht: set default tx aggregation timeout to + 0 + +The value 5000 was put here with the addition of the timeout field to +ieee80211_start_tx_ba_session. It was originally added in mac80211 to +save resources for drivers like iwlwifi, which only supports a limited +number of concurrent aggregation sessions. + +Since iwlwifi does not use minstrel_ht and other drivers don't need +this, 0 is a better default - especially since there have been +recent reports of aggregation setup related issues reproduced with +ath9k. This should improve stability without causing any adverse +effects. + +Cc: stable@vger.kernel.org +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -692,7 +692,7 @@ minstrel_aggr_check(struct ieee80211_sta + if (likely(sta->ampdu_mlme.tid_tx[tid])) + return; + +- ieee80211_start_tx_ba_session(pubsta, tid, 5000); ++ ieee80211_start_tx_ba_session(pubsta, tid, 0); + } + + static void diff --git a/feeds/rtkmipsel/mac80211/patches/337-mac80211-minstrel_ht-fix-a-logic-error-in-RTS-CTS-ha.patch b/feeds/rtkmipsel/mac80211/patches/337-mac80211-minstrel_ht-fix-a-logic-error-in-RTS-CTS-ha.patch new file mode 100644 index 000000000..229351ba5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/337-mac80211-minstrel_ht-fix-a-logic-error-in-RTS-CTS-ha.patch @@ -0,0 +1,26 @@ +From: Felix Fietkau +Date: Wed, 24 Feb 2016 12:03:13 +0100 +Subject: [PATCH] mac80211: minstrel_ht: fix a logic error in RTS/CTS handling +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +RTS/CTS needs to be enabled if the rate is a fallback rate *or* if it's +a dual-stream rate and the sta is in dynamic SMPS mode. + +Fixes: a3ebb4e1b763 ("mac80211: minstrel_ht: handle peers in dynamic SMPS") +Reported-by: Matías Richart +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -872,7 +872,7 @@ minstrel_ht_set_rate(struct minstrel_pri + * - if station is in dynamic SMPS (and streams > 1) + * - for fallback rates, to increase chances of getting through + */ +- if (offset > 0 && ++ if (offset > 0 || + (mi->sta->smps_mode == IEEE80211_SMPS_DYNAMIC && + group->streams > 1)) { + ratetbl->rate[offset].count = ratetbl->rate[offset].count_rts; diff --git a/feeds/rtkmipsel/mac80211/patches/338-mac80211-Fix-Public-Action-frame-RX-in-AP-mode.patch b/feeds/rtkmipsel/mac80211/patches/338-mac80211-Fix-Public-Action-frame-RX-in-AP-mode.patch new file mode 100644 index 000000000..56cd94aa1 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/338-mac80211-Fix-Public-Action-frame-RX-in-AP-mode.patch @@ -0,0 +1,35 @@ +From: Jouni Malinen +Date: Tue, 1 Mar 2016 00:29:00 +0200 +Subject: [PATCH] mac80211: Fix Public Action frame RX in AP mode + +Public Action frames use special rules for how the BSSID field (Address +3) is set. A wildcard BSSID is used in cases where the transmitter and +recipient are not members of the same BSS. As such, we need to accept +Public Action frames with wildcard BSSID. + +Commit db8e17324553 ("mac80211: ignore frames between TDLS peers when +operating as AP") added a rule that drops Action frames to TDLS-peers +based on an Action frame having different DA (Address 1) and BSSID +(Address 3) values. This is not correct since it misses the possibility +of BSSID being a wildcard BSSID in which case the Address 1 would not +necessarily match. + +Fix this by allowing mac80211 to accept wildcard BSSID in an Action +frame when in AP mode. + +Fixes: db8e17324553 ("mac80211: ignore frames between TDLS peers when operating as AP") +Cc: stable@vger.kernel.org +Signed-off-by: Jouni Malinen +Signed-off-by: Johannes Berg +--- + +--- a/net/mac80211/rx.c ++++ b/net/mac80211/rx.c +@@ -3374,6 +3374,7 @@ static bool ieee80211_accept_frame(struc + return false; + /* ignore action frames to TDLS-peers */ + if (ieee80211_is_action(hdr->frame_control) && ++ !is_broadcast_ether_addr(bssid) && + !ether_addr_equal(bssid, hdr->addr1)) + return false; + } diff --git a/feeds/rtkmipsel/mac80211/patches/339-cfg80211-add-radiotap-VHT-info-to-rtap_namespace_siz.patch b/feeds/rtkmipsel/mac80211/patches/339-cfg80211-add-radiotap-VHT-info-to-rtap_namespace_siz.patch new file mode 100644 index 000000000..15d6cd03e --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/339-cfg80211-add-radiotap-VHT-info-to-rtap_namespace_siz.patch @@ -0,0 +1,21 @@ +From: Lorenzo Bianconi +Date: Fri, 19 Feb 2016 11:43:04 +0100 +Subject: [PATCH] cfg80211: add radiotap VHT info to rtap_namespace_sizes + +Add IEEE80211_RADIOTAP_VHT entry to rtap_namespace_sizes array in order to +define alignment and size of VHT info in tx radiotap + +Signed-off-by: Lorenzo Bianconi +Signed-off-by: Johannes Berg +--- + +--- a/net/wireless/radiotap.c ++++ b/net/wireless/radiotap.c +@@ -43,6 +43,7 @@ static const struct radiotap_align_size + [IEEE80211_RADIOTAP_DATA_RETRIES] = { .align = 1, .size = 1, }, + [IEEE80211_RADIOTAP_MCS] = { .align = 1, .size = 3, }, + [IEEE80211_RADIOTAP_AMPDU_STATUS] = { .align = 4, .size = 8, }, ++ [IEEE80211_RADIOTAP_VHT] = { .align = 2, .size = 12, }, + /* + * add more here as they are defined in radiotap.h + */ diff --git a/feeds/rtkmipsel/mac80211/patches/340-mac80211-fix-parsing-of-40Mhz-in-injected-radiotap-h.patch b/feeds/rtkmipsel/mac80211/patches/340-mac80211-fix-parsing-of-40Mhz-in-injected-radiotap-h.patch new file mode 100644 index 000000000..de1b38625 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/340-mac80211-fix-parsing-of-40Mhz-in-injected-radiotap-h.patch @@ -0,0 +1,36 @@ +From: Sven Eckelmann +Date: Wed, 24 Feb 2016 16:25:49 +0100 +Subject: [PATCH] mac80211: fix parsing of 40Mhz in injected radiotap + header + +The MCS bandwidth part of the radiotap header is 2 bits wide. The full 2 +bit have to compared against IEEE80211_RADIOTAP_MCS_BW_40 and not only if +the first bit is set. Otherwise IEEE80211_RADIOTAP_MCS_BW_40 can be +confused with IEEE80211_RADIOTAP_MCS_BW_20U. + +Fixes: 5ec3aed9ba4c ("mac80211: Parse legacy and HT rate in injected frames") +Signed-off-by: Sven Eckelmann +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1689,7 +1689,7 @@ static bool ieee80211_parse_tx_radiotap( + bool rate_found = false; + u8 rate_retries = 0; + u16 rate_flags = 0; +- u8 mcs_known, mcs_flags; ++ u8 mcs_known, mcs_flags, mcs_bw; + int i; + + info->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT | +@@ -1765,8 +1765,9 @@ static bool ieee80211_parse_tx_radiotap( + mcs_flags & IEEE80211_RADIOTAP_MCS_SGI) + rate_flags |= IEEE80211_TX_RC_SHORT_GI; + ++ mcs_bw = mcs_flags & IEEE80211_RADIOTAP_MCS_BW_MASK; + if (mcs_known & IEEE80211_RADIOTAP_MCS_HAVE_BW && +- mcs_flags & IEEE80211_RADIOTAP_MCS_BW_40) ++ mcs_bw == IEEE80211_RADIOTAP_MCS_BW_40) + rate_flags |= IEEE80211_TX_RC_40_MHZ_WIDTH; + break; + diff --git a/feeds/rtkmipsel/mac80211/patches/341-mac80211-parse-VHT-info-in-injected-frames.patch b/feeds/rtkmipsel/mac80211/patches/341-mac80211-parse-VHT-info-in-injected-frames.patch new file mode 100644 index 000000000..ac1f2517f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/341-mac80211-parse-VHT-info-in-injected-frames.patch @@ -0,0 +1,65 @@ +From: Lorenzo Bianconi +Date: Tue, 23 Feb 2016 15:43:35 +0100 +Subject: [PATCH] mac80211: parse VHT info in injected frames + +Add VHT radiotap parsing support to ieee80211_parse_tx_radiotap(). +That capability has been tested using a d-link dir-860l rev b1 running +OpenWrt trunk and mt76 driver + +Signed-off-by: Lorenzo Bianconi +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1690,6 +1690,8 @@ static bool ieee80211_parse_tx_radiotap( + u8 rate_retries = 0; + u16 rate_flags = 0; + u8 mcs_known, mcs_flags, mcs_bw; ++ u16 vht_known; ++ u8 vht_mcs = 0, vht_nss = 0; + int i; + + info->flags |= IEEE80211_TX_INTFL_DONT_ENCRYPT | +@@ -1771,6 +1773,32 @@ static bool ieee80211_parse_tx_radiotap( + rate_flags |= IEEE80211_TX_RC_40_MHZ_WIDTH; + break; + ++ case IEEE80211_RADIOTAP_VHT: ++ vht_known = get_unaligned_le16(iterator.this_arg); ++ rate_found = true; ++ ++ rate_flags = IEEE80211_TX_RC_VHT_MCS; ++ if ((vht_known & IEEE80211_RADIOTAP_VHT_KNOWN_GI) && ++ (iterator.this_arg[2] & ++ IEEE80211_RADIOTAP_VHT_FLAG_SGI)) ++ rate_flags |= IEEE80211_TX_RC_SHORT_GI; ++ if (vht_known & ++ IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH) { ++ if (iterator.this_arg[3] == 1) ++ rate_flags |= ++ IEEE80211_TX_RC_40_MHZ_WIDTH; ++ else if (iterator.this_arg[3] == 4) ++ rate_flags |= ++ IEEE80211_TX_RC_80_MHZ_WIDTH; ++ else if (iterator.this_arg[3] == 11) ++ rate_flags |= ++ IEEE80211_TX_RC_160_MHZ_WIDTH; ++ } ++ ++ vht_mcs = iterator.this_arg[4] >> 4; ++ vht_nss = iterator.this_arg[4] & 0xF; ++ break; ++ + /* + * Please update the file + * Documentation/networking/mac80211-injection.txt +@@ -1796,6 +1824,9 @@ static bool ieee80211_parse_tx_radiotap( + + if (rate_flags & IEEE80211_TX_RC_MCS) { + info->control.rates[0].idx = rate; ++ } else if (rate_flags & IEEE80211_TX_RC_VHT_MCS) { ++ ieee80211_rate_set_vht(info->control.rates, vht_mcs, ++ vht_nss); + } else { + for (i = 0; i < sband->n_bitrates; i++) { + if (rate * 5 != sband->bitrates[i].bitrate) diff --git a/feeds/rtkmipsel/mac80211/patches/342-mac80211-do-not-pass-injected-frames-without-a-valid.patch b/feeds/rtkmipsel/mac80211/patches/342-mac80211-do-not-pass-injected-frames-without-a-valid.patch new file mode 100644 index 000000000..d7452c29c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/342-mac80211-do-not-pass-injected-frames-without-a-valid.patch @@ -0,0 +1,23 @@ +From: Felix Fietkau +Date: Wed, 2 Mar 2016 15:51:40 +0100 +Subject: [PATCH] mac80211: do not pass injected frames without a valid rate to + the driver + +Fall back to rate control if the requested bitrate was not found. + +Fixes: dfdfc2beb0dd ("mac80211: Parse legacy and HT rate in injected frames") +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/tx.c ++++ b/net/mac80211/tx.c +@@ -1837,6 +1837,9 @@ static bool ieee80211_parse_tx_radiotap( + } + } + ++ if (info->control.rates[0].idx < 0) ++ info->control.flags &= ~IEEE80211_TX_CTRL_RATE_INJECT; ++ + info->control.rates[0].flags = rate_flags; + info->control.rates[0].count = min_t(u8, rate_retries + 1, + local->hw.max_rate_tries); diff --git a/feeds/rtkmipsel/mac80211/patches/343-mac80211-minstrel_ht-improve-sample-rate-skip-logic.patch b/feeds/rtkmipsel/mac80211/patches/343-mac80211-minstrel_ht-improve-sample-rate-skip-logic.patch new file mode 100644 index 000000000..55ff81700 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/343-mac80211-minstrel_ht-improve-sample-rate-skip-logic.patch @@ -0,0 +1,77 @@ +From: Felix Fietkau +Date: Thu, 3 Mar 2016 23:20:06 +0100 +Subject: [PATCH] mac80211: minstrel_ht: improve sample rate skip logic + +There were a few issues that were slowing down the process of finding +the optimal rate, especially on devices with multi-rate retry +limitations: + +When max_tp_rate[0] was slower than max_tp_rate[1], the code did not +sample max_tp_rate[1], which would often allow it to switch places with +max_tp_rate[0] (e.g. if only the first sampling attempts were bad, but the +rate is otherwise good). + +Also, sample attempts of rates between max_tp_rate[0] and [1] were being +ignored in this case, because the code only checked if the rate was +slower than [1]. + +Fix this by checking against the fastest / second fastest max_tp_rate +instead of assuming a specific order between the two. + +In my tests this patch significantly reduces the time until minstrel_ht +finds the optimal rate right after assoc + +Signed-off-by: Felix Fietkau +--- + +--- a/net/mac80211/rc80211_minstrel_ht.c ++++ b/net/mac80211/rc80211_minstrel_ht.c +@@ -958,6 +958,7 @@ minstrel_get_sample_rate(struct minstrel + struct minstrel_rate_stats *mrs; + struct minstrel_mcs_group_data *mg; + unsigned int sample_dur, sample_group, cur_max_tp_streams; ++ int tp_rate1, tp_rate2; + int sample_idx = 0; + + if (mi->sample_wait > 0) { +@@ -979,14 +980,22 @@ minstrel_get_sample_rate(struct minstrel + mrs = &mg->rates[sample_idx]; + sample_idx += sample_group * MCS_GROUP_RATES; + ++ /* Set tp_rate1, tp_rate2 to the highest / second highest max_tp_rate */ ++ if (minstrel_get_duration(mi->max_tp_rate[0]) > ++ minstrel_get_duration(mi->max_tp_rate[1])) { ++ tp_rate1 = mi->max_tp_rate[1]; ++ tp_rate2 = mi->max_tp_rate[0]; ++ } else { ++ tp_rate1 = mi->max_tp_rate[0]; ++ tp_rate2 = mi->max_tp_rate[1]; ++ } ++ + /* + * Sampling might add some overhead (RTS, no aggregation) +- * to the frame. Hence, don't use sampling for the currently +- * used rates. ++ * to the frame. Hence, don't use sampling for the highest currently ++ * used highest throughput or probability rate. + */ +- if (sample_idx == mi->max_tp_rate[0] || +- sample_idx == mi->max_tp_rate[1] || +- sample_idx == mi->max_prob_rate) ++ if (sample_idx == mi->max_tp_rate[0] || sample_idx == mi->max_prob_rate) + return -1; + + /* +@@ -1001,10 +1010,10 @@ minstrel_get_sample_rate(struct minstrel + * if the link is working perfectly. + */ + +- cur_max_tp_streams = minstrel_mcs_groups[mi->max_tp_rate[0] / ++ cur_max_tp_streams = minstrel_mcs_groups[tp_rate1 / + MCS_GROUP_RATES].streams; + sample_dur = minstrel_get_duration(sample_idx); +- if (sample_dur >= minstrel_get_duration(mi->max_tp_rate[1]) && ++ if (sample_dur >= minstrel_get_duration(tp_rate2) && + (cur_max_tp_streams - 1 < + minstrel_mcs_groups[sample_group].streams || + sample_dur >= minstrel_get_duration(mi->max_prob_rate))) { diff --git a/feeds/rtkmipsel/mac80211/patches/344-0008-brcmfmac-use-device-memsize-config-from-fw-if-define.patch b/feeds/rtkmipsel/mac80211/patches/344-0008-brcmfmac-use-device-memsize-config-from-fw-if-define.patch new file mode 100644 index 000000000..3de0f64d5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/344-0008-brcmfmac-use-device-memsize-config-from-fw-if-define.patch @@ -0,0 +1,73 @@ +From: Hante Meuleman +Date: Wed, 17 Feb 2016 11:26:57 +0100 +Subject: [PATCH] brcmfmac: use device memsize config from fw if defined + +Newer type pcie devices have memory which get shared between fw and +hw. The division of this memory is done firmware compile time. As a +result the ramsize as used by driver needs to be adjusted for this. +This is done by reading the memory size from the firmware. + +Reviewed-by: Arend Van Spriel +Reviewed-by: Franky (Zhenhui) Lin +Reviewed-by: Pieter-Paul Giesberts +Signed-off-by: Hante Meuleman +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +@@ -207,6 +207,10 @@ static struct brcmf_firmware_mapping brc + #define BRCMF_PCIE_CFGREG_REG_BAR3_CONFIG 0x4F4 + #define BRCMF_PCIE_LINK_STATUS_CTRL_ASPM_ENAB 3 + ++/* Magic number at a magic location to find RAM size */ ++#define BRCMF_RAMSIZE_MAGIC 0x534d4152 /* SMAR */ ++#define BRCMF_RAMSIZE_OFFSET 0x6c ++ + + struct brcmf_pcie_console { + u32 base_addr; +@@ -1412,6 +1416,28 @@ static const struct brcmf_bus_ops brcmf_ + }; + + ++static void ++brcmf_pcie_adjust_ramsize(struct brcmf_pciedev_info *devinfo, u8 *data, ++ u32 data_len) ++{ ++ __le32 *field; ++ u32 newsize; ++ ++ if (data_len < BRCMF_RAMSIZE_OFFSET + 8) ++ return; ++ ++ field = (__le32 *)&data[BRCMF_RAMSIZE_OFFSET]; ++ if (le32_to_cpup(field) != BRCMF_RAMSIZE_MAGIC) ++ return; ++ field++; ++ newsize = le32_to_cpup(field); ++ ++ brcmf_dbg(PCIE, "Found ramsize info in FW, adjusting to 0x%x\n", ++ newsize); ++ devinfo->ci->ramsize = newsize; ++} ++ ++ + static int + brcmf_pcie_init_share_ram_info(struct brcmf_pciedev_info *devinfo, + u32 sharedram_addr) +@@ -1694,6 +1720,13 @@ static void brcmf_pcie_setup(struct devi + + brcmf_pcie_attach(devinfo); + ++ /* Some of the firmwares have the size of the memory of the device ++ * defined inside the firmware. This is because part of the memory in ++ * the device is shared and the devision is determined by FW. Parse ++ * the firmware and adjust the chip memory size now. ++ */ ++ brcmf_pcie_adjust_ramsize(devinfo, (u8 *)fw->data, fw->size); ++ + ret = brcmf_pcie_download_fw_nvram(devinfo, fw, nvram, nvram_len); + if (ret) + goto fail; diff --git a/feeds/rtkmipsel/mac80211/patches/344-0009-brcmfmac-use-bar1-window-size-as-provided-by-pci-sub.patch b/feeds/rtkmipsel/mac80211/patches/344-0009-brcmfmac-use-bar1-window-size-as-provided-by-pci-sub.patch new file mode 100644 index 000000000..ca03ffe4b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/344-0009-brcmfmac-use-bar1-window-size-as-provided-by-pci-sub.patch @@ -0,0 +1,58 @@ +From: Hante Meuleman +Date: Wed, 17 Feb 2016 11:26:58 +0100 +Subject: [PATCH] brcmfmac: use bar1 window size as provided by pci subsystem + +The PCIE bar1 window size is specified by chip. Currently the +ioremap of bar1 was using a define which always matched the size +of bar1, but newer chips can have a different bar1 sizes. With +this patch the ioremap will be called with the by chip provided +window size. + +Reviewed-by: Arend Van Spriel +Reviewed-by: Franky (Zhenhui) Lin +Reviewed-by: Pieter-Paul Giesberts +Signed-off-by: Hante Meuleman +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +@@ -72,7 +72,6 @@ static struct brcmf_firmware_mapping brc + + #define BRCMF_PCIE_FW_UP_TIMEOUT 2000 /* msec */ + +-#define BRCMF_PCIE_TCM_MAP_SIZE (4096 * 1024) + #define BRCMF_PCIE_REG_MAP_SIZE (32 * 1024) + + /* backplane addres space accessed by BAR0 */ +@@ -252,7 +251,6 @@ struct brcmf_pciedev_info { + char nvram_name[BRCMF_FW_NAME_LEN]; + void __iomem *regs; + void __iomem *tcm; +- u32 tcm_size; + u32 ram_base; + u32 ram_size; + struct brcmf_chip *ci; +@@ -1592,8 +1590,7 @@ static int brcmf_pcie_get_resource(struc + } + + devinfo->regs = ioremap_nocache(bar0_addr, BRCMF_PCIE_REG_MAP_SIZE); +- devinfo->tcm = ioremap_nocache(bar1_addr, BRCMF_PCIE_TCM_MAP_SIZE); +- devinfo->tcm_size = BRCMF_PCIE_TCM_MAP_SIZE; ++ devinfo->tcm = ioremap_nocache(bar1_addr, bar1_size); + + if (!devinfo->regs || !devinfo->tcm) { + brcmf_err("ioremap() failed (%p,%p)\n", devinfo->regs, +@@ -1602,8 +1599,9 @@ static int brcmf_pcie_get_resource(struc + } + brcmf_dbg(PCIE, "Phys addr : reg space = %p base addr %#016llx\n", + devinfo->regs, (unsigned long long)bar0_addr); +- brcmf_dbg(PCIE, "Phys addr : mem space = %p base addr %#016llx\n", +- devinfo->tcm, (unsigned long long)bar1_addr); ++ brcmf_dbg(PCIE, "Phys addr : mem space = %p base addr %#016llx size 0x%x\n", ++ devinfo->tcm, (unsigned long long)bar1_addr, ++ (unsigned int)bar1_size); + + return 0; + } diff --git a/feeds/rtkmipsel/mac80211/patches/344-0010-brcmfmac-add-support-for-the-PCIE-4366c0-chip.patch b/feeds/rtkmipsel/mac80211/patches/344-0010-brcmfmac-add-support-for-the-PCIE-4366c0-chip.patch new file mode 100644 index 000000000..e4a8f305c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/344-0010-brcmfmac-add-support-for-the-PCIE-4366c0-chip.patch @@ -0,0 +1,34 @@ +From: Hante Meuleman +Date: Wed, 17 Feb 2016 11:26:59 +0100 +Subject: [PATCH] brcmfmac: add support for the PCIE 4366c0 chip + +A newer version of the 4366 PCIE chip has been released. Add +support for this version of the chip. + +Reviewed-by: Arend Van Spriel +Reviewed-by: Pieter-Paul Giesberts +Signed-off-by: Hante Meuleman +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +@@ -53,6 +53,7 @@ BRCMF_FW_NVRAM_DEF(4358, "brcmfmac4358-p + BRCMF_FW_NVRAM_DEF(4359, "brcmfmac4359-pcie.bin", "brcmfmac4359-pcie.txt"); + BRCMF_FW_NVRAM_DEF(4365B, "brcmfmac4365b-pcie.bin", "brcmfmac4365b-pcie.txt"); + BRCMF_FW_NVRAM_DEF(4366B, "brcmfmac4366b-pcie.bin", "brcmfmac4366b-pcie.txt"); ++BRCMF_FW_NVRAM_DEF(4366C, "brcmfmac4366c-pcie.bin", "brcmfmac4366c-pcie.txt"); + BRCMF_FW_NVRAM_DEF(4371, "brcmfmac4371-pcie.bin", "brcmfmac4371-pcie.txt"); + + static struct brcmf_firmware_mapping brcmf_pcie_fwnames[] = { +@@ -66,7 +67,8 @@ static struct brcmf_firmware_mapping brc + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4358_CHIP_ID, 0xFFFFFFFF, 4358), + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4359_CHIP_ID, 0xFFFFFFFF, 4359), + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4365_CHIP_ID, 0xFFFFFFFF, 4365B), +- BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4366_CHIP_ID, 0xFFFFFFFF, 4366B), ++ BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4366_CHIP_ID, 0x0000000F, 4366B), ++ BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4366_CHIP_ID, 0xFFFFFFF0, 4366C), + BRCMF_FW_NVRAM_ENTRY(BRCM_CC_4371_CHIP_ID, 0xFFFFFFFF, 4371), + }; + diff --git a/feeds/rtkmipsel/mac80211/patches/344-0012-brcmfmac-increase-timeout-for-tx-eapol.patch b/feeds/rtkmipsel/mac80211/patches/344-0012-brcmfmac-increase-timeout-for-tx-eapol.patch new file mode 100644 index 000000000..c529ff2c0 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/344-0012-brcmfmac-increase-timeout-for-tx-eapol.patch @@ -0,0 +1,30 @@ +From: Hante Meuleman +Date: Wed, 17 Feb 2016 11:27:01 +0100 +Subject: [PATCH] brcmfmac: increase timeout for tx eapol + +When keys get set and updated this has to happen after eapol got +transmitted (without key or old key) before the key can be updated. +To make sure the order of sending eapol and configuring key is done +correctly a timeout for tx of eapol is applied. This timeout is set +to 50 msec, which is not always enough. Especially in AP mode and +key updates the timeout may need to be much longer because client(s) +can be in powersave. Increase the timeout from 50 to 950 msec. + +Reviewed-by: Arend Van Spriel +Reviewed-by: Pieter-Paul Giesberts +Signed-off-by: Hante Meuleman +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +@@ -40,7 +40,7 @@ MODULE_AUTHOR("Broadcom Corporation"); + MODULE_DESCRIPTION("Broadcom 802.11 wireless LAN fullmac driver."); + MODULE_LICENSE("Dual BSD/GPL"); + +-#define MAX_WAIT_FOR_8021X_TX msecs_to_jiffies(50) ++#define MAX_WAIT_FOR_8021X_TX msecs_to_jiffies(950) + + /* AMPDU rx reordering definitions */ + #define BRCMF_RXREORDER_FLOWID_OFFSET 0 diff --git a/feeds/rtkmipsel/mac80211/patches/345-brcmfmac-insert-default-boardrev-in-nvram-data-if-mi.patch b/feeds/rtkmipsel/mac80211/patches/345-brcmfmac-insert-default-boardrev-in-nvram-data-if-mi.patch new file mode 100644 index 000000000..f293401ca --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/345-brcmfmac-insert-default-boardrev-in-nvram-data-if-mi.patch @@ -0,0 +1,114 @@ +From: Hante Meuleman +Date: Mon, 11 Apr 2016 11:35:23 +0200 +Subject: [PATCH] brcmfmac: insert default boardrev in nvram data if + missing + +Some nvram files/stores come without the boardrev information, +but firmware requires this to be set. When not found in nvram then +add a default boardrev string to the nvram data. + +Reported-by: Rafal Milecki +Reviewed-by: Arend Van Spriel +Reviewed-by: Franky (Zhenhui) Lin +Reviewed-by: Pieter-Paul Giesberts +Signed-off-by: Hante Meuleman +Signed-off-by: Arend van Spriel +Signed-off-by: Kalle Valo +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +@@ -29,6 +29,7 @@ + #define BRCMF_FW_MAX_NVRAM_SIZE 64000 + #define BRCMF_FW_NVRAM_DEVPATH_LEN 19 /* devpath0=pcie/1/4/ */ + #define BRCMF_FW_NVRAM_PCIEDEV_LEN 10 /* pcie/1/4/ + \0 */ ++#define BRCMF_FW_DEFAULT_BOARDREV "boardrev=0xff" + + enum nvram_parser_state { + IDLE, +@@ -51,6 +52,7 @@ enum nvram_parser_state { + * @entry: start position of key,value entry. + * @multi_dev_v1: detect pcie multi device v1 (compressed). + * @multi_dev_v2: detect pcie multi device v2. ++ * @boardrev_found: nvram contains boardrev information. + */ + struct nvram_parser { + enum nvram_parser_state state; +@@ -63,6 +65,7 @@ struct nvram_parser { + u32 entry; + bool multi_dev_v1; + bool multi_dev_v2; ++ bool boardrev_found; + }; + + /** +@@ -125,6 +128,8 @@ static enum nvram_parser_state brcmf_nvr + nvp->multi_dev_v1 = true; + if (strncmp(&nvp->data[nvp->entry], "pcie/", 5) == 0) + nvp->multi_dev_v2 = true; ++ if (strncmp(&nvp->data[nvp->entry], "boardrev", 8) == 0) ++ nvp->boardrev_found = true; + } else if (!is_nvram_char(c) || c == ' ') { + brcmf_dbg(INFO, "warning: ln=%d:col=%d: '=' expected, skip invalid key entry\n", + nvp->line, nvp->column); +@@ -284,6 +289,8 @@ static void brcmf_fw_strip_multi_v1(stru + while (i < nvp->nvram_len) { + if ((nvp->nvram[i] - '0' == id) && (nvp->nvram[i + 1] == ':')) { + i += 2; ++ if (strncmp(&nvp->nvram[i], "boardrev", 8) == 0) ++ nvp->boardrev_found = true; + while (nvp->nvram[i] != 0) { + nvram[j] = nvp->nvram[i]; + i++; +@@ -335,6 +342,8 @@ static void brcmf_fw_strip_multi_v2(stru + while (i < nvp->nvram_len - len) { + if (strncmp(&nvp->nvram[i], prefix, len) == 0) { + i += len; ++ if (strncmp(&nvp->nvram[i], "boardrev", 8) == 0) ++ nvp->boardrev_found = true; + while (nvp->nvram[i] != 0) { + nvram[j] = nvp->nvram[i]; + i++; +@@ -356,6 +365,18 @@ fail: + nvp->nvram_len = 0; + } + ++static void brcmf_fw_add_defaults(struct nvram_parser *nvp) ++{ ++ if (nvp->boardrev_found) ++ return; ++ ++ memcpy(&nvp->nvram[nvp->nvram_len], &BRCMF_FW_DEFAULT_BOARDREV, ++ strlen(BRCMF_FW_DEFAULT_BOARDREV)); ++ nvp->nvram_len += strlen(BRCMF_FW_DEFAULT_BOARDREV); ++ nvp->nvram[nvp->nvram_len] = '\0'; ++ nvp->nvram_len++; ++} ++ + /* brcmf_nvram_strip :Takes a buffer of "=\n" lines read from a fil + * and ending in a NUL. Removes carriage returns, empty lines, comment lines, + * and converts newlines to NULs. Shortens buffer as needed and pads with NULs. +@@ -377,16 +398,21 @@ static void *brcmf_fw_nvram_strip(const + if (nvp.state == END) + break; + } +- if (nvp.multi_dev_v1) ++ if (nvp.multi_dev_v1) { ++ nvp.boardrev_found = false; + brcmf_fw_strip_multi_v1(&nvp, domain_nr, bus_nr); +- else if (nvp.multi_dev_v2) ++ } else if (nvp.multi_dev_v2) { ++ nvp.boardrev_found = false; + brcmf_fw_strip_multi_v2(&nvp, domain_nr, bus_nr); ++ } + + if (nvp.nvram_len == 0) { + kfree(nvp.nvram); + return NULL; + } + ++ brcmf_fw_add_defaults(&nvp); ++ + pad = nvp.nvram_len; + *new_length = roundup(nvp.nvram_len + 1, 4); + while (pad != *new_length) { diff --git a/feeds/rtkmipsel/mac80211/patches/400-ath_move_debug_code.patch b/feeds/rtkmipsel/mac80211/patches/400-ath_move_debug_code.patch new file mode 100644 index 000000000..72e9a4122 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/400-ath_move_debug_code.patch @@ -0,0 +1,30 @@ +--- a/drivers/net/wireless/ath/Makefile ++++ b/drivers/net/wireless/ath/Makefile +@@ -13,10 +13,10 @@ ath-objs := main.o \ + regd.o \ + hw.o \ + key.o \ ++ debug.o \ + dfs_pattern_detector.o \ + dfs_pri_detector.o + +-ath-$(CPTCFG_ATH_DEBUG) += debug.o + ath-$(CPTCFG_ATH_TRACEPOINTS) += trace.o + + ccflags-y += -D__CHECK_ENDIAN__ +--- a/drivers/net/wireless/ath/ath.h ++++ b/drivers/net/wireless/ath/ath.h +@@ -318,13 +318,6 @@ void _ath_dbg(struct ath_common *common, + #endif /* CPTCFG_ATH_DEBUG */ + + /** Returns string describing opmode, or NULL if unknown mode. */ +-#ifdef CPTCFG_ATH_DEBUG + const char *ath_opmode_to_string(enum nl80211_iftype opmode); +-#else +-static inline const char *ath_opmode_to_string(enum nl80211_iftype opmode) +-{ +- return "UNKNOWN"; +-} +-#endif + + #endif /* ATH_H */ diff --git a/feeds/rtkmipsel/mac80211/patches/401-ath9k_blink_default.patch b/feeds/rtkmipsel/mac80211/patches/401-ath9k_blink_default.patch new file mode 100644 index 000000000..4a997f1e0 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/401-ath9k_blink_default.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -45,7 +45,7 @@ int ath9k_modparam_nohwcrypt; + module_param_named(nohwcrypt, ath9k_modparam_nohwcrypt, int, 0444); + MODULE_PARM_DESC(nohwcrypt, "Disable hardware encryption"); + +-int ath9k_led_blink; ++int ath9k_led_blink = 1; + module_param_named(blink, ath9k_led_blink, int, 0444); + MODULE_PARM_DESC(blink, "Enable LED blink on activity"); + diff --git a/feeds/rtkmipsel/mac80211/patches/402-ath_regd_optional.patch b/feeds/rtkmipsel/mac80211/patches/402-ath_regd_optional.patch new file mode 100644 index 000000000..735135307 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/402-ath_regd_optional.patch @@ -0,0 +1,69 @@ +--- a/drivers/net/wireless/ath/regd.c ++++ b/drivers/net/wireless/ath/regd.c +@@ -341,6 +341,10 @@ ath_reg_apply_beaconing_flags(struct wip + struct ieee80211_channel *ch; + unsigned int i; + ++#ifdef CPTCFG_ATH_USER_REGD ++ return; ++#endif ++ + for (band = 0; band < IEEE80211_NUM_BANDS; band++) { + if (!wiphy->bands[band]) + continue; +@@ -374,6 +378,10 @@ ath_reg_apply_ir_flags(struct wiphy *wip + { + struct ieee80211_supported_band *sband; + ++#ifdef CPTCFG_ATH_USER_REGD ++ return; ++#endif ++ + sband = wiphy->bands[IEEE80211_BAND_2GHZ]; + if (!sband) + return; +@@ -402,6 +410,10 @@ static void ath_reg_apply_radar_flags(st + struct ieee80211_channel *ch; + unsigned int i; + ++#ifdef CPTCFG_ATH_USER_REGD ++ return; ++#endif ++ + if (!wiphy->bands[IEEE80211_BAND_5GHZ]) + return; + +@@ -633,6 +645,11 @@ ath_regd_init_wiphy(struct ath_regulator + const struct ieee80211_regdomain *regd; + + wiphy->reg_notifier = reg_notifier; ++ ++#ifdef CPTCFG_ATH_USER_REGD ++ return 0; ++#endif ++ + wiphy->regulatory_flags |= REGULATORY_STRICT_REG | + REGULATORY_CUSTOM_REG; + +--- a/drivers/net/wireless/ath/Kconfig ++++ b/drivers/net/wireless/ath/Kconfig +@@ -23,6 +23,9 @@ config WLAN_VENDOR_ATH + + if WLAN_VENDOR_ATH + ++config ATH_USER_REGD ++ bool "Do not enforce EEPROM regulatory restrictions" ++ + config ATH_DEBUG + bool "Atheros wireless debugging" + ---help--- +--- a/.local-symbols ++++ b/.local-symbols +@@ -125,6 +125,7 @@ ADM8211= + ATH_COMMON= + WLAN_VENDOR_ATH= + ATH_DEBUG= ++ATH_USER_REGD= + ATH_TRACEPOINTS= + ATH_REG_DYNAMIC_USER_REG_HINTS= + ATH_REG_DYNAMIC_USER_CERT_TESTING= diff --git a/feeds/rtkmipsel/mac80211/patches/403-world_regd_fixup.patch b/feeds/rtkmipsel/mac80211/patches/403-world_regd_fixup.patch new file mode 100644 index 000000000..2b04309ce --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/403-world_regd_fixup.patch @@ -0,0 +1,84 @@ +--- a/drivers/net/wireless/ath/regd.c ++++ b/drivers/net/wireless/ath/regd.c +@@ -43,7 +43,8 @@ static int __ath_regd_init(struct ath_re + NL80211_RRF_NO_OFDM) + + /* We allow IBSS on these on a case by case basis by regulatory domain */ +-#define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5350+10, 80, 0, 30,\ ++#define ATH9K_5GHZ_5150_5350 REG_RULE(5150-10, 5240+10, 80, 0, 30, 0),\ ++ REG_RULE(5260-10, 5350+10, 80, 0, 30,\ + NL80211_RRF_NO_IR) + #define ATH9K_5GHZ_5470_5850 REG_RULE(5470-10, 5850+10, 80, 0, 30,\ + NL80211_RRF_NO_IR) +@@ -61,57 +62,56 @@ static int __ath_regd_init(struct ath_re + #define ATH9K_5GHZ_NO_MIDBAND ATH9K_5GHZ_5150_5350, \ + ATH9K_5GHZ_5725_5850 + ++#define REGD_RULES(...) \ ++ .reg_rules = { __VA_ARGS__ }, \ ++ .n_reg_rules = ARRAY_SIZE(((struct ieee80211_reg_rule[]) { __VA_ARGS__ })) ++ + /* Can be used for: + * 0x60, 0x61, 0x62 */ + static const struct ieee80211_regdomain ath_world_regdom_60_61_62 = { +- .n_reg_rules = 5, + .alpha2 = "99", +- .reg_rules = { ++ REGD_RULES( + ATH9K_2GHZ_ALL, + ATH9K_5GHZ_ALL, +- } ++ ) + }; + + /* Can be used by 0x63 and 0x65 */ + static const struct ieee80211_regdomain ath_world_regdom_63_65 = { +- .n_reg_rules = 4, + .alpha2 = "99", +- .reg_rules = { ++ REGD_RULES( + ATH9K_2GHZ_CH01_11, + ATH9K_2GHZ_CH12_13, + ATH9K_5GHZ_NO_MIDBAND, +- } ++ ) + }; + + /* Can be used by 0x64 only */ + static const struct ieee80211_regdomain ath_world_regdom_64 = { +- .n_reg_rules = 3, + .alpha2 = "99", +- .reg_rules = { ++ REGD_RULES( + ATH9K_2GHZ_CH01_11, + ATH9K_5GHZ_NO_MIDBAND, +- } ++ ) + }; + + /* Can be used by 0x66 and 0x69 */ + static const struct ieee80211_regdomain ath_world_regdom_66_69 = { +- .n_reg_rules = 3, + .alpha2 = "99", +- .reg_rules = { ++ REGD_RULES( + ATH9K_2GHZ_CH01_11, + ATH9K_5GHZ_ALL, +- } ++ ) + }; + + /* Can be used by 0x67, 0x68, 0x6A and 0x6C */ + static const struct ieee80211_regdomain ath_world_regdom_67_68_6A_6C = { +- .n_reg_rules = 4, + .alpha2 = "99", +- .reg_rules = { ++ REGD_RULES( + ATH9K_2GHZ_CH01_11, + ATH9K_2GHZ_CH12_13, + ATH9K_5GHZ_ALL, +- } ++ ) + }; + + static bool dynamic_country_user_possible(struct ath_regulatory *reg) diff --git a/feeds/rtkmipsel/mac80211/patches/404-regd_no_assoc_hints.patch b/feeds/rtkmipsel/mac80211/patches/404-regd_no_assoc_hints.patch new file mode 100644 index 000000000..1ef55456c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/404-regd_no_assoc_hints.patch @@ -0,0 +1,19 @@ +--- a/net/wireless/reg.c ++++ b/net/wireless/reg.c +@@ -2411,6 +2411,8 @@ void regulatory_hint_country_ie(struct w + enum environment_cap env = ENVIRON_ANY; + struct regulatory_request *request = NULL, *lr; + ++ return; ++ + /* IE len must be evenly divisible by 2 */ + if (country_ie_len & 0x01) + return; +@@ -2617,6 +2619,7 @@ static void restore_regulatory_settings( + + void regulatory_hint_disconnect(void) + { ++ return; + pr_debug("All devices are disconnected, going to restore regulatory settings\n"); + restore_regulatory_settings(false); + } diff --git a/feeds/rtkmipsel/mac80211/patches/405-ath_regd_us.patch b/feeds/rtkmipsel/mac80211/patches/405-ath_regd_us.patch new file mode 100644 index 000000000..cc5587780 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/405-ath_regd_us.patch @@ -0,0 +1,26 @@ +--- a/drivers/net/wireless/ath/regd_common.h ++++ b/drivers/net/wireless/ath/regd_common.h +@@ -32,6 +32,7 @@ enum EnumRd { + FCC2_WORLD = 0x21, + FCC2_ETSIC = 0x22, + FCC6_WORLD = 0x23, ++ FCC3_FCCA_2 = 0x2A, + FRANCE_RES = 0x31, + FCC3_FCCA = 0x3A, + FCC3_WORLD = 0x3B, +@@ -167,6 +168,7 @@ static struct reg_dmn_pair_mapping regDo + {FCC2_WORLD, CTL_FCC, CTL_ETSI}, + {FCC2_ETSIC, CTL_FCC, CTL_ETSI}, + {FCC3_FCCA, CTL_FCC, CTL_FCC}, ++ {FCC3_FCCA_2, CTL_FCC, CTL_FCC}, + {FCC3_WORLD, CTL_FCC, CTL_ETSI}, + {FCC4_FCCA, CTL_FCC, CTL_FCC}, + {FCC5_FCCA, CTL_FCC, CTL_FCC}, +@@ -463,6 +465,7 @@ static struct country_code_to_enum_rd al + {CTRY_UAE, NULL1_WORLD, "AE"}, + {CTRY_UNITED_KINGDOM, ETSI1_WORLD, "GB"}, + {CTRY_UNITED_STATES, FCC3_FCCA, "US"}, ++ {CTRY_UNITED_STATES, FCC3_FCCA_2, "US"}, + /* This "PS" is for US public safety actually... to support this we + * would need to assign new special alpha2 to CRDA db as with the world + * regdomain and use another alpha2 */ diff --git a/feeds/rtkmipsel/mac80211/patches/406-ath_relax_default_regd.patch b/feeds/rtkmipsel/mac80211/patches/406-ath_relax_default_regd.patch new file mode 100644 index 000000000..6336f1f37 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/406-ath_relax_default_regd.patch @@ -0,0 +1,47 @@ +--- a/drivers/net/wireless/ath/regd.c ++++ b/drivers/net/wireless/ath/regd.c +@@ -114,10 +114,22 @@ static const struct ieee80211_regdomain + ) + }; + ++static u16 ath_regd_get_eepromRD(struct ath_regulatory *reg) ++{ ++ return reg->current_rd & ~WORLDWIDE_ROAMING_FLAG; ++} ++ ++static bool is_default_regd(struct ath_regulatory *reg) ++{ ++ return ath_regd_get_eepromRD(reg) == CTRY_DEFAULT; ++} ++ + static bool dynamic_country_user_possible(struct ath_regulatory *reg) + { + if (config_enabled(CPTCFG_ATH_REG_DYNAMIC_USER_CERT_TESTING)) + return true; ++ if (is_default_regd(reg)) ++ return true; + + switch (reg->country_code) { + case CTRY_UNITED_STATES: +@@ -202,11 +214,6 @@ static inline bool is_wwr_sku(u16 regd) + (regd == WORLD)); + } + +-static u16 ath_regd_get_eepromRD(struct ath_regulatory *reg) +-{ +- return reg->current_rd & ~WORLDWIDE_ROAMING_FLAG; +-} +- + bool ath_is_world_regd(struct ath_regulatory *reg) + { + return is_wwr_sku(ath_regd_get_eepromRD(reg)); +@@ -650,6 +657,9 @@ ath_regd_init_wiphy(struct ath_regulator + return 0; + #endif + ++ if (is_default_regd(reg)) ++ return 0; ++ + wiphy->regulatory_flags |= REGULATORY_STRICT_REG | + REGULATORY_CUSTOM_REG; + diff --git a/feeds/rtkmipsel/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch b/feeds/rtkmipsel/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch new file mode 100644 index 000000000..1a6248495 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/410-ath9k_allow_adhoc_and_ap.patch @@ -0,0 +1,10 @@ +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -722,6 +722,7 @@ static const struct ieee80211_iface_limi + BIT(NL80211_IFTYPE_AP) }, + { .max = 1, .types = BIT(NL80211_IFTYPE_P2P_CLIENT) | + BIT(NL80211_IFTYPE_P2P_GO) }, ++ { .max = 1, .types = BIT(NL80211_IFTYPE_ADHOC) }, + }; + + static const struct ieee80211_iface_limit wds_limits[] = { diff --git a/feeds/rtkmipsel/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch b/feeds/rtkmipsel/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch new file mode 100644 index 000000000..2a5ab3d42 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/411-ath5k_allow_adhoc_and_ap.patch @@ -0,0 +1,46 @@ +--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c ++++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c +@@ -86,13 +86,8 @@ ath5k_add_interface(struct ieee80211_hw + goto end; + } + +- /* Don't allow other interfaces if one ad-hoc is configured. +- * TODO: Fix the problems with ad-hoc and multiple other interfaces. +- * We would need to operate the HW in ad-hoc mode to allow TSF updates +- * for the IBSS, but this breaks with additional AP or STA interfaces +- * at the moment. */ +- if (ah->num_adhoc_vifs || +- (ah->nvifs && vif->type == NL80211_IFTYPE_ADHOC)) { ++ /* Don't allow more than one ad-hoc interface */ ++ if (ah->num_adhoc_vifs && vif->type == NL80211_IFTYPE_ADHOC) { + ATH5K_ERR(ah, "Only one single ad-hoc interface is allowed.\n"); + ret = -ELNRNG; + goto end; +--- a/drivers/net/wireless/ath/ath5k/base.c ++++ b/drivers/net/wireless/ath/ath5k/base.c +@@ -1965,7 +1965,7 @@ ath5k_beacon_send(struct ath5k_hw *ah) + } + + if ((ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs + +- ah->num_mesh_vifs > 1) || ++ ah->num_adhoc_vifs + ah->num_mesh_vifs > 1) || + ah->opmode == NL80211_IFTYPE_MESH_POINT) { + u64 tsf = ath5k_hw_get_tsf64(ah); + u32 tsftu = TSF_TO_TU(tsf); +@@ -2051,7 +2051,7 @@ ath5k_beacon_update_timers(struct ath5k_ + + intval = ah->bintval & AR5K_BEACON_PERIOD; + if (ah->opmode == NL80211_IFTYPE_AP && ah->num_ap_vifs +- + ah->num_mesh_vifs > 1) { ++ + ah->num_adhoc_vifs + ah->num_mesh_vifs > 1) { + intval /= ATH_BCBUF; /* staggered multi-bss beacons */ + if (intval < 15) + ATH5K_WARN(ah, "intval %u is too low, min 15\n", +@@ -2518,6 +2518,7 @@ static const struct ieee80211_iface_limi + BIT(NL80211_IFTYPE_MESH_POINT) | + #endif + BIT(NL80211_IFTYPE_AP) }, ++ { .max = 1, .types = BIT(NL80211_IFTYPE_ADHOC) }, + }; + + static const struct ieee80211_iface_combination if_comb = { diff --git a/feeds/rtkmipsel/mac80211/patches/420-ath5k_disable_fast_cc.patch b/feeds/rtkmipsel/mac80211/patches/420-ath5k_disable_fast_cc.patch new file mode 100644 index 000000000..414f49508 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/420-ath5k_disable_fast_cc.patch @@ -0,0 +1,18 @@ +--- a/drivers/net/wireless/ath/ath5k/reset.c ++++ b/drivers/net/wireless/ath/ath5k/reset.c +@@ -1154,6 +1154,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum + tsf_lo = 0; + mode = 0; + ++#if 0 + /* + * Sanity check for fast flag + * Fast channel change only available +@@ -1161,6 +1162,7 @@ ath5k_hw_reset(struct ath5k_hw *ah, enum + */ + if (fast && (ah->ah_radio != AR5K_RF2413) && + (ah->ah_radio != AR5K_RF5413)) ++#endif + fast = false; + + /* Disable sleep clock operation diff --git a/feeds/rtkmipsel/mac80211/patches/430-add_ath5k_platform.patch b/feeds/rtkmipsel/mac80211/patches/430-add_ath5k_platform.patch new file mode 100644 index 000000000..b213e2a81 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/430-add_ath5k_platform.patch @@ -0,0 +1,33 @@ +--- /dev/null ++++ b/include/linux/ath5k_platform.h +@@ -0,0 +1,30 @@ ++/* ++ * Copyright (c) 2008 Atheros Communications Inc. ++ * Copyright (c) 2009 Gabor Juhos ++ * Copyright (c) 2009 Imre Kaloz ++ * Copyright (c) 2010 Daniel Golle ++ * ++ * Permission to use, copy, modify, and/or distribute this software for any ++ * purpose with or without fee is hereby granted, provided that the above ++ * copyright notice and this permission notice appear in all copies. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES ++ * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF ++ * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ++ * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ++ * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF ++ * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. ++ */ ++ ++#ifndef _LINUX_ATH5K_PLATFORM_H ++#define _LINUX_ATH5K_PLATFORM_H ++ ++#define ATH5K_PLAT_EEP_MAX_WORDS 2048 ++ ++struct ath5k_platform_data { ++ u16 *eeprom_data; ++ u8 *macaddr; ++}; ++ ++#endif /* _LINUX_ATH5K_PLATFORM_H */ diff --git a/feeds/rtkmipsel/mac80211/patches/431-add_platform_eeprom_support_to_ath5k.patch b/feeds/rtkmipsel/mac80211/patches/431-add_platform_eeprom_support_to_ath5k.patch new file mode 100644 index 000000000..cdc9315cd --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/431-add_platform_eeprom_support_to_ath5k.patch @@ -0,0 +1,56 @@ +--- a/drivers/net/wireless/ath/ath5k/pci.c ++++ b/drivers/net/wireless/ath/ath5k/pci.c +@@ -21,6 +21,7 @@ + #include + #include + #include ++#include + #include "../ath.h" + #include "ath5k.h" + #include "debug.h" +@@ -72,7 +73,7 @@ static void ath5k_pci_read_cachesize(str + } + + /* +- * Read from eeprom ++ * Read from eeprom or platform_data + */ + static bool + ath5k_pci_eeprom_read(struct ath_common *common, u32 offset, u16 *data) +@@ -80,6 +81,19 @@ ath5k_pci_eeprom_read(struct ath_common + struct ath5k_hw *ah = (struct ath5k_hw *) common->ah; + u32 status, timeout; + ++ struct ath5k_platform_data *pdata = NULL; ++ ++ if (ah->pdev) ++ pdata = ah->pdev->dev.platform_data; ++ ++ if (pdata && pdata->eeprom_data && pdata->eeprom_data[61] == AR5K_EEPROM_MAGIC_VALUE) { ++ if (offset >= ATH5K_PLAT_EEP_MAX_WORDS) ++ return false; ++ ++ *data = pdata->eeprom_data[offset]; ++ return true; ++ } ++ + /* + * Initialize EEPROM access + */ +@@ -123,6 +137,16 @@ static int ath5k_pci_eeprom_read_mac(str + u16 data; + int octet; + ++ struct ath5k_platform_data *pdata = NULL; ++ ++ if (ah->pdev) ++ pdata = ah->pdev->dev.platform_data; ++ ++ if (pdata && pdata->macaddr) { ++ memcpy(mac, pdata->macaddr, ETH_ALEN); ++ return 0; ++ } ++ + AR5K_EEPROM_READ(0x20, data); + + for (offset = 0x1f, octet = 0, total = 0; offset >= 0x1d; offset--) { diff --git a/feeds/rtkmipsel/mac80211/patches/432-ath5k_add_pciids.patch b/feeds/rtkmipsel/mac80211/patches/432-ath5k_add_pciids.patch new file mode 100644 index 000000000..d82f8001d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/432-ath5k_add_pciids.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ath/ath5k/pci.c ++++ b/drivers/net/wireless/ath/ath5k/pci.c +@@ -48,6 +48,8 @@ static const struct pci_device_id ath5k_ + { PCI_VDEVICE(ATHEROS, 0x001b) }, /* 5413 Eagle */ + { PCI_VDEVICE(ATHEROS, 0x001c) }, /* PCI-E cards */ + { PCI_VDEVICE(ATHEROS, 0x001d) }, /* 2417 Nala */ ++ { PCI_VDEVICE(ATHEROS, 0xff16) }, /* 2413,2414 sx76x on lantiq_danube */ ++ { PCI_VDEVICE(ATHEROS, 0xff1a) }, /* 2417 arv45xx on lantiq_danube */ + { PCI_VDEVICE(ATHEROS, 0xff1b) }, /* AR5BXB63 */ + { 0 } + }; diff --git a/feeds/rtkmipsel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch b/feeds/rtkmipsel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch new file mode 100644 index 000000000..924b62e0d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/440-ath5k_channel_bw_debugfs.patch @@ -0,0 +1,143 @@ +This adds a bwmode debugfs file which can be used to set alternate +channel operating bandwidths. Only tested with AR5413 and only at +5 and 20 mhz channels. + +Signed-off-by: Pat Erley +--- +Other devices will need to be added to the switch in write_file_bwmode + +drivers/net/wireless/ath/ath5k/debug.c | 86 ++++++++++++++++++++++++++++++++ + 1 files changed, 86 insertions(+), 0 deletions(-) + +--- a/drivers/net/wireless/ath/ath5k/debug.c ++++ b/drivers/net/wireless/ath/ath5k/debug.c +@@ -823,6 +823,97 @@ static const struct file_operations fops + .llseek = default_llseek, + }; + ++/* debugfs: bwmode */ ++ ++static ssize_t read_file_bwmode(struct file *file, char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath5k_hw *ah = file->private_data; ++ char buf[15]; ++ unsigned int len = 0; ++ ++ int cur_ah_bwmode = ah->ah_bwmode_debug; ++ ++#define print_selected(MODE, LABEL) \ ++ if (cur_ah_bwmode == MODE) \ ++ len += snprintf(buf+len, sizeof(buf)-len, "[%s]", LABEL); \ ++ else \ ++ len += snprintf(buf+len, sizeof(buf)-len, "%s", LABEL); \ ++ len += snprintf(buf+len, sizeof(buf)-len, " "); ++ ++ print_selected(AR5K_BWMODE_5MHZ, "5"); ++ print_selected(AR5K_BWMODE_10MHZ, "10"); ++ print_selected(AR5K_BWMODE_DEFAULT, "20"); ++ print_selected(AR5K_BWMODE_40MHZ, "40"); ++#undef print_selected ++ ++ len += snprintf(buf+len, sizeof(buf)-len, "\n"); ++ ++ return simple_read_from_buffer(user_buf, count, ppos, buf, len); ++} ++ ++static ssize_t write_file_bwmode(struct file *file, ++ const char __user *userbuf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath5k_hw *ah = file->private_data; ++ char buf[3]; ++ int bw = 20; ++ int tobwmode = AR5K_BWMODE_DEFAULT; ++ ++ if (copy_from_user(buf, userbuf, min(count, sizeof(buf)))) ++ return -EFAULT; ++ ++ /* TODO: Add check for active interface */ ++ ++ if(strncmp(buf, "5", 1) == 0 ) { ++ tobwmode = AR5K_BWMODE_5MHZ; ++ bw = 5; ++ } else if ( strncmp(buf, "10", 2) == 0 ) { ++ tobwmode = AR5K_BWMODE_10MHZ; ++ bw = 10; ++ } else if ( strncmp(buf, "20", 2) == 0 ) { ++ tobwmode = AR5K_BWMODE_DEFAULT; ++ bw = 20; ++ } else if ( strncmp(buf, "40", 2) == 0 ) { ++ tobwmode = AR5K_BWMODE_40MHZ; ++ bw = 40; ++ } else ++ return -EINVAL; ++ ++ ATH5K_INFO(ah, "Changing to %imhz channel width[%i]\n", ++ bw, tobwmode); ++ ++ switch (ah->ah_radio) { ++ /* TODO: only define radios that actually support 5/10mhz channels */ ++ case AR5K_RF5413: ++ case AR5K_RF5110: ++ case AR5K_RF5111: ++ case AR5K_RF5112: ++ case AR5K_RF2413: ++ case AR5K_RF2316: ++ case AR5K_RF2317: ++ case AR5K_RF2425: ++ if(ah->ah_bwmode_debug != tobwmode) { ++ mutex_lock(&ah->lock); ++ ah->ah_bwmode = tobwmode; ++ ah->ah_bwmode_debug = tobwmode; ++ mutex_unlock(&ah->lock); ++ } ++ break; ++ default: ++ return -EOPNOTSUPP; ++ } ++ return count; ++} ++ ++static const struct file_operations fops_bwmode = { ++ .read = read_file_bwmode, ++ .write = write_file_bwmode, ++ .open = simple_open, ++ .owner = THIS_MODULE, ++ .llseek = default_llseek, ++}; + + /* debugfs: queues etc */ + +@@ -1010,6 +1101,9 @@ ath5k_debug_init_device(struct ath5k_hw + debugfs_create_file("beacon", S_IWUSR | S_IRUSR, phydir, ah, + &fops_beacon); + ++ debugfs_create_file("bwmode", S_IWUSR | S_IRUSR, phydir, ah, ++ &fops_bwmode); ++ + debugfs_create_file("reset", S_IWUSR, phydir, ah, &fops_reset); + + debugfs_create_file("antenna", S_IWUSR | S_IRUSR, phydir, ah, +--- a/drivers/net/wireless/ath/ath5k/ath5k.h ++++ b/drivers/net/wireless/ath/ath5k/ath5k.h +@@ -1372,6 +1372,7 @@ struct ath5k_hw { + u8 ah_coverage_class; + bool ah_ack_bitrate_high; + u8 ah_bwmode; ++ u8 ah_bwmode_debug; + bool ah_short_slot; + + /* Antenna Control */ +--- a/drivers/net/wireless/ath/ath5k/base.c ++++ b/drivers/net/wireless/ath/ath5k/base.c +@@ -466,6 +466,9 @@ ath5k_chan_set(struct ath5k_hw *ah, stru + return -EINVAL; + } + ++ if (ah->ah_bwmode_debug != AR5K_BWMODE_DEFAULT) ++ ah->ah_bwmode = ah->ah_bwmode_debug; ++ + /* + * To switch channels clear any pending DMA operations; + * wait long enough for the RX fifo to drain, reset the diff --git a/feeds/rtkmipsel/mac80211/patches/500-ath9k_eeprom_debugfs.patch b/feeds/rtkmipsel/mac80211/patches/500-ath9k_eeprom_debugfs.patch new file mode 100644 index 000000000..a7f9d9f8b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/500-ath9k_eeprom_debugfs.patch @@ -0,0 +1,65 @@ +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -1301,6 +1301,53 @@ void ath9k_deinit_debug(struct ath_softc + ath9k_cmn_spectral_deinit_debug(&sc->spec_priv); + } + ++static ssize_t read_file_eeprom(struct file *file, char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_softc *sc = file->private_data; ++ struct ath_hw *ah = sc->sc_ah; ++ struct ath_common *common = ath9k_hw_common(ah); ++ int bytes = 0; ++ int pos = *ppos; ++ int size = 4096; ++ u16 val; ++ int i; ++ ++ if (AR_SREV_9300_20_OR_LATER(ah)) ++ size = 16384; ++ ++ if (*ppos < 0) ++ return -EINVAL; ++ ++ if (count > size - *ppos) ++ count = size - *ppos; ++ ++ for (i = *ppos / 2; count > 0; count -= bytes, *ppos += bytes, i++) { ++ void *from = &val; ++ ++ if (!common->bus_ops->eeprom_read(common, i, &val)) ++ val = 0xffff; ++ ++ if (*ppos % 2) { ++ from++; ++ bytes = 1; ++ } else if (count == 1) { ++ bytes = 1; ++ } else { ++ bytes = 2; ++ } ++ copy_to_user(user_buf, from, bytes); ++ user_buf += bytes; ++ } ++ return *ppos - pos; ++} ++ ++static const struct file_operations fops_eeprom = { ++ .read = read_file_eeprom, ++ .open = simple_open, ++ .owner = THIS_MODULE ++}; ++ + int ath9k_init_debug(struct ath_hw *ah) + { + struct ath_common *common = ath9k_hw_common(ah); +@@ -1320,6 +1367,8 @@ int ath9k_init_debug(struct ath_hw *ah) + ath9k_tx99_init_debug(sc); + ath9k_cmn_spectral_init_debug(&sc->spec_priv, sc->debug.debugfs_phy); + ++ debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, ++ &fops_eeprom); + debugfs_create_devm_seqfile(sc->dev, "dma", sc->debug.debugfs_phy, + read_file_dma); + debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy, diff --git a/feeds/rtkmipsel/mac80211/patches/501-ath9k_ahb_init.patch b/feeds/rtkmipsel/mac80211/patches/501-ath9k_ahb_init.patch new file mode 100644 index 000000000..5892c3e17 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/501-ath9k_ahb_init.patch @@ -0,0 +1,32 @@ +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -1024,23 +1024,23 @@ static int __init ath9k_init(void) + { + int error; + +- error = ath_pci_init(); ++ error = ath_ahb_init(); + if (error < 0) { +- pr_err("No PCI devices found, driver not installed\n"); + error = -ENODEV; + goto err_out; + } + +- error = ath_ahb_init(); ++ error = ath_pci_init(); + if (error < 0) { ++ pr_err("No PCI devices found, driver not installed\n"); + error = -ENODEV; +- goto err_pci_exit; ++ goto err_ahb_exit; + } + + return 0; + +- err_pci_exit: +- ath_pci_exit(); ++ err_ahb_exit: ++ ath_ahb_exit(); + err_out: + return error; + } diff --git a/feeds/rtkmipsel/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch b/feeds/rtkmipsel/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch new file mode 100644 index 000000000..d2a3b9657 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/510-ath9k_intr_mitigation_tweak.patch @@ -0,0 +1,18 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -390,13 +390,8 @@ static void ath9k_hw_init_config(struct + + ah->config.rx_intr_mitigation = true; + +- if (AR_SREV_9300_20_OR_LATER(ah)) { +- ah->config.rimt_last = 500; +- ah->config.rimt_first = 2000; +- } else { +- ah->config.rimt_last = 250; +- ah->config.rimt_first = 700; +- } ++ ah->config.rimt_last = 250; ++ ah->config.rimt_first = 500; + + if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) + ah->config.pll_pwrsave = 7; diff --git a/feeds/rtkmipsel/mac80211/patches/511-ath9k_reduce_rxbuf.patch b/feeds/rtkmipsel/mac80211/patches/511-ath9k_reduce_rxbuf.patch new file mode 100644 index 000000000..6766111df --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/511-ath9k_reduce_rxbuf.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -88,7 +88,7 @@ int ath_descdma_setup(struct ath_softc * + (_l) &= ((_sz) - 1); \ + } while (0) + +-#define ATH_RXBUF 512 ++#define ATH_RXBUF 256 + #define ATH_TXBUF 512 + #define ATH_TXBUF_RESERVE 5 + #define ATH_MAX_QDEPTH (ATH_TXBUF / 4 - ATH_TXBUF_RESERVE) diff --git a/feeds/rtkmipsel/mac80211/patches/512-ath9k_channelbw_debugfs.patch b/feeds/rtkmipsel/mac80211/patches/512-ath9k_channelbw_debugfs.patch new file mode 100644 index 000000000..5ecf528e5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/512-ath9k_channelbw_debugfs.patch @@ -0,0 +1,125 @@ +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -1348,6 +1348,52 @@ static const struct file_operations fops + .owner = THIS_MODULE + }; + ++ ++static ssize_t read_file_chan_bw(struct file *file, char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_softc *sc = file->private_data; ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); ++ char buf[32]; ++ unsigned int len; ++ ++ len = sprintf(buf, "0x%08x\n", common->chan_bw); ++ return simple_read_from_buffer(user_buf, count, ppos, buf, len); ++} ++ ++static ssize_t write_file_chan_bw(struct file *file, const char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_softc *sc = file->private_data; ++ struct ath_common *common = ath9k_hw_common(sc->sc_ah); ++ unsigned long chan_bw; ++ char buf[32]; ++ ssize_t len; ++ ++ len = min(count, sizeof(buf) - 1); ++ if (copy_from_user(buf, user_buf, len)) ++ return -EFAULT; ++ ++ buf[len] = '\0'; ++ if (kstrtoul(buf, 0, &chan_bw)) ++ return -EINVAL; ++ ++ common->chan_bw = chan_bw; ++ if (!test_bit(ATH_OP_INVALID, &common->op_flags)) ++ ath9k_ops.config(sc->hw, IEEE80211_CONF_CHANGE_CHANNEL); ++ ++ return count; ++} ++ ++static const struct file_operations fops_chanbw = { ++ .read = read_file_chan_bw, ++ .write = write_file_chan_bw, ++ .open = simple_open, ++ .owner = THIS_MODULE, ++ .llseek = default_llseek, ++}; ++ ++ + int ath9k_init_debug(struct ath_hw *ah) + { + struct ath_common *common = ath9k_hw_common(ah); +@@ -1369,6 +1415,8 @@ int ath9k_init_debug(struct ath_hw *ah) + + debugfs_create_file("eeprom", S_IRUSR, sc->debug.debugfs_phy, sc, + &fops_eeprom); ++ debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ++ sc, &fops_chanbw); + debugfs_create_devm_seqfile(sc->dev, "dma", sc->debug.debugfs_phy, + read_file_dma); + debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy, +--- a/drivers/net/wireless/ath/ath.h ++++ b/drivers/net/wireless/ath/ath.h +@@ -151,6 +151,7 @@ struct ath_common { + int debug_mask; + enum ath_device_state state; + unsigned long op_flags; ++ u32 chan_bw; + + struct ath_ani ani; + +--- a/drivers/net/wireless/ath/ath9k/common.c ++++ b/drivers/net/wireless/ath/ath9k/common.c +@@ -296,11 +296,13 @@ EXPORT_SYMBOL(ath9k_cmn_get_hw_crypto_ke + /* + * Update internal channel flags. + */ +-static void ath9k_cmn_update_ichannel(struct ath9k_channel *ichan, ++static void ath9k_cmn_update_ichannel(struct ath_common *common, ++ struct ath9k_channel *ichan, + struct cfg80211_chan_def *chandef) + { + struct ieee80211_channel *chan = chandef->chan; + u16 flags = 0; ++ int width; + + ichan->channel = chan->center_freq; + ichan->chan = chan; +@@ -308,7 +310,19 @@ static void ath9k_cmn_update_ichannel(st + if (chan->band == IEEE80211_BAND_5GHZ) + flags |= CHANNEL_5GHZ; + +- switch (chandef->width) { ++ switch (common->chan_bw) { ++ case 5: ++ width = NL80211_CHAN_WIDTH_5; ++ break; ++ case 10: ++ width = NL80211_CHAN_WIDTH_10; ++ break; ++ default: ++ width = chandef->width; ++ break; ++ } ++ ++ switch (width) { + case NL80211_CHAN_WIDTH_5: + flags |= CHANNEL_QUARTER; + break; +@@ -341,10 +355,11 @@ struct ath9k_channel *ath9k_cmn_get_chan + struct cfg80211_chan_def *chandef) + { + struct ieee80211_channel *curchan = chandef->chan; ++ struct ath_common *common = ath9k_hw_common(ah); + struct ath9k_channel *channel; + + channel = &ah->channels[curchan->hw_value]; +- ath9k_cmn_update_ichannel(channel, chandef); ++ ath9k_cmn_update_ichannel(common, channel, chandef); + + return channel; + } diff --git a/feeds/rtkmipsel/mac80211/patches/513-ath9k_add_pci_ids.patch b/feeds/rtkmipsel/mac80211/patches/513-ath9k_add_pci_ids.patch new file mode 100644 index 000000000..c84d1bc82 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/513-ath9k_add_pci_ids.patch @@ -0,0 +1,30 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -651,6 +651,7 @@ int ath9k_hw_init(struct ath_hw *ah) + + /* These are all the AR5008/AR9001/AR9002/AR9003 hardware family of chipsets */ + switch (ah->hw_version.devid) { ++ case AR9300_DEVID_INVALID: + case AR5416_DEVID_PCI: + case AR5416_DEVID_PCIE: + case AR5416_AR9100_DEVID: +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -36,6 +36,7 @@ + + #define ATHEROS_VENDOR_ID 0x168c + ++#define AR9300_DEVID_INVALID 0xabcd + #define AR5416_DEVID_PCI 0x0023 + #define AR5416_DEVID_PCIE 0x0024 + #define AR9160_DEVID_PCI 0x0027 +--- a/drivers/net/wireless/ath/ath9k/pci.c ++++ b/drivers/net/wireless/ath/ath9k/pci.c +@@ -751,6 +751,7 @@ static const struct pci_device_id ath_pc + .driver_data = ATH9K_PCI_BT_ANT_DIV }, + #endif + ++ { PCI_VDEVICE(ATHEROS, 0xabcd) }, /* PCI-E internal chip default ID */ + { 0 } + }; + diff --git a/feeds/rtkmipsel/mac80211/patches/522-mac80211_configure_antenna_gain.patch b/feeds/rtkmipsel/mac80211/patches/522-mac80211_configure_antenna_gain.patch new file mode 100644 index 000000000..e151a1296 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/522-mac80211_configure_antenna_gain.patch @@ -0,0 +1,160 @@ +--- a/include/net/cfg80211.h ++++ b/include/net/cfg80211.h +@@ -2363,6 +2363,7 @@ struct cfg80211_qos_map { + * (as advertised by the nl80211 feature flag.) + * @get_tx_power: store the current TX power into the dbm variable; + * return 0 if successful ++ * @set_antenna_gain: set antenna gain to reduce maximum tx power if necessary + * + * @set_wds_peer: set the WDS peer for a WDS interface + * +@@ -2624,6 +2625,7 @@ struct cfg80211_ops { + enum nl80211_tx_power_setting type, int mbm); + int (*get_tx_power)(struct wiphy *wiphy, struct wireless_dev *wdev, + int *dbm); ++ int (*set_antenna_gain)(struct wiphy *wiphy, int dbi); + + int (*set_wds_peer)(struct wiphy *wiphy, struct net_device *dev, + const u8 *addr); +--- a/include/net/mac80211.h ++++ b/include/net/mac80211.h +@@ -1286,6 +1286,7 @@ enum ieee80211_smps_mode { + * + * @power_level: requested transmit power (in dBm), backward compatibility + * value only that is set to the minimum of all interfaces ++ * @max_antenna_gain: maximum antenna gain adjusted by user config (in dBi) + * + * @chandef: the channel definition to tune to + * @radar_enabled: whether radar detection is enabled +@@ -1306,6 +1307,7 @@ enum ieee80211_smps_mode { + struct ieee80211_conf { + u32 flags; + int power_level, dynamic_ps_timeout; ++ int max_antenna_gain; + + u16 listen_interval; + u8 ps_dtim_period; +--- a/include/uapi/linux/nl80211.h ++++ b/include/uapi/linux/nl80211.h +@@ -1790,6 +1790,9 @@ enum nl80211_commands { + * between scans. The scan plans are executed sequentially. + * Each scan plan is a nested attribute of &enum nl80211_sched_scan_plan. + * ++ * @NL80211_ATTR_WIPHY_ANTENNA_GAIN: Configured antenna gain. Used to reduce ++ * transmit power to stay within regulatory limits. u32, dBi. ++ * + * @NUM_NL80211_ATTR: total number of nl80211_attrs available + * @NL80211_ATTR_MAX: highest attribute number currently defined + * @__NL80211_ATTR_AFTER_LAST: internal use +@@ -2164,6 +2167,8 @@ enum nl80211_attrs { + NL80211_ATTR_MAX_SCAN_PLAN_ITERATIONS, + NL80211_ATTR_SCHED_SCAN_PLANS, + ++ NL80211_ATTR_WIPHY_ANTENNA_GAIN, ++ + /* add attributes here, update the policy in nl80211.c */ + + __NL80211_ATTR_AFTER_LAST, +--- a/net/mac80211/cfg.c ++++ b/net/mac80211/cfg.c +@@ -2229,6 +2229,19 @@ static int ieee80211_get_tx_power(struct + return 0; + } + ++static int ieee80211_set_antenna_gain(struct wiphy *wiphy, int dbi) ++{ ++ struct ieee80211_local *local = wiphy_priv(wiphy); ++ ++ if (dbi < 0) ++ return -EINVAL; ++ ++ local->user_antenna_gain = dbi; ++ ieee80211_hw_config(local, 0); ++ ++ return 0; ++} ++ + static int ieee80211_set_wds_peer(struct wiphy *wiphy, struct net_device *dev, + const u8 *addr) + { +@@ -3403,6 +3416,7 @@ const struct cfg80211_ops mac80211_confi + .set_wiphy_params = ieee80211_set_wiphy_params, + .set_tx_power = ieee80211_set_tx_power, + .get_tx_power = ieee80211_get_tx_power, ++ .set_antenna_gain = ieee80211_set_antenna_gain, + .set_wds_peer = ieee80211_set_wds_peer, + .rfkill_poll = ieee80211_rfkill_poll, + CFG80211_TESTMODE_CMD(ieee80211_testmode_cmd) +--- a/net/mac80211/ieee80211_i.h ++++ b/net/mac80211/ieee80211_i.h +@@ -1318,6 +1318,7 @@ struct ieee80211_local { + int dynamic_ps_forced_timeout; + + int user_power_level; /* in dBm, for all interfaces */ ++ int user_antenna_gain; /* in dBi */ + + enum ieee80211_smps_mode smps_mode; + +--- a/net/mac80211/main.c ++++ b/net/mac80211/main.c +@@ -93,7 +93,7 @@ static u32 ieee80211_hw_conf_chan(struct + struct ieee80211_sub_if_data *sdata; + struct cfg80211_chan_def chandef = {}; + u32 changed = 0; +- int power; ++ int power, max_power; + u32 offchannel_flag; + + offchannel_flag = local->hw.conf.flags & IEEE80211_CONF_OFFCHANNEL; +@@ -150,6 +150,12 @@ static u32 ieee80211_hw_conf_chan(struct + } + rcu_read_unlock(); + ++ max_power = chandef.chan->max_reg_power; ++ if (local->user_antenna_gain > 0) { ++ max_power -= local->user_antenna_gain; ++ power = min(power, max_power); ++ } ++ + if (local->hw.conf.power_level != power) { + changed |= IEEE80211_CONF_CHANGE_POWER; + local->hw.conf.power_level = power; +@@ -586,6 +592,7 @@ struct ieee80211_hw *ieee80211_alloc_hw_ + IEEE80211_RADIOTAP_MCS_HAVE_BW; + local->hw.radiotap_vht_details = IEEE80211_RADIOTAP_VHT_KNOWN_GI | + IEEE80211_RADIOTAP_VHT_KNOWN_BANDWIDTH; ++ local->user_antenna_gain = 0; + local->hw.uapsd_queues = IEEE80211_DEFAULT_UAPSD_QUEUES; + local->hw.uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN; + local->user_power_level = IEEE80211_UNSET_POWER_LEVEL; +--- a/net/wireless/nl80211.c ++++ b/net/wireless/nl80211.c +@@ -403,6 +403,7 @@ static const struct nla_policy nl80211_p + [NL80211_ATTR_NETNS_FD] = { .type = NLA_U32 }, + [NL80211_ATTR_SCHED_SCAN_DELAY] = { .type = NLA_U32 }, + [NL80211_ATTR_REG_INDOOR] = { .type = NLA_FLAG }, ++ [NL80211_ATTR_WIPHY_ANTENNA_GAIN] = { .type = NLA_U32 }, + }; + + /* policy for the key attributes */ +@@ -2220,6 +2221,20 @@ static int nl80211_set_wiphy(struct sk_b + if (result) + return result; + } ++ ++ if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_GAIN]) { ++ int idx, dbi = 0; ++ ++ if (!rdev->ops->set_antenna_gain) ++ return -EOPNOTSUPP; ++ ++ idx = NL80211_ATTR_WIPHY_ANTENNA_GAIN; ++ dbi = nla_get_u32(info->attrs[idx]); ++ ++ result = rdev->ops->set_antenna_gain(&rdev->wiphy, dbi); ++ if (result) ++ return result; ++ } + + if (info->attrs[NL80211_ATTR_WIPHY_ANTENNA_TX] && + info->attrs[NL80211_ATTR_WIPHY_ANTENNA_RX]) { diff --git a/feeds/rtkmipsel/mac80211/patches/530-ath9k_extra_leds.patch b/feeds/rtkmipsel/mac80211/patches/530-ath9k_extra_leds.patch new file mode 100644 index 000000000..5a5e4643f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/530-ath9k_extra_leds.patch @@ -0,0 +1,251 @@ +--- a/drivers/net/wireless/ath/ath9k/ath9k.h ++++ b/drivers/net/wireless/ath/ath9k/ath9k.h +@@ -814,6 +814,9 @@ static inline int ath9k_dump_btcoex(stru + void ath_init_leds(struct ath_softc *sc); + void ath_deinit_leds(struct ath_softc *sc); + void ath_fill_led_pin(struct ath_softc *sc); ++int ath_create_gpio_led(struct ath_softc *sc, int gpio, const char *name, ++ const char *trigger, bool active_low); ++ + #else + static inline void ath_init_leds(struct ath_softc *sc) + { +@@ -953,6 +956,13 @@ void ath_ant_comb_scan(struct ath_softc + + #define ATH9K_NUM_CHANCTX 2 /* supports 2 operating channels */ + ++struct ath_led { ++ struct list_head list; ++ struct ath_softc *sc; ++ const struct gpio_led *gpio; ++ struct led_classdev cdev; ++}; ++ + struct ath_softc { + struct ieee80211_hw *hw; + struct device *dev; +@@ -1005,9 +1015,8 @@ struct ath_softc { + spinlock_t chan_lock; + + #ifdef CPTCFG_MAC80211_LEDS +- bool led_registered; +- char led_name[32]; +- struct led_classdev led_cdev; ++ const char *led_default_trigger; ++ struct list_head leds; + #endif + + #ifdef CPTCFG_ATH9K_DEBUGFS +--- a/drivers/net/wireless/ath/ath9k/gpio.c ++++ b/drivers/net/wireless/ath/ath9k/gpio.c +@@ -24,45 +24,102 @@ + static void ath_led_brightness(struct led_classdev *led_cdev, + enum led_brightness brightness) + { +- struct ath_softc *sc = container_of(led_cdev, struct ath_softc, led_cdev); +- u32 val = (brightness == LED_OFF); ++ struct ath_led *led = container_of(led_cdev, struct ath_led, cdev); ++ struct ath_softc *sc = led->sc; + +- if (sc->sc_ah->config.led_active_high) +- val = !val; ++ ath9k_ps_wakeup(sc); ++ ath9k_hw_set_gpio(sc->sc_ah, led->gpio->gpio, ++ (brightness != LED_OFF) ^ led->gpio->active_low); ++ ath9k_ps_restore(sc); ++} + +- ath9k_hw_set_gpio(sc->sc_ah, sc->sc_ah->led_pin, val); ++static int ath_add_led(struct ath_softc *sc, struct ath_led *led) ++{ ++ const struct gpio_led *gpio = led->gpio; ++ int ret; ++ ++ led->cdev.name = gpio->name; ++ led->cdev.default_trigger = gpio->default_trigger; ++ led->cdev.brightness_set = ath_led_brightness; ++ ++ ret = led_classdev_register(wiphy_dev(sc->hw->wiphy), &led->cdev); ++ if (ret < 0) ++ return ret; ++ ++ led->sc = sc; ++ list_add(&led->list, &sc->leds); ++ ++ /* Configure gpio for output */ ++ ath9k_hw_cfg_output(sc->sc_ah, gpio->gpio, ++ AR_GPIO_OUTPUT_MUX_AS_OUTPUT); ++ ++ /* LED off */ ++ ath9k_hw_set_gpio(sc->sc_ah, gpio->gpio, gpio->active_low); ++ ++ return 0; ++} ++ ++int ath_create_gpio_led(struct ath_softc *sc, int gpio_num, const char *name, ++ const char *trigger, bool active_low) ++{ ++ struct ath_led *led; ++ struct gpio_led *gpio; ++ char *_name; ++ int ret; ++ ++ led = kzalloc(sizeof(*led) + sizeof(*gpio) + strlen(name) + 1, ++ GFP_KERNEL); ++ if (!led) ++ return -ENOMEM; ++ ++ led->gpio = gpio = (struct gpio_led *) (led + 1); ++ _name = (char *) (led->gpio + 1); ++ ++ strcpy(_name, name); ++ gpio->name = _name; ++ gpio->gpio = gpio_num; ++ gpio->active_low = active_low; ++ gpio->default_trigger = trigger; ++ ++ ret = ath_add_led(sc, led); ++ if (unlikely(ret < 0)) ++ kfree(led); ++ ++ return ret; + } + + void ath_deinit_leds(struct ath_softc *sc) + { +- if (!sc->led_registered) +- return; ++ struct ath_led *led; + +- ath_led_brightness(&sc->led_cdev, LED_OFF); +- led_classdev_unregister(&sc->led_cdev); ++ while (!list_empty(&sc->leds)) { ++ led = list_first_entry(&sc->leds, struct ath_led, list); ++ list_del(&led->list); ++ ath_led_brightness(&led->cdev, LED_OFF); ++ led_classdev_unregister(&led->cdev); ++ kfree(led); ++ } + } + + void ath_init_leds(struct ath_softc *sc) + { +- int ret; ++ char led_name[32]; ++ const char *trigger; ++ ++ INIT_LIST_HEAD(&sc->leds); + + if (AR_SREV_9100(sc->sc_ah)) + return; + +- if (!ath9k_led_blink) +- sc->led_cdev.default_trigger = +- ieee80211_get_radio_led_name(sc->hw); +- +- snprintf(sc->led_name, sizeof(sc->led_name), +- "ath9k-%s", wiphy_name(sc->hw->wiphy)); +- sc->led_cdev.name = sc->led_name; +- sc->led_cdev.brightness_set = ath_led_brightness; ++ snprintf(led_name, sizeof(led_name), "ath9k-%s", ++ wiphy_name(sc->hw->wiphy)); + +- ret = led_classdev_register(wiphy_dev(sc->hw->wiphy), &sc->led_cdev); +- if (ret < 0) +- return; ++ if (ath9k_led_blink) ++ trigger = sc->led_default_trigger; ++ else ++ trigger = ieee80211_get_radio_led_name(sc->hw); + +- sc->led_registered = true; ++ ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, !sc->sc_ah->config.led_active_high); + } + + void ath_fill_led_pin(struct ath_softc *sc) +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -936,7 +936,7 @@ int ath9k_init_device(u16 devid, struct + + #ifdef CPTCFG_MAC80211_LEDS + /* must be initialized before ieee80211_register_hw */ +- sc->led_cdev.default_trigger = ieee80211_create_tpt_led_trigger(sc->hw, ++ sc->led_default_trigger = ieee80211_create_tpt_led_trigger(sc->hw, + IEEE80211_TPT_LEDTRIG_FL_RADIO, ath9k_tpt_blink, + ARRAY_SIZE(ath9k_tpt_blink)); + #endif +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -1393,6 +1393,61 @@ static const struct file_operations fops + .llseek = default_llseek, + }; + ++#ifdef CONFIG_MAC80211_LEDS ++ ++static ssize_t write_file_gpio_led(struct file *file, const char __user *ubuf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_softc *sc = file->private_data; ++ char buf[32], *str, *name, *c; ++ ssize_t len; ++ unsigned int gpio; ++ bool active_low = false; ++ ++ len = min(count, sizeof(buf) - 1); ++ if (copy_from_user(buf, ubuf, len)) ++ return -EFAULT; ++ ++ buf[len] = '\0'; ++ name = strchr(buf, ','); ++ if (!name) ++ return -EINVAL; ++ ++ *(name++) = 0; ++ if (!*name) ++ return -EINVAL; ++ ++ c = strchr(name, '\n'); ++ if (c) ++ *c = 0; ++ ++ str = buf; ++ if (*str == '!') { ++ str++; ++ active_low = true; ++ } ++ ++ if (kstrtouint(str, 0, &gpio) < 0) ++ return -EINVAL; ++ ++ if (gpio >= sc->sc_ah->caps.num_gpio_pins) ++ return -EINVAL; ++ ++ if (ath_create_gpio_led(sc, gpio, name, NULL, active_low) < 0) ++ return -EINVAL; ++ ++ return count; ++} ++ ++static const struct file_operations fops_gpio_led = { ++ .write = write_file_gpio_led, ++ .open = simple_open, ++ .owner = THIS_MODULE, ++ .llseek = default_llseek, ++}; ++ ++#endif ++ + + int ath9k_init_debug(struct ath_hw *ah) + { +@@ -1417,6 +1472,10 @@ int ath9k_init_debug(struct ath_hw *ah) + &fops_eeprom); + debugfs_create_file("chanbw", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, + sc, &fops_chanbw); ++#ifdef CONFIG_MAC80211_LEDS ++ debugfs_create_file("gpio_led", S_IWUSR, ++ sc->debug.debugfs_phy, sc, &fops_gpio_led); ++#endif + debugfs_create_devm_seqfile(sc->dev, "dma", sc->debug.debugfs_phy, + read_file_dma); + debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy, diff --git a/feeds/rtkmipsel/mac80211/patches/531-ath9k_extra_platform_leds.patch b/feeds/rtkmipsel/mac80211/patches/531-ath9k_extra_platform_leds.patch new file mode 100644 index 000000000..7c10ea6b0 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/531-ath9k_extra_platform_leds.patch @@ -0,0 +1,71 @@ +--- a/include/linux/ath9k_platform.h ++++ b/include/linux/ath9k_platform.h +@@ -41,6 +41,9 @@ struct ath9k_platform_data { + int (*external_reset)(void); + + bool use_eeprom; ++ ++ int num_leds; ++ const struct gpio_led *leds; + }; + + #endif /* _LINUX_ATH9K_PLATFORM_H */ +--- a/drivers/net/wireless/ath/ath9k/gpio.c ++++ b/drivers/net/wireless/ath/ath9k/gpio.c +@@ -15,6 +15,7 @@ + */ + + #include "ath9k.h" ++#include + + /********************************/ + /* LED functions */ +@@ -88,6 +89,24 @@ int ath_create_gpio_led(struct ath_softc + return ret; + } + ++static int ath_create_platform_led(struct ath_softc *sc, ++ const struct gpio_led *gpio) ++{ ++ struct ath_led *led; ++ int ret; ++ ++ led = kzalloc(sizeof(*led), GFP_KERNEL); ++ if (!led) ++ return -ENOMEM; ++ ++ led->gpio = gpio; ++ ret = ath_add_led(sc, led); ++ if (ret < 0) ++ kfree(led); ++ ++ return ret; ++} ++ + void ath_deinit_leds(struct ath_softc *sc) + { + struct ath_led *led; +@@ -103,8 +122,10 @@ void ath_deinit_leds(struct ath_softc *s + + void ath_init_leds(struct ath_softc *sc) + { ++ struct ath9k_platform_data *pdata = sc->dev->platform_data; + char led_name[32]; + const char *trigger; ++ int i; + + INIT_LIST_HEAD(&sc->leds); + +@@ -120,6 +141,12 @@ void ath_init_leds(struct ath_softc *sc) + trigger = ieee80211_get_radio_led_name(sc->hw); + + ath_create_gpio_led(sc, sc->sc_ah->led_pin, led_name, trigger, !sc->sc_ah->config.led_active_high); ++ ++ if (!pdata) ++ return; ++ ++ for (i = 0; i < pdata->num_leds; i++) ++ ath_create_platform_led(sc, &pdata->leds[i]); + } + + void ath_fill_led_pin(struct ath_softc *sc) diff --git a/feeds/rtkmipsel/mac80211/patches/532-ath9k_get_led_polarity_from_platform_data.patch b/feeds/rtkmipsel/mac80211/patches/532-ath9k_get_led_polarity_from_platform_data.patch new file mode 100644 index 000000000..6d62a2b1c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/532-ath9k_get_led_polarity_from_platform_data.patch @@ -0,0 +1,20 @@ +--- a/include/linux/ath9k_platform.h ++++ b/include/linux/ath9k_platform.h +@@ -36,6 +36,7 @@ struct ath9k_platform_data { + bool tx_gain_buffalo; + bool disable_2ghz; + bool disable_5ghz; ++ bool led_active_high; + + int (*get_mac_revision)(void); + int (*external_reset)(void); +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -577,6 +577,7 @@ static int ath9k_init_softc(u16 devid, s + ah->external_reset = pdata->external_reset; + ah->disable_2ghz = pdata->disable_2ghz; + ah->disable_5ghz = pdata->disable_5ghz; ++ ah->config.led_active_high = pdata->led_active_high; + if (!pdata->endian_check) + ah->ah_flags |= AH_NO_EEP_SWAP; + } diff --git a/feeds/rtkmipsel/mac80211/patches/540-ath9k_reduce_ani_interval.patch b/feeds/rtkmipsel/mac80211/patches/540-ath9k_reduce_ani_interval.patch new file mode 100644 index 000000000..e89990347 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/540-ath9k_reduce_ani_interval.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ath/ath9k/ani.h ++++ b/drivers/net/wireless/ath/ath9k/ani.h +@@ -42,7 +42,7 @@ + #define ATH9K_ANI_PERIOD 300 + + /* in ms */ +-#define ATH9K_ANI_POLLINTERVAL 1000 ++#define ATH9K_ANI_POLLINTERVAL 300 + + #define ATH9K_SIG_FIRSTEP_SETTING_MIN 0 + #define ATH9K_SIG_FIRSTEP_SETTING_MAX 20 diff --git a/feeds/rtkmipsel/mac80211/patches/541-ath9k_rx_dma_stop_check.patch b/feeds/rtkmipsel/mac80211/patches/541-ath9k_rx_dma_stop_check.patch new file mode 100644 index 000000000..3c5e9f5fc --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/541-ath9k_rx_dma_stop_check.patch @@ -0,0 +1,28 @@ +--- a/drivers/net/wireless/ath/ath9k/mac.c ++++ b/drivers/net/wireless/ath/ath9k/mac.c +@@ -695,7 +695,7 @@ bool ath9k_hw_stopdmarecv(struct ath_hw + { + #define AH_RX_STOP_DMA_TIMEOUT 10000 /* usec */ + struct ath_common *common = ath9k_hw_common(ah); +- u32 mac_status, last_mac_status = 0; ++ u32 mac_status = 0, last_mac_status = 0; + int i; + + /* Enable access to the DMA observation bus */ +@@ -725,6 +725,16 @@ bool ath9k_hw_stopdmarecv(struct ath_hw + } + + if (i == 0) { ++ if (!AR_SREV_9300_20_OR_LATER(ah) && ++ (mac_status & 0x700) == 0) { ++ /* ++ * DMA is idle but the MAC is still stuck ++ * processing events ++ */ ++ *reset = true; ++ return true; ++ } ++ + ath_err(common, + "DMA failed to stop in %d ms AR_CR=0x%08x AR_DIAG_SW=0x%08x DMADBG_7=0x%08x\n", + AH_RX_STOP_DMA_TIMEOUT / 1000, diff --git a/feeds/rtkmipsel/mac80211/patches/542-ath9k_debugfs_diag.patch b/feeds/rtkmipsel/mac80211/patches/542-ath9k_debugfs_diag.patch new file mode 100644 index 000000000..e83c6bfbf --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/542-ath9k_debugfs_diag.patch @@ -0,0 +1,139 @@ +--- a/drivers/net/wireless/ath/ath9k/debug.c ++++ b/drivers/net/wireless/ath/ath9k/debug.c +@@ -1449,6 +1449,50 @@ static const struct file_operations fops + #endif + + ++static ssize_t read_file_diag(struct file *file, char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_softc *sc = file->private_data; ++ struct ath_hw *ah = sc->sc_ah; ++ char buf[32]; ++ unsigned int len; ++ ++ len = sprintf(buf, "0x%08lx\n", ah->diag); ++ return simple_read_from_buffer(user_buf, count, ppos, buf, len); ++} ++ ++static ssize_t write_file_diag(struct file *file, const char __user *user_buf, ++ size_t count, loff_t *ppos) ++{ ++ struct ath_softc *sc = file->private_data; ++ struct ath_hw *ah = sc->sc_ah; ++ unsigned long diag; ++ char buf[32]; ++ ssize_t len; ++ ++ len = min(count, sizeof(buf) - 1); ++ if (copy_from_user(buf, user_buf, len)) ++ return -EFAULT; ++ ++ buf[len] = '\0'; ++ if (kstrtoul(buf, 0, &diag)) ++ return -EINVAL; ++ ++ ah->diag = diag; ++ ath9k_hw_update_diag(ah); ++ ++ return count; ++} ++ ++static const struct file_operations fops_diag = { ++ .read = read_file_diag, ++ .write = write_file_diag, ++ .open = simple_open, ++ .owner = THIS_MODULE, ++ .llseek = default_llseek, ++}; ++ ++ + int ath9k_init_debug(struct ath_hw *ah) + { + struct ath_common *common = ath9k_hw_common(ah); +@@ -1476,6 +1520,8 @@ int ath9k_init_debug(struct ath_hw *ah) + debugfs_create_file("gpio_led", S_IWUSR, + sc->debug.debugfs_phy, sc, &fops_gpio_led); + #endif ++ debugfs_create_file("diag", S_IRUSR | S_IWUSR, sc->debug.debugfs_phy, ++ sc, &fops_diag); + debugfs_create_devm_seqfile(sc->dev, "dma", sc->debug.debugfs_phy, + read_file_dma); + debugfs_create_devm_seqfile(sc->dev, "interrupt", sc->debug.debugfs_phy, +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -519,6 +519,12 @@ enum { + ATH9K_RESET_COLD, + }; + ++enum { ++ ATH_DIAG_DISABLE_RX, ++ ATH_DIAG_DISABLE_TX, ++ ATH_DIAG_TRIGGER_ERROR, ++}; ++ + struct ath9k_hw_version { + u32 magic; + u16 devid; +@@ -804,6 +810,8 @@ struct ath_hw { + u32 rfkill_polarity; + u32 ah_flags; + ++ unsigned long diag; ++ + bool reset_power_on; + bool htc_reset_init; + +@@ -1066,6 +1074,7 @@ void ath9k_hw_check_nav(struct ath_hw *a + bool ath9k_hw_check_alive(struct ath_hw *ah); + + bool ath9k_hw_setpower(struct ath_hw *ah, enum ath9k_power_mode mode); ++void ath9k_hw_update_diag(struct ath_hw *ah); + + /* Generic hw timer primitives */ + struct ath_gen_timer *ath_gen_timer_alloc(struct ath_hw *ah, +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -1819,6 +1819,20 @@ u32 ath9k_hw_get_tsf_offset(struct times + } + EXPORT_SYMBOL(ath9k_hw_get_tsf_offset); + ++void ath9k_hw_update_diag(struct ath_hw *ah) ++{ ++ if (test_bit(ATH_DIAG_DISABLE_RX, &ah->diag)) ++ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_DIS); ++ else ++ REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_RX_DIS); ++ ++ if (test_bit(ATH_DIAG_DISABLE_TX, &ah->diag)) ++ REG_SET_BIT(ah, AR_DIAG_SW, AR_DIAG_LOOP_BACK); ++ else ++ REG_CLR_BIT(ah, AR_DIAG_SW, AR_DIAG_LOOP_BACK); ++} ++EXPORT_SYMBOL(ath9k_hw_update_diag); ++ + int ath9k_hw_reset(struct ath_hw *ah, struct ath9k_channel *chan, + struct ath9k_hw_cal_data *caldata, bool fastcc) + { +@@ -2027,6 +2041,7 @@ int ath9k_hw_reset(struct ath_hw *ah, st + ar9003_hw_disable_phy_restart(ah); + + ath9k_hw_apply_gpio_override(ah); ++ ath9k_hw_update_diag(ah); + + if (AR_SREV_9565(ah) && common->bt_ant_diversity) + REG_SET_BIT(ah, AR_BTCOEX_WL_LNADIV, AR_BTCOEX_WL_LNADIV_FORCE_ON); +--- a/drivers/net/wireless/ath/ath9k/main.c ++++ b/drivers/net/wireless/ath/ath9k/main.c +@@ -533,6 +533,11 @@ irqreturn_t ath_isr(int irq, void *dev) + if (test_bit(ATH_OP_HW_RESET, &common->op_flags)) + return IRQ_HANDLED; + ++ if (test_bit(ATH_DIAG_TRIGGER_ERROR, &ah->diag)) { ++ status |= ATH9K_INT_FATAL; ++ clear_bit(ATH_DIAG_TRIGGER_ERROR, &ah->diag); ++ } ++ + /* + * If there are no status bits set, then this interrupt was not + * for me (should have been caught above). diff --git a/feeds/rtkmipsel/mac80211/patches/543-ath9k_entropy_from_adc.patch b/feeds/rtkmipsel/mac80211/patches/543-ath9k_entropy_from_adc.patch new file mode 100644 index 000000000..d7bb5a12c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/543-ath9k_entropy_from_adc.patch @@ -0,0 +1,186 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.h ++++ b/drivers/net/wireless/ath/ath9k/hw.h +@@ -720,6 +720,7 @@ struct ath_spec_scan { + * @config_pci_powersave: + * @calibrate: periodic calibration for NF, ANI, IQ, ADC gain, ADC-DC + * ++ * @get_adc_entropy: get entropy from the raw ADC I/Q output + * @spectral_scan_config: set parameters for spectral scan and enable/disable it + * @spectral_scan_trigger: trigger a spectral scan run + * @spectral_scan_wait: wait for a spectral scan run to finish +@@ -742,6 +743,7 @@ struct ath_hw_ops { + struct ath_hw_antcomb_conf *antconf); + void (*antdiv_comb_conf_set)(struct ath_hw *ah, + struct ath_hw_antcomb_conf *antconf); ++ void (*get_adc_entropy)(struct ath_hw *ah, u8 *buf, size_t len); + void (*spectral_scan_config)(struct ath_hw *ah, + struct ath_spec_scan *param); + void (*spectral_scan_trigger)(struct ath_hw *ah); +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -1998,6 +1998,26 @@ void ar9003_hw_init_rate_txpower(struct + } + } + ++static void ar9003_hw_get_adc_entropy(struct ath_hw *ah, u8 *buf, size_t len) ++{ ++ int i, j; ++ ++ REG_RMW_FIELD(ah, AR_PHY_TEST, AR_PHY_TEST_BBB_OBS_SEL, 1); ++ REG_CLR_BIT(ah, AR_PHY_TEST, AR_PHY_TEST_RX_OBS_SEL_BIT5); ++ REG_RMW_FIELD(ah, AR_PHY_TEST_CTL_STATUS, AR_PHY_TEST_CTL_RX_OBS_SEL, 0); ++ ++ memset(buf, 0, len); ++ for (i = 0; i < len; i++) { ++ for (j = 0; j < 4; j++) { ++ u32 regval = REG_READ(ah, AR_PHY_TST_ADC); ++ ++ buf[i] <<= 2; ++ buf[i] |= (regval & 1) | ((regval & BIT(10)) >> 9); ++ udelay(1); ++ } ++ } ++} ++ + void ar9003_hw_attach_phy_ops(struct ath_hw *ah) + { + struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); +@@ -2034,6 +2054,7 @@ void ar9003_hw_attach_phy_ops(struct ath + priv_ops->set_radar_params = ar9003_hw_set_radar_params; + priv_ops->fast_chan_change = ar9003_hw_fast_chan_change; + ++ ops->get_adc_entropy = ar9003_hw_get_adc_entropy; + ops->antdiv_comb_conf_get = ar9003_hw_antdiv_comb_conf_get; + ops->antdiv_comb_conf_set = ar9003_hw_antdiv_comb_conf_set; + ops->spectral_scan_config = ar9003_hw_spectral_scan_config; +--- a/drivers/net/wireless/ath/ath9k/init.c ++++ b/drivers/net/wireless/ath/ath9k/init.c +@@ -711,7 +711,8 @@ static void ath9k_init_txpower_limits(st + if (ah->caps.hw_caps & ATH9K_HW_CAP_5GHZ) + ath9k_init_band_txpower(sc, IEEE80211_BAND_5GHZ); + +- ah->curchan = curchan; ++ if (curchan) ++ ah->curchan = curchan; + } + + static const struct ieee80211_iface_limit if_limits[] = { +@@ -897,6 +898,18 @@ static void ath9k_set_hw_capab(struct at + SET_IEEE80211_PERM_ADDR(hw, common->macaddr); + } + ++static void ath_get_initial_entropy(struct ath_softc *sc) ++{ ++ struct ath_hw *ah = sc->sc_ah; ++ char buf[256]; ++ ++ /* reuse last channel initialized by the tx power test */ ++ ath9k_hw_reset(ah, ah->curchan, NULL, false); ++ ++ ath9k_hw_get_adc_entropy(ah, buf, sizeof(buf)); ++ add_device_randomness(buf, sizeof(buf)); ++} ++ + int ath9k_init_device(u16 devid, struct ath_softc *sc, + const struct ath_bus_ops *bus_ops) + { +@@ -942,6 +955,8 @@ int ath9k_init_device(u16 devid, struct + ARRAY_SIZE(ath9k_tpt_blink)); + #endif + ++ ath_get_initial_entropy(sc); ++ + /* Register with mac80211 */ + error = ieee80211_register_hw(hw); + if (error) +--- a/drivers/net/wireless/ath/ath9k/hw-ops.h ++++ b/drivers/net/wireless/ath/ath9k/hw-ops.h +@@ -100,6 +100,12 @@ static inline void ath9k_hw_tx99_set_txp + ath9k_hw_ops(ah)->tx99_set_txpower(ah, power); + } + ++static inline void ath9k_hw_get_adc_entropy(struct ath_hw *ah, ++ u8 *buf, size_t len) ++{ ++ ath9k_hw_ops(ah)->get_adc_entropy(ah, buf, len); ++} ++ + #ifdef CPTCFG_ATH9K_BTCOEX_SUPPORT + + static inline void ath9k_hw_set_bt_ant_diversity(struct ath_hw *ah, bool enable) +--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c +@@ -1327,9 +1327,30 @@ void ar5008_hw_init_rate_txpower(struct + } + } + ++static void ar5008_hw_get_adc_entropy(struct ath_hw *ah, u8 *buf, size_t len) ++{ ++ int i, j; ++ ++ REG_RMW_FIELD(ah, AR_PHY_TEST, AR_PHY_TEST_BBB_OBS_SEL, 1); ++ REG_CLR_BIT(ah, AR_PHY_TEST, AR_PHY_TEST_RX_OBS_SEL_BIT5); ++ REG_RMW_FIELD(ah, AR_PHY_TEST2, AR_PHY_TEST2_RX_OBS_SEL, 0); ++ ++ memset(buf, 0, len); ++ for (i = 0; i < len; i++) { ++ for (j = 0; j < 4; j++) { ++ u32 regval = REG_READ(ah, AR_PHY_TST_ADC); ++ ++ buf[i] <<= 2; ++ buf[i] |= (regval & 1) | ((regval & BIT(9)) >> 8); ++ udelay(1); ++ } ++ } ++} ++ + int ar5008_hw_attach_phy_ops(struct ath_hw *ah) + { + struct ath_hw_private_ops *priv_ops = ath9k_hw_private_ops(ah); ++ struct ath_hw_ops *ops = ath9k_hw_ops(ah); + static const u32 ar5416_cca_regs[6] = { + AR_PHY_CCA, + AR_PHY_CH1_CCA, +@@ -1344,6 +1365,8 @@ int ar5008_hw_attach_phy_ops(struct ath_ + if (ret) + return ret; + ++ ops->get_adc_entropy = ar5008_hw_get_adc_entropy; ++ + priv_ops->rf_set_freq = ar5008_hw_set_channel; + priv_ops->spur_mitigate_freq = ar5008_hw_spur_mitigate; + +--- a/drivers/net/wireless/ath/ath9k/ar9002_phy.h ++++ b/drivers/net/wireless/ath/ath9k/ar9002_phy.h +@@ -20,6 +20,12 @@ + #define PHY_AGC_CLR 0x10000000 + #define RFSILENT_BB 0x00002000 + ++#define AR_PHY_TEST_BBB_OBS_SEL 0x780000 ++#define AR_PHY_TEST_BBB_OBS_SEL_S 19 ++ ++#define AR_PHY_TEST_RX_OBS_SEL_BIT5_S 23 ++#define AR_PHY_TEST_RX_OBS_SEL_BIT5 (1 << AR_PHY_TEST_RX_OBS_SEL_BIT5_S) ++ + #define AR_PHY_TURBO 0x9804 + #define AR_PHY_FC_TURBO_MODE 0x00000001 + #define AR_PHY_FC_TURBO_SHORT 0x00000002 +@@ -36,6 +42,9 @@ + + #define AR_PHY_TEST2 0x9808 + ++#define AR_PHY_TEST2_RX_OBS_SEL 0x3C00 ++#define AR_PHY_TEST2_RX_OBS_SEL_S 10 ++ + #define AR_PHY_TIMING2 0x9810 + #define AR_PHY_TIMING3 0x9814 + #define AR_PHY_TIMING3_DSC_MAN 0xFFFE0000 +@@ -390,6 +399,8 @@ + #define AR_PHY_RFBUS_GRANT 0x9C20 + #define AR_PHY_RFBUS_GRANT_EN 0x00000001 + ++#define AR_PHY_TST_ADC 0x9C24 ++ + #define AR_PHY_CHAN_INFO_GAIN_DIFF 0x9CF4 + #define AR_PHY_CHAN_INFO_GAIN_DIFF_UPPER_LIMIT 320 + diff --git a/feeds/rtkmipsel/mac80211/patches/544-ath9k-ar933x-usb-hang-workaround.patch b/feeds/rtkmipsel/mac80211/patches/544-ath9k-ar933x-usb-hang-workaround.patch new file mode 100644 index 000000000..8768c5d89 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/544-ath9k-ar933x-usb-hang-workaround.patch @@ -0,0 +1,79 @@ +--- a/drivers/net/wireless/ath/ath9k/hw.c ++++ b/drivers/net/wireless/ath/ath9k/hw.c +@@ -246,6 +246,19 @@ void ath9k_hw_get_channel_centers(struct + centers->synth_center + (extoff * HT40_CHANNEL_CENTER_SHIFT); + } + ++static inline void ath9k_hw_disable_pll_lock_detect(struct ath_hw *ah) ++{ ++ /* On AR9330 and AR9340 devices, some PHY registers must be ++ * tuned to gain better stability/performance. These registers ++ * might be changed while doing wlan reset so the registers must ++ * be reprogrammed after each reset. ++ */ ++ REG_CLR_BIT(ah, AR_PHY_USB_CTRL1, BIT(20)); ++ REG_RMW(ah, AR_PHY_USB_CTRL2, ++ (1 << 21) | (0xf << 22), ++ (1 << 21) | (0x3 << 22)); ++} ++ + /******************/ + /* Chip Revisions */ + /******************/ +@@ -1397,6 +1410,9 @@ static bool ath9k_hw_set_reset(struct at + if (AR_SREV_9100(ah)) + udelay(50); + ++ if (AR_SREV_9330(ah) || AR_SREV_9340(ah)) ++ ath9k_hw_disable_pll_lock_detect(ah); ++ + return true; + } + +@@ -1496,6 +1512,9 @@ static bool ath9k_hw_chip_reset(struct a + ar9003_hw_internal_regulator_apply(ah); + ath9k_hw_init_pll(ah, chan); + ++ if (AR_SREV_9330(ah) || AR_SREV_9340(ah)) ++ ath9k_hw_disable_pll_lock_detect(ah); ++ + return true; + } + +@@ -1797,8 +1816,14 @@ static int ath9k_hw_do_fastcc(struct ath + if (AR_SREV_9271(ah)) + ar9002_hw_load_ani_reg(ah, chan); + ++ if (AR_SREV_9330(ah) || AR_SREV_9340(ah)) ++ ath9k_hw_disable_pll_lock_detect(ah); ++ + return 0; + fail: ++ if (AR_SREV_9330(ah) || AR_SREV_9340(ah)) ++ ath9k_hw_disable_pll_lock_detect(ah); ++ + return -EINVAL; + } + +@@ -2052,6 +2077,9 @@ int ath9k_hw_reset(struct ath_hw *ah, st + ath9k_hw_set_radar_params(ah); + } + ++ if (AR_SREV_9330(ah) || AR_SREV_9340(ah)) ++ ath9k_hw_disable_pll_lock_detect(ah); ++ + return 0; + } + EXPORT_SYMBOL(ath9k_hw_reset); +--- a/drivers/net/wireless/ath/ath9k/phy.h ++++ b/drivers/net/wireless/ath/ath9k/phy.h +@@ -48,6 +48,9 @@ + #define AR_PHY_PLL_CONTROL 0x16180 + #define AR_PHY_PLL_MODE 0x16184 + ++#define AR_PHY_USB_CTRL1 0x16c84 ++#define AR_PHY_USB_CTRL2 0x16c88 ++ + enum ath9k_ant_div_comb_lna_conf { + ATH_ANT_DIV_COMB_LNA1_MINUS_LNA2, + ATH_ANT_DIV_COMB_LNA2, diff --git a/feeds/rtkmipsel/mac80211/patches/545-ath9k_ani_ws_detect.patch b/feeds/rtkmipsel/mac80211/patches/545-ath9k_ani_ws_detect.patch new file mode 100644 index 000000000..3d24ccda1 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/545-ath9k_ani_ws_detect.patch @@ -0,0 +1,155 @@ +--- a/drivers/net/wireless/ath/ath9k/ar5008_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar5008_phy.c +@@ -956,55 +956,6 @@ static bool ar5008_hw_ani_control_new(st + * on == 0 means more noise imm + */ + u32 on = param ? 1 : 0; +- /* +- * make register setting for default +- * (weak sig detect ON) come from INI file +- */ +- int m1ThreshLow = on ? +- aniState->iniDef.m1ThreshLow : m1ThreshLow_off; +- int m2ThreshLow = on ? +- aniState->iniDef.m2ThreshLow : m2ThreshLow_off; +- int m1Thresh = on ? +- aniState->iniDef.m1Thresh : m1Thresh_off; +- int m2Thresh = on ? +- aniState->iniDef.m2Thresh : m2Thresh_off; +- int m2CountThr = on ? +- aniState->iniDef.m2CountThr : m2CountThr_off; +- int m2CountThrLow = on ? +- aniState->iniDef.m2CountThrLow : m2CountThrLow_off; +- int m1ThreshLowExt = on ? +- aniState->iniDef.m1ThreshLowExt : m1ThreshLowExt_off; +- int m2ThreshLowExt = on ? +- aniState->iniDef.m2ThreshLowExt : m2ThreshLowExt_off; +- int m1ThreshExt = on ? +- aniState->iniDef.m1ThreshExt : m1ThreshExt_off; +- int m2ThreshExt = on ? +- aniState->iniDef.m2ThreshExt : m2ThreshExt_off; +- +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, +- AR_PHY_SFCORR_LOW_M1_THRESH_LOW, +- m1ThreshLow); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, +- AR_PHY_SFCORR_LOW_M2_THRESH_LOW, +- m2ThreshLow); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR, +- AR_PHY_SFCORR_M1_THRESH, m1Thresh); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR, +- AR_PHY_SFCORR_M2_THRESH, m2Thresh); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR, +- AR_PHY_SFCORR_M2COUNT_THR, m2CountThr); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, +- AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW, +- m2CountThrLow); +- +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M1_THRESH_LOW, m1ThreshLowExt); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M2_THRESH_LOW, m2ThreshLowExt); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M1_THRESH, m1ThreshExt); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M2_THRESH, m2ThreshExt); + + if (on) + REG_SET_BIT(ah, AR_PHY_SFCORR_LOW, +--- a/drivers/net/wireless/ath/ath9k/ar9003_phy.c ++++ b/drivers/net/wireless/ath/ath9k/ar9003_phy.c +@@ -41,20 +41,6 @@ static const int cycpwrThr1_table[] = + /* level: 0 1 2 3 4 5 6 7 8 */ + { -6, -4, -2, 0, 2, 4, 6, 8 }; /* lvl 0-7, default 3 */ + +-/* +- * register values to turn OFDM weak signal detection OFF +- */ +-static const int m1ThreshLow_off = 127; +-static const int m2ThreshLow_off = 127; +-static const int m1Thresh_off = 127; +-static const int m2Thresh_off = 127; +-static const int m2CountThr_off = 31; +-static const int m2CountThrLow_off = 63; +-static const int m1ThreshLowExt_off = 127; +-static const int m2ThreshLowExt_off = 127; +-static const int m1ThreshExt_off = 127; +-static const int m2ThreshExt_off = 127; +- + static const u8 ofdm2pwr[] = { + ALL_TARGET_LEGACY_6_24, + ALL_TARGET_LEGACY_6_24, +@@ -1089,11 +1075,6 @@ static bool ar9003_hw_ani_control(struct + struct ath_common *common = ath9k_hw_common(ah); + struct ath9k_channel *chan = ah->curchan; + struct ar5416AniState *aniState = &ah->ani; +- int m1ThreshLow, m2ThreshLow; +- int m1Thresh, m2Thresh; +- int m2CountThr, m2CountThrLow; +- int m1ThreshLowExt, m2ThreshLowExt; +- int m1ThreshExt, m2ThreshExt; + s32 value, value2; + + switch (cmd & ah->ani_function) { +@@ -1107,61 +1088,6 @@ static bool ar9003_hw_ani_control(struct + */ + u32 on = param ? 1 : 0; + +- if (AR_SREV_9462(ah) || AR_SREV_9565(ah)) +- goto skip_ws_det; +- +- m1ThreshLow = on ? +- aniState->iniDef.m1ThreshLow : m1ThreshLow_off; +- m2ThreshLow = on ? +- aniState->iniDef.m2ThreshLow : m2ThreshLow_off; +- m1Thresh = on ? +- aniState->iniDef.m1Thresh : m1Thresh_off; +- m2Thresh = on ? +- aniState->iniDef.m2Thresh : m2Thresh_off; +- m2CountThr = on ? +- aniState->iniDef.m2CountThr : m2CountThr_off; +- m2CountThrLow = on ? +- aniState->iniDef.m2CountThrLow : m2CountThrLow_off; +- m1ThreshLowExt = on ? +- aniState->iniDef.m1ThreshLowExt : m1ThreshLowExt_off; +- m2ThreshLowExt = on ? +- aniState->iniDef.m2ThreshLowExt : m2ThreshLowExt_off; +- m1ThreshExt = on ? +- aniState->iniDef.m1ThreshExt : m1ThreshExt_off; +- m2ThreshExt = on ? +- aniState->iniDef.m2ThreshExt : m2ThreshExt_off; +- +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, +- AR_PHY_SFCORR_LOW_M1_THRESH_LOW, +- m1ThreshLow); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, +- AR_PHY_SFCORR_LOW_M2_THRESH_LOW, +- m2ThreshLow); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR, +- AR_PHY_SFCORR_M1_THRESH, +- m1Thresh); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR, +- AR_PHY_SFCORR_M2_THRESH, +- m2Thresh); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR, +- AR_PHY_SFCORR_M2COUNT_THR, +- m2CountThr); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_LOW, +- AR_PHY_SFCORR_LOW_M2COUNT_THR_LOW, +- m2CountThrLow); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M1_THRESH_LOW, +- m1ThreshLowExt); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M2_THRESH_LOW, +- m2ThreshLowExt); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M1_THRESH, +- m1ThreshExt); +- REG_RMW_FIELD(ah, AR_PHY_SFCORR_EXT, +- AR_PHY_SFCORR_EXT_M2_THRESH, +- m2ThreshExt); +-skip_ws_det: + if (on) + REG_SET_BIT(ah, AR_PHY_SFCORR_LOW, + AR_PHY_SFCORR_LOW_USE_SELF_CORR_LOW); diff --git a/feeds/rtkmipsel/mac80211/patches/600-0001-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch b/feeds/rtkmipsel/mac80211/patches/600-0001-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch new file mode 100644 index 000000000..bd81555ac --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0001-rt2x00-rt2800lib-move-rt2800_drv_data-declaration-in.patch @@ -0,0 +1,66 @@ +From 7a69da907de668fb22a30ae218062d6f081864ea Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sat, 17 Aug 2013 19:31:41 +0200 +Subject: [PATCH] rt2x00: rt2800lib: move rt2800_drv_data declaration into + rt2800lib.h + +The rt2800_drv_data structure contains driver specific +information. Move the declaration into the rt2800lib.h +header which is a more logical place for it. Also fix +the comment style to avoid checkpatch warning. + +The patch contains no functional changes, it is in +preparation for the next patch. + +Signed-off-by: Gabor Juhos +--- +Changes since v1: --- +--- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 13 ------------- + drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 11 +++++++++++ + 2 files changed, 11 insertions(+), 13 deletions(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +@@ -20,6 +20,20 @@ + #ifndef RT2800LIB_H + #define RT2800LIB_H + ++#include "rt2800.h" ++ ++/* RT2800 driver data structure */ ++struct rt2800_drv_data { ++ u8 calibration_bw20; ++ u8 calibration_bw40; ++ u8 bbp25; ++ u8 bbp26; ++ u8 txmixer_gain_24g; ++ u8 txmixer_gain_5g; ++ unsigned int tbtt_tick; ++ DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); ++}; ++ + struct rt2800_ops { + void (*register_read)(struct rt2x00_dev *rt2x00dev, + const unsigned int offset, u32 *value); +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -2969,18 +2969,4 @@ enum rt2800_eeprom_word { + #define WCID_END 222 + #define STA_IDS_SIZE (WCID_END - WCID_START + 2) + +-/* +- * RT2800 driver data structure +- */ +-struct rt2800_drv_data { +- u8 calibration_bw20; +- u8 calibration_bw40; +- u8 bbp25; +- u8 bbp26; +- u8 txmixer_gain_24g; +- u8 txmixer_gain_5g; +- unsigned int tbtt_tick; +- DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); +-}; +- + #endif /* RT2800_H */ diff --git a/feeds/rtkmipsel/mac80211/patches/600-0002-rt2x00-rt2800lib-introduce-RT2800_HAS_HIGH_SHARED_ME.patch b/feeds/rtkmipsel/mac80211/patches/600-0002-rt2x00-rt2800lib-introduce-RT2800_HAS_HIGH_SHARED_ME.patch new file mode 100644 index 000000000..82459091f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0002-rt2x00-rt2800lib-introduce-RT2800_HAS_HIGH_SHARED_ME.patch @@ -0,0 +1,80 @@ +From a7f268af31dddf763fe3dbe9cbf96ea77e0540e0 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sat, 17 Aug 2013 19:31:41 +0200 +Subject: [PATCH] rt2x00: rt2800lib: introduce RT2800_HAS_HIGH_SHARED_MEM flag + +Some chipsets have more than 16KB of shared memory. +Introduce a new rt2800 specific flag to indicate that +and add a helper function which helps to check the +presence of the new flag. + +Also enable the new flag for the RT3593 chipset which +has 24KB of shared memory. The flag can also be used +for other chipsets, but none of those has been tested +yet. + +Signed-off-by: Gabor Juhos +--- +Changes since v1: + - don't enable the new flag for RT3071 and RT5592 +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 4 ++++ + drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 13 +++++++++++++ + 2 files changed, 17 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -7722,6 +7722,7 @@ static int rt2800_probe_rt(struct rt2x00 + + int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) + { ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; + int retval; + u32 reg; + +@@ -7729,6 +7730,9 @@ int rt2800_probe_hw(struct rt2x00_dev *r + if (retval) + return retval; + ++ if (rt2x00_rt(rt2x00dev, RT3593)) ++ __set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); ++ + /* + * Allocate eeprom data. + */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +@@ -22,6 +22,10 @@ + + #include "rt2800.h" + ++enum rt2800_flag { ++ RT2800_HAS_HIGH_SHARED_MEM, ++}; ++ + /* RT2800 driver data structure */ + struct rt2800_drv_data { + u8 calibration_bw20; +@@ -32,6 +36,8 @@ struct rt2800_drv_data { + u8 txmixer_gain_5g; + unsigned int tbtt_tick; + DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); ++ ++ unsigned long rt2800_flags; + }; + + struct rt2800_ops { +@@ -64,6 +70,13 @@ struct rt2800_ops { + __le32 *(*drv_get_txwi)(struct queue_entry *entry); + }; + ++static inline bool rt2800_has_high_shared_mem(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ return test_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); ++} ++ + static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, + const unsigned int offset, + u32 *value) diff --git a/feeds/rtkmipsel/mac80211/patches/600-0003-rt2x00-rt2800-serialize-shared-memory-access.patch b/feeds/rtkmipsel/mac80211/patches/600-0003-rt2x00-rt2800-serialize-shared-memory-access.patch new file mode 100644 index 000000000..7abfcd16f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0003-rt2x00-rt2800-serialize-shared-memory-access.patch @@ -0,0 +1,531 @@ +From 250a1b520cd7fdc0df4fc3fedea9066913f49ecf Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sat, 17 Aug 2013 19:31:42 +0200 +Subject: [PATCH] rt2x00: rt2800: serialize shared memory access + +The shared memory of the rt2800 devices is accessible +through the register offset range between 0x4000 and +0x8000. The size of this range is 16KB only and on +devices which have more than 16KB of shared memory either +the low or the high part of the memory is accessible at a +time. + +Serialize all accesses to the shared memory by a mutex, +in order to avoid concurrent use of that. + +Signed-off-by: Gabor Juhos +--- +Changes since v1: --- +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 55 +++++++++++++++++++++++++++++- + drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 32 +++++++++++++++++ + drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 26 ++++++++++++++ + drivers/net/wireless/ralink/rt2x00/rt2800mmio.h | 4 +++ + drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 14 ++++++++ + drivers/net/wireless/ralink/rt2x00/rt2800soc.c | 3 ++ + drivers/net/wireless/ralink/rt2x00/rt2800usb.c | 31 +++++++++++++++++ + 7 files changed, 164 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -451,11 +451,13 @@ void rt2800_mcu_request(struct rt2x00_de + rt2x00_set_field32(®, H2M_MAILBOX_CSR_CMD_TOKEN, token); + rt2x00_set_field32(®, H2M_MAILBOX_CSR_ARG0, arg0); + rt2x00_set_field32(®, H2M_MAILBOX_CSR_ARG1, arg1); ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write_lock(rt2x00dev, H2M_MAILBOX_CSR, reg); + + reg = 0; + rt2x00_set_field32(®, HOST_CMD_CSR_HOST_COMMAND, command); + rt2800_register_write_lock(rt2x00dev, HOST_CMD_CSR, reg); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + mutex_unlock(&rt2x00dev->csr_mutex); +@@ -674,7 +676,9 @@ int rt2800_load_firmware(struct rt2x00_d + * Wait for device to stabilize. + */ + for (i = 0; i < REGISTER_BUSY_COUNT; i++) { ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, ®); ++ rt2800_shared_mem_unlock(rt2x00dev); + if (rt2x00_get_field32(reg, PBF_SYS_CTRL_READY)) + break; + msleep(1); +@@ -694,10 +698,16 @@ int rt2800_load_firmware(struct rt2x00_d + /* + * Initialize firmware. + */ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); + rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); ++ rt2800_shared_mem_unlock(rt2x00dev); ++ + if (rt2x00_is_usb(rt2x00dev)) { ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0); ++ rt2800_shared_mem_unlock(rt2x00dev); ++ + rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0); + } + msleep(1); +@@ -1035,8 +1045,10 @@ void rt2800_write_beacon(struct queue_en + + beacon_base = rt2800_hw_beacon_base(rt2x00dev, entry->entry_idx); + ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, + entry->skb->len + padding_len); ++ rt2800_shared_mem_unlock(rt2x00dev); + __set_bit(ENTRY_BCN_ENABLED, &entry->flags); + + /* +@@ -1066,6 +1078,8 @@ static inline void rt2800_clear_beacon_r + + beacon_base = rt2800_hw_beacon_base(rt2x00dev, index); + ++ rt2800_shared_mem_lock(rt2x00dev); ++ + /* + * For the Beacon base registers we only need to clear + * the whole TXWI which (when set to 0) will invalidate +@@ -1073,6 +1087,8 @@ static inline void rt2800_clear_beacon_r + */ + for (i = 0; i < txwi_desc_size; i += sizeof(__le32)) + rt2800_register_write(rt2x00dev, beacon_base + i, 0); ++ ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + void rt2800_clear_beacon(struct queue_entry *entry) +@@ -1261,7 +1277,9 @@ static void rt2800_delete_wcid_attr(stru + { + u32 offset; + offset = MAC_WCID_ATTR_ENTRY(wcid); ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write(rt2x00dev, offset, 0); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + static void rt2800_config_wcid_attr_bssidx(struct rt2x00_dev *rt2x00dev, +@@ -1274,11 +1292,13 @@ static void rt2800_config_wcid_attr_bssi + * The BSS Idx numbers is split in a main value of 3 bits, + * and a extended field for adding one additional bit to the value. + */ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_read(rt2x00dev, offset, ®); + rt2x00_set_field32(®, MAC_WCID_ATTRIBUTE_BSS_IDX, (bssidx & 0x7)); + rt2x00_set_field32(®, MAC_WCID_ATTRIBUTE_BSS_IDX_EXT, + (bssidx & 0x8) >> 3); + rt2800_register_write(rt2x00dev, offset, reg); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + static void rt2800_config_wcid_attr_cipher(struct rt2x00_dev *rt2x00dev, +@@ -1291,6 +1311,7 @@ static void rt2800_config_wcid_attr_ciph + + offset = MAC_WCID_ATTR_ENTRY(key->hw_key_idx); + ++ rt2800_shared_mem_lock(rt2x00dev); + if (crypto->cmd == SET_KEY) { + rt2800_register_read(rt2x00dev, offset, ®); + rt2x00_set_field32(®, MAC_WCID_ATTRIBUTE_KEYTAB, +@@ -1315,6 +1336,7 @@ static void rt2800_config_wcid_attr_ciph + rt2x00_set_field32(®, MAC_WCID_ATTRIBUTE_RX_WIUDF, 0); + rt2800_register_write(rt2x00dev, offset, reg); + } ++ rt2800_shared_mem_unlock(rt2x00dev); + + offset = MAC_IVEIV_ENTRY(key->hw_key_idx); + +@@ -1324,8 +1346,11 @@ static void rt2800_config_wcid_attr_ciph + (crypto->cipher == CIPHER_AES)) + iveiv_entry.iv[3] |= 0x20; + iveiv_entry.iv[3] |= key->keyidx << 6; ++ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_multiwrite(rt2x00dev, offset, + &iveiv_entry, sizeof(iveiv_entry)); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + int rt2800_config_shared_key(struct rt2x00_dev *rt2x00dev, +@@ -1348,8 +1373,11 @@ int rt2800_config_shared_key(struct rt2x + sizeof(key_entry.rx_mic)); + + offset = SHARED_KEY_ENTRY(key->hw_key_idx); ++ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_multiwrite(rt2x00dev, offset, + &key_entry, sizeof(key_entry)); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + /* +@@ -1364,10 +1392,12 @@ int rt2800_config_shared_key(struct rt2x + + offset = SHARED_KEY_MODE_ENTRY(key->hw_key_idx / 8); + ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_read(rt2x00dev, offset, ®); + rt2x00_set_field32(®, field, + (crypto->cmd == SET_KEY) * crypto->cipher); + rt2800_register_write(rt2x00dev, offset, reg); ++ rt2800_shared_mem_unlock(rt2x00dev); + + /* + * Update WCID information +@@ -1405,8 +1435,11 @@ int rt2800_config_pairwise_key(struct rt + sizeof(key_entry.rx_mic)); + + offset = PAIRWISE_KEY_ENTRY(key->hw_key_idx); ++ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_multiwrite(rt2x00dev, offset, + &key_entry, sizeof(key_entry)); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + /* +@@ -4885,14 +4918,19 @@ static int rt2800_init_registers(struct + /* + * ASIC will keep garbage value after boot, clear encryption keys. + */ ++ rt2800_shared_mem_lock(rt2x00dev); + for (i = 0; i < 4; i++) + rt2800_register_write(rt2x00dev, + SHARED_KEY_MODE_ENTRY(i), 0); ++ rt2800_shared_mem_unlock(rt2x00dev); + + for (i = 0; i < 256; i++) { + rt2800_config_wcid(rt2x00dev, NULL, i); + rt2800_delete_wcid_attr(rt2x00dev, i); ++ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write(rt2x00dev, MAC_IVEIV_ENTRY(i), 0); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + /* +@@ -5018,8 +5056,10 @@ static int rt2800_wait_bbp_ready(struct + * BBP was enabled after firmware was loaded, + * but we need to reactivate it now. + */ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); + rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); ++ rt2800_shared_mem_unlock(rt2x00dev); + msleep(1); + + for (i = 0; i < REGISTER_BUSY_COUNT; i++) { +@@ -6715,11 +6755,19 @@ int rt2800_enable_radio(struct rt2x00_de + /* + * Send signal during boot time to initialize firmware. + */ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write(rt2x00dev, H2M_BBP_AGENT, 0); + rt2800_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); +- if (rt2x00_is_usb(rt2x00dev)) ++ rt2800_shared_mem_unlock(rt2x00dev); ++ ++ if (rt2x00_is_usb(rt2x00dev)) { ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_write(rt2x00dev, H2M_INT_SRC, 0); ++ rt2800_shared_mem_unlock(rt2x00dev); ++ } ++ + rt2800_mcu_request(rt2x00dev, MCU_BOOT_SIGNAL, 0, 0, 0); ++ + msleep(1); + + /* +@@ -7726,6 +7774,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r + int retval; + u32 reg; + ++ rt2800_shared_mem_init_lock(rt2x00dev); ++ + retval = rt2800_probe_rt(rt2x00dev); + if (retval) + return retval; +@@ -7809,8 +7859,11 @@ void rt2800_get_key_seq(struct ieee80211 + return; + + offset = MAC_IVEIV_ENTRY(key->hw_key_idx); ++ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2800_register_multiread(rt2x00dev, offset, + &iveiv_entry, sizeof(iveiv_entry)); ++ rt2800_shared_mem_unlock(rt2x00dev); + + memcpy(&seq->tkip.iv16, &iveiv_entry.iv[0], 2); + memcpy(&seq->tkip.iv32, &iveiv_entry.iv[4], 4); +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +@@ -38,6 +38,11 @@ struct rt2800_drv_data { + DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); + + unsigned long rt2800_flags; ++ ++ union { ++ spinlock_t spin; ++ struct mutex mutex; ++ } shmem_lock; + }; + + struct rt2800_ops { +@@ -68,6 +73,10 @@ struct rt2800_ops { + const u8 *data, const size_t len); + int (*drv_init_registers)(struct rt2x00_dev *rt2x00dev); + __le32 *(*drv_get_txwi)(struct queue_entry *entry); ++ ++ void (*shmem_init_lock)(struct rt2x00_dev *rt2x00dev); ++ void (*shmem_lock)(struct rt2x00_dev *rt2x00dev); ++ void (*shmem_unlock)(struct rt2x00_dev *rt2x00dev); + }; + + static inline bool rt2800_has_high_shared_mem(struct rt2x00_dev *rt2x00dev) +@@ -77,6 +86,29 @@ static inline bool rt2800_has_high_share + return test_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); + } + ++static inline void rt2800_shared_mem_init_lock(struct rt2x00_dev *rt2x00dev) ++{ ++ const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; ++ ++ rt2800ops->shmem_init_lock(rt2x00dev); ++} ++ ++static inline void rt2800_shared_mem_lock(struct rt2x00_dev *rt2x00dev) ++{ ++ const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; ++ ++ if (rt2800_has_high_shared_mem(rt2x00dev)) ++ rt2800ops->shmem_lock(rt2x00dev); ++} ++ ++static inline void rt2800_shared_mem_unlock(struct rt2x00_dev *rt2x00dev) ++{ ++ const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; ++ ++ if (rt2800_has_high_shared_mem(rt2x00dev)) ++ rt2800ops->shmem_unlock(rt2x00dev); ++} ++ + static inline void rt2800_register_read(struct rt2x00_dev *rt2x00dev, + const unsigned int offset, + u32 *value) +--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c +@@ -820,8 +820,10 @@ int rt2800mmio_init_registers(struct rt2 + rt2x00_set_field32(®, WPDMA_RST_IDX_DRX_IDX0, 1); + rt2x00mmio_register_write(rt2x00dev, WPDMA_RST_IDX, reg); + ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00mmio_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e1f); + rt2x00mmio_register_write(rt2x00dev, PBF_SYS_CTRL, 0x00000e00); ++ rt2800_shared_mem_unlock(rt2x00dev); + + if (rt2x00_is_pcie(rt2x00dev) && + (rt2x00_rt(rt2x00dev, RT3090) || +@@ -865,6 +867,30 @@ int rt2800mmio_enable_radio(struct rt2x0 + } + EXPORT_SYMBOL_GPL(rt2800mmio_enable_radio); + ++void rt2800mmio_shmem_init_lock(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ spin_lock_init(&drv_data->shmem_lock.spin); ++} ++EXPORT_SYMBOL_GPL(rt2800mmio_shmem_init_lock); ++ ++void rt2800mmio_shmem_lock(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ spin_lock_bh(&drv_data->shmem_lock.spin); ++} ++EXPORT_SYMBOL_GPL(rt2800mmio_shmem_lock); ++ ++void rt2800mmio_shmem_unlock(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ spin_unlock_bh(&drv_data->shmem_lock.spin); ++} ++EXPORT_SYMBOL_GPL(rt2800mmio_shmem_unlock); ++ + MODULE_AUTHOR(DRV_PROJECT); + MODULE_VERSION(DRV_VERSION); + MODULE_DESCRIPTION("rt2800 MMIO library"); +--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.h +@@ -160,4 +160,8 @@ int rt2800mmio_init_registers(struct rt2 + /* Device state switch handlers. */ + int rt2800mmio_enable_radio(struct rt2x00_dev *rt2x00dev); + ++void rt2800mmio_shmem_init_lock(struct rt2x00_dev *rt2x00dev); ++void rt2800mmio_shmem_lock(struct rt2x00_dev *rt2x00dev); ++void rt2800mmio_shmem_unlock(struct rt2x00_dev *rt2x00dev); ++ + #endif /* RT2800MMIO_H */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800pci.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800pci.c +@@ -69,7 +69,9 @@ static void rt2800pci_mcu_status(struct + return; + + for (i = 0; i < 200; i++) { ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00mmio_register_read(rt2x00dev, H2M_MAILBOX_CID, ®); ++ rt2800_shared_mem_unlock(rt2x00dev); + + if ((rt2x00_get_field32(reg, H2M_MAILBOX_CID_CMD0) == token) || + (rt2x00_get_field32(reg, H2M_MAILBOX_CID_CMD1) == token) || +@@ -83,8 +85,10 @@ static void rt2800pci_mcu_status(struct + if (i == 200) + rt2x00_err(rt2x00dev, "MCU request failed, no response from hardware\n"); + ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_STATUS, ~0); + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); ++ rt2800_shared_mem_unlock(rt2x00dev); + } + + static void rt2800pci_eepromregister_read(struct eeprom_93cx6 *eeprom) +@@ -184,6 +188,8 @@ static int rt2800pci_write_firmware(stru + */ + reg = 0; + rt2x00_set_field32(®, PBF_SYS_CTRL_HOST_RAM_WRITE, 1); ++ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00mmio_register_write(rt2x00dev, PBF_SYS_CTRL, reg); + + /* +@@ -197,6 +203,7 @@ static int rt2800pci_write_firmware(stru + + rt2x00mmio_register_write(rt2x00dev, H2M_BBP_AGENT, 0); + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); ++ rt2800_shared_mem_unlock(rt2x00dev); + + return 0; + } +@@ -213,8 +220,10 @@ static int rt2800pci_enable_radio(struct + return retval; + + /* After resume MCU_BOOT_SIGNAL will trash these. */ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_STATUS, ~0); + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); ++ rt2800_shared_mem_unlock(rt2x00dev); + + rt2800_mcu_request(rt2x00dev, MCU_SLEEP, TOKEN_RADIO_OFF, 0xff, 0x02); + rt2800pci_mcu_status(rt2x00dev, TOKEN_RADIO_OFF); +@@ -233,10 +242,12 @@ static int rt2800pci_set_state(struct rt + 0, 0x02); + rt2800pci_mcu_status(rt2x00dev, TOKEN_WAKEUP); + } else if (state == STATE_SLEEP) { ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_STATUS, + 0xffffffff); + rt2x00mmio_register_write(rt2x00dev, H2M_MAILBOX_CID, + 0xffffffff); ++ rt2800_shared_mem_unlock(rt2x00dev); + rt2800_mcu_request(rt2x00dev, MCU_SLEEP, TOKEN_SLEEP, + 0xff, 0x01); + } +@@ -337,6 +348,9 @@ static const struct rt2800_ops rt2800pci + .drv_write_firmware = rt2800pci_write_firmware, + .drv_init_registers = rt2800mmio_init_registers, + .drv_get_txwi = rt2800mmio_get_txwi, ++ .shmem_init_lock = rt2800mmio_shmem_init_lock, ++ .shmem_lock = rt2800mmio_shmem_lock, ++ .shmem_unlock = rt2800mmio_shmem_unlock, + }; + + static const struct rt2x00lib_ops rt2800pci_rt2x00_ops = { +--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c +@@ -176,6 +176,9 @@ static const struct rt2800_ops rt2800soc + .drv_write_firmware = rt2800soc_write_firmware, + .drv_init_registers = rt2800mmio_init_registers, + .drv_get_txwi = rt2800mmio_get_txwi, ++ .shmem_init_lock = rt2800mmio_shmem_init_lock, ++ .shmem_lock = rt2800mmio_shmem_lock, ++ .shmem_unlock = rt2800mmio_shmem_unlock, + }; + + static const struct rt2x00lib_ops rt2800soc_rt2x00_ops = { +--- a/drivers/net/wireless/ralink/rt2x00/rt2800usb.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800usb.c +@@ -51,6 +51,27 @@ static bool rt2800usb_hwcrypt_disabled(s + return modparam_nohwcrypt; + } + ++static void rt2800usb_shmem_init_lock(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ mutex_init(&drv_data->shmem_lock.mutex); ++} ++ ++static void rt2800usb_shmem_lock(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ mutex_lock(&drv_data->shmem_lock.mutex); ++} ++ ++static void rt2800usb_shmem_unlock(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ mutex_unlock(&drv_data->shmem_lock.mutex); ++} ++ + /* + * Queue handlers. + */ +@@ -299,8 +320,10 @@ static int rt2800usb_write_firmware(stru + data + offset, length); + } + ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00usb_register_write(rt2x00dev, H2M_MAILBOX_CID, ~0); + rt2x00usb_register_write(rt2x00dev, H2M_MAILBOX_STATUS, ~0); ++ rt2800_shared_mem_unlock(rt2x00dev); + + /* + * Send firmware request to device to load firmware, +@@ -315,7 +338,10 @@ static int rt2800usb_write_firmware(stru + } + + msleep(10); ++ ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00usb_register_write(rt2x00dev, H2M_MAILBOX_CSR, 0); ++ rt2800_shared_mem_unlock(rt2x00dev); + + return 0; + } +@@ -333,8 +359,10 @@ static int rt2800usb_init_registers(stru + if (rt2800_wait_csr_ready(rt2x00dev)) + return -EBUSY; + ++ rt2800_shared_mem_lock(rt2x00dev); + rt2x00usb_register_read(rt2x00dev, PBF_SYS_CTRL, ®); + rt2x00usb_register_write(rt2x00dev, PBF_SYS_CTRL, reg & ~0x00002000); ++ rt2800_shared_mem_unlock(rt2x00dev); + + reg = 0; + rt2x00_set_field32(®, MAC_SYS_CTRL_RESET_CSR, 1); +@@ -863,6 +891,9 @@ static const struct rt2800_ops rt2800usb + .drv_write_firmware = rt2800usb_write_firmware, + .drv_init_registers = rt2800usb_init_registers, + .drv_get_txwi = rt2800usb_get_txwi, ++ .shmem_init_lock = rt2800usb_shmem_init_lock, ++ .shmem_lock = rt2800usb_shmem_lock, ++ .shmem_unlock = rt2800usb_shmem_unlock, + }; + + static const struct rt2x00lib_ops rt2800usb_rt2x00_ops = { diff --git a/feeds/rtkmipsel/mac80211/patches/600-0004-rt2x00-rt2800lib-fix-beacon-generation-on-RT3593.patch b/feeds/rtkmipsel/mac80211/patches/600-0004-rt2x00-rt2800lib-fix-beacon-generation-on-RT3593.patch new file mode 100644 index 000000000..985a3b91f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0004-rt2x00-rt2800lib-fix-beacon-generation-on-RT3593.patch @@ -0,0 +1,131 @@ +From dcfe3dd46242050f100162dce2bcad24d2c942c6 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sat, 17 Aug 2013 19:31:42 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix beacon generation on RT3593 + +On the RT3593 chipset, the beacon registers are located +in the high 8KB part of the shared memory. + +The high part of the shared memory is only accessible +if it is explicitly selected. Add a helper function +in order to be able to control the SHR_MSEL bit in +the PBF_SYS_CTRL register. Also add a few more helper +functions and use those to select the correct part of +the shared memory before and after accessing the beacon +registers. + +The base addresses of the beacon registers are also +different from the actually used values, so fix the +'rt2800_hw_beacon_base' function to return the correct +values. + +Signed-off-by: Gabor Juhos +--- +Changes since v1: --- +--- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 3 +++ + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 44 +++++++++++++++++++++++++++++++ + 2 files changed, 47 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -574,6 +574,7 @@ + #define PBF_SYS_CTRL 0x0400 + #define PBF_SYS_CTRL_READY FIELD32(0x00000080) + #define PBF_SYS_CTRL_HOST_RAM_WRITE FIELD32(0x00010000) ++#define PBF_SYS_CTRL_SHR_MSEL FIELD32(0x00080000) + + /* + * HOST-MCU shared memory +@@ -2026,6 +2027,8 @@ struct mac_iveiv_entry { + (((__index) < 6) ? (HW_BEACON_BASE4 + ((__index - 4) * 0x0200)) : \ + (HW_BEACON_BASE6 - ((__index - 6) * 0x0200)))) + ++#define HW_BEACON_BASE_HIGH(__index) (0x4000 + (__index) * 512) ++ + #define BEACON_BASE_TO_OFFSET(_base) (((_base) - 0x4000) / 64) + + /* +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -82,6 +82,39 @@ static inline bool rt2800_is_305x_soc(st + return false; + } + ++static inline void rt2800_shared_mem_select(struct rt2x00_dev *rt2x00dev, ++ bool high) ++{ ++ u32 reg; ++ ++ if (WARN_ON_ONCE(!rt2800_has_high_shared_mem(rt2x00dev))) ++ return; ++ ++ rt2800_register_read(rt2x00dev, PBF_SYS_CTRL, ®); ++ rt2x00_set_field32(®, PBF_SYS_CTRL_SHR_MSEL, high); ++ rt2800_register_write(rt2x00dev, PBF_SYS_CTRL, reg); ++} ++ ++static inline bool rt2800_beacon_uses_high_mem(struct rt2x00_dev *rt2x00dev) ++{ ++ if (rt2x00_rt(rt2x00dev, RT3593)) ++ return true; ++ ++ return false; ++} ++ ++static inline void rt2800_select_beacon_mem(struct rt2x00_dev *rt2x00dev) ++{ ++ if (rt2800_beacon_uses_high_mem(rt2x00dev)) ++ rt2800_shared_mem_select(rt2x00dev, true); ++} ++ ++static inline void rt2800_deselect_beacon_mem(struct rt2x00_dev *rt2x00dev) ++{ ++ if (rt2800_beacon_uses_high_mem(rt2x00dev)) ++ rt2800_shared_mem_select(rt2x00dev, false); ++} ++ + static void rt2800_bbp_write(struct rt2x00_dev *rt2x00dev, + const unsigned int word, const u8 value) + { +@@ -948,6 +981,9 @@ EXPORT_SYMBOL_GPL(rt2800_txdone_entry); + static unsigned int rt2800_hw_beacon_base(struct rt2x00_dev *rt2x00dev, + unsigned int index) + { ++ if (rt2x00_rt(rt2x00dev, RT3593)) ++ return HW_BEACON_BASE_HIGH(index); ++ + return HW_BEACON_BASE(index); + } + +@@ -1046,8 +1082,12 @@ void rt2800_write_beacon(struct queue_en + beacon_base = rt2800_hw_beacon_base(rt2x00dev, entry->entry_idx); + + rt2800_shared_mem_lock(rt2x00dev); ++ ++ rt2800_select_beacon_mem(rt2x00dev); + rt2800_register_multiwrite(rt2x00dev, beacon_base, entry->skb->data, + entry->skb->len + padding_len); ++ rt2800_deselect_beacon_mem(rt2x00dev); ++ + rt2800_shared_mem_unlock(rt2x00dev); + __set_bit(ENTRY_BCN_ENABLED, &entry->flags); + +@@ -1080,6 +1120,8 @@ static inline void rt2800_clear_beacon_r + + rt2800_shared_mem_lock(rt2x00dev); + ++ rt2800_select_beacon_mem(rt2x00dev); ++ + /* + * For the Beacon base registers we only need to clear + * the whole TXWI which (when set to 0) will invalidate +@@ -1088,6 +1130,8 @@ static inline void rt2800_clear_beacon_r + for (i = 0; i < txwi_desc_size; i += sizeof(__le32)) + rt2800_register_write(rt2x00dev, beacon_base + i, 0); + ++ rt2800_deselect_beacon_mem(rt2x00dev); ++ + rt2800_shared_mem_unlock(rt2x00dev); + } + diff --git a/feeds/rtkmipsel/mac80211/patches/600-0005-rt2x00-rt2800lib-add-hw_beacon_count-field-to-struct.patch b/feeds/rtkmipsel/mac80211/patches/600-0005-rt2x00-rt2800lib-add-hw_beacon_count-field-to-struct.patch new file mode 100644 index 000000000..02b2acfee --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0005-rt2x00-rt2800lib-add-hw_beacon_count-field-to-struct.patch @@ -0,0 +1,62 @@ +From a058825fa7b53fab3b003d8928b60e5b686b3421 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 4 Aug 2013 14:36:11 +0200 +Subject: [PATCH] rt2x00: rt2800lib: add hw_beacon_count field to struct + rt2800_drv_data + +Some chipsets can handle more than 8 beacons at once. +Add a new field to the rt2800_drv_data structure which +will hold the number of supported beacons of the given +chipset. + +Update the rt2x00_init_registers function to get the +beacon count from the new field instead of using a +hardcoded value. + +In order to keep the current behaviour, initialize the +new field with the actually used value. + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 ++++- + drivers/net/wireless/ralink/rt2x00/rt2800lib.h | 1 + + 2 files changed, 5 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -4615,6 +4615,7 @@ EXPORT_SYMBOL_GPL(rt2800_link_tuner); + */ + static int rt2800_init_registers(struct rt2x00_dev *rt2x00dev) + { ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; + u32 reg; + u16 eeprom; + unsigned int i; +@@ -4980,7 +4981,7 @@ static int rt2800_init_registers(struct + /* + * Clear all beacons + */ +- for (i = 0; i < 8; i++) ++ for (i = 0; i < drv_data->hw_beacon_count; i++) + rt2800_clear_beacon_register(rt2x00dev, i); + + if (rt2x00_is_usb(rt2x00dev)) { +@@ -7827,6 +7828,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r + if (rt2x00_rt(rt2x00dev, RT3593)) + __set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); + ++ drv_data->hw_beacon_count = 8; ++ + /* + * Allocate eeprom data. + */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +@@ -35,6 +35,7 @@ struct rt2800_drv_data { + u8 txmixer_gain_24g; + u8 txmixer_gain_5g; + unsigned int tbtt_tick; ++ unsigned int hw_beacon_count; + DECLARE_BITMAP(sta_ids, STA_IDS_SIZE); + + unsigned long rt2800_flags; diff --git a/feeds/rtkmipsel/mac80211/patches/600-0006-rt2x00-rt2800lib-init-additional-beacon-offset-regis.patch b/feeds/rtkmipsel/mac80211/patches/600-0006-rt2x00-rt2800lib-init-additional-beacon-offset-regis.patch new file mode 100644 index 000000000..4e735d348 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0006-rt2x00-rt2800lib-init-additional-beacon-offset-regis.patch @@ -0,0 +1,67 @@ +From 1bfa43ca8f30be53ce4fa79cfc3e219642a812b6 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Mon, 2 Sep 2013 10:58:32 +0200 +Subject: [PATCH] rt2x00: rt2800lib: init additional beacon offset registers + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 14 ++++++++++++++ + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 24 ++++++++++++++++++++++++ + 2 files changed, 38 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -629,6 +629,20 @@ + */ + #define PBF_DBG 0x043c + ++/* BCN_OFFSET2 */ ++#define BCN_OFFSET2 0x0444 ++#define BCN_OFFSET2_BCN8 FIELD32(0x000000ff) ++#define BCN_OFFSET2_BCN9 FIELD32(0x0000ff00) ++#define BCN_OFFSET2_BCN10 FIELD32(0x00ff0000) ++#define BCN_OFFSET2_BCN11 FIELD32(0xff000000) ++ ++/* BCN_OFFSET3 */ ++#define BCN_OFFSET3 0x0448 ++#define BCN_OFFSET3_BCN12 FIELD32(0x000000ff) ++#define BCN_OFFSET3_BCN13 FIELD32(0x0000ff00) ++#define BCN_OFFSET3_BCN14 FIELD32(0x00ff0000) ++#define BCN_OFFSET3_BCN15 FIELD32(0xff000000) ++ + /* + * RF registers + */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -4627,6 +4627,30 @@ static int rt2800_init_registers(struct + if (ret) + return ret; + ++ if (drv_data->hw_beacon_count == 16) { ++ rt2800_register_read(rt2x00dev, BCN_OFFSET2, ®); ++ rt2x00_set_field32(®, BCN_OFFSET2_BCN8, ++ rt2800_get_beacon_offset(rt2x00dev, 8)); ++ rt2x00_set_field32(®, BCN_OFFSET2_BCN9, ++ rt2800_get_beacon_offset(rt2x00dev, 9)); ++ rt2x00_set_field32(®, BCN_OFFSET2_BCN10, ++ rt2800_get_beacon_offset(rt2x00dev, 10)); ++ rt2x00_set_field32(®, BCN_OFFSET2_BCN11, ++ rt2800_get_beacon_offset(rt2x00dev, 11)); ++ rt2800_register_write(rt2x00dev, BCN_OFFSET2, reg); ++ ++ rt2800_register_read(rt2x00dev, BCN_OFFSET3, ®); ++ rt2x00_set_field32(®, BCN_OFFSET3_BCN12, ++ rt2800_get_beacon_offset(rt2x00dev, 12)); ++ rt2x00_set_field32(®, BCN_OFFSET3_BCN13, ++ rt2800_get_beacon_offset(rt2x00dev, 13)); ++ rt2x00_set_field32(®, BCN_OFFSET3_BCN14, ++ rt2800_get_beacon_offset(rt2x00dev, 14)); ++ rt2x00_set_field32(®, BCN_OFFSET3_BCN15, ++ rt2800_get_beacon_offset(rt2x00dev, 15)); ++ rt2800_register_write(rt2x00dev, BCN_OFFSET3, reg); ++ } ++ + rt2800_register_write(rt2x00dev, LEGACY_BASIC_RATE, 0x0000013f); + rt2800_register_write(rt2x00dev, HT_BASIC_RATE, 0x00008003); + diff --git a/feeds/rtkmipsel/mac80211/patches/600-0007-rt2x00-rt2800lib-fix-max-supported-beacon-count-for-.patch b/feeds/rtkmipsel/mac80211/patches/600-0007-rt2x00-rt2800lib-fix-max-supported-beacon-count-for-.patch new file mode 100644 index 000000000..e90927271 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0007-rt2x00-rt2800lib-fix-max-supported-beacon-count-for-.patch @@ -0,0 +1,24 @@ +From 9bea8b61f6025cd633bd5ac71be258620b49bcb3 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Mon, 2 Sep 2013 11:00:06 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix max supported beacon count for RT3593 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 5 ++++- + 1 file changed, 4 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -7852,7 +7852,10 @@ int rt2800_probe_hw(struct rt2x00_dev *r + if (rt2x00_rt(rt2x00dev, RT3593)) + __set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); + +- drv_data->hw_beacon_count = 8; ++ if (rt2x00_rt(rt2x00dev, RT3593)) ++ drv_data->hw_beacon_count = 16; ++ else ++ drv_data->hw_beacon_count = 8; + + /* + * Allocate eeprom data. diff --git a/feeds/rtkmipsel/mac80211/patches/600-0008-rt2x00-allow-to-build-rt2800soc-module-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0008-rt2x00-allow-to-build-rt2800soc-module-for-RT3883.patch new file mode 100644 index 000000000..565e39de5 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0008-rt2x00-allow-to-build-rt2800soc-module-for-RT3883.patch @@ -0,0 +1,30 @@ +From 91094ed065f7794886b4a5490fd6de942f036bb4 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:26 +0100 +Subject: [PATCH] rt2x00: allow to build rt2800soc module for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/Kconfig | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/Kconfig ++++ b/drivers/net/wireless/ralink/rt2x00/Kconfig +@@ -210,7 +210,7 @@ endif + config RT2800SOC + tristate "Ralink WiSoC support" + depends on m +- depends on SOC_RT288X || SOC_RT305X ++ depends on SOC_RT288X || SOC_RT305X || SOC_RT3883 + select RT2X00_LIB_SOC + select RT2X00_LIB_MMIO + select RT2X00_LIB_CRYPTO +@@ -245,7 +245,7 @@ config RT2X00_LIB_PCI + + config RT2X00_LIB_SOC + tristate "RT2x00 SoC support" +- depends on SOC_RT288X || SOC_RT305X ++ depends on SOC_RT288X || SOC_RT305X || SOC_RT3883 + depends on m + select RT2X00_LIB + diff --git a/feeds/rtkmipsel/mac80211/patches/600-0009-rt2x00-rt2800lib-enable-support-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0009-rt2x00-rt2800lib-enable-support-for-RT3883.patch new file mode 100644 index 000000000..7fe38e095 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0009-rt2x00-rt2800lib-enable-support-for-RT3883.patch @@ -0,0 +1,20 @@ +From 4f16582c93a71eba9d389e0f0a8aa9099a9587cd Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:26 +0100 +Subject: [PATCH] rt2x00: rt2800lib: enable support for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -7822,6 +7822,7 @@ static int rt2800_probe_rt(struct rt2x00 + case RT3390: + case RT3572: + case RT3593: ++ case RT3883: + case RT5390: + case RT5392: + case RT5592: diff --git a/feeds/rtkmipsel/mac80211/patches/600-0010-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch b/feeds/rtkmipsel/mac80211/patches/600-0010-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch new file mode 100644 index 000000000..253a0c0c1 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0010-rt2x00-rt2800lib-add-rf_vals-for-RF3853.patch @@ -0,0 +1,112 @@ +From ecb394ccf248d8652c463133c4f404458a57a9c1 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:26 +0100 +Subject: [PATCH] rt2x00: rt2800lib: add rf_vals for RF3853 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 4 +- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 65 +++++++++++++++++++++++++++++++ + 2 files changed, 68 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -48,7 +48,8 @@ + * RF2853 2.4G/5G 3T3R + * RF3320 2.4G 1T1R(RT3350/RT3370/RT3390) + * RF3322 2.4G 2T2R(RT3352/RT3371/RT3372/RT3391/RT3392) +- * RF3053 2.4G/5G 3T3R(RT3883/RT3563/RT3573/RT3593/RT3662) ++ * RF3053 2.4G/5G 3T3R(RT3563/RT3573/RT3593) ++ * RF3853 2.4G/5G 3T3R(RT3883/RT3662) + * RF5592 2.4G/5G 2T2R + * RF3070 2.4G 1T1R + * RF5360 2.4G 1T1R +@@ -72,6 +73,7 @@ + #define RF5592 0x000f + #define RF3070 0x3070 + #define RF3290 0x3290 ++#define RF3853 0x3853 + #define RF5360 0x5360 + #define RF5362 0x5362 + #define RF5370 0x5370 +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -7442,6 +7442,66 @@ static const struct rf_channel rf_vals_3 + {173, 0x61, 0, 9}, + }; + ++static const struct rf_channel rf_vals_3853[] = { ++ {1, 241, 6, 2}, ++ {2, 241, 6, 7}, ++ {3, 242, 6, 2}, ++ {4, 242, 6, 7}, ++ {5, 243, 6, 2}, ++ {6, 243, 6, 7}, ++ {7, 244, 6, 2}, ++ {8, 244, 6, 7}, ++ {9, 245, 6, 2}, ++ {10, 245, 6, 7}, ++ {11, 246, 6, 2}, ++ {12, 246, 6, 7}, ++ {13, 247, 6, 2}, ++ {14, 248, 6, 4}, ++ ++ {36, 0x56, 8, 4}, ++ {38, 0x56, 8, 6}, ++ {40, 0x56, 8, 8}, ++ {44, 0x57, 8, 0}, ++ {46, 0x57, 8, 2}, ++ {48, 0x57, 8, 4}, ++ {52, 0x57, 8, 8}, ++ {54, 0x57, 8, 10}, ++ {56, 0x58, 8, 0}, ++ {60, 0x58, 8, 4}, ++ {62, 0x58, 8, 6}, ++ {64, 0x58, 8, 8}, ++ ++ {100, 0x5b, 8, 8}, ++ {102, 0x5b, 8, 10}, ++ {104, 0x5c, 8, 0}, ++ {108, 0x5c, 8, 4}, ++ {110, 0x5c, 8, 6}, ++ {112, 0x5c, 8, 8}, ++ {114, 0x5c, 8, 10}, ++ {116, 0x5d, 8, 0}, ++ {118, 0x5d, 8, 2}, ++ {120, 0x5d, 8, 4}, ++ {124, 0x5d, 8, 8}, ++ {126, 0x5d, 8, 10}, ++ {128, 0x5e, 8, 0}, ++ {132, 0x5e, 8, 4}, ++ {134, 0x5e, 8, 6}, ++ {136, 0x5e, 8, 8}, ++ {140, 0x5f, 8, 0}, ++ ++ {149, 0x5f, 8, 9}, ++ {151, 0x5f, 8, 11}, ++ {153, 0x60, 8, 1}, ++ {157, 0x60, 8, 5}, ++ {159, 0x60, 8, 7}, ++ {161, 0x60, 8, 9}, ++ {165, 0x61, 8, 1}, ++ {167, 0x61, 8, 3}, ++ {169, 0x61, 8, 5}, ++ {171, 0x61, 8, 7}, ++ {173, 0x61, 8, 9}, ++}; ++ + static const struct rf_channel rf_vals_5592_xtal20[] = { + /* Channel, N, K, mod, R */ + {1, 482, 4, 10, 3}, +@@ -7669,6 +7729,11 @@ static int rt2800_probe_hw_mode(struct r + spec->channels = rf_vals_3x; + break; + ++ case RF3853: ++ spec->num_channels = ARRAY_SIZE(rf_vals_3853); ++ spec->channels = rf_vals_3853; ++ break; ++ + case RF5592: + rt2800_register_read(rt2x00dev, MAC_DEBUG_INDEX, ®); + if (rt2x00_get_field32(reg, MAC_DEBUG_INDEX_XTAL)) { diff --git a/feeds/rtkmipsel/mac80211/patches/600-0011-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch b/feeds/rtkmipsel/mac80211/patches/600-0011-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch new file mode 100644 index 000000000..f15c22b30 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0011-rt2x00-rt2800lib-enable-VCO-calibration-for-RF3853.patch @@ -0,0 +1,28 @@ +From f8e3fcf18e1f2d7f9e6a9680c5452da090f33d88 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Thu, 1 Aug 2013 14:40:44 +0200 +Subject: [PATCH] rt2x00: rt2800lib: enable VCO calibration for RF3853 + +Signed-off-by: Gabor Juhos +--- + 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 +@@ -4379,6 +4379,7 @@ void rt2800_vco_calibration(struct rt2x0 + case RF3053: + case RF3070: + case RF3290: ++ case RF3853: + case RF5360: + case RF5362: + case RF5370: +@@ -7848,6 +7849,7 @@ static int rt2800_probe_hw_mode(struct r + case RF3053: + case RF3070: + case RF3290: ++ case RF3853: + case RF5360: + case RF5362: + case RF5370: diff --git a/feeds/rtkmipsel/mac80211/patches/600-0012-rt2x00-rt2800lib-add-channel-configuration-function-.patch b/feeds/rtkmipsel/mac80211/patches/600-0012-rt2x00-rt2800lib-add-channel-configuration-function-.patch new file mode 100644 index 000000000..c120f2c1d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0012-rt2x00-rt2800lib-add-channel-configuration-function-.patch @@ -0,0 +1,235 @@ +From 6e3a17190815c6aa4dc53c2cfe9125fb1154f187 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:27 +0100 +Subject: [PATCH] rt2x00: rt2800lib: add channel configuration function for + RF3853 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 208 +++++++++++++++++++++++++++++++ + 1 file changed, 208 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -2626,6 +2626,211 @@ static void rt2800_config_channel_rf3053 + } + } + ++static void rt2800_config_channel_rf3853(struct rt2x00_dev *rt2x00dev, ++ struct ieee80211_conf *conf, ++ struct rf_channel *rf, ++ struct channel_info *info) ++{ ++ u8 rfcsr; ++ u8 bbp; ++ u8 pwr1, pwr2, pwr3; ++ ++ const bool txbf_enabled = false; /* TODO */ ++ ++ /* TODO: add band selection */ ++ ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 6, 0x40); ++ else if (rf->channel < 132) ++ rt2800_rfcsr_write(rt2x00dev, 6, 0x80); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 6, 0x40); ++ ++ rt2800_rfcsr_write(rt2x00dev, 8, rf->rf1); ++ rt2800_rfcsr_write(rt2x00dev, 9, rf->rf3); ++ ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 11, 0x46); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 11, 0x48); ++ ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 12, 0x1a); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 12, 0x52); ++ ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x12); ++ ++ rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); ++ rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 0); ++ rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 0); ++ rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 0); ++ rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 0); ++ rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 0); ++ rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 0); ++ rt2x00_set_field8(&rfcsr, RFCSR1_RF_BLOCK_EN, 1); ++ rt2x00_set_field8(&rfcsr, RFCSR1_PLL_PD, 1); ++ ++ switch (rt2x00dev->default_ant.tx_chain_num) { ++ case 3: ++ rt2x00_set_field8(&rfcsr, RFCSR1_TX2_PD, 1); ++ /* fallthrough */ ++ case 2: ++ rt2x00_set_field8(&rfcsr, RFCSR1_TX1_PD, 1); ++ /* fallthrough */ ++ case 1: ++ rt2x00_set_field8(&rfcsr, RFCSR1_TX0_PD, 1); ++ break; ++ } ++ ++ switch (rt2x00dev->default_ant.rx_chain_num) { ++ case 3: ++ rt2x00_set_field8(&rfcsr, RFCSR1_RX2_PD, 1); ++ /* fallthrough */ ++ case 2: ++ rt2x00_set_field8(&rfcsr, RFCSR1_RX1_PD, 1); ++ /* fallthrough */ ++ case 1: ++ rt2x00_set_field8(&rfcsr, RFCSR1_RX0_PD, 1); ++ break; ++ } ++ rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); ++ ++ rt2800_adjust_freq_offset(rt2x00dev); ++ ++ rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); ++ if (!conf_is_ht40(conf)) ++ rfcsr &= ~(0x06); ++ else ++ rfcsr |= 0x06; ++ rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); ++ ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 31, 0xa0); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 31, 0x80); ++ ++ if (conf_is_ht40(conf)) ++ rt2800_rfcsr_write(rt2x00dev, 32, 0x80); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 32, 0xd8); ++ ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 34, 0x3c); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 34, 0x20); ++ ++ /* loopback RF_BS */ ++ rt2800_rfcsr_read(rt2x00dev, 36, &rfcsr); ++ if (rf->channel <= 14) ++ rt2x00_set_field8(&rfcsr, RFCSR36_RF_BS, 1); ++ else ++ rt2x00_set_field8(&rfcsr, RFCSR36_RF_BS, 0); ++ rt2800_rfcsr_write(rt2x00dev, 36, rfcsr); ++ ++ if (rf->channel <= 14) ++ rfcsr = 0x23; ++ else if (rf->channel < 100) ++ rfcsr = 0x36; ++ else if (rf->channel < 132) ++ rfcsr = 0x32; ++ else ++ rfcsr = 0x30; ++ ++ if (txbf_enabled) ++ rfcsr |= 0x40; ++ ++ rt2800_rfcsr_write(rt2x00dev, 39, rfcsr); ++ ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 44, 0x93); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 44, 0x9b); ++ ++ if (rf->channel <= 14) ++ rfcsr = 0xbb; ++ else if (rf->channel < 100) ++ rfcsr = 0xeb; ++ else if (rf->channel < 132) ++ rfcsr = 0xb3; ++ else ++ rfcsr = 0x9b; ++ rt2800_rfcsr_write(rt2x00dev, 45, rfcsr); ++ ++ if (rf->channel <= 14) ++ rfcsr = 0x8e; ++ else ++ rfcsr = 0x8a; ++ ++ if (txbf_enabled) ++ rfcsr |= 0x20; ++ ++ rt2800_rfcsr_write(rt2x00dev, 49, rfcsr); ++ ++ rt2800_rfcsr_write(rt2x00dev, 50, 0x86); ++ ++ rt2800_rfcsr_read(rt2x00dev, 51, &rfcsr); ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 51, 0x75); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 51, 0x51); ++ ++ rt2800_rfcsr_read(rt2x00dev, 52, &rfcsr); ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 52, 0x45); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 52, 0x05); ++ ++ if (rf->channel <= 14) { ++ pwr1 = info->default_power1 & 0x1f; ++ pwr2 = info->default_power2 & 0x1f; ++ pwr3 = info->default_power3 & 0x1f; ++ } else { ++ pwr1 = 0x48 | ((info->default_power1 & 0x18) << 1) | ++ (info->default_power1 & 0x7); ++ pwr2 = 0x48 | ((info->default_power2 & 0x18) << 1) | ++ (info->default_power2 & 0x7); ++ pwr3 = 0x48 | ((info->default_power3 & 0x18) << 1) | ++ (info->default_power3 & 0x7); ++ } ++ ++ rt2800_rfcsr_write(rt2x00dev, 53, pwr1); ++ rt2800_rfcsr_write(rt2x00dev, 54, pwr2); ++ rt2800_rfcsr_write(rt2x00dev, 55, pwr3); ++ ++ rt2x00_dbg(rt2x00dev, "Channel:%d, pwr1:%02x, pwr2:%02x, pwr3:%02x\n", ++ rf->channel, pwr1, pwr2, pwr3); ++ ++ bbp = (info->default_power1 >> 5) | ++ ((info->default_power2 & 0xe0) >> 1); ++ rt2800_bbp_write(rt2x00dev, 109, bbp); ++ ++ rt2800_bbp_read(rt2x00dev, 110, &bbp); ++ bbp &= 0x0f; ++ bbp |= (info->default_power3 & 0xe0) >> 1; ++ rt2800_bbp_write(rt2x00dev, 110, bbp); ++ ++ rt2800_rfcsr_read(rt2x00dev, 57, &rfcsr); ++ if (rf->channel <= 14) ++ rt2800_rfcsr_write(rt2x00dev, 57, 0x6e); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 57, 0x3e); ++ ++ /* Enable RF tuning */ ++ rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); ++ rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1); ++ rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); ++ ++ udelay(2000); ++ ++ rt2800_bbp_read(rt2x00dev, 49, &bbp); ++ /* clear update flag */ ++ rt2800_bbp_write(rt2x00dev, 49, bbp & 0xfe); ++ rt2800_bbp_write(rt2x00dev, 49, bbp); ++ ++ /* TODO: add calibration for TxBF */ ++} ++ + #define POWER_BOUND 0x27 + #define POWER_BOUND_5G 0x2b + +@@ -3238,6 +3443,9 @@ static void rt2800_config_channel(struct + case RF3322: + rt2800_config_channel_rf3322(rt2x00dev, conf, rf, info); + break; ++ case RF3853: ++ rt2800_config_channel_rf3853(rt2x00dev, conf, rf, info); ++ break; + case RF3070: + case RF5360: + case RF5362: diff --git a/feeds/rtkmipsel/mac80211/patches/600-0013-rt2x00-rt2800lib-enable-RF3853-support.patch b/feeds/rtkmipsel/mac80211/patches/600-0013-rt2x00-rt2800lib-enable-RF3853-support.patch new file mode 100644 index 000000000..f006304e7 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0013-rt2x00-rt2800lib-enable-RF3853-support.patch @@ -0,0 +1,20 @@ +From afd38ae82226551bf879b6c7c4b620c271fee9d2 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Thu, 1 Aug 2013 14:42:05 +0200 +Subject: [PATCH] rt2x00: rt2800lib: enable RF3853 support + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -7407,6 +7407,7 @@ static int rt2800_init_eeprom(struct rt2 + case RF3290: + case RF3320: + case RF3322: ++ case RF3853: + case RF5360: + case RF5362: + case RF5370: diff --git a/feeds/rtkmipsel/mac80211/patches/600-0014-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch b/feeds/rtkmipsel/mac80211/patches/600-0014-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch new file mode 100644 index 000000000..a56bfa865 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0014-rt2x00-rt2800lib-add-MAC-register-initialization-for.patch @@ -0,0 +1,77 @@ +From 0094872a5e8e4664c6ea1b2dfa487063d39ae363 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:26 +0100 +Subject: [PATCH] rt2x00: rt2800lib: add MAC register initialization for + RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 14 ++++++++++++++ + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 19 ++++++++++++++++--- + 2 files changed, 30 insertions(+), 3 deletions(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -1588,6 +1588,20 @@ + #define TX_PWR_CFG_9_STBC7_CH2 FIELD32(0x00000f00) + + /* ++ * TX_TXBF_CFG: ++ */ ++#define TX_TXBF_CFG_0 0x138c ++#define TX_TXBF_CFG_1 0x13a4 ++#define TX_TXBF_CFG_2 0x13a8 ++#define TX_TXBF_CFG_3 0x13ac ++ ++/* ++ * TX_FBK_CFG_3S: ++ */ ++#define TX_FBK_CFG_3S_0 0x13c4 ++#define TX_FBK_CFG_3S_1 0x13c8 ++ ++/* + * RX_FILTER_CFG: RX configuration register. + */ + #define RX_FILTER_CFG 0x1400 +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -4982,6 +4982,12 @@ static int rt2800_init_registers(struct + rt2800_register_write(rt2x00dev, TX_SW_CFG2, + 0x00000000); + } ++ } else if (rt2x00_rt(rt2x00dev, RT3883)) { ++ rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000402); ++ rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00000000); ++ rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00040000); ++ rt2800_register_write(rt2x00dev, TX_TXBF_CFG_0, 0x8000fc21); ++ rt2800_register_write(rt2x00dev, TX_TXBF_CFG_3, 0x00009c40); + } else if (rt2x00_rt(rt2x00dev, RT5390) || + rt2x00_rt(rt2x00dev, RT5392) || + rt2x00_rt(rt2x00dev, RT5592)) { +@@ -5012,9 +5018,11 @@ static int rt2800_init_registers(struct + + rt2800_register_read(rt2x00dev, MAX_LEN_CFG, ®); + rt2x00_set_field32(®, MAX_LEN_CFG_MAX_MPDU, AGGREGATION_SIZE); +- if (rt2x00_rt_rev_gte(rt2x00dev, RT2872, REV_RT2872E) || +- rt2x00_rt(rt2x00dev, RT2883) || +- rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070E)) ++ if (rt2x00_rt(rt2x00dev, RT3883)) ++ rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 3); ++ else if (rt2x00_rt_rev_gte(rt2x00dev, RT2872, REV_RT2872E) || ++ rt2x00_rt(rt2x00dev, RT2883) || ++ rt2x00_rt_rev_lt(rt2x00dev, RT3070, REV_RT3070E)) + rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 2); + else + rt2x00_set_field32(®, MAX_LEN_CFG_MAX_PSDU, 1); +@@ -5167,6 +5175,11 @@ static int rt2800_init_registers(struct + reg = rt2x00_rt(rt2x00dev, RT5592) ? 0x00000082 : 0x00000002; + rt2800_register_write(rt2x00dev, TXOP_HLDR_ET, reg); + ++ if (rt2x00_rt(rt2x00dev, RT3883)) { ++ rt2800_register_write(rt2x00dev, TX_FBK_CFG_3S_0, 0x12111008); ++ rt2800_register_write(rt2x00dev, TX_FBK_CFG_3S_1, 0x16151413); ++ } ++ + rt2800_register_read(rt2x00dev, TX_RTS_CFG, ®); + rt2x00_set_field32(®, TX_RTS_CFG_AUTO_RTS_RETRY_LIMIT, 32); + rt2x00_set_field32(®, TX_RTS_CFG_RTS_THRES, diff --git a/feeds/rtkmipsel/mac80211/patches/600-0015-rt2x00-rt2800soc-fix-rt2800soc_disable_radio-for-RT3.patch b/feeds/rtkmipsel/mac80211/patches/600-0015-rt2x00-rt2800soc-fix-rt2800soc_disable_radio-for-RT3.patch new file mode 100644 index 000000000..d68ad5044 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0015-rt2x00-rt2800soc-fix-rt2800soc_disable_radio-for-RT3.patch @@ -0,0 +1,30 @@ +From 6c2d32478159fffff0b85abb6817a21bb2338231 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:27 +0100 +Subject: [PATCH] rt2x00: rt2800soc: fix rt2800soc_disable_radio for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800soc.c | 9 ++++++++- + 1 file changed, 8 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c +@@ -51,9 +51,16 @@ static bool rt2800soc_hwcrypt_disabled(s + + static void rt2800soc_disable_radio(struct rt2x00_dev *rt2x00dev) + { ++ u32 reg; ++ + rt2800_disable_radio(rt2x00dev); + rt2x00mmio_register_write(rt2x00dev, PWR_PIN_CFG, 0); +- rt2x00mmio_register_write(rt2x00dev, TX_PIN_CFG, 0); ++ ++ reg = 0; ++ if (rt2x00_rt(rt2x00dev, RT3883)) ++ rt2x00_set_field32(®, TX_PIN_CFG_RFTR_EN, 1); ++ ++ rt2x00mmio_register_write(rt2x00dev, TX_PIN_CFG, reg); + } + + static int rt2800soc_set_device_state(struct rt2x00_dev *rt2x00dev, diff --git a/feeds/rtkmipsel/mac80211/patches/600-0016-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch b/feeds/rtkmipsel/mac80211/patches/600-0016-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch new file mode 100644 index 000000000..953263226 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0016-rt2x00-rt2800lib-add-BBP-register-initialization-for.patch @@ -0,0 +1,71 @@ +From 84833056aa7dd25f5b097e31c78f2a0914c5160c Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:26 +0100 +Subject: [PATCH] rt2x00: rt2800lib: add BBP register initialization for + RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 44 +++++++++++++++++++++++++++++++ + 1 file changed, 44 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -5785,6 +5785,47 @@ static void rt2800_init_bbp_3593(struct + rt2800_bbp_write(rt2x00dev, 103, 0xc0); + } + ++static void rt2800_init_bbp_3883(struct rt2x00_dev *rt2x00dev) ++{ ++ rt2800_init_bbp_early(rt2x00dev); ++ ++ rt2800_bbp_write(rt2x00dev, 4, 0x50); ++ rt2800_bbp_write(rt2x00dev, 47, 0x48); ++ ++ rt2800_bbp_write(rt2x00dev, 86, 0x46); ++ rt2800_bbp_write(rt2x00dev, 88, 0x90); ++ ++ rt2800_bbp_write(rt2x00dev, 92, 0x02); ++ ++ rt2800_bbp_write(rt2x00dev, 103, 0xc0); ++ rt2800_bbp_write(rt2x00dev, 104, 0x92); ++ rt2800_bbp_write(rt2x00dev, 105, 0x34); ++ rt2800_bbp_write(rt2x00dev, 106, 0x12); ++ rt2800_bbp_write(rt2x00dev, 120, 0x50); ++ rt2800_bbp_write(rt2x00dev, 137, 0x0f); ++ rt2800_bbp_write(rt2x00dev, 163, 0x9d); ++ ++ /* Set ITxBF timeout to 0x9C40=1000msec */ ++ rt2800_bbp_write(rt2x00dev, 179, 0x02); ++ rt2800_bbp_write(rt2x00dev, 180, 0x00); ++ rt2800_bbp_write(rt2x00dev, 182, 0x40); ++ rt2800_bbp_write(rt2x00dev, 180, 0x01); ++ rt2800_bbp_write(rt2x00dev, 182, 0x9c); ++ ++ rt2800_bbp_write(rt2x00dev, 179, 0x00); ++ ++ /* Reprogram the inband interface to put right values in RXWI */ ++ rt2800_bbp_write(rt2x00dev, 142, 0x04); ++ rt2800_bbp_write(rt2x00dev, 143, 0x3b); ++ rt2800_bbp_write(rt2x00dev, 142, 0x06); ++ rt2800_bbp_write(rt2x00dev, 143, 0xa0); ++ rt2800_bbp_write(rt2x00dev, 142, 0x07); ++ rt2800_bbp_write(rt2x00dev, 143, 0xa1); ++ rt2800_bbp_write(rt2x00dev, 142, 0x08); ++ rt2800_bbp_write(rt2x00dev, 143, 0xa2); ++ rt2800_bbp_write(rt2x00dev, 148, 0xc8); ++} ++ + static void rt2800_init_bbp_53xx(struct rt2x00_dev *rt2x00dev) + { + int ant, div_mode; +@@ -6003,6 +6044,9 @@ static void rt2800_init_bbp(struct rt2x0 + case RT3593: + rt2800_init_bbp_3593(rt2x00dev); + return; ++ case RT3883: ++ rt2800_init_bbp_3883(rt2x00dev); ++ return; + case RT5390: + case RT5392: + rt2800_init_bbp_53xx(rt2x00dev); diff --git a/feeds/rtkmipsel/mac80211/patches/600-0017-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0017-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch new file mode 100644 index 000000000..936fa35a0 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0017-rt2x00-rt2800lib-add-RFCSR-initialization-for-RT3883.patch @@ -0,0 +1,178 @@ +From 99c659cf345640fd0f733cbcaf4583cc2c868ec0 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Mon, 29 Apr 2013 13:21:48 +0200 +Subject: [PATCH] rt2x00: rt2800lib: add RFCSR initialization for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800.h | 1 + + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 141 +++++++++++++++++++++++++++++++ + 2 files changed, 142 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -2171,6 +2171,7 @@ struct mac_iveiv_entry { + /* + * RFCSR 2: + */ ++#define RFCSR2_RESCAL_BP FIELD8(0x40) + #define RFCSR2_RESCAL_EN FIELD8(0x80) + + /* +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -6820,6 +6820,144 @@ static void rt2800_init_rfcsr_3593(struc + /* TODO: enable stream mode support */ + } + ++static void rt2800_init_rfcsr_3883(struct rt2x00_dev *rt2x00dev) ++{ ++ u8 rfcsr; ++ ++ /* TODO: get the actual ECO value from the SoC */ ++ const unsigned int eco = 5; ++ ++ rt2800_rf_init_calibration(rt2x00dev, 2); ++ ++ rt2800_rfcsr_write(rt2x00dev, 0, 0xe0); ++ rt2800_rfcsr_write(rt2x00dev, 1, 0x03); ++ rt2800_rfcsr_write(rt2x00dev, 2, 0x50); ++ rt2800_rfcsr_write(rt2x00dev, 3, 0x20); ++ rt2800_rfcsr_write(rt2x00dev, 4, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 5, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 6, 0x40); ++ rt2800_rfcsr_write(rt2x00dev, 7, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 8, 0x5b); ++ rt2800_rfcsr_write(rt2x00dev, 9, 0x08); ++ rt2800_rfcsr_write(rt2x00dev, 10, 0xd3); ++ rt2800_rfcsr_write(rt2x00dev, 11, 0x48); ++ rt2800_rfcsr_write(rt2x00dev, 12, 0x1a); ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x12); ++ rt2800_rfcsr_write(rt2x00dev, 14, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 15, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 16, 0x00); ++ ++ /* RFCSR 17 will be initialized later based on the ++ * frequency offset stored in the EEPROM ++ */ ++ ++ rt2800_rfcsr_write(rt2x00dev, 18, 0x40); ++ rt2800_rfcsr_write(rt2x00dev, 19, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 20, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 21, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 22, 0x20); ++ rt2800_rfcsr_write(rt2x00dev, 23, 0xc0); ++ rt2800_rfcsr_write(rt2x00dev, 24, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 25, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 26, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 27, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 28, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 29, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 30, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 31, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 32, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 33, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 34, 0x20); ++ rt2800_rfcsr_write(rt2x00dev, 35, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 36, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 37, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 38, 0x86); ++ rt2800_rfcsr_write(rt2x00dev, 39, 0x23); ++ rt2800_rfcsr_write(rt2x00dev, 40, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 41, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 42, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 43, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 44, 0x93); ++ rt2800_rfcsr_write(rt2x00dev, 45, 0xbb); ++ rt2800_rfcsr_write(rt2x00dev, 46, 0x60); ++ rt2800_rfcsr_write(rt2x00dev, 47, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 48, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 49, 0x8e); ++ rt2800_rfcsr_write(rt2x00dev, 50, 0x86); ++ rt2800_rfcsr_write(rt2x00dev, 51, 0x51); ++ rt2800_rfcsr_write(rt2x00dev, 52, 0x05); ++ rt2800_rfcsr_write(rt2x00dev, 53, 0x76); ++ rt2800_rfcsr_write(rt2x00dev, 54, 0x76); ++ rt2800_rfcsr_write(rt2x00dev, 55, 0x76); ++ rt2800_rfcsr_write(rt2x00dev, 56, 0xdb); ++ rt2800_rfcsr_write(rt2x00dev, 57, 0x3e); ++ rt2800_rfcsr_write(rt2x00dev, 58, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 59, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 60, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 61, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 62, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 63, 0x00); ++ ++ /* TODO: rx filter calibration? */ ++ ++ rt2800_bbp_write(rt2x00dev, 137, 0x0f); ++ ++ rt2800_bbp_write(rt2x00dev, 163, 0x9d); ++ ++ rt2800_bbp_write(rt2x00dev, 105, 0x05); ++ ++ rt2800_bbp_write(rt2x00dev, 179, 0x02); ++ rt2800_bbp_write(rt2x00dev, 180, 0x00); ++ rt2800_bbp_write(rt2x00dev, 182, 0x40); ++ rt2800_bbp_write(rt2x00dev, 180, 0x01); ++ rt2800_bbp_write(rt2x00dev, 182, 0x9c); ++ ++ rt2800_bbp_write(rt2x00dev, 179, 0x00); ++ ++ rt2800_bbp_write(rt2x00dev, 142, 0x04); ++ rt2800_bbp_write(rt2x00dev, 143, 0x3b); ++ rt2800_bbp_write(rt2x00dev, 142, 0x06); ++ rt2800_bbp_write(rt2x00dev, 143, 0xa0); ++ rt2800_bbp_write(rt2x00dev, 142, 0x07); ++ rt2800_bbp_write(rt2x00dev, 143, 0xa1); ++ rt2800_bbp_write(rt2x00dev, 142, 0x08); ++ rt2800_bbp_write(rt2x00dev, 143, 0xa2); ++ rt2800_bbp_write(rt2x00dev, 148, 0xc8); ++ ++ if (eco == 5) { ++ rt2800_rfcsr_write(rt2x00dev, 32, 0xd8); ++ rt2800_rfcsr_write(rt2x00dev, 33, 0x32); ++ } ++ ++ rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); ++ rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_BP, 0); ++ rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 1); ++ rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); ++ msleep(1); ++ rt2x00_set_field8(&rfcsr, RFCSR2_RESCAL_EN, 0); ++ rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); ++ rt2x00_set_field8(&rfcsr, RFCSR1_RF_BLOCK_EN, 1); ++ rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 6, &rfcsr); ++ rfcsr |= 0xc0; ++ rt2800_rfcsr_write(rt2x00dev, 6, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); ++ rfcsr |= 0x20; ++ rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 46, &rfcsr); ++ rfcsr |= 0x20; ++ rt2800_rfcsr_write(rt2x00dev, 46, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr); ++ rfcsr &= ~0xee; ++ rt2800_rfcsr_write(rt2x00dev, 20, rfcsr); ++} ++ + static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev) + { + rt2800_rf_init_calibration(rt2x00dev, 2); +@@ -7051,6 +7189,9 @@ static void rt2800_init_rfcsr(struct rt2 + case RT3390: + rt2800_init_rfcsr_3390(rt2x00dev); + break; ++ case RT3883: ++ rt2800_init_rfcsr_3883(rt2x00dev); ++ break; + case RT3572: + rt2800_init_rfcsr_3572(rt2x00dev); + break; diff --git a/feeds/rtkmipsel/mac80211/patches/600-0018-rt2x00-rt2800lib-use-the-extended-EEPROM-map-for-RT3.patch b/feeds/rtkmipsel/mac80211/patches/600-0018-rt2x00-rt2800lib-use-the-extended-EEPROM-map-for-RT3.patch new file mode 100644 index 000000000..ae899f73b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0018-rt2x00-rt2800lib-use-the-extended-EEPROM-map-for-RT3.patch @@ -0,0 +1,22 @@ +From 86022438ffeb1b87dfcd018bf477fdbb43076691 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Wed, 8 May 2013 19:35:33 +0200 +Subject: [PATCH] rt2x00: rt2800lib: use the extended EEPROM map for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -342,7 +342,8 @@ static unsigned int rt2800_eeprom_word_i + wiphy_name(rt2x00dev->hw->wiphy), word)) + return 0; + +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + map = rt2800_eeprom_map_ext; + else + map = rt2800_eeprom_map; diff --git a/feeds/rtkmipsel/mac80211/patches/600-0019-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0019-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch new file mode 100644 index 000000000..bcaf67677 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0019-rt2x00-rt2800lib-force-rf-type-to-RF3853-on-RT3883.patch @@ -0,0 +1,21 @@ +From 4cf5403f02fa65dc2207f61d223cffa9ae50e907 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Thu, 1 Aug 2013 14:48:21 +0200 +Subject: [PATCH] rt2x00: rt2800lib: force rf type to RF3853 on RT3883 + +Signed-off-by: Gabor Juhos +--- + 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 +@@ -7588,6 +7588,8 @@ static int rt2800_init_eeprom(struct rt2 + rt2x00_rt(rt2x00dev, RT5390) || + rt2x00_rt(rt2x00dev, RT5392)) + rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); ++ else if (rt2x00_rt(rt2x00dev, RT3883)) ++ rf = RF3853; + else + rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); + diff --git a/feeds/rtkmipsel/mac80211/patches/600-0020-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch b/feeds/rtkmipsel/mac80211/patches/600-0020-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch new file mode 100644 index 000000000..3169c1048 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0020-rt2x00-rt2800lib-add-channel-configuration-code-for-.patch @@ -0,0 +1,136 @@ +From 269f19c848a2380db03a3f207cafb88e28d71c53 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:28 +0100 +Subject: [PATCH] rt2x00: rt2800lib: add channel configuration code for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 72 +++++++++++++++++++++++++++++-- + 1 file changed, 69 insertions(+), 3 deletions(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -3406,6 +3406,36 @@ static char rt2800_txpower_to_dev(struct + return clamp_t(char, txpower, MIN_A_TXPOWER, MAX_A_TXPOWER); + } + ++static void rt3883_bbp_adjust(struct rt2x00_dev *rt2x00dev, ++ struct rf_channel *rf) ++{ ++ u8 bbp; ++ ++ bbp = (rf->channel > 14) ? 0x48 : 0x38; ++ rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, bbp); ++ ++ rt2800_bbp_write(rt2x00dev, 69, 0x12); ++ ++ if (rf->channel <= 14) { ++ rt2800_bbp_write(rt2x00dev, 70, 0x0a); ++ } else { ++ /* Disable CCK packet detection */ ++ rt2800_bbp_write(rt2x00dev, 70, 0x00); ++ } ++ ++ rt2800_bbp_write(rt2x00dev, 73, 0x10); ++ ++ if (rf->channel > 14) { ++ rt2800_bbp_write(rt2x00dev, 62, 0x1d); ++ rt2800_bbp_write(rt2x00dev, 63, 0x1d); ++ rt2800_bbp_write(rt2x00dev, 64, 0x1d); ++ } else { ++ rt2800_bbp_write(rt2x00dev, 62, 0x2d); ++ rt2800_bbp_write(rt2x00dev, 63, 0x2d); ++ rt2800_bbp_write(rt2x00dev, 64, 0x2d); ++ } ++} ++ + static void rt2800_config_channel(struct rt2x00_dev *rt2x00dev, + struct ieee80211_conf *conf, + struct rf_channel *rf, +@@ -3424,6 +3454,12 @@ static void rt2800_config_channel(struct + rt2800_txpower_to_dev(rt2x00dev, rf->channel, + info->default_power3); + ++ switch (rt2x00dev->chip.rt) { ++ case RT3883: ++ rt3883_bbp_adjust(rt2x00dev, rf); ++ break; ++ } ++ + switch (rt2x00dev->chip.rf) { + case RF2020: + case RF3020: +@@ -3507,6 +3543,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); ++ } else if (rt2x00_rt(rt2x00dev, RT3883)) { ++ rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); ++ rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); ++ rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); ++ ++ if (rt2x00dev->default_ant.rx_chain_num > 1) ++ rt2800_bbp_write(rt2x00dev, 86, 0x46); ++ else ++ rt2800_bbp_write(rt2x00dev, 86, 0); + } else { + rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); + rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); +@@ -3519,6 +3564,7 @@ static void rt2800_config_channel(struct + !rt2x00_rt(rt2x00dev, RT5392)) { + if (rt2x00_has_cap_external_lna_bg(rt2x00dev)) { + rt2800_bbp_write(rt2x00dev, 82, 0x62); ++ rt2800_bbp_write(rt2x00dev, 82, 0x62); + rt2800_bbp_write(rt2x00dev, 75, 0x46); + } else { + if (rt2x00_rt(rt2x00dev, RT3593)) +@@ -3527,19 +3573,22 @@ static void rt2800_config_channel(struct + rt2800_bbp_write(rt2x00dev, 82, 0x84); + rt2800_bbp_write(rt2x00dev, 75, 0x50); + } +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + rt2800_bbp_write(rt2x00dev, 83, 0x8a); + } + + } else { + if (rt2x00_rt(rt2x00dev, RT3572)) + rt2800_bbp_write(rt2x00dev, 82, 0x94); +- else if (rt2x00_rt(rt2x00dev, RT3593)) ++ else if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + rt2800_bbp_write(rt2x00dev, 82, 0x82); + else + rt2800_bbp_write(rt2x00dev, 82, 0xf2); + +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + rt2800_bbp_write(rt2x00dev, 83, 0x9a); + + if (rt2x00_has_cap_external_lna_a(rt2x00dev)) +@@ -3661,6 +3710,23 @@ static void rt2800_config_channel(struct + + rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); + ++ usleep_range(1000, 1500); ++ } ++ ++ if (rt2x00_rt(rt2x00dev, RT3883)) { ++ if (!conf_is_ht40(conf)) ++ rt2800_bbp_write(rt2x00dev, 105, 0x34); ++ else ++ rt2800_bbp_write(rt2x00dev, 105, 0x04); ++ ++ /* AGC init */ ++ if (rf->channel <= 14) ++ reg = 0x2e + rt2x00dev->lna_gain; ++ else ++ reg = 0x20 + ((rt2x00dev->lna_gain * 5) / 3); ++ ++ rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, reg); ++ + usleep_range(1000, 1500); + } + diff --git a/feeds/rtkmipsel/mac80211/patches/600-0021-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch b/feeds/rtkmipsel/mac80211/patches/600-0021-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch new file mode 100644 index 000000000..fa646d2fa --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0021-rt2x00-rt2800lib-fix-txpower_to_dev-function-for-RT3.patch @@ -0,0 +1,30 @@ +From e37d93abaabe3ab72b0332a18092acc162307274 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Mon, 30 Sep 2013 13:57:26 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix txpower_to_dev function for RT3883 + +Signed-off-by: Gabor Juhos +--- + 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 +@@ -3393,13 +3393,15 @@ static char rt2800_txpower_to_dev(struct + unsigned int channel, + char txpower) + { +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + txpower = rt2x00_get_field8(txpower, EEPROM_TXPOWER_ALC); + + if (channel <= 14) + return clamp_t(char, txpower, MIN_G_TXPOWER, MAX_G_TXPOWER); + +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + return clamp_t(char, txpower, MIN_A_TXPOWER_3593, + MAX_A_TXPOWER_3593); + else diff --git a/feeds/rtkmipsel/mac80211/patches/600-0022-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch b/feeds/rtkmipsel/mac80211/patches/600-0022-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch new file mode 100644 index 000000000..c06876906 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0022-rt2x00-rt2800lib-use-correct-txpower-calculation-fun.patch @@ -0,0 +1,23 @@ +From c4d79e344bd580d85821390d49f92dced7d8e125 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:29 +0100 +Subject: [PATCH] rt2x00: rt2800lib: use correct txpower calculation function + for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -4612,7 +4612,8 @@ static void rt2800_config_txpower(struct + struct ieee80211_channel *chan, + int power_level) + { +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + rt2800_config_txpower_rt3593(rt2x00dev, chan, power_level); + else + rt2800_config_txpower_rt28xx(rt2x00dev, chan, power_level); diff --git a/feeds/rtkmipsel/mac80211/patches/600-0023-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch b/feeds/rtkmipsel/mac80211/patches/600-0023-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch new file mode 100644 index 000000000..74d80ded1 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0023-rt2x00-rt2800lib-hardcode-txmixer-gain-values-to-zer.patch @@ -0,0 +1,33 @@ +From caea0671cd8fd9ade4f5969cbe0ee545e94ae105 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sat, 24 Aug 2013 11:49:55 +0200 +Subject: [PATCH] rt2x00: rt2800lib: hardcode txmixer gain values to zero for + RT3883 + +Signed-off-by: Gabor Juhos +--- + 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 +@@ -7470,7 +7470,8 @@ static u8 rt2800_get_txmixer_gain_24g(st + { + u16 word; + +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + return 0; + + rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_BG, &word); +@@ -7484,7 +7485,8 @@ static u8 rt2800_get_txmixer_gain_5g(str + { + u16 word; + +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + return 0; + + rt2800_eeprom_read(rt2x00dev, EEPROM_TXMIXER_GAIN_A, &word); diff --git a/feeds/rtkmipsel/mac80211/patches/600-0024-rt2x00-rt2800lib-use-correct-RT-XWI-size-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0024-rt2x00-rt2800lib-use-correct-RT-XWI-size-for-RT3883.patch new file mode 100644 index 000000000..125928642 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0024-rt2x00-rt2800lib-use-correct-RT-XWI-size-for-RT3883.patch @@ -0,0 +1,20 @@ +From 11c40fb47c4a4dd6ad060c2ae127ced89ffb9fe1 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Thu, 18 Apr 2013 14:33:33 +0200 +Subject: [PATCH] rt2x00: rt2800lib: use correct [RT]XWI size for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 1 + + 1 file changed, 1 insertion(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -558,6 +558,7 @@ void rt2800_get_txwi_rxwi_size(struct rt + { + switch (rt2x00dev->chip.rt) { + case RT3593: ++ case RT3883: + *txwi_size = TXWI_DESC_SIZE_4WORDS; + *rxwi_size = RXWI_DESC_SIZE_5WORDS; + break; diff --git a/feeds/rtkmipsel/mac80211/patches/600-0025-rt2x00-rt2800lib-use-correct-beacon-base-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0025-rt2x00-rt2800lib-use-correct-beacon-base-for-RT3883.patch new file mode 100644 index 000000000..0dcc027ff --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0025-rt2x00-rt2800lib-use-correct-beacon-base-for-RT3883.patch @@ -0,0 +1,22 @@ +From b403bdfa00665ce6b53583bdb837ffad0b91c09f Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:29 +0100 +Subject: [PATCH] rt2x00: rt2800lib: use correct beacon base for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -983,7 +983,8 @@ EXPORT_SYMBOL_GPL(rt2800_txdone_entry); + static unsigned int rt2800_hw_beacon_base(struct rt2x00_dev *rt2x00dev, + unsigned int index) + { +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + return HW_BEACON_BASE_HIGH(index); + + return HW_BEACON_BASE(index); diff --git a/feeds/rtkmipsel/mac80211/patches/600-0026-rt2x00-rt2800lib-use-correct-beacon-count-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0026-rt2x00-rt2800lib-use-correct-beacon-count-for-RT3883.patch new file mode 100644 index 000000000..6ce224aba --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0026-rt2x00-rt2800lib-use-correct-beacon-count-for-RT3883.patch @@ -0,0 +1,22 @@ +From 74b7eaf75fc6eb86292056ef705e543f9cd6086b Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 18 Aug 2013 09:57:58 +0200 +Subject: [PATCH] rt2x00: rt2800lib: use correct beacon count for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -8403,7 +8403,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r + if (rt2x00_rt(rt2x00dev, RT3593)) + __set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); + +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + drv_data->hw_beacon_count = 16; + else + drv_data->hw_beacon_count = 8; diff --git a/feeds/rtkmipsel/mac80211/patches/600-0027-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch b/feeds/rtkmipsel/mac80211/patches/600-0027-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch new file mode 100644 index 000000000..39363685f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0027-rt2x00-rt2800lib-fix-antenna-configuration-for-RT388.patch @@ -0,0 +1,22 @@ +From fa5ad9c025610c22048add2f0ad03f62b6ca1e74 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Mon, 30 Sep 2013 16:53:33 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix antenna configuration for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -1938,7 +1938,8 @@ void rt2800_config_ant(struct rt2x00_dev + rt2800_bbp_write(rt2x00dev, 3, r3); + rt2800_bbp_write(rt2x00dev, 1, r1); + +- if (rt2x00_rt(rt2x00dev, RT3593)) { ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) { + if (ant->rx_chain_num == 1) + rt2800_bbp_write(rt2x00dev, 86, 0x00); + else diff --git a/feeds/rtkmipsel/mac80211/patches/600-0028-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch b/feeds/rtkmipsel/mac80211/patches/600-0028-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch new file mode 100644 index 000000000..f0285874d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0028-rt2x00-rt2800lib-fix-LNA-gain-configuration-for-RT38.patch @@ -0,0 +1,32 @@ +From 6d668fef3a1baa60bdd715ee062ddb6333d2647c Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Mon, 30 Sep 2013 16:58:23 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix LNA gain configuration for RT3883 + +Signed-off-by: Gabor Juhos +--- + 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 +@@ -1961,7 +1961,8 @@ static void rt2800_config_lna_gain(struc + rt2800_eeprom_read(rt2x00dev, EEPROM_LNA, &eeprom); + lna_gain = rt2x00_get_field16(eeprom, EEPROM_LNA_A0); + } else if (libconf->rf.channel <= 128) { +- if (rt2x00_rt(rt2x00dev, RT3593)) { ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) { + rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); + lna_gain = rt2x00_get_field16(eeprom, + EEPROM_EXT_LNA2_A1); +@@ -1971,7 +1972,8 @@ static void rt2800_config_lna_gain(struc + EEPROM_RSSI_BG2_LNA_A1); + } + } else { +- if (rt2x00_rt(rt2x00dev, RT3593)) { ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) { + rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &eeprom); + lna_gain = rt2x00_get_field16(eeprom, + EEPROM_EXT_LNA2_A2); diff --git a/feeds/rtkmipsel/mac80211/patches/600-0029-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0029-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch new file mode 100644 index 000000000..ab8c625c1 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0029-rt2x00-rt2800lib-fix-VGC-setup-for-RT3883.patch @@ -0,0 +1,44 @@ +From c49b2d829aa1c816a46a577cdec6d2ff14d9f06e Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Tue, 1 Oct 2013 15:40:08 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix VGC setup for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 11 +++++++++-- + 1 file changed, 9 insertions(+), 2 deletions(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -4812,7 +4812,8 @@ static u8 rt2800_get_default_vgc(struct + else + vgc = 0x2e + rt2x00dev->lna_gain; + } else { /* 5GHZ band */ +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + vgc = 0x20 + (rt2x00dev->lna_gain * 5) / 3; + else if (rt2x00_rt(rt2x00dev, RT5592)) + vgc = 0x24 + (2 * rt2x00dev->lna_gain); +@@ -4832,7 +4833,8 @@ static inline void rt2800_set_vgc(struct + { + if (qual->vgc_level != vgc_level) { + if (rt2x00_rt(rt2x00dev, RT3572) || +- rt2x00_rt(rt2x00dev, RT3593)) { ++ rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) { + rt2800_bbp_write_with_rx_chain(rt2x00dev, 66, + vgc_level); + } else if (rt2x00_rt(rt2x00dev, RT5592)) { +@@ -4879,6 +4881,11 @@ void rt2800_link_tuner(struct rt2x00_dev + } + break; + ++ case RT3883: ++ if (qual->rssi > -65) ++ vgc += 0x10; ++ break; ++ + case RT5592: + if (qual->rssi > -65) + vgc += 0x20; diff --git a/feeds/rtkmipsel/mac80211/patches/600-0030-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch b/feeds/rtkmipsel/mac80211/patches/600-0030-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch new file mode 100644 index 000000000..49830a12f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0030-rt2x00-rt2800lib-fix-EEPROM-LNA-validation-for-RT388.patch @@ -0,0 +1,42 @@ +From 1616650aea676541d4dc8adc6f4219856d193c8b Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Tue, 1 Oct 2013 17:27:57 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix EEPROM LNA validation for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 9 ++++++--- + 1 file changed, 6 insertions(+), 3 deletions(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -7607,7 +7607,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); +- if (!rt2x00_rt(rt2x00dev, RT3593)) { ++ if (!rt2x00_rt(rt2x00dev, RT3593) && ++ !rt2x00_rt(rt2x00dev, RT3883)) { + 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, +@@ -7627,7 +7628,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); +- if (!rt2x00_rt(rt2x00dev, RT3593)) { ++ if (!rt2x00_rt(rt2x00dev, RT3593) && ++ !rt2x00_rt(rt2x00dev, RT3883)) { + 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, +@@ -7635,7 +7637,8 @@ static int rt2800_validate_eeprom(struct + } + rt2800_eeprom_write(rt2x00dev, EEPROM_RSSI_A2, word); + +- if (rt2x00_rt(rt2x00dev, RT3593)) { ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) { + rt2800_eeprom_read(rt2x00dev, EEPROM_EXT_LNA2, &word); + if (rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0x00 || + rt2x00_get_field16(word, EEPROM_EXT_LNA2_A1) == 0xff) diff --git a/feeds/rtkmipsel/mac80211/patches/600-0031-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch b/feeds/rtkmipsel/mac80211/patches/600-0031-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch new file mode 100644 index 000000000..6e228479b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0031-rt2x00-rt2800lib-fix-txpower-compensation-for-RT3883.patch @@ -0,0 +1,22 @@ +From e3871034a0e7c8a95152dc3eafbcc4535398cbdc Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Wed, 2 Oct 2013 10:11:59 +0200 +Subject: [PATCH] rt2x00: rt2800lib: fix txpower compensation for RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 +++ + 1 file changed, 3 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -3982,6 +3982,9 @@ static u8 rt2800_compensate_txpower(stru + if (rt2x00_rt(rt2x00dev, RT3593)) + return min_t(u8, txpower, 0xc); + ++ if (rt2x00_rt(rt2x00dev, RT3883)) ++ return min_t(u8, txpower, 0xf); ++ + if (rt2x00_has_cap_power_limit(rt2x00dev)) { + /* + * Check if eirp txpower exceed txpower_limit. diff --git a/feeds/rtkmipsel/mac80211/patches/600-0032-rt2x00-rt2800lib-enable-RT2800_HAS_HIGH_SHARED_MEM-f.patch b/feeds/rtkmipsel/mac80211/patches/600-0032-rt2x00-rt2800lib-enable-RT2800_HAS_HIGH_SHARED_MEM-f.patch new file mode 100644 index 000000000..25753af81 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0032-rt2x00-rt2800lib-enable-RT2800_HAS_HIGH_SHARED_MEM-f.patch @@ -0,0 +1,23 @@ +From f6734ec72da936989a8ce4186b3ede28fbc47836 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 18 Aug 2013 21:57:34 +0200 +Subject: [PATCH] rt2x00: rt2800lib: enable RT2800_HAS_HIGH_SHARED_MEM for + RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -8416,7 +8416,8 @@ int rt2800_probe_hw(struct rt2x00_dev *r + if (retval) + return retval; + +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + __set_bit(RT2800_HAS_HIGH_SHARED_MEM, &drv_data->rt2800_flags); + + if (rt2x00_rt(rt2x00dev, RT3593) || diff --git a/feeds/rtkmipsel/mac80211/patches/600-0033-rt2x00-rt2800lib-use-high-memory-for-beacons-on-RT38.patch b/feeds/rtkmipsel/mac80211/patches/600-0033-rt2x00-rt2800lib-use-high-memory-for-beacons-on-RT38.patch new file mode 100644 index 000000000..4f2e75486 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0033-rt2x00-rt2800lib-use-high-memory-for-beacons-on-RT38.patch @@ -0,0 +1,22 @@ +From f1acfc2f397e86548ae1b479c198d4bef57050f6 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 29 Sep 2013 18:10:34 +0200 +Subject: [PATCH] rt2x00: rt2800lib: use high memory for beacons on RT3883 + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800lib.c | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -97,7 +97,8 @@ static inline void rt2800_shared_mem_sel + + static inline bool rt2800_beacon_uses_high_mem(struct rt2x00_dev *rt2x00dev) + { +- if (rt2x00_rt(rt2x00dev, RT3593)) ++ if (rt2x00_rt(rt2x00dev, RT3593) || ++ rt2x00_rt(rt2x00dev, RT3883)) + return true; + + return false; diff --git a/feeds/rtkmipsel/mac80211/patches/600-0034-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch b/feeds/rtkmipsel/mac80211/patches/600-0034-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch new file mode 100644 index 000000000..a497b5eea --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/600-0034-rt2x00-rt2800mmio-add-a-workaround-for-spurious-TX_F.patch @@ -0,0 +1,136 @@ +From 5e67d4f8a46d19748b501c2ef86de3f50d3cfd51 Mon Sep 17 00:00:00 2001 +From: Gabor Juhos +Date: Sun, 24 Mar 2013 19:26:27 +0100 +Subject: [PATCH] rt2x00: rt2800mmio: add a workaround for spurious + TX_FIFO_STATUS interrupts + +Signed-off-by: Gabor Juhos +--- + drivers/net/wireless/ralink/rt2x00/rt2800mmio.c | 72 +++++++++++++++++++++++++----- + drivers/net/wireless/ralink/rt2x00/rt2x00.h | 5 +++ + 2 files changed, 65 insertions(+), 12 deletions(-) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800mmio.c +@@ -415,9 +415,9 @@ void rt2800mmio_autowake_tasklet(unsigne + } + EXPORT_SYMBOL_GPL(rt2800mmio_autowake_tasklet); + +-static void rt2800mmio_txstatus_interrupt(struct rt2x00_dev *rt2x00dev) ++static void rt2800mmio_txstatus_interrupt(struct rt2x00_dev *rt2x00dev, ++ u32 status) + { +- u32 status; + int i; + + /* +@@ -438,29 +438,77 @@ static void rt2800mmio_txstatus_interrup + * Since we have only one producer and one consumer we don't + * need to lock the kfifo. + */ +- for (i = 0; i < rt2x00dev->tx->limit; i++) { +- rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &status); +- +- if (!rt2x00_get_field32(status, TX_STA_FIFO_VALID)) +- break; +- ++ i = 0; ++ do { + if (!kfifo_put(&rt2x00dev->txstatus_fifo, status)) { +- rt2x00_warn(rt2x00dev, "TX status FIFO overrun, drop tx status report\n"); ++ rt2x00_warn(rt2x00dev, ++ "TX status FIFO overrun, drop TX status report\n"); + break; + } +- } ++ ++ if (++i >= rt2x00dev->tx->limit) ++ break; ++ ++ rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &status); ++ } while (rt2x00_get_field32(status, TX_STA_FIFO_VALID)); + + /* Schedule the tasklet for processing the tx status. */ + tasklet_schedule(&rt2x00dev->txstatus_tasklet); + } + ++#define RT2800MMIO_TXSTATUS_IRQ_MAX_RETRIES 4 ++ ++static bool rt2800mmio_txstatus_is_spurious(struct rt2x00_dev *rt2x00dev, ++ u32 txstatus) ++{ ++ if (likely(rt2x00_get_field32(txstatus, TX_STA_FIFO_VALID))) { ++ rt2x00dev->txstatus_irq_retries = 0; ++ return false; ++ } ++ ++ rt2x00dev->txstatus_irq_retries++; ++ ++ /* Ensure that we don't go into an infinite IRQ loop. */ ++ if (rt2x00dev->txstatus_irq_retries >= ++ RT2800MMIO_TXSTATUS_IRQ_MAX_RETRIES) { ++ rt2x00_warn(rt2x00dev, ++ "%u spurious TX_FIFO_STATUS interrupt(s)\n", ++ rt2x00dev->txstatus_irq_retries); ++ rt2x00dev->txstatus_irq_retries = 0; ++ return false; ++ } ++ ++ return true; ++} ++ + irqreturn_t rt2800mmio_interrupt(int irq, void *dev_instance) + { + struct rt2x00_dev *rt2x00dev = dev_instance; + u32 reg, mask; ++ u32 txstatus = 0; + +- /* Read status and ACK all interrupts */ ++ /* Read status */ + rt2x00mmio_register_read(rt2x00dev, INT_SOURCE_CSR, ®); ++ ++ if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) { ++ /* Due to unknown reason the hardware generates a ++ * TX_FIFO_STATUS interrupt before the TX_STA_FIFO ++ * register contain valid data. Read the TX status ++ * here to see if we have to process the actual ++ * request. ++ */ ++ rt2x00mmio_register_read(rt2x00dev, TX_STA_FIFO, &txstatus); ++ if (rt2800mmio_txstatus_is_spurious(rt2x00dev, txstatus)) { ++ /* Remove the TX_FIFO_STATUS bit so it won't be ++ * processed in this turn. The hardware will ++ * generate another IRQ for us. ++ */ ++ rt2x00_set_field32(®, ++ INT_SOURCE_CSR_TX_FIFO_STATUS, 0); ++ } ++ } ++ ++ /* ACK interrupts */ + rt2x00mmio_register_write(rt2x00dev, INT_SOURCE_CSR, reg); + + if (!reg) +@@ -477,7 +525,7 @@ irqreturn_t rt2800mmio_interrupt(int irq + mask = ~reg; + + if (rt2x00_get_field32(reg, INT_SOURCE_CSR_TX_FIFO_STATUS)) { +- rt2800mmio_txstatus_interrupt(rt2x00dev); ++ rt2800mmio_txstatus_interrupt(rt2x00dev, txstatus); + /* + * Never disable the TX_FIFO_STATUS interrupt. + */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -991,6 +991,11 @@ struct rt2x00_dev { + int rf_channel; + + /* ++ * Counter for tx status irq retries (rt2800pci). ++ */ ++ unsigned int txstatus_irq_retries; ++ ++ /* + * Protect the interrupt mask register. + */ + spinlock_t irqmask_lock; diff --git a/feeds/rtkmipsel/mac80211/patches/601-rt2x00-set_pci_mwi.patch b/feeds/rtkmipsel/mac80211/patches/601-rt2x00-set_pci_mwi.patch new file mode 100644 index 000000000..a40716163 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/601-rt2x00-set_pci_mwi.patch @@ -0,0 +1,13 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00pci.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00pci.c +@@ -94,8 +94,10 @@ int rt2x00pci_probe(struct pci_dev *pci_ + + pci_set_master(pci_dev); + ++#ifdef CONFIG_PCI_SET_MWI + if (pci_set_mwi(pci_dev)) + rt2x00_probe_err("MWI not available\n"); ++#endif + + if (dma_set_mask(&pci_dev->dev, DMA_BIT_MASK(32))) { + rt2x00_probe_err("PCI DMA not supported\n"); diff --git a/feeds/rtkmipsel/mac80211/patches/602-rt2x00-introduce-rt2x00_platform_h.patch b/feeds/rtkmipsel/mac80211/patches/602-rt2x00-introduce-rt2x00_platform_h.patch new file mode 100644 index 000000000..7a183a404 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/602-rt2x00-introduce-rt2x00_platform_h.patch @@ -0,0 +1,32 @@ +--- /dev/null ++++ b/include/linux/rt2x00_platform.h +@@ -0,0 +1,19 @@ ++/* ++ * Platform data definition for the rt2x00 driver ++ * ++ * Copyright (C) 2011 Gabor Juhos ++ * ++ * This program is free software; you can redistribute it and/or modify it ++ * under the terms of the GNU General Public License version 2 as published ++ * by the Free Software Foundation. ++ * ++ */ ++ ++#ifndef _RT2X00_PLATFORM_H ++#define _RT2X00_PLATFORM_H ++ ++struct rt2x00_platform_data { ++ char *eeprom_file_name; ++}; ++ ++#endif /* _RT2X00_PLATFORM_H */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -38,6 +38,7 @@ + #include + #include + #include ++#include + + #include + diff --git a/feeds/rtkmipsel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch b/feeds/rtkmipsel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch new file mode 100644 index 000000000..bc056cd73 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/603-rt2x00-introduce-rt2x00eeprom.patch @@ -0,0 +1,301 @@ +--- a/.local-symbols ++++ b/.local-symbols +@@ -329,6 +329,7 @@ RT2X00_LIB_FIRMWARE= + RT2X00_LIB_CRYPTO= + RT2X00_LIB_LEDS= + RT2X00_LIB_DEBUGFS= ++RT2X00_LIB_EEPROM= + RT2X00_DEBUG= + WLAN_VENDOR_REALTEK= + RTL8180= +--- a/drivers/net/wireless/ralink/rt2x00/Kconfig ++++ b/drivers/net/wireless/ralink/rt2x00/Kconfig +@@ -69,6 +69,7 @@ config RT2800PCI + select RT2X00_LIB_MMIO + select RT2X00_LIB_PCI + select RT2X00_LIB_FIRMWARE ++ select RT2X00_LIB_EEPROM + select RT2X00_LIB_CRYPTO + depends on CRC_CCITT + depends on EEPROM_93CX6 +@@ -215,6 +216,7 @@ config RT2800SOC + select RT2X00_LIB_MMIO + select RT2X00_LIB_CRYPTO + select RT2X00_LIB_FIRMWARE ++ select RT2X00_LIB_EEPROM + select RT2800_LIB + select RT2800_LIB_MMIO + ---help--- +@@ -265,6 +267,9 @@ config RT2X00_LIB_FIRMWARE + config RT2X00_LIB_CRYPTO + bool + ++config RT2X00_LIB_EEPROM ++ boolean ++ + config RT2X00_LIB_LEDS + bool + default y if (RT2X00_LIB=y && LEDS_CLASS=y) || (RT2X00_LIB=m && LEDS_CLASS!=n) +--- a/drivers/net/wireless/ralink/rt2x00/Makefile ++++ b/drivers/net/wireless/ralink/rt2x00/Makefile +@@ -7,6 +7,7 @@ rt2x00lib-$(CPTCFG_RT2X00_LIB_DEBUGFS) + + rt2x00lib-$(CPTCFG_RT2X00_LIB_CRYPTO) += rt2x00crypto.o + rt2x00lib-$(CPTCFG_RT2X00_LIB_FIRMWARE) += rt2x00firmware.o + rt2x00lib-$(CPTCFG_RT2X00_LIB_LEDS) += rt2x00leds.o ++rt2x00lib-$(CPTCFG_RT2X00_LIB_EEPROM) += rt2x00eeprom.o + + obj-$(CPTCFG_RT2X00_LIB) += rt2x00lib.o + obj-$(CPTCFG_RT2X00_LIB_MMIO) += rt2x00mmio.o +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.h +@@ -46,6 +46,8 @@ struct rt2800_drv_data { + } shmem_lock; + }; + ++#include "rt2800.h" ++ + struct rt2800_ops { + void (*register_read)(struct rt2x00_dev *rt2x00dev, + const unsigned int offset, u32 *value); +@@ -179,6 +181,15 @@ static inline int rt2800_read_eeprom(str + { + const struct rt2800_ops *rt2800ops = rt2x00dev->ops->drv; + ++ if (rt2x00dev->eeprom_file) { ++ memcpy(rt2x00dev->eeprom, rt2x00dev->eeprom_file->data, ++ EEPROM_SIZE); ++ return 0; ++ } ++ ++ if (!rt2800ops->read_eeprom) ++ return -EINVAL; ++ + return rt2800ops->read_eeprom(rt2x00dev); + } + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c +@@ -102,19 +102,6 @@ static int rt2800soc_set_device_state(st + return retval; + } + +-static int rt2800soc_read_eeprom(struct rt2x00_dev *rt2x00dev) +-{ +- void __iomem *base_addr = ioremap(0x1F040000, EEPROM_SIZE); +- +- if (!base_addr) +- return -ENOMEM; +- +- memcpy_fromio(rt2x00dev->eeprom, base_addr, EEPROM_SIZE); +- +- iounmap(base_addr); +- return 0; +-} +- + /* Firmware functions */ + static char *rt2800soc_get_firmware_name(struct rt2x00_dev *rt2x00dev) + { +@@ -178,7 +165,6 @@ static const struct rt2800_ops rt2800soc + .register_multiread = rt2x00mmio_register_multiread, + .register_multiwrite = rt2x00mmio_register_multiwrite, + .regbusy_read = rt2x00mmio_regbusy_read, +- .read_eeprom = rt2800soc_read_eeprom, + .hwcrypt_disabled = rt2800soc_hwcrypt_disabled, + .drv_write_firmware = rt2800soc_write_firmware, + .drv_init_registers = rt2800mmio_init_registers, +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -697,6 +697,7 @@ enum rt2x00_capability_flags { + REQUIRE_HT_TX_DESC, + REQUIRE_PS_AUTOWAKE, + REQUIRE_DELAYED_RFKILL, ++ REQUIRE_EEPROM_FILE, + + /* + * Capabilities +@@ -968,6 +969,11 @@ struct rt2x00_dev { + const struct firmware *fw; + + /* ++ * EEPROM image. ++ */ ++ const struct firmware *eeprom_file; ++ ++ /* + * FIFO for storing tx status reports between isr and tasklet. + */ + DECLARE_KFIFO_PTR(txstatus_fifo, u32); +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +@@ -1335,6 +1335,10 @@ int rt2x00lib_probe_dev(struct rt2x00_de + INIT_DELAYED_WORK(&rt2x00dev->autowakeup_work, rt2x00lib_autowakeup); + INIT_WORK(&rt2x00dev->sleep_work, rt2x00lib_sleep); + ++ retval = rt2x00lib_load_eeprom_file(rt2x00dev); ++ if (retval) ++ goto exit; ++ + /* + * Let the driver probe the device to detect the capabilities. + */ +@@ -1475,6 +1479,11 @@ void rt2x00lib_remove_dev(struct rt2x00_ + * Free the driver data. + */ + kfree(rt2x00dev->drv_data); ++ ++ /* ++ * Free EEPROM image. ++ */ ++ rt2x00lib_free_eeprom_file(rt2x00dev); + } + EXPORT_SYMBOL_GPL(rt2x00lib_remove_dev); + +--- /dev/null ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c +@@ -0,0 +1,111 @@ ++/* ++ Copyright (C) 2004 - 2009 Ivo van Doorn ++ Copyright (C) 2004 - 2009 Gertjan van Wingerde ++ ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the ++ Free Software Foundation, Inc., ++ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. ++ */ ++ ++/* ++ Module: rt2x00lib ++ Abstract: rt2x00 eeprom file loading routines. ++ */ ++ ++#include ++#include ++ ++#include "rt2x00.h" ++#include "rt2x00lib.h" ++ ++static const char * ++rt2x00lib_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2x00_platform_data *pdata = rt2x00dev->dev->platform_data; ++ ++ if (pdata && pdata->eeprom_file_name) ++ return pdata->eeprom_file_name; ++ ++ return NULL ++} ++ ++static int rt2x00lib_request_eeprom_file(struct rt2x00_dev *rt2x00dev) ++{ ++ const struct firmware *ee; ++ const char *ee_name; ++ int retval; ++ ++ ee_name = rt2x00lib_get_eeprom_file_name(rt2x00dev); ++ if (!ee_name) { ++ rt2x00_err(rt2x00dev, ++ "Invalid EEPROM filename.\n" ++ "Please file bug report to %s.\n", DRV_PROJECT); ++ return -EINVAL; ++ } ++ ++ rt2x00_info(rt2x00dev, "Loading EEPROM data from '%s'.\n", ee_name); ++ ++ retval = request_firmware(&ee, ee_name, rt2x00dev->dev); ++ if (retval) { ++ rt2x00_err(rt2x00dev, "Failed to request EEPROM.\n"); ++ return retval; ++ } ++ ++ if (!ee || !ee->size || !ee->data) { ++ rt2x00_err(rt2x00dev, "Failed to read EEPROM file.\n"); ++ retval = -ENOENT; ++ goto err_exit; ++ } ++ ++ if (ee->size != rt2x00dev->ops->eeprom_size) { ++ rt2x00_err(rt2x00dev, ++ "EEPROM file size is invalid, it should be %d bytes\n", ++ rt2x00dev->ops->eeprom_size); ++ retval = -EINVAL; ++ goto err_release_ee; ++ } ++ ++ rt2x00dev->eeprom_file = ee; ++ return 0; ++ ++err_release_ee: ++ release_firmware(ee); ++err_exit: ++ return retval; ++} ++ ++int rt2x00lib_load_eeprom_file(struct rt2x00_dev *rt2x00dev) ++{ ++ int retval; ++ ++ if (!rt2x00lib_get_eeprom_file_name(rt2x00dev)) ++ return 0; ++ ++ set_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags); ++ ++ if (!rt2x00dev->eeprom_file) { ++ retval = rt2x00lib_request_eeprom_file(rt2x00dev); ++ if (retval) ++ return retval; ++ } ++ ++ return 0; ++} ++ ++void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev) ++{ ++ release_firmware(rt2x00dev->eeprom_file); ++ rt2x00dev->eeprom_file = NULL; ++} +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00lib.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00lib.h +@@ -320,6 +320,22 @@ static inline void rt2x00lib_free_firmwa + #endif /* CPTCFG_RT2X00_LIB_FIRMWARE */ + + /* ++ * EEPROM file handlers. ++ */ ++#ifdef CPTCFG_RT2X00_LIB_EEPROM ++int rt2x00lib_load_eeprom_file(struct rt2x00_dev *rt2x00dev); ++void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev); ++#else ++static inline int rt2x00lib_load_eeprom_file(struct rt2x00_dev *rt2x00dev) ++{ ++ return 0; ++} ++static inline void rt2x00lib_free_eeprom_file(struct rt2x00_dev *rt2x00dev) ++{ ++} ++#endif /* CPTCFG_RT2X00_LIB_EEPROM */ ++ ++/* + * Debugfs handlers. + */ + #ifdef CPTCFG_RT2X00_LIB_DEBUGFS +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00soc.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00soc.c +@@ -92,6 +92,7 @@ int rt2x00soc_probe(struct platform_devi + rt2x00dev->hw = hw; + rt2x00dev->irq = platform_get_irq(pdev, 0); + rt2x00dev->name = pdev->dev.driver->name; ++ set_bit(REQUIRE_EEPROM_FILE, &rt2x00dev->cap_flags); + + rt2x00_set_chip_intf(rt2x00dev, RT2X00_CHIP_INTF_SOC); + diff --git a/feeds/rtkmipsel/mac80211/patches/604-rt2x00-of_load_eeprom_filename.patch b/feeds/rtkmipsel/mac80211/patches/604-rt2x00-of_load_eeprom_filename.patch new file mode 100644 index 000000000..9dffef181 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/604-rt2x00-of_load_eeprom_filename.patch @@ -0,0 +1,33 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c +@@ -26,6 +26,7 @@ + + #include + #include ++#include + + #include "rt2x00.h" + #include "rt2x00lib.h" +@@ -34,11 +35,21 @@ static const char * + rt2x00lib_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev) + { + struct rt2x00_platform_data *pdata = rt2x00dev->dev->platform_data; ++#ifdef CONFIG_OF ++ struct device_node *np; ++ const char *eep; ++#endif + + if (pdata && pdata->eeprom_file_name) + return pdata->eeprom_file_name; + +- return NULL ++#ifdef CONFIG_OF ++ np = rt2x00dev->dev->of_node; ++ if (np && of_property_read_string(np, "ralink,eeprom", &eep) == 0) ++ return eep; ++#endif ++ ++ return NULL; + } + + static int rt2x00lib_request_eeprom_file(struct rt2x00_dev *rt2x00dev) diff --git a/feeds/rtkmipsel/mac80211/patches/605-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch b/feeds/rtkmipsel/mac80211/patches/605-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch new file mode 100644 index 000000000..5dceff879 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/605-rt2x00-load-eeprom-on-SoC-from-a-mtd-device-defines-.patch @@ -0,0 +1,101 @@ +From 339fe73f340161a624cc08e738d2244814852c3e Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Sun, 17 Mar 2013 00:55:04 +0100 +Subject: [PATCH] rt2x00: load eeprom on SoC from a mtd device defines inside + OF + +Signed-off-by: John Crispin +--- + drivers/net/wireless/ralink/rt2x00/Kconfig | 1 + + drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 44 ++++++++++++++++++++++++++----- + 2 files changed, 39 insertions(+), 6 deletions(-) + +--- a/drivers/net/wireless/ralink/rt2x00/Kconfig ++++ b/drivers/net/wireless/ralink/rt2x00/Kconfig +@@ -219,6 +219,7 @@ config RT2800SOC + select RT2X00_LIB_EEPROM + select RT2800_LIB + select RT2800_LIB_MMIO ++ select MTD if SOC_RT288X || SOC_RT305X + ---help--- + This adds support for Ralink WiSoC devices. + Supported chips: RT2880, RT3050, RT3052, RT3350, RT3352. +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00eeprom.c +@@ -26,11 +26,66 @@ + + #include + #include ++#include ++#include + #include + + #include "rt2x00.h" + #include "rt2x00lib.h" + ++static int rt2800lib_read_eeprom_mtd(struct rt2x00_dev *rt2x00dev) ++{ ++ int ret = -EINVAL; ++#ifdef CONFIG_OF ++ static struct firmware mtd_fw; ++ struct device_node *np = rt2x00dev->dev->of_node, *mtd_np = NULL; ++ size_t retlen, len = rt2x00dev->ops->eeprom_size; ++ int size, offset = 0; ++ struct mtd_info *mtd; ++ const char *part; ++ const __be32 *list; ++ phandle phandle; ++ ++ list = of_get_property(np, "ralink,mtd-eeprom", &size); ++ if (!list) { ++ dev_err(rt2x00dev->dev, "failed to load eeprom property\n"); ++ return -ENOENT; ++ } ++ ++ phandle = be32_to_cpup(list++); ++ if (phandle) ++ mtd_np = of_find_node_by_phandle(phandle); ++ if (!mtd_np) { ++ dev_err(rt2x00dev->dev, "failed to load mtd phandle\n"); ++ return -EINVAL; ++ } ++ ++ part = of_get_property(mtd_np, "label", NULL); ++ if (!part) ++ part = mtd_np->name; ++ ++ mtd = get_mtd_device_nm(part); ++ if (IS_ERR(mtd)) { ++ dev_err(rt2x00dev->dev, "failed to get mtd device \"%s\"\n", part); ++ return PTR_ERR(mtd); ++ } ++ ++ if (size > sizeof(*list)) ++ offset = be32_to_cpup(list); ++ ++ ret = mtd_read(mtd, offset, len, &retlen, (u_char *) rt2x00dev->eeprom); ++ put_mtd_device(mtd); ++ ++ if (!ret) { ++ rt2x00dev->eeprom_file = &mtd_fw; ++ mtd_fw.size = len; ++ mtd_fw.data = (const u8 *) rt2x00dev->eeprom; ++ } ++#endif ++ ++ return ret; ++} ++ + static const char * + rt2x00lib_get_eeprom_file_name(struct rt2x00_dev *rt2x00dev) + { +@@ -58,6 +113,9 @@ static int rt2x00lib_request_eeprom_file + const char *ee_name; + int retval; + ++ if (!rt2800lib_read_eeprom_mtd(rt2x00dev)) ++ return 0; ++ + ee_name = rt2x00lib_get_eeprom_file_name(rt2x00dev); + if (!ee_name) { + rt2x00_err(rt2x00dev, diff --git a/feeds/rtkmipsel/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch b/feeds/rtkmipsel/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch new file mode 100644 index 000000000..d923e05c7 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/607-rt2x00-allow_disabling_bands_through_platform_data.patch @@ -0,0 +1,47 @@ +--- a/include/linux/rt2x00_platform.h ++++ b/include/linux/rt2x00_platform.h +@@ -14,6 +14,9 @@ + + struct rt2x00_platform_data { + char *eeprom_file_name; ++ ++ int disable_2ghz; ++ int disable_5ghz; + }; + + #endif /* _RT2X00_PLATFORM_H */ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +@@ -940,6 +940,22 @@ static int rt2x00lib_probe_hw_modes(stru + unsigned int num_rates; + unsigned int i; + ++ if (rt2x00dev->dev->platform_data) { ++ struct rt2x00_platform_data *pdata; ++ ++ pdata = rt2x00dev->dev->platform_data; ++ if (pdata->disable_2ghz) ++ spec->supported_bands &= ~SUPPORT_BAND_2GHZ; ++ if (pdata->disable_5ghz) ++ spec->supported_bands &= ~SUPPORT_BAND_5GHZ; ++ } ++ ++ if ((spec->supported_bands & SUPPORT_BAND_BOTH) == 0) { ++ rt2x00_err(rt2x00dev, "No supported bands\n"); ++ return -EINVAL; ++ } ++ ++ + num_rates = 0; + if (spec->supported_rates & SUPPORT_RATE_CCK) + num_rates += 4; +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -405,6 +405,7 @@ struct hw_mode_spec { + unsigned int supported_bands; + #define SUPPORT_BAND_2GHZ 0x00000001 + #define SUPPORT_BAND_5GHZ 0x00000002 ++#define SUPPORT_BAND_BOTH (SUPPORT_BAND_2GHZ | SUPPORT_BAND_5GHZ) + + unsigned int supported_rates; + #define SUPPORT_RATE_CCK 0x00000001 diff --git a/feeds/rtkmipsel/mac80211/patches/608-add_platform_data_mac_addr.patch b/feeds/rtkmipsel/mac80211/patches/608-add_platform_data_mac_addr.patch new file mode 100644 index 000000000..a645ba176 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/608-add_platform_data_mac_addr.patch @@ -0,0 +1,63 @@ +--- a/include/linux/rt2x00_platform.h ++++ b/include/linux/rt2x00_platform.h +@@ -14,6 +14,7 @@ + + struct rt2x00_platform_data { + char *eeprom_file_name; ++ const u8 *mac_address; + + int disable_2ghz; + int disable_5ghz; +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +@@ -931,6 +931,18 @@ static void rt2x00lib_rate(struct ieee80 + entry->flags |= IEEE80211_RATE_SHORT_PREAMBLE; + } + ++const u8 *rt2x00lib_get_mac_address(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2x00_platform_data *pdata; ++ ++ pdata = rt2x00dev->dev->platform_data; ++ if (!pdata) ++ return NULL; ++ ++ return pdata->mac_address; ++} ++EXPORT_SYMBOL_GPL(rt2x00lib_get_mac_address); ++ + static int rt2x00lib_probe_hw_modes(struct rt2x00_dev *rt2x00dev, + struct hw_mode_spec *spec) + { +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -1414,6 +1414,7 @@ static inline void rt2x00debug_dump_fram + */ + u32 rt2x00lib_get_bssidx(struct rt2x00_dev *rt2x00dev, + struct ieee80211_vif *vif); ++const u8 *rt2x00lib_get_mac_address(struct rt2x00_dev *rt2x00dev); + + /* + * Interrupt context handlers. +--- a/drivers/net/wireless/ralink/rt2x00/rt61pci.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt61pci.c +@@ -2392,6 +2392,7 @@ static int rt61pci_validate_eeprom(struc + u32 reg; + u16 word; + u8 *mac; ++ const u8 *pdata_mac; + s8 value; + + rt2x00mmio_register_read(rt2x00dev, E2PROM_CSR, ®); +@@ -2412,7 +2413,11 @@ static int rt61pci_validate_eeprom(struc + /* + * Start validation of the data that has been read. + */ ++ pdata_mac = rt2x00lib_get_mac_address(rt2x00dev); + mac = rt2x00_eeprom_addr(rt2x00dev, EEPROM_MAC_ADDR_0); ++ if (pdata_mac) ++ memcpy(mac, pdata_mac, 6); ++ + if (!is_valid_ether_addr(mac)) { + eth_random_addr(mac); + rt2x00_eeprom_dbg(rt2x00dev, "MAC: %pM\n", mac); diff --git a/feeds/rtkmipsel/mac80211/patches/609-rt2x00-allow_disabling_bands_through_dts.patch b/feeds/rtkmipsel/mac80211/patches/609-rt2x00-allow_disabling_bands_through_dts.patch new file mode 100644 index 000000000..3fdaae759 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/609-rt2x00-allow_disabling_bands_through_dts.patch @@ -0,0 +1,27 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +@@ -26,6 +26,7 @@ + #include + #include + #include ++#include + + #include "rt2x00.h" + #include "rt2x00lib.h" +@@ -951,6 +952,16 @@ static int rt2x00lib_probe_hw_modes(stru + struct ieee80211_rate *rates; + unsigned int num_rates; + unsigned int i; ++#ifdef CONFIG_OF ++ struct device_node *np = rt2x00dev->dev->of_node; ++ unsigned int enabled; ++ if (!of_property_read_u32(np, "ralink,2ghz", ++ &enabled) && !enabled) ++ spec->supported_bands &= ~SUPPORT_BAND_2GHZ; ++ if (!of_property_read_u32(np, "ralink,5ghz", ++ &enabled) && !enabled) ++ spec->supported_bands &= ~SUPPORT_BAND_5GHZ; ++#endif /* CONFIG_OF */ + + if (rt2x00dev->dev->platform_data) { + struct rt2x00_platform_data *pdata; diff --git a/feeds/rtkmipsel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch b/feeds/rtkmipsel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch new file mode 100644 index 000000000..c69d33025 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/610-rt2x00-fix-rt3352-ext-pa.patch @@ -0,0 +1,211 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -3529,11 +3529,18 @@ static void rt2800_config_channel(struct + /* + * Change BBP settings + */ ++ + if (rt2x00_rt(rt2x00dev, RT3352)) { ++ rt2800_bbp_write(rt2x00dev, 62, 0x37 - rt2x00dev->lna_gain); ++ rt2800_bbp_write(rt2x00dev, 63, 0x37 - rt2x00dev->lna_gain); ++ rt2800_bbp_write(rt2x00dev, 64, 0x37 - rt2x00dev->lna_gain); ++ + rt2800_bbp_write(rt2x00dev, 27, 0x0); + rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain); + rt2800_bbp_write(rt2x00dev, 27, 0x20); + rt2800_bbp_write(rt2x00dev, 66, 0x26 + rt2x00dev->lna_gain); ++ rt2800_bbp_write(rt2x00dev, 86, 0x38); ++ rt2800_bbp_write(rt2x00dev, 83, 0x6a); + } else if (rt2x00_rt(rt2x00dev, RT3593)) { + if (rf->channel > 14) { + /* Disable CCK Packet detection on 5GHz */ +@@ -6595,6 +6602,12 @@ 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, ++ &rt2x00dev->cap_flags); ++ int tx1_int_pa = test_bit(CAPABILITY_INTERNAL_PA_TX1, ++ &rt2x00dev->cap_flags); ++ u8 rfcsr; ++ + rt2800_rf_init_calibration(rt2x00dev, 30); + + rt2800_rfcsr_write(rt2x00dev, 0, 0xf0); +@@ -6630,15 +6643,30 @@ static void rt2800_init_rfcsr_3352(struc + rt2800_rfcsr_write(rt2x00dev, 31, 0x80); + rt2800_rfcsr_write(rt2x00dev, 32, 0x80); + rt2800_rfcsr_write(rt2x00dev, 33, 0x00); +- rt2800_rfcsr_write(rt2x00dev, 34, 0x01); ++ rfcsr = 0x01; ++ if (!tx0_int_pa) ++ rt2x00_set_field8(&rfcsr, RFCSR34_TX0_EXT_PA, 1); ++ if (!tx1_int_pa) ++ rt2x00_set_field8(&rfcsr, RFCSR34_TX1_EXT_PA, 1); ++ rt2800_rfcsr_write(rt2x00dev, 34, rfcsr); + rt2800_rfcsr_write(rt2x00dev, 35, 0x03); + rt2800_rfcsr_write(rt2x00dev, 36, 0xbd); + rt2800_rfcsr_write(rt2x00dev, 37, 0x3c); + rt2800_rfcsr_write(rt2x00dev, 38, 0x5f); + rt2800_rfcsr_write(rt2x00dev, 39, 0xc5); + rt2800_rfcsr_write(rt2x00dev, 40, 0x33); +- rt2800_rfcsr_write(rt2x00dev, 41, 0x5b); +- rt2800_rfcsr_write(rt2x00dev, 42, 0x5b); ++ rfcsr = 0x52; ++ if (tx0_int_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) { ++ rt2x00_set_field8(&rfcsr, RFCSR42_BIT1, 1); ++ rt2x00_set_field8(&rfcsr, RFCSR42_BIT4, 1); ++ } ++ rt2800_rfcsr_write(rt2x00dev, 42, rfcsr); + rt2800_rfcsr_write(rt2x00dev, 43, 0xdb); + rt2800_rfcsr_write(rt2x00dev, 44, 0xdb); + rt2800_rfcsr_write(rt2x00dev, 45, 0xdb); +@@ -6646,15 +6674,20 @@ static void rt2800_init_rfcsr_3352(struc + rt2800_rfcsr_write(rt2x00dev, 47, 0x0d); + rt2800_rfcsr_write(rt2x00dev, 48, 0x14); + rt2800_rfcsr_write(rt2x00dev, 49, 0x00); +- rt2800_rfcsr_write(rt2x00dev, 50, 0x2d); +- rt2800_rfcsr_write(rt2x00dev, 51, 0x7f); +- rt2800_rfcsr_write(rt2x00dev, 52, 0x00); +- rt2800_rfcsr_write(rt2x00dev, 53, 0x52); +- rt2800_rfcsr_write(rt2x00dev, 54, 0x1b); +- rt2800_rfcsr_write(rt2x00dev, 55, 0x7f); +- rt2800_rfcsr_write(rt2x00dev, 56, 0x00); +- rt2800_rfcsr_write(rt2x00dev, 57, 0x52); +- rt2800_rfcsr_write(rt2x00dev, 58, 0x1b); ++ rfcsr = 0x2d; ++ if (!tx0_int_pa) ++ rt2x00_set_field8(&rfcsr, RFCSR50_TX0_EXT_PA, 1); ++ if (!tx1_int_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, 59, 0x00); + rt2800_rfcsr_write(rt2x00dev, 60, 0x00); + rt2800_rfcsr_write(rt2x00dev, 61, 0x00); +@@ -7675,6 +7708,7 @@ static int rt2800_init_eeprom(struct rt2 + * RT53xx: defined in "EEPROM_CHIP_ID" field + */ + if (rt2x00_rt(rt2x00dev, RT3290) || ++ rt2x00_rt(rt2x00dev, RT3352) || + rt2x00_rt(rt2x00dev, RT5390) || + rt2x00_rt(rt2x00dev, RT5392)) + rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); +@@ -7770,7 +7804,8 @@ static int rt2800_init_eeprom(struct rt2 + /* + * Detect if this device has Bluetooth co-existence. + */ +- if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_BT_COEXIST)) ++ if (!rt2x00_rt(rt2x00dev, RT3352) && ++ rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_BT_COEXIST)) + __set_bit(CAPABILITY_BT_COEXIST, &rt2x00dev->cap_flags); + + /* +@@ -7799,6 +7834,22 @@ static int rt2800_init_eeprom(struct rt2 + EIRP_MAX_TX_POWER_LIMIT) + __set_bit(CAPABILITY_POWER_LIMIT, &rt2x00dev->cap_flags); + ++ /* ++ * Detect if device uses internal or external PA ++ */ ++ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); ++ ++ if (rt2x00_rt(rt2x00dev, RT3352)) { ++ if (!rt2x00_get_field16(eeprom, ++ EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352)) ++ __set_bit(CAPABILITY_INTERNAL_PA_TX0, ++ &rt2x00dev->cap_flags); ++ if (!rt2x00_get_field16(eeprom, ++ EEPROM_NIC_CONF1_EXTERNAL_TX1_PA_3352)) ++ __set_bit(CAPABILITY_INTERNAL_PA_TX1, ++ &rt2x00dev->cap_flags); ++ } ++ + return 0; + } + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -2335,6 +2335,12 @@ struct mac_iveiv_entry { + #define RFCSR36_RF_BS FIELD8(0x80) + + /* ++ * RFCSR 34: ++ */ ++#define RFCSR34_TX0_EXT_PA FIELD8(0x04) ++#define RFCSR34_TX1_EXT_PA FIELD8(0x08) ++ ++/* + * RFCSR 38: + */ + #define RFCSR38_RX_LO1_EN FIELD8(0x20) +@@ -2346,6 +2352,18 @@ struct mac_iveiv_entry { + #define RFCSR39_RX_LO2_EN FIELD8(0x80) + + /* ++ * RFCSR 41: ++ */ ++#define RFCSR41_BIT1 FIELD8(0x01) ++#define RFCSR41_BIT4 FIELD8(0x08) ++ ++/* ++ * RFCSR 42: ++ */ ++#define RFCSR42_BIT1 FIELD8(0x01) ++#define RFCSR42_BIT4 FIELD8(0x08) ++ ++/* + * RFCSR 49: + */ + #define RFCSR49_TX FIELD8(0x3f) +@@ -2358,6 +2376,8 @@ struct mac_iveiv_entry { + * RFCSR 50: + */ + #define RFCSR50_TX FIELD8(0x3f) ++#define RFCSR50_TX0_EXT_PA FIELD8(0x02) ++#define RFCSR50_TX1_EXT_PA FIELD8(0x10) + #define RFCSR50_EP FIELD8(0xc0) + /* bits for RT3593 */ + #define RFCSR50_TX_LO1_EN FIELD8(0x20) +@@ -2505,6 +2525,8 @@ enum rt2800_eeprom_word { + * INTERNAL_TX_ALC: 0: disable, 1: enable + * BT_COEXIST: 0: disable, 1: enable + * DAC_TEST: 0: disable, 1: enable ++ * EXTERNAL_TX0_PA: 0: disable, 1: enable (only on RT3352) ++ * EXTERNAL_TX1_PA: 0: disable, 1: enable (only on RT3352) + */ + #define EEPROM_NIC_CONF1_HW_RADIO FIELD16(0x0001) + #define EEPROM_NIC_CONF1_EXTERNAL_TX_ALC FIELD16(0x0002) +@@ -2521,6 +2543,8 @@ enum rt2800_eeprom_word { + #define EEPROM_NIC_CONF1_INTERNAL_TX_ALC FIELD16(0x2000) + #define EEPROM_NIC_CONF1_BT_COEXIST FIELD16(0x4000) + #define EEPROM_NIC_CONF1_DAC_TEST FIELD16(0x8000) ++#define EEPROM_NIC_CONF1_EXTERNAL_TX0_PA_3352 FIELD16(0x4000) ++#define EEPROM_NIC_CONF1_EXTERNAL_TX1_PA_3352 FIELD16(0x8000) + + /* + * EEPROM frequency +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -717,6 +717,8 @@ enum rt2x00_capability_flags { + CAPABILITY_DOUBLE_ANTENNA, + CAPABILITY_BT_COEXIST, + CAPABILITY_VCO_RECALIBRATION, ++ CAPABILITY_INTERNAL_PA_TX0, ++ CAPABILITY_INTERNAL_PA_TX1, + }; + + /* diff --git a/feeds/rtkmipsel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch b/feeds/rtkmipsel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch new file mode 100644 index 000000000..b44fe900d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/611-rt2x00-rf_vals-rt3352-xtal20.patch @@ -0,0 +1,106 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -8186,6 +8186,27 @@ static const struct rf_channel rf_vals_5 + {196, 83, 0, 12, 1}, + }; + ++/* ++ * RF value list for rt3xxx with Xtal20MHz ++ * Supports: 2.4 GHz (all) (RF3322) ++ */ ++static const struct rf_channel rf_vals_xtal20mhz_3x[] = { ++ {1, 0xE2, 2, 0x14}, ++ {2, 0xE3, 2, 0x14}, ++ {3, 0xE4, 2, 0x14}, ++ {4, 0xE5, 2, 0x14}, ++ {5, 0xE6, 2, 0x14}, ++ {6, 0xE7, 2, 0x14}, ++ {7, 0xE8, 2, 0x14}, ++ {8, 0xE9, 2, 0x14}, ++ {9, 0xEA, 2, 0x14}, ++ {10, 0xEB, 2, 0x14}, ++ {11, 0xEC, 2, 0x14}, ++ {12, 0xED, 2, 0x14}, ++ {13, 0xEE, 2, 0x14}, ++ {14, 0xF0, 2, 0x18}, ++}; ++ + static int rt2800_probe_hw_mode(struct rt2x00_dev *rt2x00dev) + { + struct hw_mode_spec *spec = &rt2x00dev->spec; +@@ -8272,7 +8293,10 @@ static int rt2800_probe_hw_mode(struct r + case RF5390: + case RF5392: + spec->num_channels = 14; +- spec->channels = rf_vals_3x; ++ if (spec->clk_is_20mhz) ++ spec->channels = rf_vals_xtal20mhz_3x; ++ else ++ spec->channels = rf_vals_3x; + break; + + case RF3052: +@@ -8456,6 +8480,19 @@ static int rt2800_probe_rt(struct rt2x00 + return 0; + } + ++int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev) ++{ ++ struct rt2x00_platform_data *pdata = rt2x00dev->dev->platform_data; ++ struct hw_mode_spec *spec = &rt2x00dev->spec; ++ ++ if (!pdata) ++ return -EINVAL; ++ ++ spec->clk_is_20mhz = pdata->clk_is_20mhz; ++ ++ return 0; ++} ++ + int rt2800_probe_hw(struct rt2x00_dev *rt2x00dev) + { + struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; +@@ -8498,6 +8535,15 @@ int rt2800_probe_hw(struct rt2x00_dev *r + rt2800_register_write(rt2x00dev, GPIO_CTRL, reg); + + /* ++ * Probe SoC clock. ++ */ ++ if (rt2x00_is_soc(rt2x00dev)) { ++ retval = rt2800_probe_clk(rt2x00dev); ++ if (retval) ++ return retval; ++ } ++ ++ /* + * Initialize hw specifications. + */ + retval = rt2800_probe_hw_mode(rt2x00dev); +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -400,6 +400,7 @@ static inline struct rt2x00_intf* vif_to + * @channels: Device/chipset specific channel values (See &struct rf_channel). + * @channels_info: Additional information for channels (See &struct channel_info). + * @ht: Driver HT Capabilities (See &ieee80211_sta_ht_cap). ++ * @clk_is_20mhz: External crystal of WiSoC is 20MHz instead of 40MHz + */ + struct hw_mode_spec { + unsigned int supported_bands; +@@ -416,6 +417,7 @@ struct hw_mode_spec { + const struct channel_info *channels_info; + + struct ieee80211_sta_ht_cap ht; ++ int clk_is_20mhz; + }; + + /* +--- a/include/linux/rt2x00_platform.h ++++ b/include/linux/rt2x00_platform.h +@@ -18,6 +18,7 @@ struct rt2x00_platform_data { + + int disable_2ghz; + int disable_5ghz; ++ int clk_is_20mhz; + }; + + #endif /* _RT2X00_PLATFORM_H */ diff --git a/feeds/rtkmipsel/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch b/feeds/rtkmipsel/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch new file mode 100644 index 000000000..e4b028b1a --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/612-rt2x00-make-wmac-loadable-via-OF-on-rt288x-305x-SoC.patch @@ -0,0 +1,33 @@ +From 04dbd87265f6ba4a373b211ba324b437d224fb2d Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Sun, 17 Mar 2013 00:03:31 +0100 +Subject: [PATCH 21/38] rt2x00: make wmac loadable via OF on rt288x/305x SoC + +This patch ads the match table to allow loading the wmac support from a +devicetree. + +Signed-off-by: John Crispin +--- + drivers/net/wireless/ralink/rt2x00/rt2800pci.c | 7 +++++++ + 1 file changed, 7 insertions(+) + +--- a/drivers/net/wireless/ralink/rt2x00/rt2800soc.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800soc.c +@@ -237,10 +237,17 @@ static int rt2800soc_probe(struct platfo + return rt2x00soc_probe(pdev, &rt2800soc_ops); + } + ++static const struct of_device_id rt2880_wmac_match[] = { ++ { .compatible = "ralink,rt2880-wmac" }, ++ {}, ++}; ++MODULE_DEVICE_TABLE(of, rt2880_wmac_match); ++ + static struct platform_driver rt2800soc_driver = { + .driver = { + .name = "rt2800_wmac", + .mod_name = KBUILD_MODNAME, ++ .of_match_table = rt2880_wmac_match, + }, + .probe = rt2800soc_probe, + .remove = rt2x00soc_remove, diff --git a/feeds/rtkmipsel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch b/feeds/rtkmipsel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch new file mode 100644 index 000000000..8e3bd2a36 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/615-rt2x00-fix_20mhz_clk.patch @@ -0,0 +1,29 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -36,6 +36,7 @@ + #include + #include + #include ++#include + + #include "rt2x00.h" + #include "rt2800lib.h" +@@ -8482,13 +8483,14 @@ static int rt2800_probe_rt(struct rt2x00 + + int rt2800_probe_clk(struct rt2x00_dev *rt2x00dev) + { +- struct rt2x00_platform_data *pdata = rt2x00dev->dev->platform_data; + struct hw_mode_spec *spec = &rt2x00dev->spec; ++ struct clk *clk = clk_get(rt2x00dev->dev, NULL); + +- if (!pdata) +- return -EINVAL; ++ if (IS_ERR(clk)) ++ return PTR_ERR(clk); + +- spec->clk_is_20mhz = pdata->clk_is_20mhz; ++ if (clk_get_rate(clk) == 20000000) ++ spec->clk_is_20mhz = 1; + + return 0; + } diff --git a/feeds/rtkmipsel/mac80211/patches/616-rt2x00-support-rt5350.patch b/feeds/rtkmipsel/mac80211/patches/616-rt2x00-support-rt5350.patch new file mode 100644 index 000000000..faa5879de --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/616-rt2x00-support-rt5350.patch @@ -0,0 +1,276 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -74,6 +74,7 @@ + #define RF3070 0x3070 + #define RF3290 0x3290 + #define RF3853 0x3853 ++#define RF5350 0x5350 + #define RF5360 0x5360 + #define RF5362 0x5362 + #define RF5370 0x5370 +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -3015,6 +3015,13 @@ static void rt2800_config_channel_rf53xx + + rt2800_rfcsr_write(rt2x00dev, 59, + r59_non_bt[idx]); ++ } else if (rt2x00_rt(rt2x00dev, RT5350)) { ++ static const char r59_non_bt[] = {0x0b, 0x0b, ++ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x0a, ++ 0x0a, 0x09, 0x08, 0x07, 0x07, 0x06}; ++ ++ rt2800_rfcsr_write(rt2x00dev, 59, ++ r59_non_bt[idx]); + } + } + } +@@ -3493,6 +3500,7 @@ static void rt2800_config_channel(struct + rt2800_config_channel_rf3853(rt2x00dev, conf, rf, info); + break; + case RF3070: ++ case RF5350: + case RF5360: + case RF5362: + case RF5370: +@@ -3511,6 +3519,7 @@ static void rt2800_config_channel(struct + if (rt2x00_rf(rt2x00dev, RF3070) || + rt2x00_rf(rt2x00dev, RF3290) || + rt2x00_rf(rt2x00dev, RF3322) || ++ rt2x00_rf(rt2x00dev, RF5350) || + rt2x00_rf(rt2x00dev, RF5360) || + rt2x00_rf(rt2x00dev, RF5362) || + rt2x00_rf(rt2x00dev, RF5370) || +@@ -3789,7 +3798,8 @@ static void rt2800_config_channel(struct + /* + * Clear update flag + */ +- if (rt2x00_rt(rt2x00dev, RT3352)) { ++ if (rt2x00_rt(rt2x00dev, RT3352) || ++ rt2x00_rt(rt2x00dev, RT5350)) { + rt2800_bbp_read(rt2x00dev, 49, &bbp); + rt2x00_set_field8(&bbp, BBP49_UPDATE_FLAG, 0); + rt2800_bbp_write(rt2x00dev, 49, bbp); +@@ -4675,6 +4685,7 @@ void rt2800_vco_calibration(struct rt2x0 + case RF3070: + case RF3290: + case RF3853: ++ case RF5350: + case RF5360: + case RF5362: + case RF5370: +@@ -5088,6 +5099,8 @@ static int rt2800_init_registers(struct + rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); + rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); + rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); ++ } else if (rt2x00_rt(rt2x00dev, RT5350)) { ++ rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); + } else { + rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000000); + rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); +@@ -5743,9 +5756,13 @@ static void rt2800_init_bbp_3352(struct + + rt2800_bbp_write(rt2x00dev, 82, 0x62); + +- rt2800_bbp_write(rt2x00dev, 83, 0x6a); +- +- rt2800_bbp_write(rt2x00dev, 84, 0x99); ++ if (rt2x00_rt(rt2x00dev, RT5350)) { ++ rt2800_bbp_write(rt2x00dev, 83, 0x7a); ++ rt2800_bbp_write(rt2x00dev, 84, 0x9a); ++ } else { ++ rt2800_bbp_write(rt2x00dev, 83, 0x6a); ++ rt2800_bbp_write(rt2x00dev, 84, 0x99); ++ } + + rt2800_bbp_write(rt2x00dev, 86, 0x38); + +@@ -5759,9 +5776,13 @@ static void rt2800_init_bbp_3352(struct + + rt2800_bbp_write(rt2x00dev, 104, 0x92); + +- rt2800_bbp_write(rt2x00dev, 105, 0x34); +- +- rt2800_bbp_write(rt2x00dev, 106, 0x05); ++ if (rt2x00_rt(rt2x00dev, RT5350)) { ++ rt2800_bbp_write(rt2x00dev, 105, 0x3c); ++ rt2800_bbp_write(rt2x00dev, 106, 0x03); ++ } else { ++ rt2800_bbp_write(rt2x00dev, 105, 0x34); ++ rt2800_bbp_write(rt2x00dev, 106, 0x05); ++ } + + rt2800_bbp_write(rt2x00dev, 120, 0x50); + +@@ -5786,6 +5807,13 @@ static void rt2800_init_bbp_3352(struct + rt2800_bbp_write(rt2x00dev, 143, 0xa2); + + rt2800_bbp_write(rt2x00dev, 148, 0xc8); ++ ++ if (rt2x00_rt(rt2x00dev, RT5350)) { ++ rt2800_bbp_write(rt2x00dev, 150, 0x40); /* Antenna Software OFDM */ ++ rt2800_bbp_write(rt2x00dev, 151, 0x30); /* Antenna Software CCK */ ++ rt2800_bbp_write(rt2x00dev, 152, 0xa3); ++ rt2800_bbp_write(rt2x00dev, 154, 0); /* Clear previously selected antenna */ ++ } + } + + static void rt2800_init_bbp_3390(struct rt2x00_dev *rt2x00dev) +@@ -6127,6 +6155,7 @@ static void rt2800_init_bbp(struct rt2x0 + rt2800_init_bbp_3290(rt2x00dev); + break; + case RT3352: ++ case RT5350: + rt2800_init_bbp_3352(rt2x00dev); + break; + case RT3390: +@@ -7078,6 +7107,76 @@ static void rt2800_init_rfcsr_3883(struc + rt2800_rfcsr_write(rt2x00dev, 20, rfcsr); + } + ++static void rt2800_init_rfcsr_5350(struct rt2x00_dev *rt2x00dev) ++{ ++ rt2800_rfcsr_write(rt2x00dev, 0, 0xf0); ++ rt2800_rfcsr_write(rt2x00dev, 1, 0x23); ++ rt2800_rfcsr_write(rt2x00dev, 2, 0x50); ++ rt2800_rfcsr_write(rt2x00dev, 3, 0x08); ++ rt2800_rfcsr_write(rt2x00dev, 4, 0x49); ++ rt2800_rfcsr_write(rt2x00dev, 5, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 6, 0xe0); ++ rt2800_rfcsr_write(rt2x00dev, 7, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 8, 0xf1); ++ rt2800_rfcsr_write(rt2x00dev, 9, 0x02); ++ rt2800_rfcsr_write(rt2x00dev, 10, 0x53); ++ rt2800_rfcsr_write(rt2x00dev, 11, 0x4a); ++ rt2800_rfcsr_write(rt2x00dev, 12, 0x46); ++ if(rt2x00dev->spec.clk_is_20mhz) ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x1f); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x9f); ++ rt2800_rfcsr_write(rt2x00dev, 14, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 15, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 16, 0xc0); ++ rt2800_rfcsr_write(rt2x00dev, 18, 0x03); ++ rt2800_rfcsr_write(rt2x00dev, 19, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 20, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 21, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 22, 0x20); ++ rt2800_rfcsr_write(rt2x00dev, 23, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 24, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 25, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 26, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 27, 0x03); ++ rt2800_rfcsr_write(rt2x00dev, 28, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 29, 0xd0); ++ rt2800_rfcsr_write(rt2x00dev, 30, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 31, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 32, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 33, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 34, 0x07); ++ rt2800_rfcsr_write(rt2x00dev, 35, 0x12); ++ rt2800_rfcsr_write(rt2x00dev, 36, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 37, 0x08); ++ rt2800_rfcsr_write(rt2x00dev, 38, 0x85); ++ rt2800_rfcsr_write(rt2x00dev, 39, 0x1b); ++ rt2800_rfcsr_write(rt2x00dev, 40, 0x0b); ++ rt2800_rfcsr_write(rt2x00dev, 41, 0xbb); ++ rt2800_rfcsr_write(rt2x00dev, 42, 0xd5); ++ rt2800_rfcsr_write(rt2x00dev, 43, 0x9b); ++ rt2800_rfcsr_write(rt2x00dev, 44, 0x0c); ++ rt2800_rfcsr_write(rt2x00dev, 45, 0xa6); ++ rt2800_rfcsr_write(rt2x00dev, 46, 0x73); ++ rt2800_rfcsr_write(rt2x00dev, 47, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 48, 0x10); ++ rt2800_rfcsr_write(rt2x00dev, 49, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 50, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 51, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 52, 0x38); ++ rt2800_rfcsr_write(rt2x00dev, 53, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 54, 0x38); ++ rt2800_rfcsr_write(rt2x00dev, 55, 0x43); ++ rt2800_rfcsr_write(rt2x00dev, 56, 0x82); ++ rt2800_rfcsr_write(rt2x00dev, 57, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 58, 0x39); ++ rt2800_rfcsr_write(rt2x00dev, 59, 0x0b); ++ rt2800_rfcsr_write(rt2x00dev, 60, 0x45); ++ rt2800_rfcsr_write(rt2x00dev, 61, 0xd1); ++ rt2800_rfcsr_write(rt2x00dev, 62, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 63, 0x00); ++} ++ + static void rt2800_init_rfcsr_5390(struct rt2x00_dev *rt2x00dev) + { + rt2800_rf_init_calibration(rt2x00dev, 2); +@@ -7318,6 +7417,9 @@ static void rt2800_init_rfcsr(struct rt2 + case RT3593: + rt2800_init_rfcsr_3593(rt2x00dev); + break; ++ case RT5350: ++ rt2800_init_rfcsr_5350(rt2x00dev); ++ break; + case RT5390: + rt2800_init_rfcsr_5390(rt2x00dev); + break; +@@ -7577,6 +7679,12 @@ static int rt2800_validate_eeprom(struct + rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF2820); + rt2800_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); + rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); ++ } else if (rt2x00_rt(rt2x00dev, RT5350)) { ++ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RXPATH, 1); ++ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_TXPATH, 1); ++ rt2x00_set_field16(&word, EEPROM_NIC_CONF0_RF_TYPE, RF3320); ++ rt2x00_eeprom_write(rt2x00dev, EEPROM_NIC_CONF0, word); ++ rt2x00_eeprom_dbg(rt2x00dev, "Antenna: 0x%04x\n", word); + } else if (rt2x00_rt(rt2x00dev, RT2860) || + rt2x00_rt(rt2x00dev, RT2872)) { + /* +@@ -7715,6 +7823,8 @@ static int rt2800_init_eeprom(struct rt2 + rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); + else if (rt2x00_rt(rt2x00dev, RT3883)) + rf = RF3853; ++ else if (rt2x00_rt(rt2x00dev, RT5350)) ++ rf = RF5350; + else + rf = rt2x00_get_field16(eeprom, EEPROM_NIC_CONF0_RF_TYPE); + +@@ -7734,6 +7844,7 @@ static int rt2800_init_eeprom(struct rt2 + case RF3320: + case RF3322: + case RF3853: ++ case RF5350: + case RF5360: + case RF5362: + case RF5370: +@@ -8287,6 +8398,7 @@ static int rt2800_probe_hw_mode(struct r + case RF3290: + case RF3320: + case RF3322: ++ case RF5350: + case RF5360: + case RF5362: + case RF5370: +@@ -8426,6 +8538,7 @@ static int rt2800_probe_hw_mode(struct r + case RF3070: + case RF3290: + case RF3853: ++ case RF5350: + case RF5360: + case RF5362: + case RF5370: +@@ -8466,6 +8579,7 @@ static int rt2800_probe_rt(struct rt2x00 + case RT3572: + case RT3593: + case RT3883: ++ case RT5350: + case RT5390: + case RT5392: + case RT5592: +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00.h +@@ -169,6 +169,7 @@ struct rt2x00_chip { + #define RT3572 0x3572 + #define RT3593 0x3593 + #define RT3883 0x3883 /* WSOC */ ++#define RT5350 0x5350 /* WSOC 2.4GHz */ + #define RT5390 0x5390 /* 2.4GHz */ + #define RT5392 0x5392 /* 2.4GHz */ + #define RT5592 0x5592 diff --git a/feeds/rtkmipsel/mac80211/patches/619-rt2x00-change-led-polarity-from-OF.patch b/feeds/rtkmipsel/mac80211/patches/619-rt2x00-change-led-polarity-from-OF.patch new file mode 100644 index 000000000..6094a613b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/619-rt2x00-change-led-polarity-from-OF.patch @@ -0,0 +1,40 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -37,6 +37,7 @@ + #include + #include + #include ++#include + + #include "rt2x00.h" + #include "rt2800lib.h" +@@ -7934,6 +7935,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); + ++ { ++ struct device_node *np = rt2x00dev->dev->of_node; ++ unsigned int led_polarity; ++ ++ /* Allow overriding polarity from OF */ ++ if (!of_property_read_u32(np, "ralink,led-polarity", ++ &led_polarity)) ++ rt2x00_set_field16(&eeprom, EEPROM_FREQ_LED_POLARITY, ++ led_polarity); ++ } ++ + rt2x00dev->led_mcu_reg = eeprom; + #endif /* CPTCFG_RT2X00_LIB_LEDS */ + +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00leds.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00leds.c +@@ -109,6 +109,9 @@ static int rt2x00leds_register_led(struc + led->led_dev.name = name; + led->led_dev.brightness = LED_OFF; + ++ if (rt2x00_is_soc(rt2x00dev)) ++ led->led_dev.brightness_set(&led->led_dev, LED_OFF); ++ + retval = led_classdev_register(device, &led->led_dev); + if (retval) { + rt2x00_err(rt2x00dev, "Failed to register led handler\n"); diff --git a/feeds/rtkmipsel/mac80211/patches/620-rt2x00-add-AP+STA-support.patch b/feeds/rtkmipsel/mac80211/patches/620-rt2x00-add-AP+STA-support.patch new file mode 100644 index 000000000..55452b9eb --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/620-rt2x00-add-AP+STA-support.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +@@ -1284,7 +1284,7 @@ static inline void rt2x00lib_set_if_comb + */ + if_limit = &rt2x00dev->if_limits_ap; + if_limit->max = rt2x00dev->ops->max_ap_intf; +- if_limit->types = BIT(NL80211_IFTYPE_AP); ++ if_limit->types = BIT(NL80211_IFTYPE_AP) | BIT(NL80211_IFTYPE_STATION); + #ifdef CPTCFG_MAC80211_MESH + if_limit->types |= BIT(NL80211_IFTYPE_MESH_POINT); + #endif diff --git a/feeds/rtkmipsel/mac80211/patches/620-rt2x00-rt3352-rf-id.patch b/feeds/rtkmipsel/mac80211/patches/620-rt2x00-rt3352-rf-id.patch new file mode 100644 index 000000000..8ddf42585 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/620-rt2x00-rt3352-rf-id.patch @@ -0,0 +1,15 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -7818,10 +7818,11 @@ static int rt2800_init_eeprom(struct rt2 + * RT53xx: defined in "EEPROM_CHIP_ID" field + */ + if (rt2x00_rt(rt2x00dev, RT3290) || +- rt2x00_rt(rt2x00dev, RT3352) || + rt2x00_rt(rt2x00dev, RT5390) || + rt2x00_rt(rt2x00dev, RT5392)) + rt2800_eeprom_read(rt2x00dev, EEPROM_CHIP_ID, &rf); ++ else if (rt2x00_rt(rt2x00dev, RT3352)) ++ rf = RF3322; + else if (rt2x00_rt(rt2x00dev, RT3883)) + rf = RF3853; + else if (rt2x00_rt(rt2x00dev, RT5350)) diff --git a/feeds/rtkmipsel/mac80211/patches/621-rt2x00-ht20_40_fix.patch b/feeds/rtkmipsel/mac80211/patches/621-rt2x00-ht20_40_fix.patch new file mode 100644 index 000000000..e3e4c98ef --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/621-rt2x00-ht20_40_fix.patch @@ -0,0 +1,29 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -2321,6 +2321,8 @@ struct mac_iveiv_entry { + #define RFCSR30_RX_H20M FIELD8(0x04) + #define RFCSR30_RX_VCM FIELD8(0x18) + #define RFCSR30_RF_CALIBRATION FIELD8(0x80) ++#define RF3322_RFCSR30_TX_H20M FIELD8(0x01) ++#define RF3322_RFCSR30_RX_H20M FIELD8(0x02) + + /* + * RFCSR 31: +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -3528,8 +3528,13 @@ static void rt2800_config_channel(struct + rt2x00_rf(rt2x00dev, RF5390) || + rt2x00_rf(rt2x00dev, RF5392)) { + rt2800_rfcsr_read(rt2x00dev, 30, &rfcsr); +- rt2x00_set_field8(&rfcsr, RFCSR30_TX_H20M, 0); +- rt2x00_set_field8(&rfcsr, RFCSR30_RX_H20M, 0); ++ if(rt2x00_rf(rt2x00dev, RF3322)) { ++ rt2x00_set_field8(&rfcsr, RF3322_RFCSR30_TX_H20M, conf_is_ht40(conf)); ++ rt2x00_set_field8(&rfcsr, RF3322_RFCSR30_RX_H20M, conf_is_ht40(conf)); ++ } else { ++ rt2x00_set_field8(&rfcsr, RFCSR30_TX_H20M, conf_is_ht40(conf)); ++ rt2x00_set_field8(&rfcsr, RFCSR30_RX_H20M, conf_is_ht40(conf)); ++ } + rt2800_rfcsr_write(rt2x00dev, 30, rfcsr); + + rt2800_rfcsr_read(rt2x00dev, 3, &rfcsr); diff --git a/feeds/rtkmipsel/mac80211/patches/622-rt2x00-fix-beacon-bit-balance.patch b/feeds/rtkmipsel/mac80211/patches/622-rt2x00-fix-beacon-bit-balance.patch new file mode 100644 index 000000000..3cf626815 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/622-rt2x00-fix-beacon-bit-balance.patch @@ -0,0 +1,47 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00mac.c +@@ -627,12 +627,8 @@ void rt2x00mac_bss_info_changed(struct i + } else if (bss_conf->enable_beacon && !intf->enable_beacon) { + rt2x00dev->intf_beaconing++; + intf->enable_beacon = true; +- /* +- * Upload beacon to the H/W. This is only required on +- * USB devices. PCI devices fetch beacons periodically. +- */ +- if (rt2x00_is_usb(rt2x00dev)) +- rt2x00queue_update_beacon(rt2x00dev, vif); ++ ++ rt2x00queue_update_beacon(rt2x00dev, vif); + + if (rt2x00dev->intf_beaconing == 1) { + /* +--- a/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2x00dev.c +@@ -144,7 +144,8 @@ static void rt2x00lib_intf_scheduled_ite + + if (test_and_clear_bit(DELAYED_UPDATE_BEACON, &intf->delayed_flags)) { + mutex_lock(&intf->beacon_skb_mutex); +- rt2x00queue_update_beacon(rt2x00dev, vif); ++ if (intf->enable_beacon) ++ rt2x00queue_update_beacon(rt2x00dev, vif); + mutex_unlock(&intf->beacon_skb_mutex); + } + } +@@ -207,6 +208,7 @@ static void rt2x00lib_beaconupdate_iter( + struct ieee80211_vif *vif) + { + struct rt2x00_dev *rt2x00dev = data; ++ struct rt2x00_intf *intf = vif_to_intf(vif); + + if (vif->type != NL80211_IFTYPE_AP && + vif->type != NL80211_IFTYPE_ADHOC && +@@ -220,7 +222,8 @@ static void rt2x00lib_beaconupdate_iter( + * never be called for USB devices. + */ + WARN_ON(rt2x00_is_usb(rt2x00dev)); +- rt2x00queue_update_beacon(rt2x00dev, vif); ++ if (intf->enable_beacon) ++ rt2x00queue_update_beacon(rt2x00dev, vif); + } + + void rt2x00lib_beacondone(struct rt2x00_dev *rt2x00dev) diff --git a/feeds/rtkmipsel/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch b/feeds/rtkmipsel/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch new file mode 100644 index 000000000..a901a44ba --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/700-mwl8k-missing-pci-id-for-WNR854T.patch @@ -0,0 +1,10 @@ +--- a/drivers/net/wireless/marvell/mwl8k.c ++++ b/drivers/net/wireless/marvell/mwl8k.c +@@ -5681,6 +5681,7 @@ MODULE_FIRMWARE("mwl8k/fmimage_8366.fw") + MODULE_FIRMWARE(MWL8K_8366_AP_FW(MWL8K_8366_AP_FW_API)); + + static const struct pci_device_id mwl8k_pci_id_table[] = { ++ { PCI_VDEVICE(MARVELL, 0x2a02), .driver_data = MWL8363, }, + { PCI_VDEVICE(MARVELL, 0x2a0a), .driver_data = MWL8363, }, + { PCI_VDEVICE(MARVELL, 0x2a0c), .driver_data = MWL8363, }, + { PCI_VDEVICE(MARVELL, 0x2a24), .driver_data = MWL8363, }, diff --git a/feeds/rtkmipsel/mac80211/patches/801-libertas-configure-sysfs-links.patch b/feeds/rtkmipsel/mac80211/patches/801-libertas-configure-sysfs-links.patch new file mode 100644 index 000000000..fd885cc00 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/801-libertas-configure-sysfs-links.patch @@ -0,0 +1,21 @@ +--- a/drivers/net/wireless/marvell/libertas/cfg.c ++++ b/drivers/net/wireless/marvell/libertas/cfg.c +@@ -2084,6 +2084,8 @@ struct wireless_dev *lbs_cfg_alloc(struc + goto err_wiphy_new; + } + ++ set_wiphy_dev(wdev->wiphy, dev); ++ + lbs_deb_leave(LBS_DEB_CFG80211); + return wdev; + +--- a/drivers/net/wireless/marvell/libertas/main.c ++++ b/drivers/net/wireless/marvell/libertas/main.c +@@ -987,6 +987,7 @@ struct lbs_private *lbs_add_card(void *c + goto err_adapter; + } + ++ dev_net_set(dev, wiphy_net(wdev->wiphy)); + dev->ieee80211_ptr = wdev; + dev->ml_priv = priv; + SET_NETDEV_DEV(dev, dmdev); diff --git a/feeds/rtkmipsel/mac80211/patches/802-libertas-set-wireless-macaddr.patch b/feeds/rtkmipsel/mac80211/patches/802-libertas-set-wireless-macaddr.patch new file mode 100644 index 000000000..b67a95f94 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/802-libertas-set-wireless-macaddr.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/marvell/libertas/cfg.c ++++ b/drivers/net/wireless/marvell/libertas/cfg.c +@@ -2174,6 +2174,8 @@ int lbs_cfg_register(struct lbs_private + wdev->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites); + wdev->wiphy->reg_notifier = lbs_reg_notifier; + ++ memcpy(wdev->wiphy->perm_addr, priv->current_addr, ETH_ALEN); ++ + ret = wiphy_register(wdev->wiphy); + if (ret < 0) + pr_err("cannot register wiphy device\n"); diff --git a/feeds/rtkmipsel/mac80211/patches/804-b43-sync-with-bcma.patch b/feeds/rtkmipsel/mac80211/patches/804-b43-sync-with-bcma.patch new file mode 100644 index 000000000..74cd4489f --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/804-b43-sync-with-bcma.patch @@ -0,0 +1,17 @@ +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -1215,10 +1215,10 @@ void b43_wireless_core_phy_pll_reset(str + case B43_BUS_BCMA: + bcma_cc = &dev->dev->bdev->bus->drv_cc; + +- bcma_cc_write32(bcma_cc, BCMA_CC_CHIPCTL_ADDR, 0); +- bcma_cc_mask32(bcma_cc, BCMA_CC_CHIPCTL_DATA, ~0x4); +- bcma_cc_set32(bcma_cc, BCMA_CC_CHIPCTL_DATA, 0x4); +- bcma_cc_mask32(bcma_cc, BCMA_CC_CHIPCTL_DATA, ~0x4); ++ bcma_cc_write32(bcma_cc, BCMA_CC_PMU_CHIPCTL_ADDR, 0); ++ bcma_cc_mask32(bcma_cc, BCMA_CC_PMU_CHIPCTL_DATA, ~0x4); ++ bcma_cc_set32(bcma_cc, BCMA_CC_PMU_CHIPCTL_DATA, 0x4); ++ bcma_cc_mask32(bcma_cc, BCMA_CC_PMU_CHIPCTL_DATA, ~0x4); + break; + #endif + #ifdef CPTCFG_B43_SSB diff --git a/feeds/rtkmipsel/mac80211/patches/805-b43-gpio-mask-module-option.patch b/feeds/rtkmipsel/mac80211/patches/805-b43-gpio-mask-module-option.patch new file mode 100644 index 000000000..fd9e6fd97 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/805-b43-gpio-mask-module-option.patch @@ -0,0 +1,37 @@ +--- a/drivers/net/wireless/broadcom/b43/b43.h ++++ b/drivers/net/wireless/broadcom/b43/b43.h +@@ -839,6 +839,7 @@ struct b43_wldev { + bool qos_enabled; /* TRUE, if QoS is used. */ + bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */ + bool use_pio; /* TRUE if next init should use PIO */ ++ int gpiomask; /* GPIO LED mask as a module parameter */ + + /* PHY/Radio device. */ + struct b43_phy phy; +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -75,6 +75,11 @@ MODULE_FIRMWARE("b43/ucode16_mimo.fw"); + MODULE_FIRMWARE("b43/ucode5.fw"); + MODULE_FIRMWARE("b43/ucode9.fw"); + ++static int modparam_gpiomask = 0x000F; ++module_param_named(gpiomask, modparam_gpiomask, int, 0444); ++MODULE_PARM_DESC(gpiomask, ++ "GPIO mask for LED control (default 0x000F)"); ++ + static int modparam_bad_frames_preempt; + module_param_named(bad_frames_preempt, modparam_bad_frames_preempt, int, 0444); + MODULE_PARM_DESC(bad_frames_preempt, +@@ -2882,10 +2887,10 @@ static int b43_gpio_init(struct b43_wlde + u32 mask, set; + + b43_maskset32(dev, B43_MMIO_MACCTL, ~B43_MACCTL_GPOUTSMSK, 0); +- b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, 0xF); ++ b43_maskset16(dev, B43_MMIO_GPIO_MASK, ~0, modparam_gpiomask); + + mask = 0x0000001F; +- set = 0x0000000F; ++ set = modparam_gpiomask; + if (dev->dev->chip_id == 0x4301) { + mask |= 0x0060; + set |= 0x0060; diff --git a/feeds/rtkmipsel/mac80211/patches/810-b43_no_pio.patch b/feeds/rtkmipsel/mac80211/patches/810-b43_no_pio.patch new file mode 100644 index 000000000..79428c278 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/810-b43_no_pio.patch @@ -0,0 +1,86 @@ +--- a/drivers/net/wireless/broadcom/b43/Makefile ++++ b/drivers/net/wireless/broadcom/b43/Makefile +@@ -17,7 +17,7 @@ b43-$(CPTCFG_B43_PHY_AC) += phy_ac.o + b43-y += sysfs.o + b43-y += xmit.o + b43-y += dma.o +-b43-y += pio.o ++b43-$(CPTCFG_B43_PIO) += pio.o + b43-y += rfkill.o + b43-y += ppr.o + b43-$(CPTCFG_B43_LEDS) += leds.o +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -2008,10 +2008,12 @@ static void b43_do_interrupt_thread(stru + dma_reason[0], dma_reason[1], + dma_reason[2], dma_reason[3], + dma_reason[4], dma_reason[5]); ++#ifdef CPTCFG_B43_PIO + b43err(dev->wl, "This device does not support DMA " + "on your system. It will now be switched to PIO.\n"); + /* Fall back to PIO transfers if we get fatal DMA errors! */ + dev->use_pio = true; ++#endif + b43_controller_restart(dev, "DMA error"); + return; + } +--- a/drivers/net/wireless/broadcom/b43/pio.h ++++ b/drivers/net/wireless/broadcom/b43/pio.h +@@ -150,7 +150,7 @@ static inline void b43_piorx_write32(str + b43_write32(q->dev, q->mmio_base + offset, value); + } + +- ++#ifdef CPTCFG_B43_PIO + int b43_pio_init(struct b43_wldev *dev); + void b43_pio_free(struct b43_wldev *dev); + +@@ -161,5 +161,37 @@ void b43_pio_rx(struct b43_pio_rxqueue * + + void b43_pio_tx_suspend(struct b43_wldev *dev); + void b43_pio_tx_resume(struct b43_wldev *dev); ++#else ++static inline int b43_pio_init(struct b43_wldev *dev) ++{ ++ return 0; ++} ++ ++static inline void b43_pio_free(struct b43_wldev *dev) ++{ ++} ++ ++static inline int b43_pio_tx(struct b43_wldev *dev, struct sk_buff *skb) ++{ ++ return 0; ++} ++ ++static inline void b43_pio_handle_txstatus(struct b43_wldev *dev, ++ const struct b43_txstatus *status) ++{ ++} ++ ++static inline void b43_pio_rx(struct b43_pio_rxqueue *q) ++{ ++} ++ ++static inline void b43_pio_tx_suspend(struct b43_wldev *dev) ++{ ++} ++ ++static inline void b43_pio_tx_resume(struct b43_wldev *dev) ++{ ++} ++#endif /* CPTCFG_B43_PIO */ + + #endif /* B43_PIO_H_ */ +--- a/drivers/net/wireless/broadcom/b43/Kconfig ++++ b/drivers/net/wireless/broadcom/b43/Kconfig +@@ -98,7 +98,7 @@ config B43_BCMA_PIO + default y + + config B43_PIO +- bool ++ bool "Broadcom 43xx PIO support" + depends on B43 && B43_SSB + select SSB_BLOCKIO + default y diff --git a/feeds/rtkmipsel/mac80211/patches/820-b43-add-antenna-control.patch b/feeds/rtkmipsel/mac80211/patches/820-b43-add-antenna-control.patch new file mode 100644 index 000000000..06c731fce --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/820-b43-add-antenna-control.patch @@ -0,0 +1,131 @@ +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -1648,7 +1648,7 @@ static void b43_write_beacon_template(st + len, ram_offset, shm_size_offset, rate); + + /* Write the PHY TX control parameters. */ +- antenna = B43_ANTENNA_DEFAULT; ++ antenna = dev->tx_antenna; + antenna = b43_antenna_to_phyctl(antenna); + ctl = b43_shm_read16(dev, B43_SHM_SHARED, B43_SHM_SH_BEACPHYCTL); + /* We can't send beacons with short preamble. Would get PHY errors. */ +@@ -3300,8 +3300,8 @@ static int b43_chip_init(struct b43_wlde + + /* Select the antennae */ + if (phy->ops->set_rx_antenna) +- phy->ops->set_rx_antenna(dev, B43_ANTENNA_DEFAULT); +- b43_mgmtframe_txantenna(dev, B43_ANTENNA_DEFAULT); ++ phy->ops->set_rx_antenna(dev, dev->rx_antenna); ++ b43_mgmtframe_txantenna(dev, dev->tx_antenna); + + if (phy->type == B43_PHYTYPE_B) { + value16 = b43_read16(dev, 0x005E); +@@ -4001,7 +4001,6 @@ static int b43_op_config(struct ieee8021 + struct b43_wldev *dev = wl->current_dev; + struct b43_phy *phy = &dev->phy; + struct ieee80211_conf *conf = &hw->conf; +- int antenna; + int err = 0; + + mutex_lock(&wl->mutex); +@@ -4044,11 +4043,9 @@ static int b43_op_config(struct ieee8021 + } + + /* Antennas for RX and management frame TX. */ +- antenna = B43_ANTENNA_DEFAULT; +- b43_mgmtframe_txantenna(dev, antenna); +- antenna = B43_ANTENNA_DEFAULT; ++ b43_mgmtframe_txantenna(dev, dev->tx_antenna); + if (phy->ops->set_rx_antenna) +- phy->ops->set_rx_antenna(dev, antenna); ++ phy->ops->set_rx_antenna(dev, dev->rx_antenna); + + if (wl->radio_enabled != phy->radio_on) { + if (wl->radio_enabled) { +@@ -5209,6 +5206,47 @@ static int b43_op_get_survey(struct ieee + return 0; + } + ++static int b43_op_set_antenna(struct ieee80211_hw *hw, u32 tx_ant, u32 rx_ant) ++{ ++ struct b43_wl *wl = hw_to_b43_wl(hw); ++ struct b43_wldev *dev = wl->current_dev; ++ ++ if (tx_ant == 1 && rx_ant == 1) { ++ dev->tx_antenna = B43_ANTENNA0; ++ dev->rx_antenna = B43_ANTENNA0; ++ } ++ else if (tx_ant == 2 && rx_ant == 2) { ++ dev->tx_antenna = B43_ANTENNA1; ++ dev->rx_antenna = B43_ANTENNA1; ++ } ++ else if ((tx_ant & 3) == 3 && (rx_ant & 3) == 3) { ++ dev->tx_antenna = B43_ANTENNA_DEFAULT; ++ dev->rx_antenna = B43_ANTENNA_DEFAULT; ++ } ++ else { ++ return -EINVAL; ++ } ++ ++ return 0; ++} ++ ++ ++static int b43_op_get_antenna(struct ieee80211_hw *hw, u32 *tx_ant, u32 *rx_ant) ++{ ++ struct b43_wl *wl = hw_to_b43_wl(hw); ++ struct b43_wldev *dev = wl->current_dev; ++ ++ switch (dev->tx_antenna) { ++ case B43_ANTENNA0: ++ *tx_ant = 1; *rx_ant = 1; break; ++ case B43_ANTENNA1: ++ *tx_ant = 2; *rx_ant = 2; break; ++ case B43_ANTENNA_DEFAULT: ++ *tx_ant = 3; *rx_ant = 3; break; ++ } ++ return 0; ++} ++ + static const struct ieee80211_ops b43_hw_ops = { + .tx = b43_op_tx, + .conf_tx = b43_op_conf_tx, +@@ -5230,6 +5268,8 @@ static const struct ieee80211_ops b43_hw + .sw_scan_complete = b43_op_sw_scan_complete_notifier, + .get_survey = b43_op_get_survey, + .rfkill_poll = b43_rfkill_poll, ++ .set_antenna = b43_op_set_antenna, ++ .get_antenna = b43_op_get_antenna, + }; + + /* Hard-reset the chip. Do not call this directly. +@@ -5538,6 +5578,8 @@ static int b43_one_core_attach(struct b4 + if (!wldev) + goto out; + ++ wldev->rx_antenna = B43_ANTENNA_DEFAULT; ++ wldev->tx_antenna = B43_ANTENNA_DEFAULT; + wldev->use_pio = b43_modparam_pio; + wldev->dev = dev; + wldev->wl = wl; +@@ -5628,6 +5670,9 @@ static struct b43_wl *b43_wireless_init( + + hw->wiphy->flags |= WIPHY_FLAG_IBSS_RSN; + ++ hw->wiphy->available_antennas_rx = 0x3; ++ hw->wiphy->available_antennas_tx = 0x3; ++ + wl->hw_registred = false; + hw->max_rates = 2; + SET_IEEE80211_DEV(hw, dev->dev); +--- a/drivers/net/wireless/broadcom/b43/b43.h ++++ b/drivers/net/wireless/broadcom/b43/b43.h +@@ -840,6 +840,8 @@ struct b43_wldev { + bool hwcrypto_enabled; /* TRUE, if HW crypto acceleration is enabled. */ + bool use_pio; /* TRUE if next init should use PIO */ + int gpiomask; /* GPIO LED mask as a module parameter */ ++ int rx_antenna; /* Used RX antenna (B43_ANTENNAxxx) */ ++ int tx_antenna; /* Used TX antenna (B43_ANTENNAxxx) */ + + /* PHY/Radio device. */ + struct b43_phy phy; diff --git a/feeds/rtkmipsel/mac80211/patches/841-b43-reduce-number-of-RX-slots.patch b/feeds/rtkmipsel/mac80211/patches/841-b43-reduce-number-of-RX-slots.patch new file mode 100644 index 000000000..589970689 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/841-b43-reduce-number-of-RX-slots.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/broadcom/b43/dma.h ++++ b/drivers/net/wireless/broadcom/b43/dma.h +@@ -169,7 +169,7 @@ struct b43_dmadesc_generic { + + /* DMA engine tuning knobs */ + #define B43_TXRING_SLOTS 256 +-#define B43_RXRING_SLOTS 256 ++#define B43_RXRING_SLOTS 32 + #define B43_DMA0_RX_FW598_BUFSIZE (B43_DMA0_RX_FW598_FO + IEEE80211_MAX_FRAME_LEN) + #define B43_DMA0_RX_FW351_BUFSIZE (B43_DMA0_RX_FW351_FO + IEEE80211_MAX_FRAME_LEN) + diff --git a/feeds/rtkmipsel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch b/feeds/rtkmipsel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch new file mode 100644 index 000000000..8d0c0412d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/845-b43-only-use-gpio-0-1-for-led.patch @@ -0,0 +1,17 @@ +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -2899,6 +2899,14 @@ static int b43_gpio_init(struct b43_wlde + } else if (dev->dev->chip_id == 0x5354) { + /* Don't allow overtaking buttons GPIOs */ + set &= 0x2; /* 0x2 is LED GPIO on BCM5354 */ ++ } else if (dev->dev->chip_id == BCMA_CHIP_ID_BCM4716 || ++ dev->dev->chip_id == BCMA_CHIP_ID_BCM47162 || ++ dev->dev->chip_id == BCMA_CHIP_ID_BCM5356 || ++ dev->dev->chip_id == BCMA_CHIP_ID_BCM5357 || ++ dev->dev->chip_id == BCMA_CHIP_ID_BCM53572) { ++ /* just use gpio 0 and 1 for 2.4 GHz wifi led */ ++ set &= 0x3; ++ mask &= 0x3; + } + + if (0 /* FIXME: conditional unknown */ ) { diff --git a/feeds/rtkmipsel/mac80211/patches/847-b43-always-take-overlapping-devs.patch b/feeds/rtkmipsel/mac80211/patches/847-b43-always-take-overlapping-devs.patch new file mode 100644 index 000000000..ef7f3c92d --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/847-b43-always-take-overlapping-devs.patch @@ -0,0 +1,11 @@ +--- a/drivers/net/wireless/broadcom/b43/main.c ++++ b/drivers/net/wireless/broadcom/b43/main.c +@@ -117,7 +117,7 @@ static int b43_modparam_pio = 0; + module_param_named(pio, b43_modparam_pio, int, 0644); + MODULE_PARM_DESC(pio, "Use PIO accesses by default: 0=DMA, 1=PIO"); + +-static int modparam_allhwsupport = !IS_ENABLED(CPTCFG_BRCMSMAC); ++static int modparam_allhwsupport = 1; + module_param_named(allhwsupport, modparam_allhwsupport, int, 0444); + MODULE_PARM_DESC(allhwsupport, "Enable support for all hardware (even it if overlaps with the brcmsmac driver)"); + diff --git a/feeds/rtkmipsel/mac80211/patches/850-brcmsmac-remove-extra-regulation-restriction.patch b/feeds/rtkmipsel/mac80211/patches/850-brcmsmac-remove-extra-regulation-restriction.patch new file mode 100644 index 000000000..3c93386b3 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/850-brcmsmac-remove-extra-regulation-restriction.patch @@ -0,0 +1,27 @@ +--- a/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmsmac/channel.c +@@ -58,19 +58,12 @@ + (((c) < 149) ? 3 : 4)))) + + #define BRCM_2GHZ_2412_2462 REG_RULE(2412-10, 2462+10, 40, 0, 19, 0) +-#define BRCM_2GHZ_2467_2472 REG_RULE(2467-10, 2472+10, 20, 0, 19, \ +- NL80211_RRF_NO_IR) ++#define BRCM_2GHZ_2467_2472 REG_RULE(2467-10, 2472+10, 20, 0, 19, 0) + +-#define BRCM_5GHZ_5180_5240 REG_RULE(5180-10, 5240+10, 40, 0, 21, \ +- NL80211_RRF_NO_IR) +-#define BRCM_5GHZ_5260_5320 REG_RULE(5260-10, 5320+10, 40, 0, 21, \ +- NL80211_RRF_DFS | \ +- NL80211_RRF_NO_IR) +-#define BRCM_5GHZ_5500_5700 REG_RULE(5500-10, 5700+10, 40, 0, 21, \ +- NL80211_RRF_DFS | \ +- NL80211_RRF_NO_IR) +-#define BRCM_5GHZ_5745_5825 REG_RULE(5745-10, 5825+10, 40, 0, 21, \ +- NL80211_RRF_NO_IR) ++#define BRCM_5GHZ_5180_5240 REG_RULE(5180-10, 5240+10, 40, 0, 21, 0) ++#define BRCM_5GHZ_5260_5320 REG_RULE(5260-10, 5320+10, 40, 0, 21, 0) ++#define BRCM_5GHZ_5500_5700 REG_RULE(5500-10, 5700+10, 40, 0, 21, 0) ++#define BRCM_5GHZ_5745_5825 REG_RULE(5745-10, 5825+10, 40, 0, 21, 0) + + static const struct ieee80211_regdomain brcms_regdom_x2 = { + .n_reg_rules = 6, diff --git a/feeds/rtkmipsel/mac80211/patches/861-brcmfmac-register-wiphy-s-during-module_init.patch b/feeds/rtkmipsel/mac80211/patches/861-brcmfmac-register-wiphy-s-during-module_init.patch new file mode 100644 index 000000000..00181f647 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/861-brcmfmac-register-wiphy-s-during-module_init.patch @@ -0,0 +1,97 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Mon, 8 Jun 2015 16:11:40 +0200 +Subject: [PATCH] brcmfmac: register wiphy(s) during module_init +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This is needed by OpenWrt which expects all PHYs to be created after +module loads successfully. + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c +@@ -1332,6 +1332,7 @@ static int __init brcmfmac_module_init(v + #endif + if (!schedule_work(&brcmf_driver_work)) + return -EBUSY; ++ flush_work(&brcmf_driver_work); + + return 0; + } +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +@@ -444,6 +444,7 @@ struct brcmf_fw { + u16 bus_nr; + void (*done)(struct device *dev, const struct firmware *fw, + void *nvram_image, u32 nvram_len); ++ struct completion *completion; + }; + + static void brcmf_fw_request_nvram_done(const struct firmware *fw, void *ctx) +@@ -478,6 +479,8 @@ static void brcmf_fw_request_nvram_done( + goto fail; + + fwctx->done(fwctx->dev, fwctx->code, nvram, nvram_length); ++ if (fwctx->completion) ++ complete(fwctx->completion); + kfree(fwctx); + return; + +@@ -485,6 +488,8 @@ fail: + brcmf_dbg(TRACE, "failed: dev=%s\n", dev_name(fwctx->dev)); + release_firmware(fwctx->code); + device_release_driver(fwctx->dev); ++ if (fwctx->completion) ++ complete(fwctx->completion); + kfree(fwctx); + } + +@@ -500,6 +505,8 @@ static void brcmf_fw_request_code_done(c + /* only requested code so done here */ + if (!(fwctx->flags & BRCMF_FW_REQUEST_NVRAM)) { + fwctx->done(fwctx->dev, fw, NULL, 0); ++ if (fwctx->completion) ++ complete(fwctx->completion); + kfree(fwctx); + return; + } +@@ -517,6 +524,8 @@ static void brcmf_fw_request_code_done(c + fail: + brcmf_dbg(TRACE, "failed: dev=%s\n", dev_name(fwctx->dev)); + device_release_driver(fwctx->dev); ++ if (fwctx->completion) ++ complete(fwctx->completion); + kfree(fwctx); + } + +@@ -528,6 +537,8 @@ int brcmf_fw_get_firmwares_pcie(struct d + u16 domain_nr, u16 bus_nr) + { + struct brcmf_fw *fwctx; ++ struct completion completion; ++ int err; + + brcmf_dbg(TRACE, "enter: dev=%s\n", dev_name(dev)); + if (!fw_cb || !code) +@@ -548,9 +559,17 @@ int brcmf_fw_get_firmwares_pcie(struct d + fwctx->domain_nr = domain_nr; + fwctx->bus_nr = bus_nr; + +- return request_firmware_nowait(THIS_MODULE, true, code, dev, ++ init_completion(&completion); ++ fwctx->completion = &completion; ++ ++ err = request_firmware_nowait(THIS_MODULE, true, code, dev, + GFP_KERNEL, fwctx, + brcmf_fw_request_code_done); ++ if (!err) ++ wait_for_completion_timeout(fwctx->completion, ++ msecs_to_jiffies(5000)); ++ fwctx->completion = NULL; ++ return err; + } + + int brcmf_fw_get_firmwares(struct device *dev, u16 flags, diff --git a/feeds/rtkmipsel/mac80211/patches/862-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch b/feeds/rtkmipsel/mac80211/patches/862-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch new file mode 100644 index 000000000..4295b4bd3 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/862-brcmfmac-workaround-bug-with-some-inconsistent-BSSes.patch @@ -0,0 +1,50 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= +Date: Thu, 9 Jul 2015 00:07:59 +0200 +Subject: [PATCH] brcmfmac: workaround bug with some inconsistent BSSes state +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Signed-off-by: RafaÅ‚ MiÅ‚ecki +--- + +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +@@ -615,9 +615,37 @@ static struct wireless_dev *brcmf_cfg802 + u32 *flags, + struct vif_params *params) + { ++ struct net_device *dev; + struct wireless_dev *wdev; + int err; + ++ /* ++ * There is a bug with in-firmware BSS management. When adding virtual ++ * interface brcmfmac first tells firmware to create new BSS and then ++ * it creates new struct net_device. ++ * ++ * If creating/registering netdev(ice) fails, BSS remains in some bugged ++ * state. It conflicts with existing BSSes by overtaking their auth ++ * requests. ++ * ++ * It results in one BSS (addresss X) sending beacons and another BSS ++ * (address Y) replying to authentication requests. This makes interface ++ * unusable as AP. ++ * ++ * To workaround this bug we may try to guess if register_netdev(ice) ++ * will fail. The most obvious case is using interface name that already ++ * exists. This is actually quite likely with brcmfmac & some user space ++ * scripts as brcmfmac doesn't allow deleting virtual interfaces. ++ * So this bug can be triggered even by something trivial like: ++ * iw dev wlan0 delete ++ * iw phy phy0 interface add wlan0 type __ap ++ */ ++ dev = dev_get_by_name(&init_net, name); ++ if (dev) { ++ dev_put(dev); ++ return ERR_PTR(-EEXIST); ++ } ++ + brcmf_dbg(TRACE, "enter: %s type %d\n", name, type); + err = brcmf_vif_add_validate(wiphy_to_cfg(wiphy), type); + if (err) { diff --git a/feeds/rtkmipsel/mac80211/patches/910-00-rt2x00-enable-rt2800soc-for-mt7620.patch b/feeds/rtkmipsel/mac80211/patches/910-00-rt2x00-enable-rt2800soc-for-mt7620.patch new file mode 100644 index 000000000..bc9f79952 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/910-00-rt2x00-enable-rt2800soc-for-mt7620.patch @@ -0,0 +1,20 @@ +--- a/drivers/net/wireless/ralink/rt2x00/Kconfig ++++ b/drivers/net/wireless/ralink/rt2x00/Kconfig +@@ -211,7 +211,7 @@ endif + config RT2800SOC + tristate "Ralink WiSoC support" + depends on m +- depends on SOC_RT288X || SOC_RT305X || SOC_RT3883 ++ depends on SOC_RT288X || SOC_RT305X || SOC_RT3883 || SOC_MT7620 + select RT2X00_LIB_SOC + select RT2X00_LIB_MMIO + select RT2X00_LIB_CRYPTO +@@ -248,7 +248,7 @@ config RT2X00_LIB_PCI + + config RT2X00_LIB_SOC + tristate "RT2x00 SoC support" +- depends on SOC_RT288X || SOC_RT305X || SOC_RT3883 ++ depends on SOC_RT288X || SOC_RT305X || SOC_RT3883 || SOC_MT7620 + depends on m + select RT2X00_LIB + diff --git a/feeds/rtkmipsel/mac80211/patches/910-01-add-support-for-mt7620.patch b/feeds/rtkmipsel/mac80211/patches/910-01-add-support-for-mt7620.patch new file mode 100644 index 000000000..f2e21ea49 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/910-01-add-support-for-mt7620.patch @@ -0,0 +1,1202 @@ +--- a/drivers/net/wireless/ralink/rt2x00/rt2800.h ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800.h +@@ -81,6 +81,7 @@ + #define RF5372 0x5372 + #define RF5390 0x5390 + #define RF5392 0x5392 ++#define RF7620 0x7620 + + /* + * Chipset revisions. +@@ -656,6 +657,14 @@ + #define RF_CSR_CFG_BUSY FIELD32(0x00020000) + + /* ++ * mt7620 RF registers (reversed order) ++ */ ++#define RF_CSR_CFG_DATA_MT7620 FIELD32(0x0000ff00) ++#define RF_CSR_CFG_REGNUM_MT7620 FIELD32(0x03ff0000) ++#define RF_CSR_CFG_WRITE_MT7620 FIELD32(0x00000010) ++#define RF_CSR_CFG_BUSY_MT7620 FIELD32(0x00000001) ++ ++/* + * EFUSE_CSR: RT30x0 EEPROM + */ + #define EFUSE_CTRL 0x0580 +@@ -1039,6 +1048,11 @@ + #define AUTOWAKEUP_CFG_AUTOWAKE FIELD32(0x00008000) + + /* ++ * mt7620 ++ */ ++#define MIMO_PS_CFG 0x1210 ++ ++/* + * EDCA_AC0_CFG: + */ + #define EDCA_AC0_CFG 0x1300 +@@ -1218,6 +1232,8 @@ + #define TX_PIN_CFG_RFTR_POL FIELD32(0x00020000) + #define TX_PIN_CFG_TRSW_EN FIELD32(0x00040000) + #define TX_PIN_CFG_TRSW_POL FIELD32(0x00080000) ++#define TX_PIN_CFG_RFRX_EN FIELD32(0x00100000) /* mt7620 */ ++#define TX_PIN_CFG_RFRX_POL FIELD32(0x00200000) /* mt7620 */ + #define TX_PIN_CFG_PA_PE_A2_EN FIELD32(0x01000000) + #define TX_PIN_CFG_PA_PE_G2_EN FIELD32(0x02000000) + #define TX_PIN_CFG_PA_PE_A2_POL FIELD32(0x04000000) +@@ -1564,6 +1580,17 @@ + #define TX_PWR_CFG_4_EXT_STBC4_CH2 FIELD32(0x0000000f) + #define TX_PWR_CFG_4_EXT_STBC6_CH2 FIELD32(0x00000f00) + ++/* mt7620 */ ++#define TX0_RF_GAIN_CORRECT 0x13a0 ++#define TX1_RF_GAIN_CORRECT 0x13a4 ++#define TX0_RF_GAIN_ATTEN 0x13a8 ++#define TX1_RF_GAIN_ATTEN 0x13ac ++#define TX_ALG_CFG_0 0x13b0 ++#define TX_ALG_CFG_1 0x13b4 ++#define TX0_BB_GAIN_ATTEN 0x13c0 ++#define TX1_BB_GAIN_ATTEN 0x13c4 ++#define TX_ALC_VGA3 0x13c8 ++ + /* TX_PWR_CFG_7 */ + #define TX_PWR_CFG_7 0x13d4 + #define TX_PWR_CFG_7_OFDM54_CH0 FIELD32(0x0000000f) +--- a/drivers/net/wireless/ralink/rt2x00/rt2800lib.c ++++ b/drivers/net/wireless/ralink/rt2x00/rt2800lib.c +@@ -61,6 +61,8 @@ + rt2800_regbusy_read((__dev), BBP_CSR_CFG, BBP_CSR_CFG_BUSY, (__reg)) + #define WAIT_FOR_RFCSR(__dev, __reg) \ + rt2800_regbusy_read((__dev), RF_CSR_CFG, RF_CSR_CFG_BUSY, (__reg)) ++#define WAIT_FOR_RFCSR_MT7620(__dev, __reg) \ ++ rt2800_regbusy_read((__dev), RF_CSR_CFG, RF_CSR_CFG_BUSY_MT7620, (__reg)) + #define WAIT_FOR_RF(__dev, __reg) \ + rt2800_regbusy_read((__dev), RF_CSR_CFG0, RF_CSR_CFG0_BUSY, (__reg)) + #define WAIT_FOR_MCU(__dev, __reg) \ +@@ -186,19 +188,55 @@ static void rt2800_rfcsr_write(struct rt + * Wait until the RFCSR becomes available, afterwards we + * can safely write the new data into the register. + */ +- if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { +- reg = 0; +- rt2x00_set_field32(®, RF_CSR_CFG_DATA, value); +- rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); +- rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 1); +- rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); ++ switch (rt2x00dev->chip.rf) { ++ case RF7620: ++ if (WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®)) { ++ reg = 0; ++ rt2x00_set_field32(®, RF_CSR_CFG_DATA_MT7620, value); ++ rt2x00_set_field32(®, RF_CSR_CFG_REGNUM_MT7620, word); ++ rt2x00_set_field32(®, RF_CSR_CFG_WRITE_MT7620, 1); ++ rt2x00_set_field32(®, RF_CSR_CFG_BUSY_MT7620, 1); + +- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); ++ rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); ++ } ++ break; ++ ++ default: ++ if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { ++ reg = 0; ++ rt2x00_set_field32(®, RF_CSR_CFG_DATA, value); ++ 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); ++ } ++ break; + } + + mutex_unlock(&rt2x00dev->csr_mutex); + } + ++static void rt2800_rfcsr_write_bank(struct rt2x00_dev *rt2x00dev, const u8 bank, ++ const unsigned int reg, const u8 value) ++{ ++ rt2800_rfcsr_write(rt2x00dev, (reg | (bank << 6)), value); ++} ++ ++static void rt2800_rfcsr_write_chanreg(struct rt2x00_dev *rt2x00dev, ++ const unsigned int reg, const u8 value) ++{ ++ rt2800_rfcsr_write_bank(rt2x00dev, 4, reg, value); ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, reg, value); ++} ++ ++static void rt2800_rfcsr_write_dccal(struct rt2x00_dev *rt2x00dev, ++ const unsigned int reg, const u8 value) ++{ ++ rt2800_rfcsr_write_bank(rt2x00dev, 5, reg, value); ++ rt2800_rfcsr_write_bank(rt2x00dev, 7, reg, value); ++} ++ + static void rt2800_rfcsr_read(struct rt2x00_dev *rt2x00dev, + const unsigned int word, u8 *value) + { +@@ -214,22 +252,47 @@ 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. + */ +- if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { +- reg = 0; +- rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); +- rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 0); +- rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); ++ switch (rt2x00dev->chip.rf) { ++ case RF7620: ++ if (WAIT_FOR_RFCSR_MT7620(rt2x00dev, ®)) { ++ reg = 0; ++ rt2x00_set_field32(®, RF_CSR_CFG_REGNUM_MT7620, word); ++ rt2x00_set_field32(®, RF_CSR_CFG_WRITE_MT7620, 0); ++ rt2x00_set_field32(®, RF_CSR_CFG_BUSY_MT7620, 1); + +- rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); ++ rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); + +- WAIT_FOR_RFCSR(rt2x00dev, ®); +- } ++ 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; ++ ++ default: ++ if (WAIT_FOR_RFCSR(rt2x00dev, ®)) { ++ reg = 0; ++ rt2x00_set_field32(®, RF_CSR_CFG_REGNUM, word); ++ rt2x00_set_field32(®, RF_CSR_CFG_WRITE, 0); ++ rt2x00_set_field32(®, RF_CSR_CFG_BUSY, 1); ++ ++ rt2800_register_write_lock(rt2x00dev, RF_CSR_CFG, reg); ++ ++ WAIT_FOR_RFCSR(rt2x00dev, ®); ++ } ++ ++ *value = rt2x00_get_field32(reg, RF_CSR_CFG_DATA); ++ break; ++ } + + mutex_unlock(&rt2x00dev->csr_mutex); + } + ++static void rt2800_rfcsr_read_bank(struct rt2x00_dev *rt2x00dev, const u8 bank, ++ const unsigned int reg, u8 *value) ++{ ++ rt2800_rfcsr_read(rt2x00dev, (reg | (bank << 6)), value); ++} ++ + static void rt2800_rf_write(struct rt2x00_dev *rt2x00dev, + const unsigned int word, const u32 value) + { +@@ -566,6 +629,16 @@ void rt2800_get_txwi_rxwi_size(struct rt + *rxwi_size = RXWI_DESC_SIZE_5WORDS; + break; + ++ case RT5390: ++ if ( rt2x00dev->chip.rf == RF7620 ) { ++ *txwi_size = TXWI_DESC_SIZE_5WORDS; ++ *rxwi_size = RXWI_DESC_SIZE_6WORDS; ++ } else { ++ *txwi_size = TXWI_DESC_SIZE_4WORDS; ++ *rxwi_size = RXWI_DESC_SIZE_4WORDS; ++ } ++ break; ++ + case RT5592: + *txwi_size = TXWI_DESC_SIZE_5WORDS; + *rxwi_size = RXWI_DESC_SIZE_6WORDS; +@@ -3303,6 +3376,312 @@ static void rt2800_config_channel_rf55xx + rt2800_bbp_write(rt2x00dev, 196, (rf->channel <= 14) ? 0x19 : 0x7F); + } + ++typedef struct mt7620_freqconfig { ++ u8 Channel; ++ u8 Rdiv; ++ u16 N; ++ u8 K; ++ u8 D; ++ u32 Ksd; ++} mt7620_freqconfig; ++ ++mt7620_freqconfig mt7620_chanconfig[] = ++{ ++ /* 2.4 to 2.483 GHz ++ * CH Rdiv N K D Ksd */ ++ { 0, 0, 0, 0, 0, 0 }, ++ { 1, 3, 0x50, 0, 0, 0x19999 }, ++ { 2, 3, 0x50, 0, 0, 0x24444 }, ++ { 3, 3, 0x50, 0, 0, 0x2EEEE }, ++ { 4, 3, 0x50, 0, 0, 0x39999 }, ++ { 5, 3, 0x51, 0, 0, 0x04444 }, ++ { 6, 3, 0x51, 0, 0, 0x0EEEE }, ++ { 7, 3, 0x51, 0, 0, 0x19999 }, ++ { 8, 3, 0x51, 0, 0, 0x24444 }, ++ { 9, 3, 0x51, 0, 0, 0x2EEEE }, ++ { 10, 3, 0x51, 0, 0, 0x39999 }, ++ { 11, 3, 0x52, 0, 0, 0x04444 }, ++ { 12, 3, 0x52, 0, 0, 0x0EEEE }, ++ { 13, 3, 0x52, 0, 0, 0x19999 }, ++ { 14, 3, 0x52, 0, 0, 0x33333 }, ++}; ++ ++static void rt2800_config_channel_rf7620(struct rt2x00_dev *rt2x00dev, ++ struct ieee80211_conf *conf, ++ struct rf_channel *rf, ++ struct channel_info *info) ++{ ++ int i; ++ u8 bbp; ++ u8 rfcsr; ++ u8 txrx_agc_fc; ++ u32 reg; ++ u16 eeprom, target_power; ++ u32 mac_sys_ctrl, mac_status; ++ u32 tx_pin = 0x00150F0F; ++ struct hw_mode_spec *spec = &rt2x00dev->spec; ++ struct rt2800_drv_data *drv_data = rt2x00dev->drv_data; ++ ++ /* Frequeny plan setting */ ++ /* ++ * Rdiv setting ++ * R13[1:0] ++ */ ++ rt2800_rfcsr_read(rt2x00dev, 13, &rfcsr); ++ rfcsr = rfcsr & (~0x03); ++ if (spec->clk_is_20mhz) ++ rfcsr |= (mt7620_chanconfig[rf->channel].Rdiv & 0x3); ++ rt2800_rfcsr_write(rt2x00dev, 13, rfcsr); ++ ++ /* ++ * N setting ++ * R21[0], R20[7:0] ++ */ ++ rt2800_rfcsr_read(rt2x00dev, 20, &rfcsr); ++ rfcsr = (mt7620_chanconfig[rf->channel].N & 0x00ff); ++ rt2800_rfcsr_write(rt2x00dev, 20, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr); ++ rfcsr = rfcsr & (~0x01); ++ rfcsr |= ((mt7620_chanconfig[rf->channel].N & 0x0100) >> 8); ++ rt2800_rfcsr_write(rt2x00dev, 21, rfcsr); ++ ++ /* ++ * K setting ++ * R16[3:0] (RF PLL freq selection) ++ */ ++ rt2800_rfcsr_read(rt2x00dev, 16, &rfcsr); ++ rfcsr = rfcsr & (~0x0f); ++ rfcsr |= (mt7620_chanconfig[rf->channel].K & 0x0f); ++ rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); ++ ++ /* ++ * D setting ++ * R22[2:0] (D=15, R22[2:0]=<111>) ++ */ ++ rt2800_rfcsr_read(rt2x00dev, 22, &rfcsr); ++ rfcsr = rfcsr & (~0x07); ++ rfcsr |= (mt7620_chanconfig[rf->channel].D & 0x07); ++ rt2800_rfcsr_write(rt2x00dev, 22, rfcsr); ++ ++ /* ++ * Ksd setting ++ * Ksd: R19<1:0>,R18<7:0>,R17<7:0> ++ */ ++ rt2800_rfcsr_read(rt2x00dev, 17, &rfcsr); ++ rfcsr = (mt7620_chanconfig[rf->channel].Ksd & 0x000000ff); ++ rt2800_rfcsr_write(rt2x00dev, 17, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 18, &rfcsr); ++ rfcsr = ((mt7620_chanconfig[rf->channel].Ksd & 0x0000ff00) >> 8); ++ rt2800_rfcsr_write(rt2x00dev, 18, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 19, &rfcsr); ++ rfcsr = rfcsr & (~0x03); ++ rfcsr |= ((mt7620_chanconfig[rf->channel].Ksd & 0x00030000) >> 16); ++ rt2800_rfcsr_write(rt2x00dev, 19, rfcsr); ++ ++ /* Default: XO=20MHz , SDM mode */ ++ rt2800_rfcsr_read(rt2x00dev, 16, &rfcsr); ++ rfcsr = rfcsr & (~0xE0); ++ rfcsr |= 0x80; ++ rt2800_rfcsr_write(rt2x00dev, 16, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 21, &rfcsr); ++ rfcsr |= 0x80; ++ rt2800_rfcsr_write(rt2x00dev, 21, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 1, &rfcsr); ++ if (rt2x00dev->default_ant.tx_chain_num == 1) ++ rfcsr &= (~0x2); ++ else ++ rfcsr |= 0x2; ++ rt2800_rfcsr_write(rt2x00dev, 1, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 2, &rfcsr); ++ if (rt2x00dev->default_ant.tx_chain_num == 1) ++ rfcsr &= (~0x20); ++ else ++ rfcsr |= 0x20; ++ if (rt2x00dev->default_ant.rx_chain_num == 1) ++ rfcsr &= (~0x02); ++ else ++ rfcsr |= 0x02; ++ rt2800_rfcsr_write(rt2x00dev, 2, rfcsr); ++ ++ rt2800_rfcsr_read(rt2x00dev, 42, &rfcsr); ++ if (rt2x00dev->default_ant.tx_chain_num == 1) ++ rfcsr &= (~0x40); ++ else ++ rfcsr |= 0x40; ++ rt2800_rfcsr_write(rt2x00dev, 42, rfcsr); ++ ++ /* RF for DC Cal BW */ ++ if (conf_is_ht40(conf)) { ++ rt2800_rfcsr_write_dccal(rt2x00dev, 6, 0x10); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 7, 0x10); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 8, 0x04); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x10); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x10); ++ } else { ++ rt2800_rfcsr_write_dccal(rt2x00dev, 6, 0x20); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 7, 0x20); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 8, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x20); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x20); ++ } ++ ++ if (conf_is_ht40(conf)) { ++ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x08); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x08); ++ } else { ++ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x28); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x28); ++ } ++ ++ rt2800_rfcsr_read(rt2x00dev, 28, &rfcsr); ++ if (conf_is_ht40(conf) && (rf->channel == 11)) ++ rfcsr |= 0x4; ++ else ++ rfcsr &= (~0x4); ++ rt2800_rfcsr_write(rt2x00dev, 28, rfcsr); ++ ++ /*if (bScan == FALSE)*/ ++ if (conf_is_ht40(conf)) { ++ txrx_agc_fc = rt2x00_get_field8(drv_data->calibration_bw40, ++ RFCSR24_TX_AGC_FC); ++ } else { ++ txrx_agc_fc = rt2x00_get_field8(drv_data->calibration_bw20, ++ RFCSR24_TX_AGC_FC); ++ } ++ rt2800_rfcsr_read_bank(rt2x00dev, 5, 6, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 5, 6, rfcsr); ++ rt2800_rfcsr_read_bank(rt2x00dev, 5, 7, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 5, 7, rfcsr); ++ rt2800_rfcsr_read_bank(rt2x00dev, 7, 6, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 7, 6, rfcsr); ++ rt2800_rfcsr_read_bank(rt2x00dev, 7, 7, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 7, 7, rfcsr); ++ ++ rt2800_rfcsr_read_bank(rt2x00dev, 5, 58, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 5, 58, rfcsr); ++ rt2800_rfcsr_read_bank(rt2x00dev, 5, 59, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 5, 59, rfcsr); ++ rt2800_rfcsr_read_bank(rt2x00dev, 7, 58, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 7, 58, rfcsr); ++ rt2800_rfcsr_read_bank(rt2x00dev, 7, 59, &rfcsr); ++ rfcsr &= (~0x3F); ++ rfcsr |= txrx_agc_fc; ++ rt2800_rfcsr_write_bank(rt2x00dev, 7, 59, rfcsr); ++ ++ rt2800_register_read(rt2x00dev, TX_ALG_CFG_0, ®); ++ reg = reg & (~0x3F3F); ++ reg |= info->default_power1; ++ reg |= (info->default_power2 << 8); ++ reg |= (0x2F << 16); ++ reg |= (0x2F << 24); ++ ++ rt2800_eeprom_read(rt2x00dev, EEPROM_NIC_CONF1, &eeprom); ++ if (rt2x00_get_field16(eeprom, EEPROM_NIC_CONF1_INTERNAL_TX_ALC)) { ++ /* init base power by e2p target power */ ++ rt2800_eeprom_read(rt2x00dev, 0xD0, &target_power); ++ target_power &= 0x3F; ++ reg = reg & (~0x3F3F); ++ reg |= target_power; ++ reg |= (target_power << 8); ++ } ++ rt2800_register_write(rt2x00dev, TX_ALG_CFG_0, reg); ++ ++ rt2800_register_read(rt2x00dev, TX_ALG_CFG_1, ®); ++ reg = reg & (~0x3F); ++ rt2800_register_write(rt2x00dev, TX_ALG_CFG_1, reg); ++ ++ /*if (bScan == FALSE)*/ ++ /* Save MAC SYS CTRL registers */ ++ rt2800_register_read(rt2x00dev, MAC_SYS_CTRL, &mac_sys_ctrl); ++ /* Disable Tx/Rx */ ++ rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, 0); ++ /* Check MAC Tx/Rx idle */ ++ for (i = 0; i < 10000; i++) { ++ rt2800_register_read(rt2x00dev, MAC_STATUS_CFG, &mac_status); ++ if (mac_status & 0x3) ++ udelay(50); ++ else ++ break; ++ } ++ ++ if (i == 10000) ++ rt2x00_warn(rt2x00dev, "Wait MAC Status to MAX !!!\n"); ++ ++ if (rf->channel > 10) { ++ rt2800_bbp_read(rt2x00dev, 30, &bbp); ++ bbp = 0x40; ++ rt2800_bbp_write(rt2x00dev, 30, bbp); ++ rt2800_rfcsr_write(rt2x00dev, 39, 0); ++ rt2800_rfcsr_write(rt2x00dev, 42, 0x7b); ++ } else { ++ rt2800_bbp_read(rt2x00dev, 30, &bbp); ++ bbp = 0x1f; ++ rt2800_bbp_write(rt2x00dev, 30, bbp); ++ rt2800_rfcsr_write(rt2x00dev, 39, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 42, 0x5b); ++ } ++ ++ rt2800_register_write(rt2x00dev, MAC_SYS_CTRL, mac_sys_ctrl); ++ ++ rt2800_rfcsr_write(rt2x00dev, 5, 0x40); ++ rt2800_rfcsr_write(rt2x00dev, 4, 0x0C); ++ ++ /* vcocal_en (initiate VCO calibration (reset after completion)) */ ++ rt2800_rfcsr_read(rt2x00dev, 4, &rfcsr); ++ rfcsr = ((rfcsr & ~0x80) | 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 4, rfcsr); ++ mdelay(2); ++ ++ rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); ++ ++ if (rt2x00dev->default_ant.tx_chain_num == 1) { ++ rt2800_bbp_write(rt2x00dev, 91, 0x07); ++ rt2800_bbp_write(rt2x00dev, 95, 0x1A); ++ rt2800_bbp_write(rt2x00dev, 195, 128); ++ rt2800_bbp_write(rt2x00dev, 196, 0xA0); ++ rt2800_bbp_write(rt2x00dev, 195, 170); ++ rt2800_bbp_write(rt2x00dev, 196, 0x12); ++ rt2800_bbp_write(rt2x00dev, 195, 171); ++ rt2800_bbp_write(rt2x00dev, 196, 0x10); ++ } else { ++ rt2800_bbp_write(rt2x00dev, 91, 0x06); ++ rt2800_bbp_write(rt2x00dev, 95, 0x9A); ++ rt2800_bbp_write(rt2x00dev, 195, 128); ++ rt2800_bbp_write(rt2x00dev, 196, 0xE0); ++ rt2800_bbp_write(rt2x00dev, 195, 170); ++ rt2800_bbp_write(rt2x00dev, 196, 0x30); ++ rt2800_bbp_write(rt2x00dev, 195, 171); ++ rt2800_bbp_write(rt2x00dev, 196, 0x30); ++ } ++ ++ /* On 11A, We should delay and wait RF/BBP to be stable*/ ++ /* and the appropriate time should be 1000 micro seconds */ ++ /* 2005/06/05 - On 11G, We also need this delay time. ++ * Otherwise it's difficult to pass the WHQL.*/ ++ udelay(1000); ++} ++ ++ + static void rt2800_bbp_write_with_rx_chain(struct rt2x00_dev *rt2x00dev, + const unsigned int word, + const u8 value) +@@ -3459,7 +3838,7 @@ static void rt2800_config_channel(struct + struct channel_info *info) + { + u32 reg; +- unsigned int tx_pin; ++ u32 tx_pin; + u8 bbp, rfcsr; + + info->default_power1 = rt2800_txpower_to_dev(rt2x00dev, rf->channel, +@@ -3513,6 +3892,9 @@ static void rt2800_config_channel(struct + case RF5592: + rt2800_config_channel_rf55xx(rt2x00dev, conf, rf, info); + break; ++ case RF7620: ++ rt2800_config_channel_rf7620(rt2x00dev, conf, rf, info); ++ break; + default: + rt2800_config_channel_rf2xxx(rt2x00dev, conf, rf, info); + } +@@ -3615,7 +3997,7 @@ static void rt2800_config_channel(struct + else if (rt2x00_rt(rt2x00dev, RT3593) || + rt2x00_rt(rt2x00dev, RT3883)) + rt2800_bbp_write(rt2x00dev, 82, 0x82); +- else ++ else if (rt2x00dev->chip.rf != RF7620) + rt2800_bbp_write(rt2x00dev, 82, 0xf2); + + if (rt2x00_rt(rt2x00dev, RT3593) || +@@ -3637,7 +4019,7 @@ static void rt2800_config_channel(struct + if (rt2x00_rt(rt2x00dev, RT3572)) + rt2800_rfcsr_write(rt2x00dev, 8, 0); + +- tx_pin = 0; ++ rt2800_register_read(rt2x00dev, TX_PIN_CFG, &tx_pin); + + switch (rt2x00dev->default_ant.tx_chain_num) { + case 3: +@@ -3686,6 +4068,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); ++ rt2x00_set_field32(&tx_pin, TX_PIN_CFG_RFRX_EN, 1); /* mt7620 */ + + rt2800_register_write(rt2x00dev, TX_PIN_CFG, tx_pin); + +@@ -4702,6 +5085,14 @@ void rt2800_vco_calibration(struct rt2x0 + rt2x00_set_field8(&rfcsr, RFCSR3_VCOCAL_EN, 1); + rt2800_rfcsr_write(rt2x00dev, 3, rfcsr); + break; ++ case RF7620: ++ rt2800_rfcsr_read(rt2x00dev, 4, &rfcsr); ++ /* vcocal_en (initiate VCO calibration (reset after completion)) ++ * It should be at the end of RF configuration. */ ++ rfcsr = ((rfcsr & ~0x80) | 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 4, rfcsr); ++ mdelay(1); ++ break; + default: + return; + } +@@ -5102,9 +5493,42 @@ static int rt2800_init_registers(struct + } else if (rt2x00_rt(rt2x00dev, RT5390) || + rt2x00_rt(rt2x00dev, RT5392) || + rt2x00_rt(rt2x00dev, RT5592)) { +- rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); +- rt2800_register_write(rt2x00dev, TX_SW_CFG1, 0x00080606); +- rt2800_register_write(rt2x00dev, TX_SW_CFG2, 0x00000000); ++ if (rt2x00dev->chip.rf == RF7620) { ++ rt2800_register_write(rt2x00dev, TX_SW_CFG0, ++ 0x00000401); ++ rt2800_register_write(rt2x00dev, TX_SW_CFG1, ++ 0x000C0000); ++ rt2800_register_write(rt2x00dev, TX_SW_CFG2, ++ 0x00000000); ++ rt2800_register_write(rt2x00dev, MIMO_PS_CFG, ++ 0x00000002); ++ rt2800_register_write(rt2x00dev, TX_PIN_CFG, ++ 0x00150F0F); ++ rt2800_register_write(rt2x00dev, TX_ALC_VGA3, ++ 0x06060606); ++ rt2800_register_write(rt2x00dev, TX0_BB_GAIN_ATTEN, ++ 0x0); ++ rt2800_register_write(rt2x00dev, TX1_BB_GAIN_ATTEN, ++ 0x0); ++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_ATTEN, ++ 0x6C6C666C); ++ rt2800_register_write(rt2x00dev, TX1_RF_GAIN_ATTEN, ++ 0x6C6C666C); ++ rt2800_register_write(rt2x00dev, TX0_RF_GAIN_CORRECT, ++ 0x3630363A); ++ rt2800_register_write(rt2x00dev, TX1_RF_GAIN_CORRECT, ++ 0x3630363A); ++ rt2800_register_read(rt2x00dev, TX_ALG_CFG_1, ®); ++ reg = reg & (~0x80000000); ++ rt2800_register_write(rt2x00dev, TX_ALG_CFG_1, reg); ++ } else { ++ rt2800_register_write(rt2x00dev, TX_SW_CFG0, ++ 0x00000404); ++ rt2800_register_write(rt2x00dev, TX_SW_CFG1, ++ 0x00080606); ++ rt2800_register_write(rt2x00dev, TX_SW_CFG2, ++ 0x00000000); ++ } + } else if (rt2x00_rt(rt2x00dev, RT5350)) { + rt2800_register_write(rt2x00dev, TX_SW_CFG0, 0x00000404); + } else { +@@ -6136,6 +6560,225 @@ static void rt2800_init_bbp_5592(struct + rt2800_bbp_write(rt2x00dev, 103, 0xc0); + } + ++static void rt2800_bbp_glrt_write(struct rt2x00_dev *rt2x00dev, ++ const u8 reg, const u8 value) ++{ ++ rt2800_bbp_write(rt2x00dev, 195, reg); ++ rt2800_bbp_write(rt2x00dev, 196, value); ++} ++ ++static void rt2800_bbp_dcoc_write(struct rt2x00_dev *rt2x00dev, ++ const u8 reg, const u8 value) ++{ ++ rt2800_bbp_write(rt2x00dev, 158, reg); ++ rt2800_bbp_write(rt2x00dev, 159, value); ++} ++ ++static void rt2800_init_bbp_7620(struct rt2x00_dev *rt2x00dev) ++{ ++ u8 bbp; ++ ++ /* Apply Maximum Likelihood Detection (MLD) for 2 stream case */ ++ rt2800_bbp_read(rt2x00dev, 105, &bbp); ++ rt2x00_set_field8(&bbp, BBP105_MLD, ++ rt2x00dev->default_ant.rx_chain_num == 2); ++ rt2800_bbp_write(rt2x00dev, 105, bbp); ++ ++ /* Avoid data loss and CRC errors */ ++ /* MAC interface control (MAC_IF_80M, 1: 80 MHz) */ ++ rt2800_bbp4_mac_if_ctrl(rt2x00dev); ++ ++ /* Fix I/Q swap issue */ ++ rt2800_bbp_read(rt2x00dev, 1, &bbp); ++ bbp |= 0x04; ++ rt2800_bbp_write(rt2x00dev, 1, bbp); ++ ++ /* BBP for G band */ ++ rt2800_bbp_write(rt2x00dev, 3, 0x08); ++ rt2800_bbp_write(rt2x00dev, 4, 0x00); /* rt2800_bbp4_mac_if_ctrl? */ ++ rt2800_bbp_write(rt2x00dev, 6, 0x08); ++ rt2800_bbp_write(rt2x00dev, 14, 0x09); ++ rt2800_bbp_write(rt2x00dev, 15, 0xFF); ++ rt2800_bbp_write(rt2x00dev, 16, 0x01); ++ rt2800_bbp_write(rt2x00dev, 20, 0x06); ++ rt2800_bbp_write(rt2x00dev, 21, 0x00); ++ rt2800_bbp_write(rt2x00dev, 22, 0x00); ++ rt2800_bbp_write(rt2x00dev, 27, 0x00); ++ rt2800_bbp_write(rt2x00dev, 28, 0x00); ++ rt2800_bbp_write(rt2x00dev, 30, 0x00); ++ rt2800_bbp_write(rt2x00dev, 31, 0x48); ++ rt2800_bbp_write(rt2x00dev, 47, 0x40); ++ rt2800_bbp_write(rt2x00dev, 62, 0x00); ++ rt2800_bbp_write(rt2x00dev, 63, 0x00); ++ rt2800_bbp_write(rt2x00dev, 64, 0x00); ++ rt2800_bbp_write(rt2x00dev, 65, 0x2C); ++ rt2800_bbp_write(rt2x00dev, 66, 0x1C); ++ rt2800_bbp_write(rt2x00dev, 67, 0x20); ++ rt2800_bbp_write(rt2x00dev, 68, 0xDD); ++ rt2800_bbp_write(rt2x00dev, 69, 0x10); ++ rt2800_bbp_write(rt2x00dev, 70, 0x05); ++ rt2800_bbp_write(rt2x00dev, 73, 0x18); ++ rt2800_bbp_write(rt2x00dev, 74, 0x0F); ++ rt2800_bbp_write(rt2x00dev, 75, 0x60); ++ rt2800_bbp_write(rt2x00dev, 76, 0x44); ++ rt2800_bbp_write(rt2x00dev, 77, 0x59); ++ rt2800_bbp_write(rt2x00dev, 78, 0x1E); ++ rt2800_bbp_write(rt2x00dev, 79, 0x1C); ++ rt2800_bbp_write(rt2x00dev, 80, 0x0C); ++ rt2800_bbp_write(rt2x00dev, 81, 0x3A); ++ rt2800_bbp_write(rt2x00dev, 82, 0xB6); ++ rt2800_bbp_write(rt2x00dev, 83, 0x9A); ++ rt2800_bbp_write(rt2x00dev, 84, 0x9A); ++ rt2800_bbp_write(rt2x00dev, 86, 0x38); ++ rt2800_bbp_write(rt2x00dev, 88, 0x90); ++ rt2800_bbp_write(rt2x00dev, 91, 0x04); ++ rt2800_bbp_write(rt2x00dev, 92, 0x02); ++ rt2800_bbp_write(rt2x00dev, 95, 0x9A); ++ rt2800_bbp_write(rt2x00dev, 96, 0x00); ++ rt2800_bbp_write(rt2x00dev, 103, 0xC0); ++ rt2800_bbp_write(rt2x00dev, 104, 0x92); ++ /* FIXME BBP105 owerwrite */ ++ rt2800_bbp_write(rt2x00dev, 105, 0x3C); ++ rt2800_bbp_write(rt2x00dev, 106, 0x12); ++ rt2800_bbp_write(rt2x00dev, 109, 0x00); ++ rt2800_bbp_write(rt2x00dev, 134, 0x10); ++ rt2800_bbp_write(rt2x00dev, 135, 0xA6); ++ rt2800_bbp_write(rt2x00dev, 137, 0x04); ++ rt2800_bbp_write(rt2x00dev, 142, 0x30); ++ rt2800_bbp_write(rt2x00dev, 143, 0xF7); ++ rt2800_bbp_write(rt2x00dev, 160, 0xEC); ++ rt2800_bbp_write(rt2x00dev, 161, 0xC4); ++ rt2800_bbp_write(rt2x00dev, 162, 0x77); ++ rt2800_bbp_write(rt2x00dev, 163, 0xF9); ++ rt2800_bbp_write(rt2x00dev, 164, 0x00); ++ rt2800_bbp_write(rt2x00dev, 165, 0x00); ++ rt2800_bbp_write(rt2x00dev, 186, 0x00); ++ rt2800_bbp_write(rt2x00dev, 187, 0x00); ++ rt2800_bbp_write(rt2x00dev, 188, 0x00); ++ rt2800_bbp_write(rt2x00dev, 186, 0x00); ++ rt2800_bbp_write(rt2x00dev, 187, 0x01); ++ rt2800_bbp_write(rt2x00dev, 188, 0x00); ++ rt2800_bbp_write(rt2x00dev, 189, 0x00); ++ ++ rt2800_bbp_write(rt2x00dev, 91, 0x06); ++ rt2800_bbp_write(rt2x00dev, 92, 0x04); ++ rt2800_bbp_write(rt2x00dev, 93, 0x54); ++ rt2800_bbp_write(rt2x00dev, 99, 0x50); ++ rt2800_bbp_write(rt2x00dev, 148, 0x84); ++ rt2800_bbp_write(rt2x00dev, 167, 0x80); ++ rt2800_bbp_write(rt2x00dev, 178, 0xFF); ++ rt2800_bbp_write(rt2x00dev, 106, 0x13); ++ ++ /* BBP for G band GLRT function (BBP_128 ~ BBP_221) */ ++ rt2800_bbp_glrt_write(rt2x00dev, 0, 0x00); ++ rt2800_bbp_glrt_write(rt2x00dev, 1, 0x14); /* ? see above */ ++ rt2800_bbp_glrt_write(rt2x00dev, 2, 0x20); ++ rt2800_bbp_glrt_write(rt2x00dev, 3, 0x0A); ++ rt2800_bbp_glrt_write(rt2x00dev, 10, 0x16); ++ rt2800_bbp_glrt_write(rt2x00dev, 11, 0x06); ++ rt2800_bbp_glrt_write(rt2x00dev, 12, 0x02); ++ rt2800_bbp_glrt_write(rt2x00dev, 13, 0x07); ++ rt2800_bbp_glrt_write(rt2x00dev, 14, 0x05); ++ rt2800_bbp_glrt_write(rt2x00dev, 15, 0x09); ++ rt2800_bbp_glrt_write(rt2x00dev, 16, 0x20); ++ rt2800_bbp_glrt_write(rt2x00dev, 17, 0x08); ++ rt2800_bbp_glrt_write(rt2x00dev, 18, 0x4A); ++ rt2800_bbp_glrt_write(rt2x00dev, 19, 0x00); ++ rt2800_bbp_glrt_write(rt2x00dev, 20, 0x00); ++ rt2800_bbp_glrt_write(rt2x00dev, 128, 0xE0); ++ rt2800_bbp_glrt_write(rt2x00dev, 129, 0x1F); ++ rt2800_bbp_glrt_write(rt2x00dev, 130, 0x4F); ++ rt2800_bbp_glrt_write(rt2x00dev, 131, 0x32); ++ rt2800_bbp_glrt_write(rt2x00dev, 132, 0x08); ++ rt2800_bbp_glrt_write(rt2x00dev, 133, 0x28); ++ rt2800_bbp_glrt_write(rt2x00dev, 134, 0x19); ++ rt2800_bbp_glrt_write(rt2x00dev, 135, 0x0A); ++ rt2800_bbp_glrt_write(rt2x00dev, 138, 0x16); ++ rt2800_bbp_glrt_write(rt2x00dev, 139, 0x10); ++ rt2800_bbp_glrt_write(rt2x00dev, 140, 0x10); ++ rt2800_bbp_glrt_write(rt2x00dev, 141, 0x1A); ++ rt2800_bbp_glrt_write(rt2x00dev, 142, 0x36); ++ rt2800_bbp_glrt_write(rt2x00dev, 143, 0x2C); ++ rt2800_bbp_glrt_write(rt2x00dev, 144, 0x26); ++ rt2800_bbp_glrt_write(rt2x00dev, 145, 0x24); ++ rt2800_bbp_glrt_write(rt2x00dev, 146, 0x42); ++ rt2800_bbp_glrt_write(rt2x00dev, 147, 0x40); ++ rt2800_bbp_glrt_write(rt2x00dev, 148, 0x30); ++ rt2800_bbp_glrt_write(rt2x00dev, 149, 0x29); ++ rt2800_bbp_glrt_write(rt2x00dev, 150, 0x4C); ++ rt2800_bbp_glrt_write(rt2x00dev, 151, 0x46); ++ rt2800_bbp_glrt_write(rt2x00dev, 152, 0x3D); ++ rt2800_bbp_glrt_write(rt2x00dev, 153, 0x40); ++ rt2800_bbp_glrt_write(rt2x00dev, 154, 0x3E); ++ rt2800_bbp_glrt_write(rt2x00dev, 155, 0x38); ++ rt2800_bbp_glrt_write(rt2x00dev, 156, 0x3D); ++ rt2800_bbp_glrt_write(rt2x00dev, 157, 0x2F); ++ rt2800_bbp_glrt_write(rt2x00dev, 158, 0x3C); ++ rt2800_bbp_glrt_write(rt2x00dev, 159, 0x34); ++ rt2800_bbp_glrt_write(rt2x00dev, 160, 0x2C); ++ rt2800_bbp_glrt_write(rt2x00dev, 161, 0x2F); ++ rt2800_bbp_glrt_write(rt2x00dev, 162, 0x3C); ++ rt2800_bbp_glrt_write(rt2x00dev, 163, 0x35); ++ rt2800_bbp_glrt_write(rt2x00dev, 164, 0x2E); ++ rt2800_bbp_glrt_write(rt2x00dev, 165, 0x2F); ++ rt2800_bbp_glrt_write(rt2x00dev, 166, 0x49); ++ rt2800_bbp_glrt_write(rt2x00dev, 167, 0x41); ++ rt2800_bbp_glrt_write(rt2x00dev, 168, 0x36); ++ rt2800_bbp_glrt_write(rt2x00dev, 169, 0x39); ++ rt2800_bbp_glrt_write(rt2x00dev, 170, 0x30); ++ rt2800_bbp_glrt_write(rt2x00dev, 171, 0x30); ++ rt2800_bbp_glrt_write(rt2x00dev, 172, 0x0E); ++ rt2800_bbp_glrt_write(rt2x00dev, 173, 0x0D); ++ rt2800_bbp_glrt_write(rt2x00dev, 174, 0x28); ++ rt2800_bbp_glrt_write(rt2x00dev, 175, 0x21); ++ rt2800_bbp_glrt_write(rt2x00dev, 176, 0x1C); ++ rt2800_bbp_glrt_write(rt2x00dev, 177, 0x16); ++ rt2800_bbp_glrt_write(rt2x00dev, 178, 0x50); ++ rt2800_bbp_glrt_write(rt2x00dev, 179, 0x4A); ++ rt2800_bbp_glrt_write(rt2x00dev, 180, 0x43); ++ rt2800_bbp_glrt_write(rt2x00dev, 181, 0x50); ++ rt2800_bbp_glrt_write(rt2x00dev, 182, 0x10); ++ rt2800_bbp_glrt_write(rt2x00dev, 183, 0x10); ++ rt2800_bbp_glrt_write(rt2x00dev, 184, 0x10); ++ rt2800_bbp_glrt_write(rt2x00dev, 185, 0x10); ++ rt2800_bbp_glrt_write(rt2x00dev, 200, 0x7D); ++ rt2800_bbp_glrt_write(rt2x00dev, 201, 0x14); ++ rt2800_bbp_glrt_write(rt2x00dev, 202, 0x32); ++ rt2800_bbp_glrt_write(rt2x00dev, 203, 0x2C); ++ rt2800_bbp_glrt_write(rt2x00dev, 204, 0x36); ++ rt2800_bbp_glrt_write(rt2x00dev, 205, 0x4C); ++ rt2800_bbp_glrt_write(rt2x00dev, 206, 0x43); ++ rt2800_bbp_glrt_write(rt2x00dev, 207, 0x2C); ++ rt2800_bbp_glrt_write(rt2x00dev, 208, 0x2E); ++ rt2800_bbp_glrt_write(rt2x00dev, 209, 0x36); ++ rt2800_bbp_glrt_write(rt2x00dev, 210, 0x30); ++ rt2800_bbp_glrt_write(rt2x00dev, 211, 0x6E); ++ ++ /* BBP for G band DCOC function */ ++ rt2800_bbp_dcoc_write(rt2x00dev, 140, 0x0C); ++ rt2800_bbp_dcoc_write(rt2x00dev, 141, 0x00); ++ rt2800_bbp_dcoc_write(rt2x00dev, 142, 0x10); ++ rt2800_bbp_dcoc_write(rt2x00dev, 143, 0x10); ++ rt2800_bbp_dcoc_write(rt2x00dev, 144, 0x10); ++ rt2800_bbp_dcoc_write(rt2x00dev, 145, 0x10); ++ rt2800_bbp_dcoc_write(rt2x00dev, 146, 0x08); ++ rt2800_bbp_dcoc_write(rt2x00dev, 147, 0x40); ++ rt2800_bbp_dcoc_write(rt2x00dev, 148, 0x04); ++ rt2800_bbp_dcoc_write(rt2x00dev, 149, 0x04); ++ rt2800_bbp_dcoc_write(rt2x00dev, 150, 0x08); ++ rt2800_bbp_dcoc_write(rt2x00dev, 151, 0x08); ++ rt2800_bbp_dcoc_write(rt2x00dev, 152, 0x03); ++ rt2800_bbp_dcoc_write(rt2x00dev, 153, 0x03); ++ rt2800_bbp_dcoc_write(rt2x00dev, 154, 0x03); ++ rt2800_bbp_dcoc_write(rt2x00dev, 155, 0x02); ++ rt2800_bbp_dcoc_write(rt2x00dev, 156, 0x40); ++ rt2800_bbp_dcoc_write(rt2x00dev, 157, 0x40); ++ rt2800_bbp_dcoc_write(rt2x00dev, 158, 0x64); ++ rt2800_bbp_dcoc_write(rt2x00dev, 159, 0x64); ++ ++ rt2800_bbp4_mac_if_ctrl(rt2x00dev); ++} ++ + static void rt2800_init_bbp(struct rt2x00_dev *rt2x00dev) + { + unsigned int i; +@@ -6178,7 +6821,10 @@ static void rt2800_init_bbp(struct rt2x0 + return; + case RT5390: + case RT5392: +- rt2800_init_bbp_53xx(rt2x00dev); ++ if (rt2x00dev->chip.rf == RF7620) ++ rt2800_init_bbp_7620(rt2x00dev); ++ else ++ rt2800_init_bbp_53xx(rt2x00dev); + break; + case RT5592: + rt2800_init_bbp_5592(rt2x00dev); +@@ -7392,6 +8038,296 @@ static void rt2800_init_rfcsr_5592(struc + rt2800_led_open_drain_enable(rt2x00dev); + } + ++static void rt2800_init_rfcsr_7620(struct rt2x00_dev *rt2x00dev) ++{ ++ u16 freq; ++ u8 rfvalue; ++ struct hw_mode_spec *spec = &rt2x00dev->spec; ++ ++ /* Initialize RF central register to default value */ ++ rt2800_rfcsr_write(rt2x00dev, 0, 0x02); ++ rt2800_rfcsr_write(rt2x00dev, 1, 0x03); ++ rt2800_rfcsr_write(rt2x00dev, 2, 0x33); ++ rt2800_rfcsr_write(rt2x00dev, 3, 0xFF); ++ rt2800_rfcsr_write(rt2x00dev, 4, 0x0C); ++ rt2800_rfcsr_write(rt2x00dev, 5, 0x40); /* Read only */ ++ rt2800_rfcsr_write(rt2x00dev, 6, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 7, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 8, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 9, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 10, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 11, 0x00); ++ /* rt2800_rfcsr_write(rt2x00dev, 12, 0x43); *//* EEPROM */ ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 14, 0x40); ++ rt2800_rfcsr_write(rt2x00dev, 15, 0x22); ++ rt2800_rfcsr_write(rt2x00dev, 16, 0x4C); ++ rt2800_rfcsr_write(rt2x00dev, 17, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 18, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 19, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 20, 0xA0); ++ rt2800_rfcsr_write(rt2x00dev, 21, 0x12); ++ rt2800_rfcsr_write(rt2x00dev, 22, 0x07); ++ rt2800_rfcsr_write(rt2x00dev, 23, 0x13); ++ rt2800_rfcsr_write(rt2x00dev, 24, 0xFE); ++ rt2800_rfcsr_write(rt2x00dev, 25, 0x24); ++ rt2800_rfcsr_write(rt2x00dev, 26, 0x7A); ++ rt2800_rfcsr_write(rt2x00dev, 27, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 28, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 29, 0x05); ++ rt2800_rfcsr_write(rt2x00dev, 30, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 31, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 32, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 33, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 34, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 35, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 36, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 37, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 38, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 39, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 40, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 41, 0xD0); ++ rt2800_rfcsr_write(rt2x00dev, 42, 0x5B); ++ rt2800_rfcsr_write(rt2x00dev, 43, 0x00); ++ ++ rt2800_rfcsr_write(rt2x00dev, 11, 0x21); ++ if (spec->clk_is_20mhz) ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x03); ++ else ++ rt2800_rfcsr_write(rt2x00dev, 13, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 14, 0x7C); ++ rt2800_rfcsr_write(rt2x00dev, 16, 0x80); ++ rt2800_rfcsr_write(rt2x00dev, 17, 0x99); ++ rt2800_rfcsr_write(rt2x00dev, 18, 0x99); ++ rt2800_rfcsr_write(rt2x00dev, 19, 0x09); ++ rt2800_rfcsr_write(rt2x00dev, 20, 0x50); ++ rt2800_rfcsr_write(rt2x00dev, 21, 0xB0); ++ rt2800_rfcsr_write(rt2x00dev, 22, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 23, 0x06); ++ rt2800_rfcsr_write(rt2x00dev, 24, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 25, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 26, 0x5D); ++ rt2800_rfcsr_write(rt2x00dev, 27, 0x00); ++ rt2800_rfcsr_write(rt2x00dev, 28, 0x61); ++ rt2800_rfcsr_write(rt2x00dev, 29, 0xB5); ++ rt2800_rfcsr_write(rt2x00dev, 43, 0x02); ++ ++ rt2800_rfcsr_write(rt2x00dev, 28, 0x62); ++ rt2800_rfcsr_write(rt2x00dev, 29, 0xAD); ++ rt2800_rfcsr_write(rt2x00dev, 39, 0x80); ++ /* RTMP_TEMPERATURE_CALIBRATION */ ++ /* rt2800_rfcsr_write(rt2x00dev, 34, 0x23); */ ++ /* rt2800_rfcsr_write(rt2x00dev, 35, 0x01); */ ++ ++ /* use rt2800_adjust_freq_offset ? */ ++ rt2800_eeprom_read(rt2x00dev, EEPROM_FREQ, &freq); ++ rfvalue = freq & 0xff; ++ rt2800_rfcsr_write(rt2x00dev, 12, rfvalue); ++ ++ /* Initialize RF channel register to default value */ ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 0, 0x03); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 1, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 2, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 3, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 4, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 5, 0x08); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 6, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 7, 0x51); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 8, 0x53); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 9, 0x16); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 10, 0x61); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 11, 0x53); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 12, 0x22); ++ /* rt2800_rfcsr_write_chanreg(rt2x00dev, 13, 0x3D); */ /* fails */ ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x06); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 15, 0x13); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 16, 0x22); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 17, 0x27); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 18, 0x02); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 19, 0xA7); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 20, 0x01); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 21, 0x52); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 22, 0x80); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 23, 0xB3); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 24, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 25, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 26, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 27, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 28, 0x5C); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 29, 0x6B); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 30, 0x6B); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 31, 0x31); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 32, 0x5D); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 33, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 34, 0xE6); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 35, 0x55); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 36, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 37, 0xBB); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 38, 0xB3); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 39, 0xB3); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 40, 0x03); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 41, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 42, 0x00); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0xB3); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xD3); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xD5); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 46, 0x07); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x68); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xEF); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x1C); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x07); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0xA8); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0x85); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x10); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x07); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0x6A); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0x85); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x10); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 62, 0x1C); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 63, 0x00); ++ ++ rt2800_rfcsr_write_bank(rt2x00dev, 6, 45, 0xC5); ++ ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 9, 0x47); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 10, 0x71); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 11, 0x33); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x0E); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 17, 0x23); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 19, 0xA4); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 20, 0x02); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 21, 0x12); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 28, 0x1C); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 29, 0xEB); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 32, 0x7D); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 34, 0xD6); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 36, 0x08); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 38, 0xB4); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0xD3); ++ 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_chanreg(rt2x00dev, 48, 0xFF); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x20); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xFF); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x1C); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x20); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0x6B); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xF7); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x09); ++ ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 10, 0x51); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x06); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 19, 0xA7); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 28, 0x2C); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x64); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 8, 0x51); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 9, 0x36); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 11, 0x53); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 14, 0x16); ++ ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x6C); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0xFC); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x1F); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 54, 0x27); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x66); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0x6B); ++ ++ /* Initialize RF channel register for DRQFN */ ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0xD3); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0xE3); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0xE5); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x28); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x68); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0xF7); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x02); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0xC7); ++ ++ /* reduce power consumption */ ++/* rt2800_rfcsr_write_chanreg(rt2x00dev, 43, 0x53); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 44, 0x53); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 45, 0x53); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 47, 0x64); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 48, 0x4F); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 49, 0x02); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 55, 0x64); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 56, 0x4F); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 57, 0x02); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 58, 0x27); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 59, 0x64); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 60, 0x4F); ++ rt2800_rfcsr_write_chanreg(rt2x00dev, 61, 0x02); ++*/ ++ /* Initialize RF DC calibration register to default value */ ++ rt2800_rfcsr_write_dccal(rt2x00dev, 0, 0x47); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 1, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 2, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 3, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 4, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 6, 0x10); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 7, 0x10); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 8, 0x04); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 9, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 10, 0x07); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 11, 0x01); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 12, 0x07); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 13, 0x07); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 14, 0x07); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 15, 0x20); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 16, 0x22); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 18, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 19, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 20, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 21, 0xF1); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 22, 0x11); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 23, 0x02); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 24, 0x41); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 25, 0x20); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 26, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 27, 0xD7); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 28, 0xA2); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 29, 0x20); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 30, 0x49); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 31, 0x20); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 32, 0x04); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 33, 0xF1); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 34, 0xA1); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 35, 0x01); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 41, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 42, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 43, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 44, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 45, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 46, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 47, 0x3E); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 48, 0x3D); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 49, 0x3E); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 50, 0x3D); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 51, 0x3E); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 52, 0x3D); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 53, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 54, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 55, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 56, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 57, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 58, 0x10); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 59, 0x10); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 60, 0x0A); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 61, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 62, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 63, 0x00); ++ ++ rt2800_rfcsr_write_dccal(rt2x00dev, 3, 0x08); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 4, 0x04); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x20); ++ ++ rt2800_rfcsr_write_dccal(rt2x00dev, 5, 0x00); ++ rt2800_rfcsr_write_dccal(rt2x00dev, 17, 0x7C); ++} ++ + static void rt2800_init_rfcsr(struct rt2x00_dev *rt2x00dev) + { + if (rt2800_is_305x_soc(rt2x00dev)) { +@@ -7427,7 +8363,10 @@ static void rt2800_init_rfcsr(struct rt2 + rt2800_init_rfcsr_5350(rt2x00dev); + break; + case RT5390: +- rt2800_init_rfcsr_5390(rt2x00dev); ++ if (rt2x00dev->chip.rf == RF7620) ++ rt2800_init_rfcsr_7620(rt2x00dev); ++ else ++ rt2800_init_rfcsr_5390(rt2x00dev); + break; + case RT5392: + rt2800_init_rfcsr_5392(rt2x00dev); +@@ -7859,6 +8798,7 @@ static int rt2800_init_eeprom(struct rt2 + case RF5390: + case RF5392: + case RF5592: ++ case RF7620: + break; + default: + rt2x00_err(rt2x00dev, "Invalid RF chipset 0x%04x detected\n", +@@ -8423,6 +9363,7 @@ static int rt2800_probe_hw_mode(struct r + case RF5372: + case RF5390: + case RF5392: ++ case RF7620: + spec->num_channels = 14; + if (spec->clk_is_20mhz) + spec->channels = rf_vals_xtal20mhz_3x; +@@ -8563,6 +9504,7 @@ static int rt2800_probe_hw_mode(struct r + case RF5372: + case RF5390: + case RF5392: ++ case RF7620: + __set_bit(CAPABILITY_VCO_RECALIBRATION, &rt2x00dev->cap_flags); + break; + } diff --git a/feeds/rtkmipsel/mac80211/patches/921-ath10k_init_devices_synchronously.patch b/feeds/rtkmipsel/mac80211/patches/921-ath10k_init_devices_synchronously.patch new file mode 100644 index 000000000..8c6d720a7 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/921-ath10k_init_devices_synchronously.patch @@ -0,0 +1,33 @@ +From: Sven Eckelmann +Date: Tue, 18 Nov 2014 12:29:28 +0100 +Subject: [PATCH] ath10k: Don't initialize devices asynchronously + +OpenWrt requires all PHYs to be initialized to create the configuration files +during bootup. ath10k violates this because it delays the creation of the PHY +to a not well defined point in the future. + +Forcing the work to be done immediately works around this problem but may also +delay the boot when firmware images cannot be found. + +Signed-off-by: Sven Eckelmann +--- + +--- a/drivers/net/wireless/ath/ath10k/core.c ++++ b/drivers/net/wireless/ath/ath10k/core.c +@@ -1914,6 +1914,16 @@ int ath10k_core_register(struct ath10k * + ar->chip_id = chip_id; + queue_work(ar->workqueue, &ar->register_work); + ++ /* OpenWrt requires all PHYs to be initialized to create the ++ * configuration files during bootup. ath10k violates this ++ * because it delays the creation of the PHY to a not well defined ++ * point in the future. ++ * ++ * Forcing the work to be done immediately works around this problem ++ * but may also delay the boot when firmware images cannot be found. ++ */ ++ flush_workqueue(ar->workqueue); ++ + return 0; + } + EXPORT_SYMBOL(ath10k_core_register); diff --git a/feeds/rtkmipsel/mac80211/patches/930-ath10k_add_tpt_led_trigger.patch b/feeds/rtkmipsel/mac80211/patches/930-ath10k_add_tpt_led_trigger.patch new file mode 100644 index 000000000..281b4475a --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/930-ath10k_add_tpt_led_trigger.patch @@ -0,0 +1,37 @@ +--- a/drivers/net/wireless/ath/ath10k/mac.c ++++ b/drivers/net/wireless/ath/ath10k/mac.c +@@ -7141,6 +7141,21 @@ struct ath10k_vif *ath10k_get_arvif(stru + return arvif_iter.arvif; + } + ++#ifdef CPTCFG_MAC80211_LEDS ++static const struct ieee80211_tpt_blink ath10k_tpt_blink[] = { ++ { .throughput = 0 * 1024, .blink_time = 334 }, ++ { .throughput = 1 * 1024, .blink_time = 260 }, ++ { .throughput = 2 * 1024, .blink_time = 220 }, ++ { .throughput = 5 * 1024, .blink_time = 190 }, ++ { .throughput = 10 * 1024, .blink_time = 170 }, ++ { .throughput = 25 * 1024, .blink_time = 150 }, ++ { .throughput = 54 * 1024, .blink_time = 130 }, ++ { .throughput = 120 * 1024, .blink_time = 110 }, ++ { .throughput = 265 * 1024, .blink_time = 80 }, ++ { .throughput = 586 * 1024, .blink_time = 50 }, ++}; ++#endif ++ + int ath10k_mac_register(struct ath10k *ar) + { + static const u32 cipher_suites[] = { +@@ -7357,6 +7372,12 @@ int ath10k_mac_register(struct ath10k *a + ar->hw->wiphy->cipher_suites = cipher_suites; + ar->hw->wiphy->n_cipher_suites = ARRAY_SIZE(cipher_suites); + ++#if CPTCFG_MAC80211_LEDS ++ ieee80211_create_tpt_led_trigger(ar->hw, ++ IEEE80211_TPT_LEDTRIG_FL_RADIO, ath10k_tpt_blink, ++ ARRAY_SIZE(ath10k_tpt_blink)); ++#endif ++ + ret = ieee80211_register_hw(ar->hw); + if (ret) { + ath10k_err(ar, "failed to register ieee80211: %d\n", ret); diff --git a/feeds/rtkmipsel/mac80211/patches/940-mwl8k_init_devices_synchronously.patch b/feeds/rtkmipsel/mac80211/patches/940-mwl8k_init_devices_synchronously.patch new file mode 100644 index 000000000..357faee4b --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/940-mwl8k_init_devices_synchronously.patch @@ -0,0 +1,20 @@ +--- a/drivers/net/wireless/marvell/mwl8k.c ++++ b/drivers/net/wireless/marvell/mwl8k.c +@@ -6264,6 +6264,8 @@ static int mwl8k_probe(struct pci_dev *p + + priv->running_bsses = 0; + ++ wait_for_completion(&priv->firmware_loading_complete); ++ + return rc; + + err_stop_firmware: +@@ -6297,8 +6299,6 @@ static void mwl8k_remove(struct pci_dev + return; + priv = hw->priv; + +- wait_for_completion(&priv->firmware_loading_complete); +- + if (priv->fw_state == FW_STATE_ERROR) { + mwl8k_hw_reset(priv); + goto unmap; diff --git a/feeds/rtkmipsel/mac80211/patches/950-rtk_add_rtl8192cd_wifi_support.patch b/feeds/rtkmipsel/mac80211/patches/950-rtk_add_rtl8192cd_wifi_support.patch new file mode 100644 index 000000000..a11e60822 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/950-rtk_add_rtl8192cd_wifi_support.patch @@ -0,0 +1,19 @@ +diff -urN a/drivers/net/wireless/realtek/Kconfig b/drivers/net/wireless/realtek/Kconfig +--- a/drivers/net/wireless/realtek/Kconfig 2016-06-13 13:57:04.071939493 +0800 ++++ b/drivers/net/wireless/realtek/Kconfig 2016-06-13 13:58:00.311940417 +0800 +@@ -14,5 +14,6 @@ + source "drivers/net/wireless/realtek/rtl818x/Kconfig" + source "drivers/net/wireless/realtek/rtlwifi/Kconfig" + source "drivers/net/wireless/realtek/rtl8xxxu/Kconfig" ++source "drivers/net/wireless/realtek/rtl8192cd/Kconfig" + + endif # WLAN_VENDOR_REALTEK +diff -urN a/drivers/net/wireless/realtek/Makefile b/drivers/net/wireless/realtek/Makefile +--- a/drivers/net/wireless/realtek/Makefile 2016-06-13 13:57:11.307939612 +0800 ++++ b/drivers/net/wireless/realtek/Makefile 2016-06-13 13:58:05.999940510 +0800 +@@ -6,4 +6,5 @@ + obj-$(CPTCFG_RTL8187) += rtl818x/ + obj-$(CPTCFG_RTLWIFI) += rtlwifi/ + obj-$(CPTCFG_RTL8XXXU) += rtl8xxxu/ ++obj-$(CPTCFG_RTL8192CD) += rtl8192cd/ + diff --git a/feeds/rtkmipsel/mac80211/patches/951-rtk-add.wifi.iwrpiv.cmds.patch b/feeds/rtkmipsel/mac80211/patches/951-rtk-add.wifi.iwrpiv.cmds.patch new file mode 100644 index 000000000..ea46b9136 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/951-rtk-add.wifi.iwrpiv.cmds.patch @@ -0,0 +1,70 @@ +diff -urN a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c +--- a/net/wireless/wext-compat.c 2016-06-14 14:45:07.165166599 +0800 ++++ b/net/wireless/wext-compat.c 2016-06-14 14:45:02.869166529 +0800 +@@ -1523,9 +1523,66 @@ + [IW_IOCTL_IDX(SIOCSIWENCODEEXT)]= (iw_handler) cfg80211_wext_siwencodeext, + [IW_IOCTL_IDX(SIOCSIWPMKSA)] = (iw_handler) cfg80211_wext_siwpmksa, + }; ++//rtk added below ++#define RTL8192CD_IOCTL_SET_MIB (SIOCDEVPRIVATE + 0x1) // 0x89f1 ++#define RTL8192CD_IOCTL_GET_MIB (SIOCDEVPRIVATE + 0x2) // 0x89f2 ++#define RTL8192CD_IOCTL_WRITE_REG (SIOCDEVPRIVATE + 0x3) // 0x89f3 ++#define RTL8192CD_IOCTL_READ_REG (SIOCDEVPRIVATE + 0x4) // 0x89f4 ++#define RTL8192CD_IOCTL_WRITE_MEM (SIOCDEVPRIVATE + 0x5) // 0x89f5 ++#define RTL8192CD_IOCTL_READ_MEM (SIOCDEVPRIVATE + 0x6) // 0x89f6 ++#define RTL8192CD_IOCTL_DEL_STA (SIOCDEVPRIVATE + 0x7) // 0x89f7 ++#define RTL8192CD_IOCTL_WRITE_EEPROM (SIOCDEVPRIVATE + 0x8) // 0x89f8 ++#define RTL8192CD_IOCTL_READ_EEPROM (SIOCDEVPRIVATE + 0x9) // 0x89f9 ++#define RTL8192CD_IOCTL_WRITE_BB_REG (SIOCDEVPRIVATE + 0xa) // 0x89fa ++#define RTL8192CD_IOCTL_READ_BB_REG (SIOCDEVPRIVATE + 0xb) // 0x89fb ++#define RTL8192CD_IOCTL_WRITE_RF_REG (SIOCDEVPRIVATE + 0xc) // 0x89fc ++#define RTL8192CD_IOCTL_READ_RF_REG (SIOCDEVPRIVATE + 0xd) // 0x89fd ++ ++ ++#define SIOCGIWRTLREGDUMP 0x8B78 ++ ++struct iw_priv_args privtab[] = { ++ { RTL8192CD_IOCTL_SET_MIB, IW_PRIV_TYPE_CHAR | 450, 0, "set_mib" }, ++ { RTL8192CD_IOCTL_GET_MIB, IW_PRIV_TYPE_CHAR | 40, IW_PRIV_TYPE_BYTE | 128, "get_mib" }, ++#if 1 ++ { RTL8192CD_IOCTL_WRITE_REG, IW_PRIV_TYPE_CHAR | 128, 0, "write_reg" }, ++ { RTL8192CD_IOCTL_READ_REG, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_BYTE | 128, "read_reg" }, ++ { RTL8192CD_IOCTL_WRITE_MEM, IW_PRIV_TYPE_CHAR | 128, 0, "write_mem" }, ++ { RTL8192CD_IOCTL_READ_MEM, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_BYTE | 128, "read_mem" }, ++ { RTL8192CD_IOCTL_WRITE_BB_REG, IW_PRIV_TYPE_CHAR | 128, 0, "write_bb" }, ++ { RTL8192CD_IOCTL_READ_BB_REG, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_BYTE | 128, "read_bb" }, ++ { RTL8192CD_IOCTL_WRITE_RF_REG, IW_PRIV_TYPE_CHAR | 128, 0, "write_rf" }, ++ { RTL8192CD_IOCTL_READ_RF_REG, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_BYTE | 128, "read_rf" }, ++#endif ++ ++ { SIOCGIWRTLREGDUMP, IW_PRIV_TYPE_CHAR | 40, 0, "reg_dump" }, ++#if 0 ++ { RTL8192CD_IOCTL_DEL_STA, IW_PRIV_TYPE_CHAR | 128, 0, "del_sta" }, ++ { RTL8192CD_IOCTL_WRITE_EEPROM, IW_PRIV_TYPE_CHAR | 128, 0, "write_eeprom" }, ++ { RTL8192CD_IOCTL_READ_EEPROM, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_BYTE | 128, "read_eeprom" }, ++ { SIOCSRFPWRADJ, IW_PRIV_TYPE_CHAR | 40, IW_PRIV_TYPE_CHAR | 128, "rf_pwr" }, ++ { SIOCGIWRTLREGDUMP, IW_PRIV_TYPE_CHAR | 40, 0, "reg_dump" }, ++ { SIOCRADIOOFF, IW_PRIV_TYPE_CHAR | 128, 0, "radio_off" }, ++#ifdef EN_EFUSE ++ { SIOCEFUSE_GET, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_CHAR | 512, "efuse_get" }, ++ { SIOCEFUSE_SET, IW_PRIV_TYPE_CHAR | 512, IW_PRIV_TYPE_CHAR | 128, "efuse_set" }, ++ { SIOCEFUSE_SYNC, IW_PRIV_TYPE_CHAR | 128, IW_PRIV_TYPE_CHAR | 128, "efuse_sync" }, ++#endif ++ { SIOC92DAUTOCH, IW_PRIV_TYPE_CHAR | 128, 0, "autoch" }, ++#endif ++}; ++ ++static iw_handler rtl_private_handler[] = ++{ ++ NULL, // return NULL to redirect to dev->ioctl ++}; + + const struct iw_handler_def cfg80211_wext_handler = { + .num_standard = ARRAY_SIZE(cfg80211_handlers), + .standard = cfg80211_handlers, + .get_wireless_stats = cfg80211_wireless_stats, ++ .private = rtl_private_handler, ++ .private_args = (struct iw_priv_args *)privtab, ++ .num_private = sizeof(rtl_private_handler) / sizeof(iw_handler), ++ .num_private_args = sizeof(privtab) / sizeof(struct iw_priv_args) + }; diff --git a/feeds/rtkmipsel/mac80211/patches/952-rtk.regd.patch b/feeds/rtkmipsel/mac80211/patches/952-rtk.regd.patch new file mode 100644 index 000000000..c207e7d6c --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/952-rtk.regd.patch @@ -0,0 +1,12 @@ +diff -urN a/net/wireless/reg.c b/net/wireless/reg.c +--- a/net/wireless/reg.c 2016-06-14 14:35:12.117156820 +0800 ++++ b/net/wireless/reg.c 2016-06-14 14:35:04.401156694 +0800 +@@ -179,7 +179,7 @@ + out: + return regd->dfs_region; + } +- ++EXPORT_SYMBOL(reg_get_dfs_region); + static void rcu_free_regdom(const struct ieee80211_regdomain *r) + { + if (!r) diff --git a/feeds/rtkmipsel/mac80211/patches/953-rtk_wext_and_client_fix.patch b/feeds/rtkmipsel/mac80211/patches/953-rtk_wext_and_client_fix.patch new file mode 100644 index 000000000..a21ae84ed --- /dev/null +++ b/feeds/rtkmipsel/mac80211/patches/953-rtk_wext_and_client_fix.patch @@ -0,0 +1,29 @@ +diff -urN a/net/wireless/core.c b/net/wireless/core.c +--- a/net/wireless/core.c 2016-10-24 11:56:03.973531809 +0800 ++++ b/net/wireless/core.c 2016-10-24 11:55:51.365532306 +0800 +@@ -1066,7 +1066,11 @@ + if (rdev->scan_req && rdev->scan_req->wdev == wdev) { + if (WARN_ON(!rdev->scan_req->notified)) + rdev->scan_req->aborted = true; +- ___cfg80211_scan_done(rdev, false); ++#if 1 //rtk: client mode 2nd Association ++ cfg80211_scan_done(rdev->scan_req, false); ++#else ++ ___cfg80211_scan_done(rdev, false); ++#endif + } + + sched_scan_req = rtnl_dereference(rdev->sched_scan_req); +diff -urN a/net/wireless/wext-compat.c b/net/wireless/wext-compat.c +--- a/net/wireless/wext-compat.c 2016-10-24 11:54:42.065535036 +0800 ++++ b/net/wireless/wext-compat.c 2016-10-24 11:55:29.053533185 +0800 +@@ -85,6 +85,9 @@ + case IW_MODE_REPEAT: + type = NL80211_IFTYPE_WDS; + break; ++ case IW_MODE_MASTER: ++ type = NL80211_IFTYPE_AP; ++ break; + case IW_MODE_MONITOR: + type = NL80211_IFTYPE_MONITOR; + break; diff --git a/feeds/rtkmipsel/mac80211/scripts/import-backports.sh b/feeds/rtkmipsel/mac80211/scripts/import-backports.sh new file mode 100755 index 000000000..d056eb6d0 --- /dev/null +++ b/feeds/rtkmipsel/mac80211/scripts/import-backports.sh @@ -0,0 +1,109 @@ +#!/usr/bin/env bash +BASE=$1; shift + +usage() { + echo "Usage: $0 NNN ..." + exit 1 +} + +check_number() { + case "$1" in + [0-9][0-9][0-9]) return 0;; + esac + return 1; +} + +patch_header() +{ + awk ' + /^(---|\*\*\*|Index:)[ \t][^ \t]|^diff -/ \ + { exit } + { print } + ' +} + +strip_diffstat() +{ + awk ' + /#? .* \| / \ + { eat = eat $0 "\n" + next } + /^#? .* files? changed(, .* insertions?\(\+\))?(, .* deletions?\(-\))?/ \ + { eat = "" + next } + { print eat $0 + eat = "" } + ' +} + +strip_trailing_whitespace() { + sed -e 's:[ '$'\t'']*$::' +} + +fixup_header() { + awk ' + /^From / { next } + /^Subject: / { + sub("Subject: \\[[^\]]*\\]", "Subject: [PATCH]") + } + { print } + ' +} + +check_number "$BASE" || usage + +quilt series > /dev/null || { + echo "Not in quilt directory" + exit 2 +} + +get_next() { + NEW=$BASE + quilt series | while read CUR; do + [ -n "$CUR" ] || break + CUR=${CUR%%-*} + check_number "$CUR" || continue + [ "$CUR" -lt "$NEW" ] && continue + [ "$CUR" -ge "$(($BASE + 100))" ] && continue + NEW="$(($CUR + 1))" + echo $NEW + done | tail -n1 +} + +CUR=`get_next` +CUR="${CUR:-$BASE}" + +while [ -n "$1" ]; do + FILE="$1"; shift + NAME="$(basename $FILE)" + NAME="${NAME#[0-9]*-}" + echo -n "Processing patch $NAME: " + + [ -e "$FILE" ] || { + echo "file $FILE not found" + exit 1 + } + + grep -qE "$NAME$" patches/series && { + echo "already applied" + continue + } + + quilt new "$CUR-$NAME" || exit 1 + patch_header < "$FILE" | + strip_diffstat | + strip_trailing_whitespace | + fixup_header > "patches/$CUR-$NAME" + + quilt fold < "$FILE" || { + cp "$FILE" ./cur_patch + echo "patch $FILE failed to apply, copied to ./cur_patch" + exit 1 + } + + quilt refresh -p ab --no-index --no-timestamps + + CUR="$(($CUR + 1))" +done + +exit 0 diff --git a/feeds/rtkmipsel/rtk_app/Makefile b/feeds/rtkmipsel/rtk_app/Makefile new file mode 100755 index 000000000..4a331664a --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/Makefile @@ -0,0 +1,127 @@ +# +## Copyright (C) 2006-2009 OpenWrt.org +# +## This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=rtk_app +PKG_VERSION:=0.1 +PKG_RELEASE:=1 + +PKG_BUILD_DIR := $(KERNEL_BUILD_DIR)/$(PKG_NAME) +STAMP_PREPARED := $(STAMP_PREPARED)_$(call confvar,CONFIG_MTD_REDBOOT_PARTS) + +include $(INCLUDE_DIR)/package.mk + +define Package/rtk_app + SECTION:=Tool + CATEGORY:=Utilities + DEPENDS:=+libpcap + TITLE:=For some realtek useful utilities(for example,WLAN TX calibration..) + DEFAULT:=y +endef + +define Package/rtk_app/description + This Package is for realtek to set WLAN TX calibration parameters +endef + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./src/* $(PKG_BUILD_DIR)/ +endef + +target=$(firstword $(subst -, ,$(BOARD))) + +MAKE_FLAGS += TARGET="$(target)" +TARGET_CFLAGS += -Dtarget_$(target)=1 -Wall + +ifdef CONFIG_MTD_REDBOOT_PARTS + MAKE_FLAGS += FIS_SUPPORT=1 + TARGET_CFLAGS += -DFIS_SUPPORT=1 +endif + +ifdef CONFIG_RTL_819XD + TARGET_CFLAGS += -DCONFIG_RTL_819XD=1 +endif +ifdef CONFIG_RTL_8196E + TARGET_CFLAGS += -DCONFIG_RTL_8196E=1 +endif +ifdef CONFIG_RTL_8881A + TARGET_CFLAGS += -DCONFIG_RTL_8881A=1 -DCONFIG_RTL_819XD=1 +endif +ifdef CONFIG_WLAN_HAL_8197F + TARGET_CFLAGS += -DCONFIG_WLAN_HAL_8197F=1 +endif +ifdef CONFIG_RTL_8197F + TARGET_CFLAGS += -DCONFIG_RTL_8197F=1 +endif +ifeq ($(CONFIG_RTL_8198C),y) + TARGET_CFLAGS += -DCONFIG_RTL_8198C=1 +endif + +ifdef CONFIG_WLAN_HAL_8881A + TARGET_CFLAGS += -DHAVE_RTK_AC_SUPPORT=1 +endif +ifdef CONFIG_RTL_8812_SUPPORT + TARGET_CFLAGS += -DHAVE_RTK_AC_SUPPORT=1 +endif +ifdef CONFIG_WLAN_HAL_8822BE + TARGET_CFLAGS += -DHAVE_RTK_AC_SUPPORT=1 +endif +ifdef CONFIG_RTL_HW_SETTING_OFFSET + TARGET_CFLAGS += -DRTK_HW_OFFSET=$(CONFIG_RTL_HW_SETTING_OFFSET) +endif +ifeq ($(CONFIG_WLAN_HAL_8881A),y) +ifeq ($(CONFIG_USE_PCIE_SLOT_0),y) + TARGET_CFLAGS += -DHAVE_RTK_DUAL_BAND_SUPPORT=1 +endif +endif +ifeq ($(CONFIG_WLAN_HAL_8197F),y) +ifeq ($(CONFIG_USE_PCIE_SLOT_0),y) + TARGET_CFLAGS += -DHAVE_RTK_DUAL_BAND_SUPPORT=1 +endif +endif +ifeq ($(CONFIG_USE_PCIE_SLOT_0),y) +ifeq ($(CONFIG_USE_PCIE_SLOT_1),y) + TARGET_CFLAGS += -DHAVE_RTK_DUAL_BAND_SUPPORT=1 +endif +endif +ifeq ($(CONFIG_RTL_92D_SUPPORT),y) + TARGET_CFLAGS += -DHAVE_RTK_92D_SUPPORT=1 +endif +ifeq ($(CONFIG_ENABLE_EFUSE),y) + TARGET_CFLAGS += -DHAVE_RTK_EFUSE=1 +endif +ifeq ($(CONFIG_RTL_WPS2_SUPPORT),y) + TARGET_CFLAGS += -DHAVE_WIFI_SIMPLE_CONFIG=1 +endif +ifeq ($(CONFIG_RTL_VAP_SUPPORT),y) + TARGET_CFLAGS += -DHAVE_WIFI_MBSSID=8 +endif + +ifeq ($(CONFIG_WLAN_HAL_8814AE),y) + TARGET_CFLAGS += -DHAVE_RTK_4T4R_AC_SUPPORT +endif + +ifeq ($(CONFIG_MTD_NAND),y) + TARGET_CFLAGS += -DCONFIG_MTD_NAND=1 +endif + +define Package/rtk_app/install + $(INSTALL_DIR) $(1)/usr/sbin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rtk_txcalr $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rtk_bootinfo $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/flash $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/wpsled $(1)/usr/sbin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/rtk_pcap $(1)/usr/sbin/ + $(INSTALL_DIR) $(1)/etc/config + #$(INSTALL_DATA) ./files/rtk_app.conf $(1)/etc/config/rtk_app + $(INSTALL_DIR) $(1)/etc/init.d + $(INSTALL_BIN) ./files/rtk_app.init $(1)/etc/init.d/rtk_app +endef + +$(eval $(call BuildPackage,rtk_app)) diff --git a/feeds/rtkmipsel/rtk_app/files/rtk_app.conf b/feeds/rtkmipsel/rtk_app/files/rtk_app.conf new file mode 100755 index 000000000..1d5397620 --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/files/rtk_app.conf @@ -0,0 +1,2 @@ +config rtk_app + option efuse enabled diff --git a/feeds/rtkmipsel/rtk_app/files/rtk_app.init b/feeds/rtkmipsel/rtk_app/files/rtk_app.init new file mode 100755 index 000000000..830c30ac1 --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/files/rtk_app.init @@ -0,0 +1,14 @@ +#!/bin/sh /etc/rc.common +# Copyright (C) 2007 OpenWrt.org +set -x +START=38 +start() { + #delay for wifi module load + sleep 0.5 + /usr/sbin/rtk_txcalr -w + iw reg set US +} +stop() +{ + echo "kill rtk_txcalr\n" +} diff --git a/feeds/rtkmipsel/rtk_app/src/Makefile b/feeds/rtkmipsel/rtk_app/src/Makefile new file mode 100755 index 000000000..9ca4f776f --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/Makefile @@ -0,0 +1,50 @@ + +CFLAGS := -s -Wall -c -Os $(CFLAGS) +LDFLAGS = -s -Wall + + +CFLAGS += -ffunction-sections -fdata-sections +LDFLAGS += --static -s -Wl,--gc-sections + + +all: clean rtk_txcalr flash rtk_pcap wpsled rtk_bootinfo + + +rtk_bootinfo: rtk_bootinfo.o + $(CC) $(LDFLAGS) -o rtk_bootinfo rtk_bootinfo.o + +rtk_txcalr: rtk_tx_calibration.o + $(CC) $(LDFLAGS) -o rtk_txcalr rtk_tx_calibration.o + +#named as flash for compliant to MP tool +flash: mibhw.o + $(CC) $(LDFLAGS) -o flash mibhw.o + +wpsled: rtk_wpsled.o + $(CC) $(LDFLAGS) -o wpsled rtk_wpsled.o + +clean: + rm -f *.o + rm -f rtk_txcalr + rm -f flash + rm -f rtk_pcap + rm -f wpsled + rm -f rtk_bootinfo + +rtk_bootinfo.o: rtk_bootinfo.c + $(CC) $(CFLAGS) -o rtk_bootinfo.o rtk_bootinfo.c + +rtk_tx_calibration.o: rtk_tx_calibration.c + $(CC) $(CFLAGS) -o rtk_tx_calibration.o rtk_tx_calibration.c + +mibhw.o: mibhw.c + $(CC) $(CFLAGS) -o mibhw.o mibhw.c + +rtk_wpsled.o: rtk_wpsled.c + $(CC) $(CFLAGS) -o rtk_wpsled.o rtk_wpsled.c + +rtk_pcap: packet_capture.c + $(CC) --static -o rtk_pcap packet_capture.c -I../../libpcap-1.5.3 -L../../libpcap-1.5.3 -lpcap + + + diff --git a/feeds/rtkmipsel/rtk_app/src/apmib.h b/feeds/rtkmipsel/rtk_app/src/apmib.h new file mode 100755 index 000000000..6d98ea3db --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/apmib.h @@ -0,0 +1,3223 @@ +/* + * Header file of AP mib + * Authors: David Hsu + * + * $Id: apmib.h,v 1.54 2009/09/15 02:12:24 bradhuang Exp $ + * + */ + + +#ifndef INCLUDE_APMIB_H +#define INCLUDE_APMIB_H + +/* Forrest, 2007.11.07. + * If you want to let APMIB adopt shared memory mechanism, define it to 1. + * Or define it to 0 will go back to original local copy mechanism. + * Note: + * 1. I only use shared memory for HW Configuration (pHwSetting), Default + * Configuration (pMibDef) and Current Configuration (pMib). There is + * no shared memory for each linkchain now. + * 2. Because uClibc does not support POSIX inter-process semaphore, I have + * to use SYSTEM V semaphore and shared memory. So if you want to adopt + * shared memory mechanism, you must go to turn on CONFIG_SYSVIPC + * kernel config to support it. + */ +#ifdef CONFIG_APMIB_SHARED + #define CONFIG_APMIB_SHARED_MEMORY 1 +#else + #define CONFIG_APMIB_SHARED_MEMORY 0 +#endif + +// added by rock ///////////////////////////////////////// +#ifdef VOIP_SUPPORT +#include "voip_flash.h" +#include "voip_flash_mib.h" +#endif + +#if defined(CONFIG_DOMAIN_NAME_QUERY_SUPPORT) +//#define LOGDEBUG_ENABLED +#endif + +#define MBSSID + +//hf +//#define CONFIG_RTL_BT_CLIENT + +#define COMPRESS_MIB_SETTING +#define MIB_TLV + +#ifdef MIB_TLV +#define MIB_TABLE_LIST 0x8000 +#else +#define MIB_TABLE_LIST 0x0 +#endif + +//#ifdef HOME_GATEWAY +//#define GW_QOS_ENGINE +//#endif +#ifdef ENABLE_QOS // thru makefile + #ifndef QOS_BY_BANDWIDTH + #define GW_QOS_ENGINE + #endif +#endif +#ifdef VOIP_SUPPORT +#ifndef HEADER_LEN_INT +#define HEADER_LEN_INT +#endif +#endif +#if defined(CONFIG_RTL_92D_SUPPORT)||defined(HAVE_RTK_DUAL_BAND_SUPPORT) +#define NUM_WLAN_INTERFACE 2 // number of wlan interface supported +#else +#define NUM_WLAN_INTERFACE 1 // number of wlan interface supported +#endif + +#if defined(CONFIG_RTL_819X) +#define NUM_WLAN_MULTIPLE_SSID 8 // number of wlan ssid support +#else +//!CONFIG_RTL_8196B => rtl8651c+rtl8190 +#define NUM_WLAN_MULTIPLE_SSID 5 // number of wlan ssid support +#endif + +#ifdef MBSSID +#define NUM_VWLAN 4 // number of virtual wlan interface supported +#else +#define NUM_VWLAN 0 +#endif + +#if defined(UNIVERSAL_REPEATER) && defined(CONFIG_RTL_ULINKER) + #define NUM_VWLAN_INTERFACE NUM_VWLAN+4 //+4 is ulinker_ap, ulinker_cl, ulinker_rpt, repeater(vxd) +#elif defined(CONFIG_RTL_ULINKER) + #define NUM_VWLAN_INTERFACE NUM_VWLAN+2 //+2 is ulinker_ap, ulinker_cl +#elif defined(UNIVERSAL_REPEATER) +#define NUM_VWLAN_INTERFACE NUM_VWLAN+1 +#else +#define NUM_VWLAN_INTERFACE NUM_VWLAN +#endif + +#if defined(UNIVERSAL_REPEATER) && defined(CONFIG_RTL_ULINKER) + #define ULINKER_AP_MIB (NUM_VWLAN_INTERFACE-3) + #define ULINKER_CL_MIB (NUM_VWLAN_INTERFACE-2) + #define ULINKER_RPT_MIB (NUM_VWLAN_INTERFACE-1) +#elif defined(CONFIG_RTL_ULINKER) + #define ULINKER_AP_MIB (NUM_VWLAN_INTERFACE-1) + #define ULINKER_CL_MIB (NUM_VWLAN_INTERFACE) +#endif + +// WLAN MIB id +#define MIB_WLAN_SSID 1 +#define MIB_WLAN_CHANNEL 2 +#define MIB_WLAN_WEP 3 +#define MIB_WLAN_WEP64_KEY1 4 +#define MIB_WLAN_WEP64_KEY2 5 +#define MIB_WLAN_WEP64_KEY3 6 +#define MIB_WLAN_WEP64_KEY4 7 +#define MIB_WLAN_WEP128_KEY1 8 +#define MIB_WLAN_WEP128_KEY2 9 +#define MIB_WLAN_WEP128_KEY3 10 +#define MIB_WLAN_WEP128_KEY4 11 +#define MIB_WLAN_WEP_KEY_TYPE 12 +#define MIB_WLAN_WEP_DEFAULT_KEY 13 +#define MIB_WLAN_FRAG_THRESHOLD 14 +#define MIB_WLAN_SUPPORTED_RATES 15 +#define MIB_WLAN_BEACON_INTERVAL 16 +#define MIB_WLAN_PREAMBLE_TYPE 17 +#define MIB_WLAN_BASIC_RATES 18 +#define MIB_WLAN_RTS_THRESHOLD 19 +#define MIB_WLAN_AUTH_TYPE 20 +#define MIB_WLAN_HIDDEN_SSID 21 +#define MIB_WLAN_WLAN_DISABLED 22 +#define MIB_ELAN_MAC_ADDR 23 +#define MIB_WLAN_WLAN_MAC_ADDR 24 +#define MIB_WLAN_ENCRYPT 25 +#define MIB_WLAN_ENABLE_SUPP_NONWPA 26 +#define MIB_WLAN_SUPP_NONWPA 27 +#define MIB_WLAN_WPA_AUTH 28 +#define MIB_WLAN_WPA_CIPHER_SUITE 29 +#define MIB_WLAN_WPA_PSK 30 +#define MIB_WLAN_WPA_GROUP_REKEY_TIME 31 +#define MIB_WLAN_RS_IP 32 +#define MIB_WLAN_RS_PORT 33 +#define MIB_WLAN_RS_PASSWORD 34 +#define MIB_WLAN_ENABLE_1X 35 +#define MIB_WLAN_PSK_FORMAT 36 +#define MIB_WLAN_WPA2_PRE_AUTH 37 +#define MIB_WLAN_WPA2_CIPHER_SUITE 38 +#define MIB_WLAN_ACCOUNT_RS_ENABLED 39 +#define MIB_WLAN_ACCOUNT_RS_IP 40 +#define MIB_WLAN_ACCOUNT_RS_PORT 41 +#define MIB_WLAN_ACCOUNT_RS_PASSWORD 42 +#define MIB_WLAN_ACCOUNT_RS_UPDATE_ENABLED 43 +#define MIB_WLAN_ACCOUNT_RS_UPDATE_DELAY 44 +#define MIB_WLAN_MAC_AUTH_ENABLED 45 +#define MIB_WLAN_RS_MAXRETRY 46 +#define MIB_WLAN_RS_INTERVAL_TIME 47 +#define MIB_WLAN_ACCOUNT_RS_MAXRETRY 48 +#define MIB_WLAN_ACCOUNT_RS_INTERVAL_TIME 49 + +#define MIB_WLAN_INACTIVITY_TIME 50 +#define MIB_WLAN_RATE_ADAPTIVE_ENABLED 51 +#define MIB_WLAN_MACAC_ENABLED 52 +#define MIB_WLAN_MACAC_NUM 53 +#define MIB_WLAN_MACAC_ADDR ((MIB_WLAN_MACAC_NUM+1)|MIB_TABLE_LIST) +#define MIB_WLAN_AC_ADDR_ADD ((MIB_WLAN_MACAC_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_WLAN_AC_ADDR_DEL ((MIB_WLAN_MACAC_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_WLAN_AC_ADDR_DELALL ((MIB_WLAN_MACAC_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_WLAN_DTIM_PERIOD 58 +#define MIB_WLAN_MODE 59 +#define MIB_WLAN_NETWORK_TYPE 60 +#define MIB_WLAN_DEFAULT_SSID 61 // used while configured as Ad-hoc and no any other Ad-hoc could be joined + // it will use this default SSID to start BSS +#define MIB_WLAN_IAPP_DISABLED 62 +#define MIB_WLAN_WDS_ENABLED 63 +#define MIB_WLAN_WDS_NUM 64 +#define MIB_WLAN_WDS ((MIB_WLAN_WDS_NUM+1)|MIB_TABLE_LIST) +#define MIB_WLAN_WDS_ADD ((MIB_WLAN_WDS_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_WLAN_WDS_DEL ((MIB_WLAN_WDS_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_WLAN_WDS_DELALL ((MIB_WLAN_WDS_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_WLAN_WDS_ENCRYPT 69 +#define MIB_WLAN_WDS_WEP_FORMAT 70 +#define MIB_WLAN_WDS_WEP_KEY 71 +#define MIB_WLAN_WDS_PSK_FORMAT 72 +#define MIB_WLAN_WDS_PSK 73 +#define MIB_WLAN_BAND 74 +#define MIB_WLAN_FIX_RATE 75 +#define MIB_WLAN_BLOCK_RELAY 76 +#define MIB_WLAN_MACCLONE_ENABLED 77 +#define MIB_WLAN_PROTECTION_DISABLED 78 +#ifdef TLS_CLIENT +//sc_yang for client mode TLS +#define MIB_CERTROOT_TBL_NUM 79 +#define MIB_CERTROOT_TBL ((MIB_CERTROOT_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_CERTROOT_ADD ((MIB_CERTROOT_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_CERTROOT_DEL ((MIB_CERTROOT_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_CERTROOT_DELALL ((MIB_CERTROOT_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_CERTUSER_TBL_NUM 84 +#define MIB_CERTUSER_TBL ((MIB_CERTUSER_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_CERTUSER_ADD ((MIB_CERTUSER_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_CERTUSER_DEL ((MIB_CERTUSER_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_CERTUSER_DELALL ((MIB_CERTUSER_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#endif + +// for WMM +#define MIB_WLAN_WMM_ENABLED 89 + +#ifdef WLAN_EASY_CONFIG +#define MIB_WLAN_EASYCFG_ENABLED 90 +#define MIB_WLAN_EASYCFG_MODE 91 +#define MIB_WLAN_EASYCFG_SSID 92 +#define MIB_WLAN_EASYCFG_KEY 93 +#define MIB_WLAN_EASYCFG_ALG_REQ 94 +#define MIB_WLAN_EASYCFG_ALG_SUPP 95 +#define MIB_WLAN_EASYCFG_DIGEST 96 +#define MIB_WLAN_EASYCFG_ROLE 97 +#define MIB_WLAN_EASYCFG_SCAN_SSID 98 +#define MIB_WLAN_EASYCFG_WLAN_MODE 99 +#endif // WLAN_EASY_CONFIG + +#ifdef MIB_TLV +#define MIB_ROOT (100|MIB_TABLE_LIST) +#define MIB_WLAN_ROOT (101|MIB_TABLE_LIST) +#else //etop modify +#define MIB_ROOT (100|MIB_TABLE_LIST) +#define MIB_WLAN_ROOT (101|MIB_TABLE_LIST) + +#endif +#if defined(CONFIG_RTL_8198_AP_ROOT) || defined(CONFIG_RTL_8197D_AP) +#define MIB_NTP_ENABLED 151 +#define MIB_NTP_SERVER_ID 152 +#define MIB_NTP_TIMEZONE 153 +#define MIB_NTP_SERVER_IP1 154 +#define MIB_NTP_SERVER_IP2 155 +#endif + +#define MIB_WAN_MAC_ADDR 100 +#define MIB_WAN_IP_ADDR 101 +#define MIB_WAN_SUBNET_MASK 102 +#define MIB_WAN_DEFAULT_GATEWAY 103 +#define MIB_WAN_DHCP 104 +#define MIB_DNS_MODE 105 +#define MIB_PPP_USER_NAME 106 +#define MIB_PPP_PASSWORD 107 +#define MIB_PPP_IDLE_TIME 108 +#define MIB_PPP_CONNECT_TYPE 109 + +#ifdef HOME_GATEWAY + +#define MIB_PORTFW_ENABLED 110 +#define MIB_PORTFW_TBL_NUM 111 +#define MIB_PORTFW_TBL ((MIB_PORTFW_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_PORTFW_ADD ((MIB_PORTFW_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_PORTFW_DEL ((MIB_PORTFW_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_PORTFW_MOD ((MIB_PORTFW_TBL_NUM+3)|MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) +#define MIB_PORTFW_DELALL ((MIB_PORTFW_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_IPFILTER_ENABLED 116 +#define MIB_IPFILTER_TBL_NUM 117 +#define MIB_IPFILTER_TBL ((MIB_IPFILTER_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_IPFILTER_ADD ((MIB_IPFILTER_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_IPFILTER_DEL ((MIB_IPFILTER_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_IPFILTER_DELALL ((MIB_IPFILTER_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_MACFILTER_ENABLED 122 +#define MIB_MACFILTER_TBL_NUM 123 +#define MIB_MACFILTER_TBL ((MIB_MACFILTER_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_MACFILTER_ADD ((MIB_MACFILTER_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_MACFILTER_DEL ((MIB_MACFILTER_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_MACFILTER_DELALL ((MIB_MACFILTER_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_PORTFILTER_ENABLED 128 +#define MIB_PORTFILTER_TBL_NUM 129 +#define MIB_PORTFILTER_TBL ((MIB_PORTFILTER_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_PORTFILTER_ADD ((MIB_PORTFILTER_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_PORTFILTER_DEL ((MIB_PORTFILTER_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_PORTFILTER_DELALL ((MIB_PORTFILTER_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_TRIGGERPORT_ENABLED 134 +#define MIB_TRIGGERPORT_TBL_NUM 135 +#define MIB_TRIGGERPORT_TBL ((MIB_TRIGGERPORT_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_TRIGGERPORT_ADD ((MIB_TRIGGERPORT_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_TRIGGERPORT_DEL ((MIB_TRIGGERPORT_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_TRIGGERPORT_DELALL ((MIB_TRIGGERPORT_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_DMZ_ENABLED 140 +#define MIB_DMZ_HOST 141 +#define MIB_UPNP_ENABLED 142 +#define MIB_UPNP_IGD_NAME 143 +#endif //#ifdef HOME_GATEWAY + +#define MIB_PPP_MTU_SIZE 144 +#define MIB_PPTP_IP_ADDR 145 +#define MIB_PPTP_SUBNET_MASK 146 +#define MIB_PPTP_SERVER_IP_ADDR 147 +#define MIB_PPTP_USER_NAME 148 +#define MIB_PPTP_PASSWORD 149 +#define MIB_PPTP_MTU_SIZE 150 +#define MIB_NTP_ENABLED 151 +#define MIB_NTP_SERVER_ID 152 +#define MIB_NTP_TIMEZONE 153 +#define MIB_NTP_SERVER_IP1 154 +#define MIB_NTP_SERVER_IP2 155 +#define MIB_PPTP_SECURITY_ENABLED 156 +#define MIB_FIXED_IP_MTU_SIZE 157 +#define MIB_DHCP_MTU_SIZE 158 +#define MIB_PPTP_MPPC_ENABLED 159 + +#ifdef HOME_GATEWAY + +#ifdef VPN_SUPPORT +#define MIB_IPSECTUNNEL_ENABLED 160 +#define MIB_IPSECTUNNEL_TBL_NUM 161 +#define MIB_IPSECTUNNEL_TBL ((MIB_IPSECTUNNEL_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_IPSECTUNNEL_ADD ((MIB_IPSECTUNNEL_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_IPSECTUNNEL_DEL ((MIB_IPSECTUNNEL_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_IPSECTUNNEL_DELALL ((MIB_IPSECTUNNEL_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_IPSEC_NATT_ENABLED 167 +#define MIB_IPSEC_RSA_FILE 168 +#endif +#endif // HOME_GATEWAY + +#define MIB_IP_ADDR 170 +#define MIB_SUBNET_MASK 171 +#define MIB_DEFAULT_GATEWAY 172 +#define MIB_DHCP 173 +#define MIB_DHCP_CLIENT_START 174 +#define MIB_DHCP_CLIENT_END 175 +#define MIB_DNS1 176 +#define MIB_DNS2 177 +#define MIB_DNS3 178 +#define MIB_STP_ENABLED 179 +#ifdef SUPER_NAME_SUPPORT +#define MIB_SUPER_NAME 180 +#define MIB_SUPER_PASSWORD 181 +#endif +#define MIB_USER_NAME 182 +#define MIB_USER_PASSWORD 183 +#define MIB_SCRLOG_ENABLED 184 +#define MIB_AUTO_DISCOVERY_ENABLED 185 +#define MIB_DEVICE_NAME 186 + +#ifdef HOME_GATEWAY +#define MIB_DDNS_ENABLED 187 +#define MIB_DDNS_TYPE 188 +#define MIB_DDNS_DOMAIN_NAME 189 +#define MIB_DDNS_USER 190 +#define MIB_DDNS_PASSWORD 191 +#endif +#define MIB_OP_MODE 192 +#define MIB_WISP_WAN_ID 193 + +#ifdef HOME_GATEWAY +#define MIB_WEB_WAN_ACCESS_ENABLED 194 +#define MIB_PING_WAN_ACCESS_ENABLED 195 +#define MIB_HOST_NAME 197 +#endif + +#define MIB_DOMAIN_NAME 198 + +#ifdef MIB_TLV +//#define MIB_TABLE_LIST 0x8000 +#define MIB_ID_MASK (0x8000-1) +#define MIB_HW_ROOT (200|MIB_TABLE_LIST) +#define MIB_HW_WLAN_ROOT (201|MIB_TABLE_LIST) +#define MIB_ADD_TBL_ENTRY 0x10000 +#define MIB_DEL_TBL_ENTRY 0x20000 +#define MIB_DELALL_TBL_ENTRY 0x40000 +#define MIB_MOD_TBL_ENTRY 0x100000 +#define MIB_WLAN_TBL 0x80000 +#else //etop modify :for config +//#define MIB_TABLE_LIST 0x8000 +#define MIB_ID_MASK (0x8000-1) +#define MIB_HW_ROOT (200|MIB_TABLE_LIST) +#define MIB_HW_WLAN_ROOT (201|MIB_TABLE_LIST) +#define MIB_ADD_TBL_ENTRY 0x10000 +#define MIB_DEL_TBL_ENTRY 0x20000 +#define MIB_MOD_TBL_ENTRY 0x100000 +#define MIB_DELALL_TBL_ENTRY 0x40000 +#define MIB_WLAN_TBL 0x80000 +#endif // #ifdef MIB_TLV + +// Hardware setting MIB +#define MIB_HW_BOARD_VER 200 +#define MIB_HW_NIC0_ADDR 201 +#define MIB_HW_NIC1_ADDR 202 +#define MIB_HW_WLAN_ADDR 203 +#define MIB_HW_REG_DOMAIN 204 +#define MIB_HW_RF_TYPE 205 +#define MIB_HW_TX_POWER_CCK 206 +#define MIB_HW_TX_POWER_OFDM 207 +#define MIB_HW_ANT_DIVERSITY 208 +#define MIB_HW_TX_ANT 209 +#define MIB_HW_CCA_MODE 210 +#define MIB_HW_PHY_TYPE 211 +#define MIB_HW_LED_TYPE 212 +#define MIB_HW_INIT_GAIN 213 + + +#ifdef TLS_CLIENT +#define MIB_ROOT_IDX 214 +#define MIB_USER_IDX 215 +#endif +#ifdef ROUTE_SUPPORT +#define MIB_STATICROUTE_ENABLED 216 +#define MIB_STATICROUTE_TBL_NUM 217 +#define MIB_STATICROUTE_TBL ((MIB_STATICROUTE_TBL_NUM+1)|MIB_TABLE_LIST) /*218*/ +#define MIB_STATICROUTE_ADD ((MIB_STATICROUTE_TBL_NUM+2) | MIB_ADD_TBL_ENTRY) +#define MIB_STATICROUTE_DEL ((MIB_STATICROUTE_TBL_NUM+3) | MIB_DEL_TBL_ENTRY) +#define MIB_STATICROUTE_MOD ((MIB_STATICROUTE_TBL_NUM+3) | MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) +#define MIB_STATICROUTE_DELALL ((MIB_STATICROUTE_TBL_NUM+4) | MIB_DELALL_TBL_ENTRY)/*221*/ +#define MIB_RIP_ENABLED 222 +#define MIB_RIP_LAN_TX 223 +#define MIB_RIP_LAN_RX 224 +#define MIB_RIP_WAN_TX 225 +#define MIB_RIP_WAN_RX 226 +#ifdef RIP6_SUPPORT +#define MIB_RIP6_ENABLED 222+2254 +#endif +#endif + +#define MIB_REMOTELOG_ENABLED 227 +#define MIB_REMOTELOG_SERVER 228 + +#ifdef HOME_GATEWAY +#ifdef DOS_SUPPORT +#define MIB_DOS_ENABLED 229 +#define MIB_DOS_SYSSYN_FLOOD 230 +#define MIB_DOS_SYSFIN_FLOOD 231 +#define MIB_DOS_SYSUDP_FLOOD 232 +#define MIB_DOS_SYSICMP_FLOOD 233 +#define MIB_DOS_PIPSYN_FLOOD 234 +#define MIB_DOS_PIPFIN_FLOOD 235 +#define MIB_DOS_PIPUDP_FLOOD 236 +#define MIB_DOS_PIPICMP_FLOOD 237 +#define MIB_DOS_BLOCK_TIME 238 +#endif +#define MIB_URLFILTER_ENABLED 239 +#define MIB_URLFILTER_TBL_NUM 240 +#define MIB_URLFILTER_TBL ((MIB_URLFILTER_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_URLFILTER_ADD ((MIB_URLFILTER_TBL_NUM+2) | MIB_ADD_TBL_ENTRY) +#define MIB_URLFILTER_DEL ((MIB_URLFILTER_TBL_NUM+3) | MIB_DEL_TBL_ENTRY) +#define MIB_URLFILTER_DELALL ((MIB_URLFILTER_TBL_NUM+4)| MIB_DELALL_TBL_ENTRY) +//#define MIB_URLFILTER_MODE 255 + +#define MIB_VPN_PASSTHRU_IPSEC_ENABLED 245 +#define MIB_VPN_PASSTHRU_PPTP_ENABLED 246 +#define MIB_VPN_PASSTHRU_L2TP_ENABLED 247 +#define MIB_CUSTOM_PASSTHRU_ENABLED 386 +#endif + +//#ifdef SNMP_SUPPORT Keith remove +#define MIB_SNMP_RO_COMMUNITY 248 +#define MIB_SNMP_RW_COMMUNITY 249 +//#endif Keith remove +#ifdef UNIVERSAL_REPEATER +#define MIB_REPEATER_ENABLED1 250 +#define MIB_REPEATER_SSID1 251 +#define MIB_REPEATER_ENABLED2 252 +#define MIB_REPEATER_SSID2 253 +#endif + +// added by rock ///////////////////////////////////////// +#ifdef VOIP_SUPPORT +#define MIB_VOIP_CFG 254 +#endif // VOIP_SUPPORT + +#define MIB_URLFILTER_MODE 255 + +#define MIB_WIFI_SPECIFIC 260 + +#define MIB_PPP_SERVICE_NAME 261 + +#define MIB_WLAN_TURBO_MODE 262 +#define MIB_WLAN_RFPOWER_SCALE 263 + +#if defined(WIFI_SIMPLE_CONFIG) || defined(HAVE_WIFI_SIMPLE_CONFIG) +#define MIB_WLAN_WSC_DISABLE 270 +#define MIB_WLAN_WSC_METHOD 271 +#define MIB_WLAN_WSC_CONFIGURED 272 +#define MIB_HW_WSC_PIN 273 +#define MIB_WLAN_WSC_AUTH 274 +#define MIB_WLAN_WSC_ENC 275 +#define MIB_WLAN_WSC_MANUAL_ENABLED 276 +#define MIB_WLAN_WSC_PSK 277 +#define MIB_WLAN_WSC_SSID 278 +#define MIB_WLAN_WSC_UPNP_ENABLED 279 +#define MIB_WLAN_WSC_REGISTRAR_ENABLED 280 +#define MIB_WLAN_WSC_CONFIGBYEXTREG 281 +#endif +//Brad addd +#define MIB_DAYLIGHT_SAVE 282 +#define MIB_IGMP_PROXY_DISABLED 283 +//Brad add for 11N +#define MIB_WLAN_CHANNEL_BONDING 284 +#define MIB_WLAN_CONTROL_SIDEBAND 285 +#define MIB_WLAN_AGGREGATION 286 +#define MIB_WLAN_SHORT_GI 287 +//Brad define +#define MIB_WLAN_WEP64_KEY 288 +#define MIB_WLAN_WEP128_KEY 289 + +#define MIB_HW_11N_XCAP 290 +#define MIB_HW_11N_RXIMR 291 +#define MIB_DHCPRSVDIP_ENABLED 292 +#define MIB_DHCPRSVDIP_TBL_NUM 293 +#define MIB_DHCPRSVDIP_TBL ((MIB_DHCPRSVDIP_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_DHCPRSVDIP_ADD ((MIB_DHCPRSVDIP_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_DHCPRSVDIP_DEL ((MIB_DHCPRSVDIP_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_DHCPRSVDIP_DELALL ((MIB_DHCPRSVDIP_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) +#define MIB_HW_11N_LOFDMPWD 298 +#define MIB_HW_11N_ANTPWD_B 299 +#define MIB_HW_11N_ANTPWD_C 300 +#define MIB_HW_11N_ANTPWD_D 301 +#define MIB_HW_11N_THER_RFIC 302 +#define MIB_HW_WLAN_ADDR1 303 +#define MIB_HW_WLAN_ADDR2 304 +#define MIB_HW_WLAN_ADDR3 305 +#define MIB_HW_WLAN_ADDR4 306 + +// GW_QOS_ENGINE +#define MIB_QOS_ENABLED 307 +#define MIB_QOS_AUTO_UPLINK_SPEED 308 +#define MIB_QOS_MANUAL_UPLINK_SPEED 309 +#define MIB_QOS_RULE_TBL_NUM 310 +#define MIB_QOS_RULE_TBL ((MIB_QOS_RULE_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_QOS_ADD ((MIB_QOS_RULE_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_QOS_DEL ((MIB_QOS_RULE_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_QOS_DELALL ((MIB_QOS_RULE_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + +#define MIB_WLAN_ACCESS 315 +#define MIB_WLAN_PRIORITY 316 + +#define MIB_START_MP 317 + +#define MIB_SYSTIME_YEAR 321 +#define MIB_SYSTIME_MON 322 +#define MIB_SYSTIME_DAY 323 +#define MIB_SYSTIME_HOUR 324 +#define MIB_SYSTIME_MIN 325 +#define MIB_SYSTIME_SEC 326 + +/* # keith: add l2tp support. 20080515 */ +#define MIB_L2TP_IP_ADDR 331 +#define MIB_L2TP_SUBNET_MASK 332 +#define MIB_L2TP_SERVER_IP_ADDR 333 +#define MIB_L2TP_USER_NAME 334 +#define MIB_L2TP_PASSWORD 335 +#define MIB_L2TP_MTU_SIZE 336 +#define MIB_L2TP_CONNECTION_TYPE 337 +#define MIB_L2TP_IDLE_TIME 338 + +// Patch for our router under another router to dial up l2tp +#define MIB_L2TP_DEFAULT_GW 339 + +// Patch for our router under another router to dial up pptp +#define MIB_PPTP_DEFAULT_GW 340 +#define MIB_PPTP_WAN_IP_DYNAMIC 341 +#ifdef CONFIG_GET_SERVER_IP_BY_DOMAIN +#define MIB_PPTP_SERVER_DOMAIN 342 +#define MIB_PPTP_GET_SERV_BY_DOMAIN 343 +#endif +#ifndef _PATH_PROCNET_DEV +#define _PATH_PROCNET_DEV "/proc/net/dev" +#endif +#ifndef _PATH_PROCNET_IFINET6 +#define _PATH_PROCNET_IFINET6 "/proc/net/if_inet6" +#endif +#define MIB_HAME_LANG 16029 +#ifdef CONFIG_IPV6 +#ifdef CONFIG_IPV6_CE_ROUTER_SUPPORT +#define MIB_IPV6_ULA_ENABLE 350 +#define MIB_IPV6_ULA_MODE 351 +#define MIB_IPV6_ADDR_ULA_PARAM 352 +#endif +#define MIB_IPV6_ID 370 +#define MIB_IPV6_RADVD_PARAM (MIB_IPV6_ID) +#define MIB_IPV6_DNSV6_PARAM (MIB_IPV6_ID+1) +#define MIB_IPV6_DHCPV6S_PARAM (MIB_IPV6_ID+2) +#define MIB_IPV6_ADDR_PARAM (MIB_IPV6_ID+3) +#define MIB_IPV6_TUNNEL_PARAM (MIB_IPV6_ID+4) +#define MIB_IPV6_DHCPV6C_PARAM (MIB_IPV6_ID+5) +#define MIB_IPV6_ADDR6_PARAM (MIB_IPV6_ID+6) +#define MIB_IPV6_ADDR_LAN_PARAM (MIB_IPV6_ID+7) +#define MIB_IPV6_ADDR_WAN_PARAM (MIB_IPV6_ID+8) +#define MIB_IPV6_ADDR_GW_PARAM (MIB_IPV6_ID+9) +#define MIB_IPV6_ADDR_PFEFIX_PARAM (MIB_IPV6_ID+10) +#define MIB_IPV6_ADDR_DNS_PARAM (MIB_IPV6_ID+11) +#define MIB_IPV6_ADDR_DNS_SECONDARY 369 +#define MIB_IPV6_ORIGIN_TYPE (MIB_IPV6_ID+12) +#define MIB_IPV6_LINK_TYPE (MIB_IPV6_ID+13) +#define MIB_IPV6_WAN_ENABLE (MIB_IPV6_ID+14) +#define MIB_IPV6_DNS_AUTO (MIB_IPV6_ID+15) +#define MIB_MLD_PROXY_DISABLED (MIB_IPV6_ID+16) +#define MIB_IPV6_DHCP_MODE (MIB_IPV6_ID+17) +#define MIB_IPV6_DHCP_PD_ENABLE (MIB_IPV6_ID+18) +#define MIB_IPV6_DHCP_RAPID_COMMIT_ENABLE (MIB_IPV6_ID+19) +#define MIB_IPV6_DHCPC_RAPID_COMMIT (MIB_IPV6_ID+20) +#ifdef TR181_SUPPORT +#define IPV6_DHCPC_SENDOPT_NUM 10 +#define IPV6_DHCPC_RCVOPT_NUM 16 +#define MIB_IPV6_DHCPC_REQUEST_ADDR (MIB_IPV6_ID+21) +#define MIB_IPV6_DHCPC_SUGGESTEDT1 (MIB_IPV6_ID+22) +#define MIB_IPV6_DHCPC_SUGGESTEDT2 (MIB_IPV6_ID+23) +#define MIB_IPV6_DHCPC_SENDOPT_TBL_NUM (MIB_IPV6_ID+25) +#define MIB_IPV6_DHCPC_SENDOPT_TBL ((MIB_IPV6_DHCPC_SENDOPT_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_IPV6_DHCPC_SENDOPT_MOD ((MIB_IPV6_DHCPC_SENDOPT_TBL_NUM+3) | MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) + +#define MIB_IPV6_DHCPC_SENDOPT_ENABLE (MIB_IPV6_ID+31) +#define MIB_IPV6_DHCPC_SENDOPT_TAG (MIB_IPV6_ID+32) +#define MIB_IPV6_DHCPC_SENDOPT_VALUE (MIB_IPV6_ID+33) +#define MIB_IPV6_DHCPC_IFACE (MIB_IPV6_ID+34) +#define MIB_IPV6_DHCPC_SENDOPT_INDEX (MIB_IPV6_ID+35) + + +#endif +typedef enum IPV6_ORIGIN_T_ +{ + IPV6_ORIGIN_DHCP =0, + IPV6_ORIGIN_STATIC =1, + IPV6_ORIGIN_NONE =3 +} IPV6_ORIGIN_T; + +typedef enum IPV6_LINKTYPE_T_ +{ + IPV6_LINKTYPE_IP=0, + IPV6_LINKTYPE_PPP=1 +}IPV6_LINKTYPE_T; + +typedef enum IPV6_DHCP_MODE_T_ +{ + IPV6_DHCP_STATELESS=0, + IPV6_DHCP_STATEFUL=1 +}IPV6_DHCP_MODE_T; + + +#endif + +#ifdef TR181_SUPPORT +/* add for Device.DNS. Device.DNS.Client. and Device.DNS.Client.Server.{i}. */ +#define MIB_DNS_CLIENT_ENABLE 406 +#ifdef CONFIG_IPV6 +#define DNS_CLIENT_SERVER_NUM 10 +#else +#define DNS_CLIENT_SERVER_NUM 6 +#endif +#define MIB_DNS_CLIENT_SERVER_TBL_NUM 408 +#define MIB_DNS_CLIENT_SERVER_TBL ((MIB_DNS_CLIENT_SERVER_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_DNS_CLIENT_SERVER_MOD ((MIB_DNS_CLIENT_SERVER_TBL_NUM+3) | MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) + +#define MIB_DNS_CLIENT_SERVER_INDEX 414 +#define MIB_DNS_CLIENT_SERVER_ENABLE 415 +#define MIB_DNS_CLIENT_SERVER_STATUS 416 +//#define MIB_DNS_CLIENT_SERVER_ALIAS MIB_IPV6_ID+47 +#define MIB_DNS_CLIENT_SERVER_IPADDR 418 +//#define MIB_DNS_CLIENT_SERVER_IF MIB_IPV6_ID+49 +#define MIB_DNS_CLIENT_SERVER_TYPE 420 +#endif + +#ifdef CONFIG_RTL_8198C +#define MIB_IPV6_ADDR_AFTR_PARAM 421 +#define MIB_DSLITE_MODE 422 +#define MIB_IPV6_6RD_PREFIX_PARAM 423 +#define MIB_IPV4_6RD_MASK_LEN 424 +#define MIB_IPV4_6RD_BR_ADDR 425 +#endif + + +// SNMP, Forrest added, 2007.10.25. +#ifdef CONFIG_SNMP +#define MIB_SNMP_ENABLED 435 +#define MIB_SNMP_NAME 436 +#define MIB_SNMP_LOCATION 437 +#define MIB_SNMP_CONTACT 438 +#define MIB_SNMP_RWCOMMUNITY 439 +#define MIB_SNMP_ROCOMMUNITY 440 +#define MIB_SNMP_TRAP_RECEIVER1 441 +#define MIB_SNMP_TRAP_RECEIVER2 442 +#define MIB_SNMP_TRAP_RECEIVER3 443 +#endif + +//### add by sen_liu 2011.3.29 TX Beamforming added to mib in 92D +#define MIB_WLAN_TX_BEAMFORMING 450 +//### end + +/*hf add for country str*/ +#define MIB_WLAN_COUNTRY_STRING 451 +/*end*/ + +#define MIB_WLAN_TX_RESTRICT 452 +#define MIB_WLAN_RX_RESTRICT 453 + +/* # keith: add l2tp support. 20080515 */ +#ifdef CONFIG_GET_SERVER_IP_BY_DOMAIN +#define MIB_L2TP_GET_SERV_BY_DOMAIN 499 +#define MIB_L2TP_SERVER_DOMAIN 500 +#endif +#define MIB_L2TP_WAN_IP_DYNAMIC 501 +#define MIB_L2TP_GATEWAY 502 +//SCHEDULE + +#define MIB_WLAN_SCHEDULE_ENABLED 503 +#define MIB_WLAN_SCHEDULE_TBL_NUM 504 +#define MIB_WLAN_SCHEDULE_TBL ((MIB_WLAN_SCHEDULE_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_WLAN_SCHEDULE_ADD ((MIB_WLAN_SCHEDULE_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_WLAN_SCHEDULE_DEL ((MIB_WLAN_SCHEDULE_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_WLAN_SCHEDULE_DELALL ((MIB_WLAN_SCHEDULE_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + +#define MIB_PPTP_CONNECTION_TYPE 509 +#define MIB_PPTP_IDLE_TIME 510 + + +//NewAdd For rtl8196B +#define MIB_HW_WLAN_ADDR5 511 +#define MIB_HW_WLAN_ADDR6 512 +#define MIB_HW_WLAN_ADDR7 513 + +#define MIB_HW_TX_POWER_OFDM_1S 514 +#define MIB_HW_TX_POWER_OFDM_2S 515 +#define MIB_HW_11N_LOFDMPWDA 516 +#define MIB_HW_11N_LOFDMPWDB 517 +#define MIB_HW_11N_TSSI1 518 +#define MIB_HW_11N_TSSI2 519 +#define MIB_HW_11N_THER 520 +#define MIB_HW_11N_TRSWITCH 521 //MIB_HW_11N_ESERVED1->MIB_HW_11N_TRSWITCH +#define MIB_HW_11N_TRSWPAPE_C9 522 +#define MIB_HW_11N_TRSWPAPE_CC 523 +#define MIB_HW_11N_TARGET_PWR 524 +#define MIB_HW_11N_PA_TYPE 525 +#define MIB_HW_11N_THER_2 526 +#define MIB_HW_11N_XCAP_2 527 +#define MIB_HW_11N_RESERVED8 528 + +/*-----end-----*/ + +// SNMP maximum length of fields, Forrest added, 2007.10.25. +#ifdef CONFIG_SNMP +#define MAX_SNMP_NAME_LEN 64 +#define MAX_SNMP_LOCATION_LEN 64 +#define MAX_SNMP_CONTACT_LEN 64 +#define MAX_SNMP_COMMUNITY_LEN 64 +#endif + +//=========add for MESH========= +//#ifdef CONFIG_RTK_MESH Keith remove +#define MIB_WLAN_MESH_ENABLE 644 //new feature:Mesh enable/disable +#define MIB_WLAN_MESH_ROOT_ENABLE 551 +#define MIB_WLAN_MESH_ID 554 +#define MIB_WLAN_MESH_MAX_NEIGHTBOR 555 +#define MIB_WLAN_MESH_ENCRYPT 559 +#define MIB_WLAN_MESH_PSK_FORMAT 560 +#define MIB_WLAN_MESH_WPA_PSK 561 +#define MIB_WLAN_MESH_WPA_AUTH 562 +#define MIB_WLAN_MESH_WPA2_CIPHER_SUITE 563 + +//#ifdef _MESH_ACL_ENABLE_ Keith remove +#define MIB_WLAN_MESH_ACL_ENABLED 580 +#define MIB_WLAN_MESH_ACL_NUM 581 +#define MIB_WLAN_MESH_ACL_ADDR ((MIB_WLAN_MESH_ACL_NUM+1)|MIB_TABLE_LIST) +#define MIB_WLAN_MESH_ACL_ADDR_ADD ((MIB_WLAN_MESH_ACL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_WLAN_MESH_ACL_ADDR_DEL ((MIB_WLAN_MESH_ACL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_WLAN_MESH_ACL_ADDR_DELALL ((MIB_WLAN_MESH_ACL_NUM+4)|MIB_DELALL_TBL_ENTRY) +//#endif Keith remove + +//#ifdef _11s_TEST_MODE_ Keith remove +#define MIB_WLAN_MESH_TEST_PARAM1 600 +#define MIB_WLAN_MESH_TEST_PARAM2 601 +#define MIB_WLAN_MESH_TEST_PARAM3 602 +#define MIB_WLAN_MESH_TEST_PARAM4 603 +#define MIB_WLAN_MESH_TEST_PARAM5 604 +#define MIB_WLAN_MESH_TEST_PARAM6 605 +#define MIB_WLAN_MESH_TEST_PARAM7 606 +#define MIB_WLAN_MESH_TEST_PARAM8 607 +#define MIB_WLAN_MESH_TEST_PARAM9 608 +#define MIB_WLAN_MESH_TEST_PARAMA 609 +#define MIB_WLAN_MESH_TEST_PARAMB 610 +#define MIB_WLAN_MESH_TEST_PARAMC 611 +#define MIB_WLAN_MESH_TEST_PARAMD 612 +#define MIB_WLAN_MESH_TEST_PARAME 613 +#define MIB_WLAN_MESH_TEST_PARAMF 614 +#define MIB_WLAN_MESH_TEST_PARAMSTR1 615 +//#endif Keith remove +//#endif // CONFIG_RTK_MESH Keith remove +//=========add for MESH========= + +#define MIB_VLANCONFIG_ENABLED 616 +#define MIB_VLANCONFIG_TBL_NUM 617 +#define MIB_VLANCONFIG_TBL ((MIB_VLANCONFIG_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_VLANCONFIG_ADD ((MIB_VLANCONFIG_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_VLANCONFIG_DEL ((MIB_VLANCONFIG_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_VLANCONFIG_DELALL ((MIB_VLANCONFIG_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + +//#ifdef CONFIG_RTL_WAPI_SUPPORT Keith remove +//WAPI start from 630 +#define MIB_WLAN_WAPI_PSK 630 +#define MIB_WLAN_WAPI_PSKLEN 631 +#define MIB_WLAN_WAPI_PSK_FORMAT 632 +#define MIB_WLAN_WAPI_AUTH 633 +#define MIB_WLAN_WAPI_ASIPADDR 634 +#define MIB_WLAN_WAPI_SEARCHINFO 635 +#define MIB_WLAN_WAPI_SEARCHINDEX 636 +#define MIB_WLAN_WAPI_MCASTREKEY 637 +#define MIB_WLAN_WAPI_MCAST_TIME 638 +#define MIB_WLAN_WAPI_MCAST_PACKETS 639 +#define MIB_WLAN_WAPI_UCASTREKEY 640 +#define MIB_WLAN_WAPI_UCAST_TIME 641 +#define MIB_WLAN_WAPI_UCAST_PACKETS 642 +#define MIB_WLAN_WAPI_CA_INIT 643 + +//Added to support two remote as and one local as at the same time +#define MIB_WLAN_WAPI_CERT_SEL 656 + +#define MIB_WLAN_WAPI_AUTH_MODE_2or3_CERT 657 + +#define MIB_NAT_ENABLED 645 +#define MIB_WLAN_STBC_ENABLED 646 +#define MIB_WLAN_COEXIST_ENABLED 647 +#define MIB_WLAN_LDPC_ENABLED 648 +#define MIB_SAMBA_ENABLED 650 +#define MIB_WLAN_LOWEST_MLCST_RATE 663 +#define MIB_WLAN_MC2U_DISABLED 664 +#define MIB_MIB_VER 655 + +//#ifdef CONFIG_RTL_WAPI_SUPPORT Keith remove +#define CERTS_DATABASE "/var/myca/index.txt" +#define ONE_DAY_SECONDS 86400 +#define USER_NAME_LEN 32 +typedef struct _CertsDbEntry_ { + unsigned char userName[USER_NAME_LEN]; //user name of this user cert + unsigned long serial; //serial of this cert + unsigned short validDays; //total valid days of this cert + unsigned short validDaysLeft; //the left valid days of this cert + unsigned char certType; //0(default): X.509; others: reserved + unsigned char certStatus; //0(default): valid; 1: expired; 2: revoked +} CERTS_DB_ENTRY_T, *CERTS_DB_ENTRY_Tp; +//#endif Keith remove +//WAPI END + +// GW_QOS_ENGINE +#define MIB_QOS_AUTO_DOWNLINK_SPEED 651 +#define MIB_QOS_MANUAL_DOWNLINK_SPEED 652 + +//11n onoff TKIP +#define MIB_WLAN_11N_ONOFF_TKIP 660 + +#if (defined CONFIG_RTL_BT_CLIENT) || (defined CONFIG_RTL_TRANSMISSION) +#define MIB_BT_UPLOAD_DIR 680 +#define MIB_BT_DOWNLOAD_DIR 681 +#define MIB_BT_TOTAL_ULIMIT 682 +#define MIB_BT_TOTAL_DLIMIT 683 +#define MIB_BT_REFRESH_TIME 684 +#define MIB_BT_ENABLED 685 +#endif + +#define MIB_WLAN_ACK_TIMEOUT 686 + +#ifdef WLAN_HS2_CONFIG +#define MIB_WLAN_HS2_ENABLE 687 +#endif + + +#define BRIDGE_ETHERNET 0 +#define BRIDGE_PPPOE 1 +#define BRIDGE_DISABLE 2 +typedef enum { IP_BRIDGE=0, IP_ROUTE=1, IP_PPP=2} CMODE_T; //WANIface Mode Not the Method of getting IP address +/*+++++added by Jack for Tr-069 configuration+++++*/ +#ifdef CONFIG_APP_TR069 +/* Keith add for tr069 --start */ +#undef mib_get +#undef mib_set +#undef mib_update +#define MAX_WAN_NAME_LEN 40 // E8 WAN connection name +// resv | media | ppp | vc +#define MAX_VC_NUM 8 +#define MAX_PPP_NUM 8 +#define PHY_INTF(x) (x | 0xff00)/*physical interface*/ +#define VC_INDEX(x) (x & 0x0ff) +#define ETH_INDEX(x) (x & 0x0ff) +#define PPP_INDEX(x) ((x >> 8) & 0x0ff) +#define MEDIA_INDEX(x) ((x >> 16) & 0x0ff) +#define TO_IFINDEX(x,y,z) ((x<<16) | (y<<8) | z) +#define DUMMY_VC_INDEX 0xff +#define DUMMY_PPP_INDEX 0xff +#define DUMMY_IFINDEX 0xffff +#define NA_PPP 0xefff +#define NA_VC 0xffff +#define MAX_POE_PER_VC 5 +#define STR_LEN_64 64 + + + +typedef enum { MEDIA_ATM, MEDIA_ETH } MEDIA_TYPE_T; +typedef enum { APPTYPE_TR069_INTERNET, APPTYPE_INTERNET, APPTYPE_TR069, + APPTYPE_OTHER, APPTYPE_VOICE, APPTYPE_TR069_VOICE, + APPTYPE_VOICE_INTERNET, APPTYPE_TR069_VOICE_INTERNET } APPTYPE_T; +typedef enum { PPP_AUTH_AUTO=0, PPP_AUTH_PAP, PPP_AUTH_CHAP, PPP_AUTH_NONE } PPP_AUTH_T; + +#define mib_get(S, T) apmib_get(S, T) +#define mib_set(S, T) apmib_set(S, T) +#define mib_update(S) apmib_update(S) +#define LANDEVNAME2BR0(a) do{ if(a && (strncmp(a, "eth0", 4)==0||strncmp(a, "wlan0", 5)==0||strncmp(a, "usb0", 4)==0)) strcpy(a, "br0"); }while(0) + +#ifdef CONFIG_USER_CWMP_WITH_SSL +#define _CWMP_WITH_SSL_ 1 +#endif //CONFIG_USER_CWMP_WITH_SSL + +#if defined(CONFIG_USER_CWMP_WITH_TR143) +#define _PRMT_TR143_ 1 +#endif + +#define TIME_ZONE +#define _PRMT_USERINTERFACE_ +#define WLAN_SUPPORT + +#ifdef MBSSID +#define WLAN_MBSSID 1 +#endif + +#ifdef UNIVERSAL_REPEATER +#define WLAN_REPEATER +#endif + +#define MAC_FILTER +#define ENABLE_WPAAES_WPA2TKIP + +//--- for TR098 ------------------------------- +#define MOD_FOR_TR098 /* brucehou */ +#if defined(MOD_FOR_TR098) + #define MOD_FOR_TR098_LAYER3FWD + #define MOD_FOR_TR098_LANDEVICE + #define MOD_FOR_TR098_VAP + #define MOD_FOR_TR098_PORTMAP + + + #if defined(CONFIG_RTL_92D_SUPPORT) + #define MOD_FOR_TR098_DUALBAND + #endif + +#endif /* #if defined(MOD_FOR_TR098) */ +//--- for TR098 ------------------------------- + +/* Keith add for tr069 --end */ +///////////////////////////////////////////////////////////////////////////Enable for E8C +#define ALIASNAME_VC "vc" +#define ALIASNAME_BR "br" +#define ALIASNAME_NAS "nas" +#define ALIASNAME_DSL "dsl" +#define ALIASNAME_ETH "eth" +#define ALIASNAME_WLAN "wlan" +#define ALIASNAME_PPP "ppp" +#define ALIASNAME_MWNAS "nas0_" +#define ALIASNAME_ETH0DOT "eth0." + +#if defined(_PRMT_TR143_) +#define RTL_DEV_NAME_NUM(name,num) name#num + +#define ALIASNAME_VC0 RTL_DEV_NAME_NUM(ALIASNAME_VC,0)//"vc0" +#define ALIASNAME_BR0 RTL_DEV_NAME_NUM(ALIASNAME_BR,0)//"br0" +#define ALIASNAME_WLAN0 RTL_DEV_NAME_NUM(ALIASNAME_WLAN,0)//"wlan0" +#define ALIASNAME_WLAN1 RTL_DEV_NAME_NUM(ALIASNAME_WLAN,1)//"wlan1" +#define ALIASNAME_NAS0 RTL_DEV_NAME_NUM(ALIASNAME_NAS,0)//nas0 +#define ALIASNAME_DSL0 RTL_DEV_NAME_NUM(ALIASNAME_DSL,0)//dsl0 +#define ALIASNAME_ETH0 RTL_DEV_NAME_NUM(ALIASNAME_ETH,0)//eth0 +#define ALIASNAME_PPP0 RTL_DEV_NAME_NUM(ALIASNAME_PPP,0)//ppp0 + +#define ALIASNAME_VAP "-vap" //must include '-' at fast +#define ALIASNAME_WLAN0_VAP RTL_DEV_NAME_NUM(ALIASNAME_WLAN0,-vap)//"wlan0-vap" +#define ALIASNAME_WLAN1_VAP RTL_DEV_NAME_NUM(ALIASNAME_WLAN1,-vap)//"wlan1-vap" +#define ALIASNAME_WLAN0__VAP RTL_DEV_NAME_NUM(ALIASNAME_WLAN0,_vap)//"wlan0_vap" +#define ALIASNAME_WLAN0__VAP0 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0__VAP,0)//"wlan0_vap0" +#define ALIASNAME_WLAN0__VAP1 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0__VAP,1)//"wlan0_vap1" +#define ALIASNAME_WLAN0__VAP2 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0__VAP,2)//"wlan0_vap2" +#define ALIASNAME_WLAN0__VAP3 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0__VAP,3)//"wlan0_vap3" + +#define ALIASNAME_WLAN0_VAP0 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0_VAP,0)//"wlan0-vap0" +#define ALIASNAME_WLAN0_VAP1 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0_VAP,1)//"wlan0-vap1" +#define ALIASNAME_WLAN0_VAP2 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0_VAP,2)//"wlan0-vap2" +#define ALIASNAME_WLAN0_VAP3 RTL_DEV_NAME_NUM(ALIASNAME_WLAN0_VAP,3)//"wlan0-vap3" + +#define ALIASNAME_WLAN1_VAP0 RTL_DEV_NAME_NUM(ALIASNAME_WLAN1_VAP,0)//"wlan0-vap0" +#define ALIASNAME_WLAN1_VAP1 RTL_DEV_NAME_NUM(ALIASNAME_WLAN1_VAP,1)//"wlan0-vap0" +#define ALIASNAME_WLAN1_VAP2 RTL_DEV_NAME_NUM(ALIASNAME_WLAN1_VAP,2)//"wlan0-vap0" +#define ALIASNAME_WLAN1_VAP3 RTL_DEV_NAME_NUM(ALIASNAME_WLAN1_VAP,3)//"wlan0-vap0" + +#define ALIASNAME_ETH0DOT2 RTL_DEV_NAME_NUM(ALIASNAME_ETH0DOT,2) +#define ALIASNAME_ETH0DOT3 RTL_DEV_NAME_NUM(ALIASNAME_ETH0DOT,3) +#define ALIASNAME_ETH0DOT4 RTL_DEV_NAME_NUM(ALIASNAME_ETH0DOT,4) +#define ALIASNAME_ETH0DOT5 RTL_DEV_NAME_NUM(ALIASNAME_ETH0DOT,5) + +#define ALIASNAME_ETH0_SW RTL_DEV_NAME_NUM(ALIASNAME_ETH0,_sw) +#define ALIASNAME_ETH0_SW0 RTL_DEV_NAME_NUM(ALIASNAME_ETH0_SW,0) +#define ALIASNAME_ETH0_SW1 RTL_DEV_NAME_NUM(ALIASNAME_ETH0_SW,1) +#define ALIASNAME_ETH0_SW2 RTL_DEV_NAME_NUM(ALIASNAME_ETH0_SW,2) +#define ALIASNAME_ETH0_SW3 RTL_DEV_NAME_NUM(ALIASNAME_ETH0_SW,3) + +#define ALIASNAME_BR00 RTL_DEV_NAME_NUM(ALIASNAME_BR0,:0) +#define ALIASNAME_BR01 RTL_DEV_NAME_NUM(ALIASNAME_BR0,:1) + +typedef enum +{ + ITF_ALL=0, + ITF_WAN, //wan pppx or vcx + ITF_LAN, //br0 + + ITF_ETH0, //eth0 + ITF_ETH0_SW0, //eth0_sw0 + ITF_ETH0_SW1, //eth0_sw1 + ITF_ETH0_SW2, //eth0_sw2 + ITF_ETH0_SW3, //eth0_sw3 + + ITF_WLAN0, //wlan0 + ITF_WLAN0_VAP0, //wlan0-vap0 + ITF_WLAN0_VAP1, //wlan0-vap1 + ITF_WLAN0_VAP2, //wlan0-vap2 + ITF_WLAN0_VAP3, //wlan0-vap3 + + ITF_WLAN1, //wlan0 + ITF_WLAN1_VAP0, //wlan0-vap0 + ITF_WLAN1_VAP1, //wlan0-vap1 + ITF_WLAN1_VAP2, //wlan0-vap2 + ITF_WLAN1_VAP3, //wlan0-vap3 + + ITF_USB0, //usb0 + + ITF_END //last one +} ITF_T; +extern char *strItf[]; +#endif //_PRMT_TR143_ + +#define DEF_MANUFACTURER_STR "REALTEK SEMICONDUCTOR CORP." +#define DEF_MANUFACTUREROUI_STR "00E04C" + +#define DEF_PRODUCTCLASS_STR "IGD" + +#define CWMP_ID 700 +#define MIB_CWMP_ENABLED CWMP_ID + 0 +#define MIB_CWMP_PROVISIONINGCODE CWMP_ID + 1 //069 +#define MIB_CWMP_ACS_URL CWMP_ID + 2 //069 +#define MIB_CWMP_ACS_USERNAME CWMP_ID + 3 //069 +#define MIB_CWMP_ACS_PASSWORD CWMP_ID + 4 //069 +#define MIB_CWMP_INFORM_ENABLE CWMP_ID + 5 //069 +#define MIB_CWMP_INFORM_INTERVAL CWMP_ID + 6 //069 +#define MIB_CWMP_INFORM_TIME CWMP_ID + 7 +#define MIB_CWMP_CONREQ_USERNAME CWMP_ID + 8 +#define MIB_CWMP_CONREQ_PASSWORD CWMP_ID + 9 +#define MIB_CWMP_ACS_UPGRADESMANAGED CWMP_ID + 10 //069 +#define MIB_CWMP_LAN_CONFIGPASSWD CWMP_ID + 11 +#define MIB_CWMP_SERIALNUMBER CWMP_ID + 12 //069 +#define MIB_CWMP_DHCP_SERVERCONF CWMP_ID + 13 +#define MIB_CWMP_LAN_IPIFENABLE CWMP_ID + 14 +#define MIB_CWMP_LAN_ETHIFENABLE CWMP_ID + 15 +#define MIB_CWMP_WLAN_BASICENCRY CWMP_ID + 16 +#define MIB_CWMP_WLAN_WPAENCRY CWMP_ID + 17 +#define MIB_CWMP_DL_COMMANDKEY CWMP_ID + 18 +#define MIB_CWMP_DL_STARTTIME CWMP_ID + 19 +#define MIB_CWMP_DL_COMPLETETIME CWMP_ID + 20 +#define MIB_CWMP_DL_FAULTCODE CWMP_ID + 21 +#define MIB_CWMP_INFORM_EVENTCODE CWMP_ID + 22 +#define MIB_CWMP_RB_COMMANDKEY CWMP_ID + 23 +#define MIB_CWMP_ACS_PARAMETERKEY CWMP_ID + 24 +#define MIB_CWMP_CERT_PASSWORD CWMP_ID + 25 +#define MIB_CWMP_FLAG CWMP_ID + 26 +#define MIB_CWMP_SI_COMMANDKEY CWMP_ID + 27 /*ScheduleInform's commandkey*/ + +#ifdef _PRMT_USERINTERFACE_ /*InternetGatewayDevice.UserInterface.*/ +#define MIB_UIF_PW_REQUIRED CWMP_ID + 28 /*PasswordRequired*/ +#define MIB_UIF_PW_USER_SEL CWMP_ID + 29 /*PasswordUserSelectable*/ +#define MIB_UIF_UPGRADE CWMP_ID + 30 /*UpgradeAvailable*/ +#define MIB_UIF_WARRANTYDATE CWMP_ID + 31 /*WarrantyDate*/ +#define MIB_UIF_AUTOUPDATESERVER CWMP_ID + 32 /*AutoUpdateServer*/ +#define MIB_UIF_USERUPDATESERVER CWMP_ID + 33 /*UserUpdateServer*/ +#endif /*_PRMT_USERINTERFACE_*/ + +#define MIB_CWMP_ACS_KICKURL CWMP_ID + 74 +#define MIB_CWMP_ACS_DOWNLOADURL CWMP_ID + 75 +#define MIB_CWMP_CONREQ_PORT CWMP_ID + 76 /*port for connection request*/ +#define MIB_CWMP_CONREQ_PATH CWMP_ID + 77 /*path for connection request*/ +#define MIB_CWMP_FLAG2 CWMP_ID + 78 + +//#ifdef _PRMT_TR143_ +#define MIB_TR143_UDPECHO_ENABLE CWMP_ID + 79 +#define MIB_TR143_UDPECHO_ITFTYPE CWMP_ID + 80 +#define MIB_TR143_UDPECHO_SRCIP CWMP_ID + 81 +#define MIB_TR143_UDPECHO_PORT CWMP_ID + 82 +#define MIB_TR143_UDPECHO_PLUS CWMP_ID + 83 +//#endif //_PRMT_TR143_ + +#define MIB_CWMP_NOTIFY_LIST CWMP_ID + 84 +#define MIB_CWMP_ACS_URL_OLD CWMP_ID + 85 //069 + +#define MIB_CWMP_USERINFO_RESULT CWMP_ID + 92 +#define MIB_CWMP_NEED_REBOOT CWMP_ID + 93 +#define MIB_CWMP_PERSISTENT_DATA CWMP_ID + 97 + +#define MIB_CWMP_PARAMETERKEY CWMP_ID + 109 + +#define MIB_CWMP_PPPCON_INSTNUM CWMP_ID + 110 +#define MIB_CWMP_IPCON_INSTNUM CWMP_ID + 111 +#define MIB_CWMP_PPPCON_CREATED CWMP_ID + 112 +#define MIB_CWMP_IPCON_CREATED CWMP_ID + 113 +#define MIB_CWMP_LAN_ETHIFDISABLE CWMP_ID + 114 +#define MIB_CWMP_WAN_ETHIFDISABLE CWMP_ID + 115 + +#define MIB_CWMP_SW_PORT1_DISABLE CWMP_ID + 116 +#define MIB_CWMP_SW_PORT1_MAXBITRATE CWMP_ID + 117 +#define MIB_CWMP_SW_PORT1_DUPLEXMODE CWMP_ID + 118 + +#define MIB_CWMP_SW_PORT2_DISABLE CWMP_ID + 119 +#define MIB_CWMP_SW_PORT2_MAXBITRATE CWMP_ID + 120 +#define MIB_CWMP_SW_PORT2_DUPLEXMODE CWMP_ID + 121 + +#define MIB_CWMP_SW_PORT3_DISABLE CWMP_ID + 122 +#define MIB_CWMP_SW_PORT3_MAXBITRATE CWMP_ID + 123 +#define MIB_CWMP_SW_PORT3_DUPLEXMODE CWMP_ID + 124 + +#define MIB_CWMP_SW_PORT4_DISABLE CWMP_ID + 125 +#define MIB_CWMP_SW_PORT4_MAXBITRATE CWMP_ID + 126 +#define MIB_CWMP_SW_PORT4_DUPLEXMODE CWMP_ID + 127 + +#define MIB_CWMP_SW_PORT5_DISABLE CWMP_ID + 128 +#define MIB_CWMP_SW_PORT5_MAXBITRATE CWMP_ID + 129 +#define MIB_CWMP_SW_PORT5_DUPLEXMODE CWMP_ID + 130 + +#define MIB_CWMP_RETRY_MIN_WAIT_INTERVAL CWMP_ID + 131 +#define MIB_CWMP_RETRY_INTERVAL_MUTIPLIER CWMP_ID + 132 + +#define MIB_CWMP_UDP_CONN_REQ_ADDR CWMP_ID + 133 +#define MIB_CWMP_STUN_EN CWMP_ID + 134 +#define MIB_CWMP_STUN_SERVER_ADDR CWMP_ID + 135 +#define MIB_CWMP_STUN_SERVER_PORT CWMP_ID + 136 +#define MIB_CWMP_STUN_USERNAME CWMP_ID + 137 +#define MIB_CWMP_STUN_PASSWORD CWMP_ID + 138 +#define MIB_CWMP_STUN_MAX_KEEP_ALIVE_PERIOD CWMP_ID + 139 +#define MIB_CWMP_STUN_MIN_KEEP_ALIVE_PERIOD CWMP_ID + 140 +#define MIB_CWMP_NAT_DETECTED CWMP_ID + 141 + +#define MIB_CWMP_MIB_END CWMP_ID + 200 /* Reserve 200 mib for tr069*/ +#endif /*CONFIG_APP_TR069*/ + +#define MIB_TEST_DATA 10000 + +#define MIB_DHCPRSVDIP_IPADDR 1001 +#define MIB_DHCPRSVDIP_MACADDR 1002 +#define MIB_DHCPRSVDIP_HOSTNAME 1003 + +#define MIB_SCHEDULE_TEXT 1011 +#define MIB_SCHEDULE_ECO 1012 +#define MIB_SCHEDULE_FTIME 1013 +#define MIB_SCHEDULE_TTIME 1014 +#define MIB_SCHEDULE_DAY 1015 + +#define MIB_PORTFW_IPADDR 1021 +#define MIB_PORTFW_FROMPORT 1022 +#define MIB_PORTFW_TOPORT 1023 +#define MIB_PORTFW_PROTOTYPE 1024 +#define MIB_PORTFW_COMMENT 1025 +#define MIB_PORTFW_SVRPORT 1026 +#define MIB_PORTFW_SVRNAME 1027 +#define MIB_PORTFW_INSTANCENUM 1028 +#define MIB_PORTFW_WANIFACE_ID 1029 + +#define MIB_IPFILTER_IPADDR 1031 +#define MIB_IPFILTER_PROTOTYPE 1032 +#define MIB_IPFILTER_COMMENT 1033 +#define MIB_IPFILTER_IP6ADDR 1034 +#define MIB_IPFILTER_IP_VERSION 1035 + +#define MIB_PORTFILTER_FROMPORT 1041 +#define MIB_PORTFILTER_TOPORT 1042 +#define MIB_PORTFILTER_PROTOTYPE 1043 +#define MIB_PORTFILTER_COMMENT 1044 +#define MIB_PORTFILTER_IPVERSION 1045 + +#define MIB_MACFILTER_MACADDR 1051 +#define MIB_MACFILTER_COMMENT 1052 + +#define MIB_TRIGGERPORT_TRI_FROMPORT 1061 +#define MIB_TRIGGERPORT_TRI_TOPORT 1062 +#define MIB_TRIGGERPORT_TRI_PROTOTYPE 1063 +#define MIB_TRIGGERPORT_INC_FROMPORT 1064 +#define MIB_TRIGGERPORT_INC_TOPORT 1065 +#define MIB_TRIGGERPORT_INC_PROTOTYPE 1066 +#define MIB_TRIGGERPORT_COMMENT 1067 + +#define MIB_URLFILTER_URLADDR 1071 +#define MIB_URLFILTER_RULE_MODE 1072 +#ifdef URL_FILTER_USER_MODE_SUPPORT +#define MIB_URLFILTER_IPADDR 1073 +#define MIB_URLFILTER_MACADDR 1074 +#define MIB_URLFILTER_USR_MODE 1075 +#endif + +#define MIB_VLANCONFIG_ENTRY_ENABLED 1081 +#define MIB_VLANCONFIG_NETIFACE 1082 +#define MIB_VLANCONFIG_TAGGED 1083 +#define MIB_VLANCONFIG_UNTAGGED 1084 +#define MIB_VLANCONFIG_PRIORITY 1085 +#define MIB_VLANCONFIG_CFI 1086 +#define MIB_VLANCONFIG_GROUPID 1087 +#define MIB_VLANCONFIG_VLANID 1088 +#if defined(CONFIG_RTK_VLAN_NEW_FEATURE) || defined(CONFIG_RTL_HW_VLAN_SUPPORT) +#define MIB_VLANCONFIG_FORWARDING_RULE 1089 +#endif + +#define MIB_STATICROUTE_DSTADDR 1091 +#define MIB_STATICROUTE_NETMASK 1092 +#define MIB_STATICROUTE_GATEWAY 1093 +#define MIB_STATICROUTE_INTERFACE 1094 +#define MIB_STATICROUTE_METRIC 1095 + +#define MIB_IPSECTUNNEL_TUNNELID 1101 +#define MIB_IPSECTUNNEL_AUTHTYPE 1102 +#define MIB_IPSECTUNNEL_LCTYPE 1103 +#define MIB_IPSECTUNNEL_LC_IPADDR 1104 +#define MIB_IPSECTUNNEL_LC_MASKLEN 1105 +#define MIB_IPSECTUNNEL_RTTYPE 1106 +#define MIB_IPSECTUNNEL_RT_IPADDR 1107 +#define MIB_IPSECTUNNEL_RT_MASKLEN 1108 +#define MIB_IPSECTUNNEL_RT_GWADDR 1109 +#define MIB_IPSECTUNNEL_KEYMODE 1110 +#define MIB_IPSECTUNNEL_ESPAH 1111 +#define MIB_IPSECTUNNEL_ESPENCR 1112 +#define MIB_IPSECTUNNEL_ESPAUTH 1113 +#define MIB_IPSECTUNNEL_AHAUTH 1114 +#define MIB_IPSECTUNNEL_CONTYPE 1115 +#define MIB_IPSECTUNNEL_PSKEY 1116 +#define MIB_IPSECTUNNEL_RSAKEY 1117 +#define MIB_IPSECTUNNEL_SPI 1118 +#define MIB_IPSECTUNNEL_ENCRKEY 1119 +#define MIB_IPSECTUNNEL_AUTHKEY 1120 +#define MIB_IPSECTUNNEL_ENABLE 1121 +#define MIB_IPSECTUNNEL_CONNNAME 1122 +#define MIB_IPSECTUNNEL_LCIDTYPE 1123 +#define MIB_IPSECTUNNEL_RTIDTYPE 1124 +#define MIB_IPSECTUNNEL_LCID 1125 +#define MIB_IPSECTUNNEL_RTID 1126 +#define MIB_IPSECTUNNEL_IKELIFETIME 1127 +#define MIB_IPSECTUNNEL_IKEENCR 1128 +#define MIB_IPSECTUNNEL_IKEAUTH 1129 +#define MIB_IPSECTUNNEL_IKEKEYGROUP 1130 +#define MIB_IPSECTUNNEL_IPSECLIFETIME 1131 +#define MIB_IPSECTUNNEL_IPSECPFS 1132 + +#define MIB_CERTROOT_COMMENT 1151 + +#define MIB_CERTUSER_COMMENT 1161 +#define MIB_CERTROOT_PASS 1162 + +#define MIB_QOS_ENTRY_NAME 1171 +#define MIB_QOS_ENTRY_ENABLED 1172 +#define MIB_QOS_PRIORITY 1173 +#define MIB_QOS_PROTOCOL 1174 +#define MIB_QOS_LOCAL_IP_START 1175 +#define MIB_QOS_LOCAL_IP_END 1176 +#define MIB_QOS_LOCAL_PORT_START 1177 +#define MIB_QOS_LOCAL_PORT_END 1178 +#define MIB_QOS_REMOTE_IP_START 1179 +#define MIB_QOS_REMOTE_IP_END 1180 +#define MIB_QOS_REMOTE_PORT_START 1181 +#define MIB_QOS_REMOTE_PORT_END 1182 + +#define MIB_IPQOS_ENTRY_NAME 1191 +#define MIB_IPQOS_ENABLED 1192 +#define MIB_IPQOS_MAC 1193 +#define MIB_IPQOS_MODE 1194 +#define MIB_IPQOS_LOCAL_IP_START 1195 +#define MIB_IPQOS_LOCAL_IP_END 1196 +#define MIB_IPQOS_BANDWIDTH 1197 +#define MIB_IPQOS_BANDWIDTH_DOWNLINK 1198 +#define MIB_IPQOS_LAYER7_PROTOCOL 1199 +#define MIB_IPQOS_IPV6_SRC 1200 + +#define MIB_MECH_ACL_MACADDR 1201 +#define MIB_MECH_ACL_COMMENT 1202 + +#define MIB_WLAN_ACL_ADDR_MACADDR 1211 +#define MIB_WLAN_ACL_ADDR_COMMENT 1212 + +#define MIB_WLAN_WDS_MACADDR 1221 +#define MIB_WLAN_WDS_FIXEDTXRATE 1222 +#define MIB_WLAN_WDS_COMMENT 1223 + + +//#ifdef CONFIG_RTL_FLASH_DUAL_IMAGE_ENABLE +#define MIB_DUALBANK_ENABLED 1300 +#define MIB_WLAN_PHY_BAND_SELECT 1301 +#define MIB_WLAN_MAC_PHY_MODE 1302 +#define MIB_WLAN_BAND2G5G_SELECT 1303 +//#endif + +//MIBs for 802.1x wlan client mode +#ifdef CONFIG_RTL_802_1X_CLIENT_SUPPORT +#define MIB_WLAN_EAP_TYPE 1311 +#define MIB_WLAN_EAP_INSIDE_TYPE 1312 +#define MIB_WLAN_EAP_USER_ID 1313 +#define MIB_WLAN_RS_USER_NAME 1314 +#define MIB_WLAN_RS_USER_PASSWD 1315 +#define MIB_WLAN_RS_USER_CERT_PASSWD 1316 +#define MIB_WLAN_RS_BAND_SEL 1317 +#endif + +/* USB3G */ +#define MIB_USB3G_USER 1400 +#define MIB_USB3G_PASS 1401 +#define MIB_USB3G_PIN 1402 +#define MIB_USB3G_APN 1403 +#define MIB_USB3G_DIALNUM 1404 +#define MIB_USB3G_CONN_TYPE 1405 +#define MIB_USB3G_IDLE_TIME 1406 +#define MIB_USB3G_MTU_SIZE 1407 +/*for P2P_SUPPORT*/ +#define MIB_WLAN_P2P_TYPE 1450 +#define MIB_WLAN_P2P_INTENT 1451 +#define MIB_WLAN_P2P_LISTEN_CHANNEL 1452 +#define MIB_WLAN_P2P_OPERATION_CHANNEL 1453 +#define MIB_WLAN_RS2_IP 1454 +#define MIB_WLAN_RS2_PORT 1455 +#define MIB_WLAN_RS2_PASSWORD 1456 +#define MIB_WLAN_RS2_MAXRETRY 1457 +#define MIB_WLAN_RS2_INTERVAL_TIME 1458 +#define MIB_WLAN_ACCOUNT_RS2_IP 1459 +#define MIB_WLAN_ACCOUNT_RS2_PORT 1460 +#define MIB_WLAN_ACCOUNT_RS2_PASSWORD 1461 +#define MIB_WLAN_RS_REAUTH_TO 1462 +#define MIB_WLAN_FUNC_OFF 1463 + + +#if defined(CONFIG_RTL_ULINKER) +#define MIB_ULINKER_AUTO 1470 +#define MIB_ULINKER_CURRENT_MODE 1471 +#define MIB_ULINKER_LATEST_MODE 1472 +#define MIB_ULINKER_CURRENT_WLAN_MODE 1473 +#define MIB_ULINKER_LATEST_WLAN_MODE 1474 + +#define MIB_ULINKER_REPEATER_ENABLED1 1475 +#define MIB_ULINKER_REPEATER_ENABLED2 1476 + +#endif + + +/*multi pppoe*/ +//dzh begin +//#define MIB_PPP_USER_NAME 106 +#define MIB_PPP_CONNECT_COUNT 1499 + +#define MIB_PPP_USER_NAME2 1500 +#define MIB_PPP_PASSWORD2 1501 +#define MIB_PPP_USER_NAME3 1502 +#define MIB_PPP_PASSWORD3 1503 +#define MIB_PPP_USER_NAME4 1504 +#define MIB_PPP_PASSWORD4 1505 + + +#define MIB_PPP_SERVICE_NAME2 1506 +#define MIB_PPP_SERVICE_NAME3 1507 +#define MIB_PPP_SERVICE_NAME4 1508 + +#define MIB_PPP_IDLE_TIME2 1509 +#define MIB_PPP_CONNECT_TYPE2 1510 +#define MIB_PPP_IDLE_TIME3 1511 +#define MIB_PPP_CONNECT_TYPE3 1512 +#define MIB_PPP_IDLE_TIME4 1513 +#define MIB_PPP_CONNECT_TYPE4 1514 + +#define MIB_PPP_MTU_SIZE2 1515 +#define MIB_PPP_MTU_SIZE3 1516 +#define MIB_PPP_MTU_SIZE4 1517 + + +#define MIB_PPP_SESSION_NUM2 1522 +#define MIB_PPP_SERVER_MAC2 1523 +#define MIB_PPP_SESSION_NUM3 1524 +#define MIB_PPP_SERVER_MAC3 1525 +#define MIB_PPP_SESSION_NUM4 1526 +#define MIB_PPP_SERVER_MAC4 1527 + +//add for subnet +#define MIB_SUBNET1_COUNT 1528 +#define MIB_SUBNET1_F1_START 1529 +#define MIB_SUBNET1_F1_END 1530 +#define MIB_SUBNET1_F2_START 1531 +#define MIB_SUBNET1_F2_END 1532 +#define MIB_SUBNET1_F3_START 1533 +#define MIB_SUBNET1_F3_END 1534 +#define MIB_SUBNET2_COUNT 1535 +#define MIB_SUBNET2_F1_START 1536 +#define MIB_SUBNET2_F1_END 1537 +#define MIB_SUBNET2_F2_START 1538 +#define MIB_SUBNET2_F2_END 1539 +#define MIB_SUBNET2_F3_START 1540 +#define MIB_SUBNET2_F3_END 1541 +#define MIB_SUBNET3_COUNT 1542 +#define MIB_SUBNET3_F1_START 1543 +#define MIB_SUBNET3_F1_END 1544 +#define MIB_SUBNET3_F2_START 1545 +#define MIB_SUBNET3_F2_END 1546 +#define MIB_SUBNET3_F3_START 1547 +#define MIB_SUBNET3_F3_END 1548 +#define MIB_SUBNET4_COUNT 1549 +#define MIB_SUBNET4_F1_START 1550 +#define MIB_SUBNET4_F1_END 1551 +#define MIB_SUBNET4_F2_START 1552 +#define MIB_SUBNET4_F2_END 1553 +#define MIB_SUBNET4_F3_START 1554 +#define MIB_SUBNET4_F3_END 1555 + + +#define MIB_PPP_SUBNET1 1556 +#define MIB_PPP_SUBNET2 1557 +#define MIB_PPP_SUBNET3 1558 +#define MIB_PPP_SUBNET4 1559 + +#ifdef CONFIG_CPU_UTILIZATION +#define MIB_ENABLE_CPU_UTILIZATION 1580 +#define MIB_CPU_UTILIZATION_INTERVAL 1581 +#endif + + + + +#define MIB_LAN_DHCP_CONFIGURABLE 1749 + +#define MIB_STATICROUTE_ENABLE 1776 +#define MIB_STATICROUTE_TYPE 1777 +#define MIB_STATICROUTE_SRCADDR 1778 +#define MIB_STATICROUTE_SRCNETMASK 1779 +#define MIB_STATICROUTE_IFACEINDEX 1780 +#define MIB_STATICROUTE_INSTANCENUM 1781 +#define MIB_STATICROUTE_FLAGS 1782 + +#define MIB_WLAN_CWMP_WLANCONFIG_INSTNUM 1783 + + +////////////////////////////////////////////////////////////////////////// +#define MIB_CWMP_WLANCONF_ENABLED 1784 +#define MIB_CWMP_WLANCONF_TBL_NUM 1785 +#define MIB_CWMP_WLANCONF_TBL ((MIB_CWMP_WLANCONF_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_CWMP_WLANCONF_ADD ((MIB_CWMP_WLANCONF_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_CWMP_WLANCONF_DEL ((MIB_CWMP_WLANCONF_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_CWMP_WLANCONF_MOD ((MIB_CWMP_WLANCONF_TBL_NUM+3)|MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) //brucehou +#define MIB_CWMP_WLANCONF_DELALL ((MIB_CWMP_WLANCONF_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + +#define MAX_CWMP_WLANCONF_NUM 12 + +#define MIB_CWMP_WLANCONF_INSTANCENUM 1790 +#define MIB_CWMP_WLANCONF_ROOT_IDX 1791 +#define MIB_CWMP_WLANCONF_VWLAN_IDX 1792 +#define MIB_CWMP_WLANCONF_ISCONFIGURED 1793 +#define MIB_CWMP_WLANCONF_RFBAND 1794 + +#define VLAN_WAN 2000 +#define MIB_VLAN_WAN_ENALE VLAN_WAN + 1 +#define MIB_VLAN_WAN_TAG VLAN_WAN + 2 + +#define MIB_VLAN_WAN_BRIDGE_ENABLE VLAN_WAN + 3 +#define MIB_VLAN_WAN_BRIDGE_TAG VLAN_WAN + 4 +#define MIB_VLAN_WAN_BRIDGE_PORT VLAN_WAN + 5 +#define MIB_VLAN_WAN_BRIDGE_MULTICAST_ENABLE VLAN_WAN + 6 +#define MIB_VLAN_WAN_BRIDGE_MULTICAST_TAG VLAN_WAN + 7 + +#define MIB_VLAN_WAN_HOST_ENABLE VLAN_WAN + 8 +#define MIB_VLAN_WAN_HOST_TAG VLAN_WAN + 9 +#define MIB_VLAN_WAN_HOST_PRI VLAN_WAN + 10 +#define MIB_VLAN_WAN_WIFI_ROOT_ENABLE VLAN_WAN + 11 +#define MIB_VLAN_WAN_WIFI_ROOT_TAG VLAN_WAN + 12 +#define MIB_VLAN_WAN_WIFI_ROOT_PRI VLAN_WAN + 13 +#define MIB_VLAN_WAN_WIFI_VAP0_ENABLE VLAN_WAN + 14 +#define MIB_VLAN_WAN_WIFI_VAP0_TAG VLAN_WAN + 15 +#define MIB_VLAN_WAN_WIFI_VAP0_PRI VLAN_WAN + 16 +#define MIB_VLAN_WAN_WIFI_VAP1_ENABLE VLAN_WAN + 17 +#define MIB_VLAN_WAN_WIFI_VAP1_TAG VLAN_WAN + 18 +#define MIB_VLAN_WAN_WIFI_VAP1_PRI VLAN_WAN + 19 +#define MIB_VLAN_WAN_WIFI_VAP2_ENABLE VLAN_WAN + 20 +#define MIB_VLAN_WAN_WIFI_VAP2_TAG VLAN_WAN + 21 +#define MIB_VLAN_WAN_WIFI_VAP2_PRI VLAN_WAN + 22 +#define MIB_VLAN_WAN_WIFI_VAP3_ENABLE VLAN_WAN + 23 +#define MIB_VLAN_WAN_WIFI_VAP3_TAG VLAN_WAN + 24 +#define MIB_VLAN_WAN_WIFI_VAP3_PRI VLAN_WAN + 25 + +// Reserve 100 mib for vlan wan tag +#define MIB_VLAN_WAN_TAG_ID_END VLAN_WAN + 99 // 2099 + + +#ifdef WLAN_PROFILE +#define WLAN_PROFILE_ID 2100 +#define MIB_PROFILE_ENABLED1 (WLAN_PROFILE_ID+0) +#define MIB_PROFILE_NUM1 (WLAN_PROFILE_ID+1) +#define MIB_PROFILE_TBL1 ((WLAN_PROFILE_ID+2)|MIB_TABLE_LIST) +#define MIB_PROFILE_ADD1 ((WLAN_PROFILE_ID+3)|MIB_ADD_TBL_ENTRY) +#define MIB_PROFILE_DEL1 ((WLAN_PROFILE_ID+4)|MIB_DEL_TBL_ENTRY) +#define MIB_PROFILE_MOD1 ((WLAN_PROFILE_ID+4) | MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) +#define MIB_PROFILE_DELALL1 ((WLAN_PROFILE_ID+5)|MIB_DELALL_TBL_ENTRY) +#define MIB_PROFILE_SSID (WLAN_PROFILE_ID+6) +#define MIB_PROFILE_ENC (WLAN_PROFILE_ID+7) +#define MIB_PROFILE_AUTH (WLAN_PROFILE_ID+8) +#define MIB_PROFILE_WPA_CIPHER (WLAN_PROFILE_ID+9) +#define MIB_PROFILE_WPA_PSK (WLAN_PROFILE_ID+10) +#define MIB_PROFILE_WEP_DEFAULT_KEY (WLAN_PROFILE_ID+11) +#define MIB_PROFILE_WEP_KEY1 (WLAN_PROFILE_ID+12) +#define MIB_PROFILE_WEP_KEY2 (WLAN_PROFILE_ID+13) +#define MIB_PROFILE_WEP_KEY3 (WLAN_PROFILE_ID+14) +#define MIB_PROFILE_WEP_KEY4 (WLAN_PROFILE_ID+15) +#define MIB_PROFILE_ENABLED2 (WLAN_PROFILE_ID+16) +#define MIB_PROFILE_WEP_KEY_TYPE (WLAN_PROFILE_ID+17) +#define MIB_PROFILE_PSK_FORMAT (WLAN_PROFILE_ID+18) +#define MIB_PROFILE_NUM2 (WLAN_PROFILE_ID+19) +#define MIB_PROFILE_TBL2 ((WLAN_PROFILE_ID+20)|MIB_TABLE_LIST) +#define MIB_PROFILE_ADD2 ((WLAN_PROFILE_ID+21)|MIB_ADD_TBL_ENTRY) +#define MIB_PROFILE_DEL2 ((WLAN_PROFILE_ID+22)|MIB_DEL_TBL_ENTRY) +#define MIB_PROFILE_MOD2 ((WLAN_PROFILE_ID+22) | MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) +#define MIB_PROFILE_DELALL2 ((WLAN_PROFILE_ID+23)|MIB_DELALL_TBL_ENTRY) +#endif // WLAN_PROFILE + +#define IP6_ADDR_LEN 16 +#define MAX_PPP_NAME_LEN 63 +//dzh end +#ifdef CONFIG_APP_TR069 +/* define the len of the entities */ +#define CWMP_LANCONF_PASSWD_LEN 64 +#define CWMP_SERIALNUMBER_LEN 64 +#define CWMP_COMMAND_KEY_LEN 32 + +/* define the len of the entities */ +#define CWMP_PROVISION_CODE_LEN 32 //64 in spec +#define CWMP_ACS_URL_LEN 64 //256 in spec +#define CWMP_ACS_USERNAME_LEN 32 //256 in spec +#define CWMP_ACS_PASSWD_LEN 32 //256 in spec +#define CWMP_CONREQ_USERNAME_LEN 32 //256 in spec +#define CWMP_CONREQ_PASSWD_LEN 32 //256 in spec +#define CONN_REQ_PATH_LEN 32 //32 in spec +#define CWMP_KICK_URL 32 //64 in spec +#define CWMP_DOWNLOAD_URL 32 //64 in spec +#define CWMP_CERT_PASSWD_LEN 32 //64 in spec +#define CWMP_NOTIFY_LIST_LEN (2) //No limitation in spec +#define CWMP_UDP_CONN_REQ_ADDR_LEN 256 +#define CWMP_STUN_SERVER_ADDR_LEN 256 +#define CWMP_STUN_USERNAME_LEN 256 +#define CWMP_STUN_PASSWORD_LEN 256 +#define IP_ADDR_LEN 4 +/* define the cwmp_flag */ +#define CWMP_FLAG_DEBUG_MSG 0x01 +#define CWMP_FLAG_CERT_AUTH 0x02 +#define CWMP_FLAG_SENDGETRPC 0x04 +#define CWMP_FLAG_SKIPMREBOOT 0x08 +#define CWMP_FLAG_DELAY 0x10 +#define CWMP_FLAG_AUTORUN 0x20 +#define CWMP_FLAG_CTINFORMEXT 0x40 +#define CWMP_FLAG_SELFREBOOT 0x80 +/*flag for CWMP_FLAG2 setting*/ +#define CWMP_FLAG2_DIS_CONREQ_AUTH 0x01 /*disable connection request authentication*/ +#define CWMP_FLAG2_DEFAULT_WANIP_IN_INFORM 0x02 /*bring the default wan ip in the inform*/ +#define CWMP_FLAG2_NULL_TO_SKIP_AUTH 0x04 +/*action type for applying new values*/ +#define CWMP_NONE 0 +#define CWMP_START 1 +#define CWMP_STOP 2 +#define CWMP_RESTART 3 + +/*EC_xxxxx event must consist with those defined in cwmp_rpc.h*/ +#define EC_X_CT_COM_ACCOUNT 0x10000 /*X_CT-COM_ACCOUNTCHANGE*/ + +#endif /*CONFIG_APP_TR069*/ + +#if defined(CONFIG_RTL_8198C)||defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8198B) || defined(CONFIG_RTL_8881A) || defined(CONFIG_WLAN_HAL_8197F) +/*new add since new platform rtl8196c*/ +#define MIB_HW_TX_POWER_CCK_A 901 +#define MIB_HW_TX_POWER_CCK_B 902 +#define MIB_HW_TX_POWER_HT40_1S_A 903 +#define MIB_HW_TX_POWER_HT40_1S_B 904 +#define MIB_HW_TX_POWER_DIFF_HT40_2S 905 +#define MIB_HW_TX_POWER_DIFF_HT20 906 +#define MIB_HW_TX_POWER_DIFF_OFDM 907 +#define MIB_HW_11N_RESERVED9 908 +#define MIB_HW_11N_RESERVED10 909 +#define MIB_HW_TX_POWER_5G_HT40_1S_A 910 +#define MIB_HW_TX_POWER_5G_HT40_1S_B 911 +#define MIB_HW_TX_POWER_DIFF_5G_HT40_2S 912 +#define MIB_HW_TX_POWER_DIFF_5G_HT20 913 +#define MIB_HW_TX_POWER_DIFF_5G_OFDM 914 +/*new add end*/ +#endif + +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) +#define MIB_HW_TX_POWER_CCK_C 2336 +#define MIB_HW_TX_POWER_CCK_D 2337 +#define MIB_HW_TX_POWER_HT40_1S_C 2338 +#define MIB_HW_TX_POWER_HT40_1S_D 2339 +#define MIB_HW_TX_POWER_5G_HT40_1S_C 2340 +#define MIB_HW_TX_POWER_5G_HT40_1S_D 2341 +#endif + +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) +#define MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_A 2200 +#define MIB_HW_TX_POWER_DIFF_40BW2S_20BW2S_A 2201 +#define MIB_HW_TX_POWER_DIFF_OFDM2T_CCK2T_A 2202 +#define MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_A 2203 +#define MIB_HW_TX_POWER_DIFF_OFDM3T_CCK3T_A 2204 +#define MIB_HW_TX_POWER_DIFF_40BW4S_20BW4S_A 2205 +#define MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_A 2206 + +#define MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_A 2207 +#define MIB_HW_TX_POWER_DIFF_5G_40BW2S_20BW2S_A 2208 +#define MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_A 2209 +#define MIB_HW_TX_POWER_DIFF_5G_40BW4S_20BW4S_A 2210 +#define MIB_HW_TX_POWER_DIFF_5G_RSVD_OFDM4T_A 2211 +#define MIB_HW_TX_POWER_DIFF_5G_80BW1S_160BW1S_A 2212 +#define MIB_HW_TX_POWER_DIFF_5G_80BW2S_160BW2S_A 2213 +#define MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_A 2214 +#define MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_A 2215 + + +#define MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_B 2220 +#define MIB_HW_TX_POWER_DIFF_40BW2S_20BW2S_B 2221 +#define MIB_HW_TX_POWER_DIFF_OFDM2T_CCK2T_B 2222 +#define MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_B 2223 +#define MIB_HW_TX_POWER_DIFF_OFDM3T_CCK3T_B 2224 +#define MIB_HW_TX_POWER_DIFF_40BW4S_20BW4S_B 2225 +#define MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_B 2226 + +#define MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_B 2227 +#define MIB_HW_TX_POWER_DIFF_5G_40BW2S_20BW2S_B 2228 +#define MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_B 2229 +#define MIB_HW_TX_POWER_DIFF_5G_40BW4S_20BW4S_B 2230 +#define MIB_HW_TX_POWER_DIFF_5G_RSVD_OFDM4T_B 2231 +#define MIB_HW_TX_POWER_DIFF_5G_80BW1S_160BW1S_B 2232 +#define MIB_HW_TX_POWER_DIFF_5G_80BW2S_160BW2S_B 2233 +#define MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_B 2234 +#define MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_B 2235 +#endif + +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) +#define MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_C 2300 +#define MIB_HW_TX_POWER_DIFF_40BW2S_20BW2S_C 2301 +#define MIB_HW_TX_POWER_DIFF_OFDM2T_CCK2T_C 2302 +#define MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_C 2303 +#define MIB_HW_TX_POWER_DIFF_OFDM3T_CCK3T_C 2304 +#define MIB_HW_TX_POWER_DIFF_40BW4S_20BW4S_C 2305 +#define MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_C 2306 + +#define MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_C 2307 +#define MIB_HW_TX_POWER_DIFF_5G_40BW2S_20BW2S_C 2308 +#define MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_C 2309 +#define MIB_HW_TX_POWER_DIFF_5G_40BW4S_20BW4S_C 2310 +#define MIB_HW_TX_POWER_DIFF_5G_RSVD_OFDM4T_C 2311 +#define MIB_HW_TX_POWER_DIFF_5G_80BW1S_160BW1S_C 2312 +#define MIB_HW_TX_POWER_DIFF_5G_80BW2S_160BW2S_C 2313 +#define MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_C 2314 +#define MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_C 2315 + +#define MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_D 2320 +#define MIB_HW_TX_POWER_DIFF_40BW2S_20BW2S_D 2321 +#define MIB_HW_TX_POWER_DIFF_OFDM2T_CCK2T_D 2322 +#define MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_D 2323 +#define MIB_HW_TX_POWER_DIFF_OFDM3T_CCK3T_D 2324 +#define MIB_HW_TX_POWER_DIFF_40BW4S_20BW4S_D 2325 +#define MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_D 2326 + +#define MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_D 2327 +#define MIB_HW_TX_POWER_DIFF_5G_40BW2S_20BW2S_D 2328 +#define MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_D 2329 +#define MIB_HW_TX_POWER_DIFF_5G_40BW4S_20BW4S_D 2330 +#define MIB_HW_TX_POWER_DIFF_5G_RSVD_OFDM4T_D 2331 +#define MIB_HW_TX_POWER_DIFF_5G_80BW1S_160BW1S_D 2332 +#define MIB_HW_TX_POWER_DIFF_5G_80BW2S_160BW2S_D 2333 +#define MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_D 2334 +#define MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_D 2335 +#endif +#define MIB_WLAN_RETRY_LIMIT 2252 +#define MIB_WLAN_UAPSD_ENABLED 2253 +#define MIB_WLAN_REGULATORY_DOMAIN 2254 +#ifdef SAMBA_WEB_SUPPORT +#define MIB_STORAGE_USER_TBL_NUM 2300 +#define MIB_STORAGE_USER_TBL ((MIB_STORAGE_USER_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_STORAGE_USER_ADD ((MIB_STORAGE_USER_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_STORAGE_USER_DEL ((MIB_STORAGE_USER_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_STORAGE_USER_MOD ((MIB_STORAGE_USER_TBL_NUM+3)|MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) +#define MIB_STORAGE_USER_DELALL ((MIB_STORAGE_USER_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + + +#define MIB_STORAGE_GROUP_TBL_NUM 2400 +#define MIB_STORAGE_GROUP_TBL ((MIB_STORAGE_GROUP_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_STORAGE_GROUP_ADD ((MIB_STORAGE_GROUP_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_STORAGE_GROUP_DEL ((MIB_STORAGE_GROUP_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_STORAGE_GROUP_MOD ((MIB_STORAGE_GROUP_TBL_NUM+3)|MIB_DEL_TBL_ENTRY | MIB_MOD_TBL_ENTRY) +#define MIB_STORAGE_GROUP_DELALL ((MIB_STORAGE_GROUP_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + +#define MIB_STORAGE_USER_NAME 2501 +#define MIB_STORAGE_USER_PASSWD 2502 +#define MIB_STORAGE_USER_GROUP 2503 + +#define MIB_STORAGE_GROUP_NAME 2511 +#define MIB_STORAGE_GROUP_ACCESS 2512 +#define MIB_STORAGE_GROUP_SHAREFOLDER_FLAG 2513 +#define MIB_STORAGE_GROUP_DISPLAYNAME 2514 +#define MIB_STORAGE_GROUP_SHAREFOLDER 2515 + +#define MIB_STORAGE_ANON_ENABLE 2520 +//#define MIB_STORAGE_ANON_FTP_ENABLE 2521 +#define MIB_STORAGE_ANON_DISK_ENABLE 2522 + +#define MIB_STORAGE_FOLDER_LOCAL 2523 +#define MIB_STORAGE_GROUP_EDIT_INDEX 2524 +#define MIB_STORAGE_USER_EDIT_INDEX 2525 +#define MIB_STORAGE_FOLDER_EDIT_NAME 2526 + +#endif +#ifdef CONFIG_RTL_ETH_802DOT1X_SUPPORT +#define MIB_ELAN_RS_IP 3032 +#define MIB_ELAN_RS_PORT 3033 +#define MIB_ELAN_RS_PASSWORD 3034 +#define MIB_ELAN_ENABLE_1X 3035 +#define MIB_ELAN_RS_REAUTH_TO 3036 +#define MIB_ELAN_ACCOUNT_RS_ENABLED 3039 +#define MIB_ELAN_ACCOUNT_RS_IP 3040 +#define MIB_ELAN_ACCOUNT_RS_PORT 3041 +#define MIB_ELAN_ACCOUNT_RS_PASSWORD 3042 +#define MIB_ELAN_ACCOUNT_RS_UPDATE_ENABLED 3043 +#define MIB_ELAN_ACCOUNT_RS_UPDATE_DELAY 3044 +#define MIB_ELAN_MAC_AUTH_ENABLED 3045 +#define MIB_ELAN_RS_MAXRETRY 3046 +#define MIB_ELAN_RS_INTERVAL_TIME 3047 +#define MIB_ELAN_ACCOUNT_RS_MAXRETRY 3048 +#define MIB_ELAN_ACCOUNT_RS_INTERVAL_TIME 3049 +#define MIB_ELAN_DOT1X_MODE 3050 +#define MIB_ELAN_DOT1X_PROXY_TYPE 3051 +#define MIB_ELAN_DOT1X_CLIENT_MODE_PORT_MASK 3052 +#define MIB_ELAN_DOT1X_PROXY_MODE_PORT_MASK 3053 + + +#define MIB_ELAN_INACTIVITY_TIME 3054 +#define MIB_ELAN_EAPOL_UNICAST_ENABLED 3055 +#ifdef CONFIG_RTL_ETH_802DOT1X_CLIENT_MODE_SUPPORT +#define MIB_ELAN_EAP_TYPE 3056 +#define MIB_ELAN_EAP_INSIDE_TYPE 3057 +#define MIB_ELAN_EAP_USER_ID 3058 +#define MIB_ELAN_RS_USER_NAME 3059 +#define MIB_ELAN_RS_USER_PASSWD 3060 +#define MIB_ELAN_RS_USER_CERT_PASSWD 3061 +#define MIB_ELAN_EAP_PHASE2_TYPE 3062 +#define MIB_ELAN_PHASE2_EAP_METHOD 3063 +#endif +typedef enum {ETH_DOT1X_CLIENT_MODE=1,ETH_DOT1X_PROXY_MODE=2}ETH_DOT1X_MODE_T; +#define MIB_ELAN_DOT1X_PORT_ENABLED 3070 +#define MIB_ELAN_DOT1X_PORT_NUMBER 3071 +#define MIB_ELAN_DOT1X_SERVER_PORT 3072 + +#define MIB_ELAN_DOT1X_TBL_NUM 3073 +#define MIB_ELAN_DOT1X_TBL ((MIB_ELAN_DOT1X_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_ELAN_DOT1X_ADD ((MIB_ELAN_DOT1X_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_ELAN_DOT1X_DEL ((MIB_ELAN_DOT1X_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_ELAN_DOT1X_DELALL ((MIB_ELAN_DOT1X_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + +#define MAX_ELAN_DOT1X_PORTNUM (5) /* eth0~eth4 */ +#define ETH_DOT1X_CLIENT_PORT (4) +#define ETH_DOT1X_PROXY_SNOOPING_MODE_ENABLE_BIT (1<<0) +#define ETH_DOT1X_CLIENT_MODE_ENABLE_BIT (1<<1) +#define ETH_DOT1X_PROXY_MODE_ENABLE_BIT (1<<0) + + +#define ETH_DOT1X_CLIENT_MODE_BIT (1<<0) +#define ETH_DOT1X_PROXY_MODE_BIT (1<<1) +#define ETH_DOT1X_SNOOPING_MODE_BIT (1<<2) +#endif + +#define MIB_WLAN_RETRY_LIMIT 2252 +#define MIB_WLAN_UAPSD_ENABLED 2253 +#define MIB_WLAN_REGULATORY_DOMAIN 2254 + + +#define MAX_L2TP_BUFF_LEN 50 + +#define MIB_PPP_SESSION_NUM 940 +#define MIB_PPP_SERVER_MAC 941 +#define MIB_L2TP_PAYLOAD 942 +#define MIB_L2TP_PAYLOAD_LENGTH 943 +#define MIB_L2TP_NS 944 +#define MIB_DHCP_LEASE_TIME 945 + +/* ==== CAPWAP start =======*/ +#ifdef RTK_CAPWAP // currently use 2300~2329 +#define MIB_CAPWAP_MODE 2300 + typedef enum { + CAPWAP_DISABLE = 0, + CAPWAP_WTP_ENABLE = (1<<0), + CAPWAP_AC_ENABLE = (1<<1), + CAPWAP_BOTH_ENABLE = (CAPWAP_WTP_ENABLE | CAPWAP_AC_ENABLE), + } CAPWAP_MODE_T; + +// for WTP (if WTP enabled or both enabled) +#define MIB_CAPWAP_WTP_ID 2301 // 0 is invalid +#define MIB_CAPWAP_AC_IP 2302 + +// for AC (if AC enabled or both enabled) +#define MIB_CAPWAP_WTP_CONFIG_TBL_NUM 2305 // <= MAX_CAPWAP_WTP_NUM +#define MIB_CAPWAP_WTP_CONFIG_TBL ((MIB_CAPWAP_WTP_CONFIG_TBL_NUM+1)|MIB_TABLE_LIST) +#define MIB_CAPWAP_WTP_CONFIG_ADD ((MIB_CAPWAP_WTP_CONFIG_TBL_NUM+2)|MIB_ADD_TBL_ENTRY) +#define MIB_CAPWAP_WTP_CONFIG_DEL ((MIB_CAPWAP_WTP_CONFIG_TBL_NUM+3)|MIB_DEL_TBL_ENTRY) +#define MIB_CAPWAP_WTP_CONFIG_DELALL ((MIB_CAPWAP_WTP_CONFIG_TBL_NUM+4)|MIB_DELALL_TBL_ENTRY) + +#define MIB_CAPWAP_CFG_WTP_ID 2310 // 0 is invalid +#define MIB_CAPWAP_CFG_RADIO_NUM 2311 // radios per wtp <= MAX_CAPWAP_RADIO_NUM +#define MIB_CAPWAP_CFG_WLAN_NUM 2312 // wlans per radio <= MAX_CAPWAP_WLAN_NUM + +#define MIB_CAPWAP_CFG_RFPOWER_SCALE 2313 // for multiple radios +/* + typedef enum { + POWER_SCALE_100 = 0, + POWER_SCALE_70 = 1, + POWER_SCALE_50 = 2, + POWER_SCALE_35 = 3, + POWER_SCALE_15 = 4, + } WLAN_POWER_SCALE_T; + */ +#define MIB_CAPWAP_CFG_CHANNEL 2314 // for multiple radios +#define MIB_CAPWAP_CFG_WLAN 2315 // for multiple wlans (vaps) + +#define MIB_CAPWAP_CFG_WLAN_ENABLE 2320 // for each wlan (vap) +#define MIB_CAPWAP_CFG_KEY_TYPE 2321 // for each wlan (vap) + typedef enum { + CAPWAP_KEY_TYPE_NONE = 0, + CAPWAP_KEY_TYPE_SHARED_WEP40, + CAPWAP_KEY_TYPE_SHARED_WEP104, + CAPWAP_KEY_TYPE_SHARED_WPA_AES, + CAPWAP_KEY_TYPE_SHARED_WPA_TKIP, + CAPWAP_KEY_TYPE_SHARED_WPA2_AES, + CAPWAP_KEY_TYPE_SHARED_WPA2_TKIP, + } CAPWAP_KEY_TYPE_T; +#define MIB_CAPWAP_CFG_PSK_FORMAT 2322 // for each wlan (vap) + typedef enum { + PSK_FORMAT_PASSPHRASE = 0, + PSK_FORMAT_HEX = 1, + }PASK_FORMAT_T; +#define MIB_CAPWAP_CFG_KEY 2323 // for each wlan (vap) +#define MIB_CAPWAP_CFG_SSID 2324 // for each wlan (vap) +#define MIB_CAPWAP_CFG_BSSID 2325 // for each wlan (vap) + +#define MAX_CAPWAP_WTP_NUM 4 // max wtps for one AC +#define MAX_CAPWAP_RADIO_NUM 2 // radios per wtp +#define MAX_CAPWAP_WLAN_NUM 5 // max wlans per radio +#endif //#ifdef RTK_CAPWAP +/* ==== CAPWAP end =======*/ + +// MIB value and constant +#ifdef CONFIG_IPV6 +#define IFNAMESIZE 32 +#define MAX_PREFIX_NUM 2 +#define RR_MAX_NUM 2 +#define NAMSIZE 32 +#define MAX_DNAME_SIZE 128 +#endif +#define MAX_REGULATORY_DOMAIN 4 +#define MAX_SSID_LEN 33 +#define WEP64_KEY_LEN 5 +#define WEP128_KEY_LEN 13 +#define MAX_NAME_LEN 31 +#define COMMENT_LEN 21 +#define MAX_CCK_CHAN_NUM 14 +#define MAX_OFDM_CHAN_NUM 162 +#define MAX_SERVER_DOMAIN_LEN 32 +#define MAX_2G_CHANNEL_NUM_MIB 14 +#define MAX_5G_CHANNEL_NUM_MIB 196 + +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) +#define MAX_5G_DIFF_NUM 14 +#endif +#define MIN_PSK_LEN 8 +#define MAX_PSK_LEN 64 +#define MAX_RS_PASS_LEN 65 +#define MAX_DOMAIN_LEN 51 +#define MAX_NAME_LEN_LONG 129 + +#define TX_RATE_1M 0x01 +#define TX_RATE_2M 0x02 +#define TX_RATE_5M 0x04 +#define TX_RATE_11M 0x08 + +#define TX_RATE_6M 0x10 +#define TX_RATE_9M 0x20 +#define TX_RATE_12M 0x40 +#define TX_RATE_18M 0x80 +#define TX_RATE_24M 0x100 +#define TX_RATE_36M 0x200 +#define TX_RATE_48M 0x400 +#define TX_RATE_54M 0x800 + +#define MAX_WLAN_AC_NUM 20 + +//#if defined(CONFIG_RTK_MESH) && defined(_MESH_ACL_ENABLE_) Keith remove +#define MAX_MESH_ACL_NUM MAX_WLAN_AC_NUM +//#endif Keith remove + +#define MAX_CERTROOT_NUM 5 +#define MAX_CERTUSER_NUM 5 +#ifdef HOME_GATEWAY +#define MAX_FILTER_NUM 20 +#define MAX_URLFILTER_NUM 16 +#ifdef VPN_SUPPORT +#define MAX_TUNNEL_NUM 10 +#define MAX_RSA_FILE_LEN 2048 +#define MAX_RSA_KEY_LEN 380 +#define MAX_ENCRKEY_LEN 49 +#define MAX_AUTHKEY_LEN 41 +#define MAX_SPI_LEN 5 +#endif +#define MAX_QOS_RULE_NUM 10 +#endif +#define MAX_ROUTE_NUM 10 +#define MAX_DHCP_RSVD_IP_NUM 20 +#define MAXFNAME 60 + +//#ifdef CONFIG_RTL8196B_GW_8M +//#define MAX_WDS_NUM 4 +//#else +#define MAX_WDS_NUM 8 +//#endif + +#ifdef WLAN_EASY_CONFIG +#define MAX_ACF_KEY_LEN 64 +#define MAX_ACF_DIGEST_LEN 32 +#endif + +//#ifdef SNMP_SUPPORT Keith remove +#define MAX_SNMP_COMMUNITY_LEN 64 +//#endif Keith remove + +#if defined(WIFI_SIMPLE_CONFIG) || defined(HAVE_WIFI_SIMPLE_CONFIG) +#define PIN_LEN 8 +#endif + +#define IFNAMSIZE 16 +#if defined(CONFIG_RTL_8198_AP_ROOT) && defined(GMII_ENABLED) || defined(CONFIG_RTK_VLAN_NEW_FEATURE) +#define MAX_IFACE_VLAN_CONFIG (7+5*2) /* eth0~eth6, 2*(wlanX,wlanX-va0~wlanX-va3)no wds and vxd*/ +#else +#define MAX_IFACE_VLAN_CONFIG (6+5*2) /* eth0~eth5, 2*(wlanX,wlanX-va0~wlanX-va3)no wds and vxd*/ +#endif + +#ifdef WLAN_PROFILE +#define MAX_WLAN_PROFILE_NUM 5 +#define PROFILE_BOTTOM_UP +#endif + +#if defined(UNIVERSAL_REPEATER) +#define CONFIG_SMART_REPEATER +//#define CONFIG_REPEATER_WPS_SUPPORT +//#define CONFIG_WPS_EITHER_AP_OR_VXD //either one. When enable repeater, the wps is working for virtual client. Otherwise wps is working for root AP. +//#define CONFIG_ONLY_SUPPORT_CLIENT_REPEATER_WPS //if and only if root is client mode, the virtual vxd support wps +#endif + +#define NEW_SCHEDULE_SUPPORT +#if defined(NEW_SCHEDULE_SUPPORT) +#define MAX_SCHEDULE_NUM 10 +#else +/*Brad add for schedule*/ +#define MAX_SCHEDULE_NUM 1 +#endif + +/* # keith: add l2tp support. 20080515 */ +#define MAX_PPTP_HOST_NAME_LEN 64 + +#ifdef SAMBA_WEB_SUPPORT +#define MAX_USER_NUM 10 +#define MAX_GROUP_NUM 10 +#define MAX_USER_NAME_LEN 10 +#define MAX_USER_PASSWD_LEN 10 +#define MAX_GROUP_NAME_LEN 10 +#define MAX_FOLDER_NAME_LEN 30 +#define MAX_DISPLAY_NAME_LEN 10 +#endif + +#ifdef __mips__ +#ifdef CONFIG_MTD_NAND +#define FLASH_DEVICE_NAME ("/hw_setting/hw.bin") +#define FLASH_DEVICE_NAME1 ("/hw_setting/hw1.bin") +#else +#define FLASH_DEVICE_NAME ("/dev/mtdblock0") +#define FLASH_DEVICE_NAME1 ("/dev/mtdblock1") +#endif +#else +#define FLASH_DEVICE_NAME ("setting.bin") +#define FLASH_DEVICE_NAME1 ("setting1.bin") +#endif + +#ifdef CONFIG_RTL_FLASH_MAPPING_ENABLE +#define HW_SETTING_OFFSET CONFIG_RTL_HW_SETTING_OFFSET +#define DEFAULT_SETTING_OFFSET CONFIG_RTL_DEFAULT_SETTING_OFFSET +#define CURRENT_SETTING_OFFSET CONFIG_RTL_CURRENT_SETTING_OFFSET +#define WEB_PAGE_OFFSET CONFIG_RTL_WEB_PAGES_OFFSET +#define CODE_IMAGE_OFFSET CONFIG_RTL_CODE_IMAGE_OFFSET +#define ROOT_IMAGE_OFFSET CONFIG_RTL_ROOT_IMAGE_OFFSET +#else +#define HW_SETTING_OFFSET 0x6000 +#define DEFAULT_SETTING_OFFSET 0x8000 +#define CURRENT_SETTING_OFFSET 0xc000 +#define WEB_PAGE_OFFSET 0x10000 +#define CODE_IMAGE_OFFSET 0x20000 +#define ROOT_IMAGE_OFFSET 0xE0000 +#endif + +#ifdef HOME_GATEWAY + #define CERT_PAGE_OFFSET 0x3f0000 +#else + #define CERT_PAGE_OFFSET 0x1f0000 +#endif + +#ifdef CONFIG_RTL_FLASH_MAPPING_ENABLE +#define HW_SETTING_SECTOR_LEN (CONFIG_RTL_DEFAULT_SETTING_OFFSET-CONFIG_RTL_HW_SETTING_OFFSET) +#define DEFAULT_SETTING_SECTOR_LEN (CONFIG_RTL_CURRENT_SETTING_OFFSET-CONFIG_RTL_DEFAULT_SETTING_OFFSET) +#define CURRENT_SETTING_SECTOR_LEN (CONFIG_RTL_WEB_PAGES_OFFSET-CONFIG_RTL_CURRENT_SETTING_OFFSET) +#else +#define HW_SETTING_SECTOR_LEN (0x8000-0x6000) +#define DEFAULT_SETTING_SECTOR_LEN (0xc000-0x8000) +#define CURRENT_SETTING_SECTOR_LEN (0x10000-0xc000) +#endif + +#ifndef WIN32 +#define __PACK__ __attribute__ ((packed)) +#else +#define __PACK__ +#endif + + +/* Config/fw image file header */ + +typedef enum { HW_SETTING=1, DEFAULT_SETTING=2, CURRENT_SETTING=4 } CONFIG_DATA_T; + +#if defined(CONFIG_RTL_8196B) +// update tag +#define HW_SETTING_HEADER_TAG ((char *)"h6") +//Brad add for distinguish ap(da:default setting for ap) or gateway(dg: default setting for gateway) platform +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define DEFAULT_SETTING_HEADER_TAG ((char *)"6V") +#elif (defined(HOME_GATEWAY)) +#define DEFAULT_SETTING_HEADER_TAG ((char *)"6G") +#else +#define DEFAULT_SETTING_HEADER_TAG ((char *)"6A") +#endif +//Brad add for distinguish ap(ca:current setting for ap) or gateway(cg: current setting for gateway) platform +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define CURRENT_SETTING_HEADER_TAG ((char *)"6v") +#elif (defined(HOME_GATEWAY)) +#define CURRENT_SETTING_HEADER_TAG ((char *)"6g") +#else +#define CURRENT_SETTING_HEADER_TAG ((char *)"6a") +#endif +// force tag +#define HW_SETTING_HEADER_FORCE_TAG ((char *)"Hf") +#define DEFAULT_SETTING_HEADER_FORCE_TAG ((char *)"Df") +#define CURRENT_SETTING_HEADER_FORCE_TAG ((char *)"Cf") +// upgrade +#define HW_SETTING_HEADER_UPGRADE_TAG ((char *)"Hu") +#define DEFAULT_SETTING_HEADER_UPGRADE_TAG ((char *)"Du") +#define CURRENT_SETTING_HEADER_UPGRADE_TAG ((char *)"Cu") +#elif defined(CONFIG_RTL_8198C)||defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8198B) || defined(CONFIG_RTL_8197F) +// update tag +#define HW_SETTING_HEADER_TAG ((char *)"H6") +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define DEFAULT_SETTING_HEADER_TAG ((char *)"6V") +#elif (defined(HOME_GATEWAY)) +#define DEFAULT_SETTING_HEADER_TAG ((char *)"6G") +#else +#define DEFAULT_SETTING_HEADER_TAG ((char *)"6A") +#endif +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define CURRENT_SETTING_HEADER_TAG ((char *)"6v") +#elif (defined(HOME_GATEWAY)) +#define CURRENT_SETTING_HEADER_TAG ((char *)"6g") +#else +#define CURRENT_SETTING_HEADER_TAG ((char *)"6a") +#endif +// force tag +#define HW_SETTING_HEADER_FORCE_TAG ((char *)"Hf") +#define DEFAULT_SETTING_HEADER_FORCE_TAG ((char *)"Df") +#define CURRENT_SETTING_HEADER_FORCE_TAG ((char *)"Cf") +// upgrade +#define HW_SETTING_HEADER_UPGRADE_TAG ((char *)"Hu") +#define DEFAULT_SETTING_HEADER_UPGRADE_TAG ((char *)"Du") +#define CURRENT_SETTING_HEADER_UPGRADE_TAG ((char *)"Cu") +#else +// update tag +#define HW_SETTING_HEADER_TAG ((char *)"hs") +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define DEFAULT_SETTING_HEADER_TAG ((char *)"dv") +#elif (defined(HOME_GATEWAY)) +#define DEFAULT_SETTING_HEADER_TAG ((char *)"dg") +#else +#define DEFAULT_SETTING_HEADER_TAG ((char *)"da") +#endif +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define CURRENT_SETTING_HEADER_TAG ((char *)"cv") +#elif (defined(HOME_GATEWAY)) +#define CURRENT_SETTING_HEADER_TAG ((char *)"cg") +#else +#define CURRENT_SETTING_HEADER_TAG ((char *)"ca") +#endif +// force tag +#define HW_SETTING_HEADER_FORCE_TAG ((char *)"hf") +#define DEFAULT_SETTING_HEADER_FORCE_TAG ((char *)"df") +#define CURRENT_SETTING_HEADER_FORCE_TAG ((char *)"cf") +// upgrade +#define HW_SETTING_HEADER_UPGRADE_TAG ((char *)"hu") +#define DEFAULT_SETTING_HEADER_UPGRADE_TAG ((char *)"du") +#define CURRENT_SETTING_HEADER_UPGRADE_TAG ((char *)"cu") +#endif //#if defined(CONFIG_RTL_8196B) + + +#if 0//def CONFIG_RTL8196B_GW_8M +#undef DEFAULT_SETTING_HEADER_TAG +#define DEFAULT_SETTING_HEADER_TAG ((char *)"61") + +#undef CURRENT_SETTING_HEADER_TAG +#define CURRENT_SETTING_HEADER_TAG ((char *)"62") +#endif + + +#define TAG_LEN 2 + +#if defined(CONFIG_RTL_8196B) + +#define HW_SETTING_VER 1 // hw setting version +#define DEFAULT_SETTING_VER 2 // default setting version +#define CURRENT_SETTING_VER DEFAULT_SETTING_VER // current setting version + +#elif defined(CONFIG_RTL_8198C)||defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8198B) || defined(CONFIG_RTL_8197F) +#define HW_SETTING_VER 1 // hw setting version +#define DEFAULT_SETTING_VER 1 // default setting version +#define CURRENT_SETTING_VER DEFAULT_SETTING_VER // current setting version +#else + +#define HW_SETTING_VER 3 // hw setting version +#define DEFAULT_SETTING_VER 4 // default setting version +#define CURRENT_SETTING_VER DEFAULT_SETTING_VER // current setting version + +#endif + +#if defined(CONFIG_RTL_8196B) +#define FW_HEADER_WITH_ROOT ((char *)"cr6b") +#define FW_HEADER ((char *)"cs6b") +#elif defined(CONFIG_RTL_8198C)||defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8198B) +#define FW_HEADER_WITH_ROOT ((char *)"cr6c") +#define FW_HEADER ((char *)"cs6c") +#else +#define FW_HEADER_WITH_ROOT ((char *)"csro") +#define FW_HEADER ((char *)"csys") +#endif //#if defined(CONFIG_RTL_8196B) + +#if defined(CONFIG_RTL_8196B) +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define WEB_HEADER ((char *)"w6bv") +#elif (defined(HOME_GATEWAY)) +#define WEB_HEADER ((char *)"w6bg") +#else +#define WEB_HEADER ((char *)"w6ba") +#endif +#elif defined(CONFIG_RTL_8198C)||defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8198B) +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define WEB_HEADER ((char *)"w6cv") +#elif (defined(HOME_GATEWAY)) +#define WEB_HEADER ((char *)"w6cg") +#else +#define WEB_HEADER ((char *)"w6ca") +#endif +#else +#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) +#define WEB_HEADER ((char *)"webv") +#elif (defined(HOME_GATEWAY)) +#define WEB_HEADER ((char *)"webg") +#else +#define WEB_HEADER ((char *)"weba") +#endif +#endif //#if defined(CONFIG_RTL_8196B) + +#if defined(CONFIG_RTL_8196B) +#define ROOT_HEADER ((char *)"r6br") +#elif defined(CONFIG_RTL_8198C)||defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8198B) +#define ROOT_HEADER ((char *)"r6cr") +#else +#define ROOT_HEADER ((char *)"root") +#endif //#if defined(CONFIG_RTL_8196B) + +#define CERT_HEADER ((char *)"cert") +#define BOOT_HEADER ((char *)"boot") +#define ALL_HEADER ((char *)"allp") +#define SIGNATURE_LEN 4 + +/* wlan driver ioctl id */ +#define SIOCGIWRTLSTAINFO 0x8B30 // get station table information +#define SIOCGIWRTLSTANUM 0x8B31 // get the number of stations in table +#define SIOCGIWRTLSCANREQ 0x8B33 // scan request +#define SIOCGIWRTLGETBSSDB 0x8B34 // get bss data base +#define SIOCGIWRTLJOINREQ 0x8B35 // join request +#define SIOCGIWRTLJOINREQSTATUS 0x8B36 // get status of join request +#define SIOCGIWRTLGETBSSINFO 0x8B37 // get currnet bss info +#define SIOCGIWRTLGETWDSINFO 0x8B38 +#define SIOCGMISCDATA 0x8B48 // get misc data + +/*for P2P_SUPPORT*/ +#define SIOCP2PSCANREQ 0x8BD2 // p2p scan request +#define SIOCP2PGETRESULT 0x8BD3 // get p2p discovery result +#define SIOCP2PPROVREQ 0x8BD4 // issue provision discovery request +#define SIOCP2WSCMETHODCONF 0x8BD5 // report event and state +#define SIOCP2PPGETEVNIND 0x8BD6 // report event and state + +#define SIOCP2P_WSC_REPORT_STATE 0x8BD7 +#define SIOCP2P_REPORT_CLIENT_STATE 0x8BD8 // report client connect state + + + +//=========add for MESH========= +//#ifdef CONFIG_RTK_MESH Keith remove +// by GANTOE for site survey 2008/12/26 +#define SIOCJOINMESH 0x8B94 +#define SIOCCHECKMESHLINK 0x8B95 +//#endif Keith remove +//=========add for MESH========= + +#define MAC_ADDR_LEN 6 +#define MAX_STA_NUM 64 // max support sta number + +/* flag of sta info */ +#define STA_INFO_FLAG_AUTH_OPEN 0x01 +#define STA_INFO_FLAG_AUTH_WEP 0x02 +#define STA_INFO_FLAG_ASOC 0x04 +#define STA_INFO_FLAG_ASLEEP 0x08 + +// bit value for hw board id +#if 0 +// Old code and no longer used +#define ETH_PHY_TYPE 1 +#define BOOT_PORT_SELECT 2 +#define USE_ETH0_WAN 4 +#endif +#define WLAN_RF_2T2R 1 + +#ifdef WIFI_SIMPLE_CONFIG +enum { WSC_AUTH_OPEN=1, WSC_AUTH_WPAPSK=2, WSC_AUTH_SHARED=4, WSC_AUTH_WPA=8, WSC_AUTH_WPA2=0x10, WSC_AUTH_WPA2PSK=0x20, WSC_AUTH_WPA2PSKMIXED=0x22 }; +enum { WSC_ENCRYPT_NONE=1, WSC_ENCRYPT_WEP=2, WSC_ENCRYPT_TKIP=4, WSC_ENCRYPT_AES=8, WSC_ENCRYPT_TKIPAES=12 }; + +enum { +CONFIG_METHOD_ETH=0x2, + CONFIG_METHOD_PIN=0x4, + CONFIG_METHOD_DISPLAY=0x8 , + CONFIG_METHOD_PBC=0x80 , + CONFIG_METHOD_KEYPAD=0x100 +}; + +enum { CONFIG_BY_INTERNAL_REGISTRAR=1, CONFIG_BY_EXTERNAL_REGISTRAR=2}; +#endif +typedef enum { + ENCRYPT_WPA_TKIP = 2, + ENCRYPT_WPA_AES = 3, + ENCRYPT_WPA2_AES = 4, + ENCRYPT_WPA2_TKIP = 5, +} WPAENCRYPT_T; +typedef enum { ENCRYPT_DISABLED=0, ENCRYPT_WEP=1, ENCRYPT_WPA=2, ENCRYPT_WPA2=4, ENCRYPT_WPA2_MIXED=6 ,ENCRYPT_WAPI=7} ENCRYPT_T; +typedef enum { WDS_ENCRYPT_DISABLED=0, WDS_ENCRYPT_WEP64=1, WDS_ENCRYPT_WEP128=2, WDS_ENCRYPT_TKIP=3, WDS_ENCRYPT_AES=4} WDS_ENCRYPT_T; +typedef enum { SUPP_NONWPA_NONE=0,SUPP_NONWPA_WEP=1,SUPP_NONWPA_1X=2} SUPP_NONWAP_T; +typedef enum { WPA_AUTH_AUTO=1, WPA_AUTH_PSK=2 } WPA_AUTH_T; +typedef enum { WAPI_AUTH_AUTO=1, WAPI_AUTH_PSK=2 } WAPI_AUTH_T; +typedef enum { WPA_CIPHER_TKIP=1, WPA_CIPHER_AES=2, WPA_CIPHER_MIXED=3 } WPA_CIPHER_T; +typedef enum { WEP_DISABLED=0, WEP64=1, WEP128=2 } WEP_T; +typedef enum { KEY_ASCII=0, KEY_HEX } KEY_TYPE_T; +typedef enum { LONG_PREAMBLE=0, SHORT_PREAMBLE=1 } PREAMBLE_T; +typedef enum { DHCP_DISABLED=0, DHCP_CLIENT=1, DHCP_SERVER=2, PPPOE=3, PPTP=4, DHCP_RELAY=5,L2TP=6, DHCP_AUTO=15 , USB3G=16, AFTR=17, DHCP_AUTO_WAN=19, DHCP_NONE=99 } DHCP_T; /* # keith: add l2tp support. 20080515 */ +typedef enum { DHCP_LAN_NONE=0, DHCP_LAN_CLIENT=1, DHCP_LAN_SERVER=2, DHCP_LAN_RELAY=3 } DHCP_TYPE_T; //keith add. LAN SIDE DHCP TYPE +typedef enum { GATEWAY_MODE=0, BRIDGE_MODE=1, WISP_MODE=2 } OPMODE_T; +typedef enum { DISABLE_MODE=0, RIP1_MODE=1, RIP2_MODE=2 } RIP_OPMODE_T; +#ifdef RIP6_SUPPORT +typedef enum { RIP6_DISABLE=0, RIP6_ENABLE=1 } RIP6_OPMODE_T; +#endif +typedef enum { FCC=1, IC, ETSI, SPAIN, FRANCE, MKK } REG_DOMAIN_T; +typedef enum { AUTH_OPEN=0, AUTH_SHARED, AUTH_BOTH } AUTH_TYPE_T; +typedef enum { DNS_AUTO=0, DNS_MANUAL } DNS_TYPE_T; +#if defined(CONFIG_DYNAMIC_WAN_IP) +typedef enum { DYNAMIC_IP=0, STATIC_IP } WAN_IP_TYPE_T; +#endif +typedef enum { CONTINUOUS=0, CONNECT_ON_DEMAND, MANUAL } PPP_CONNECT_TYPE_T; +typedef enum { RF_INTERSIL=1, RF_RFMD=2, RF_PHILIP=3, RF_MAXIM=4, RF_GCT=5, + RF_MAXIM_AG=6, RF_ZEBRA=7, RF_8255=8 } RF_TYPE_T; +typedef enum { LED_TX_RX=0, LED_LINK_TXRX=1, LED_LINKTXRX=2 } LED_TYPE_T; +typedef enum { VLAN_FORWARD_DISABLED=0, VLAN_FORWARD_BRIDGE=1, VLAN_FORWARD_NAT=2 } VLAN_FORWARD_TYPE_T; + +typedef enum { CHIP_UNKNOWN=0, CHIP_RTL8188C=1, CHIP_RTL8192C=2, CHIP_RTL8192D=3, CHIP_RTL8192E=4,CHIP_RTL8188E=5, } CHIP_VERSION_T; + +typedef enum { + AP_MODE=0, + CLIENT_MODE=1, + WDS_MODE=2, + AP_WDS_MODE=3, + AP_MESH_MODE=4, + MESH_MODE=5, + MP_MODE=7, + P2P_SUPPORT_MODE=8 +} WLAN_MODE_T; + +//=========add for MESH========= + +typedef enum { INFRASTRUCTURE=0, ADHOC=1 } NETWORK_TYPE_T; +typedef enum { BAND_11B=1, BAND_11G=2, BAND_11BG=3, BAND_11A=4, BAND_11N=8, BAND_5G_11AN=12, + BAND_5G_11AC=64,BAND_5G_11AAC=68,BAND_5G_11NAC=72,BAND_5G_11ANAC=76} BAND_TYPE_T; +typedef enum { DISABLED=0, A_MPDU=1, A_MSDU=2, A_MIXED=3} AGGREGATION_MODE_T; // GANTOE & epopen: DISABLED=0 original is DISABLE=0, Because conflict with ../../auth/include/1x_common.h in AP/net-snmp-5.x.x +typedef enum { PHYBAND_OFF=0, PHYBAND_2G=1, PHYBAND_5G=2 } PHYBAND_TYPE_T; +typedef enum { SMACSPHY=0, DMACSPHY=1, DMACDPHY=2 } MACPHYMODE_TYPE_T; +typedef enum { BANDMODE2G=0, BANDMODE5G=1, BANDMODEBOTH=2, BANDMODESINGLE=3 } WLANBAND2G5GMODE_TYPE_T; + +#ifdef HOME_GATEWAY +#ifdef VPN_SUPPORT +typedef enum { IKE_MODE=0, MANUAL_MODE=1} KEY_MODE_T; +typedef enum { SINGLE_ADDR=0, SUBNET_ADDR=1, ANY_ADDR=2, NATT_ADDR=3} ADDRESS_MODE_T; +typedef enum { INITIATOR=0, RESPONDER=1} CONN_TYPE_T; +typedef enum { MD5_ALGO=0, AUTH_ALGO=1} AUTH_MODE_T; +typedef enum { ESP_PROTO=0, AH_PROTO=1} IPSEC_PROTO_T; +typedef enum { TRI_DES_ALGO=0, AES_ALGO=1, NONE_ALGO=2} ENCR_MODE_T; +// DH1=768 bits, DH2=1024 bits, DH5= 1536 +typedef enum { DH1_GRP=0, DH2_GRP=1, DH5_GRP=2} KEY_GROUP_T; +#endif // VPN_SUPPORT +typedef enum { PROTO_BOTH=3, PROTO_TCP=1, PROTO_UDP=2 } PROTO_TYPE_T; +typedef enum { IPv4=4, IPv6=6 } IP_VERSION_T; +#endif // HOME_GATEWAY + +#ifdef WLAN_EASY_CONFIG +enum { MODE_BUTTON=1, MODE_QUESTION=2 }; +enum { + ACF_ALGORITHM_WEP64 = 0x01, + ACF_ALGORITHM_WEP128 = 0x02, + ACF_ALGORITHM_WPA_TKIP = 0x04, + ACF_ALGORITHM_WPA_AES = 0x08, + ACF_ALGORITHM_WPA2_TKIP = 0x10, + ACF_ALGORITHM_WPA2_AES = 0x20, +}; +enum { ROLE_SERVER=1, ROLE_CLIENT=2, ROLE_ADHOC=4}; +#endif // WLAN_EASY_CONFIG + +enum {TURBO_AUTO=0, TURBO_ON=1, TURBO_OFF=2}; + + +#if defined(CONFIG_RTL_802_1X_CLIENT_SUPPORT) || defined(CONFIG_RTL_ETH_802DOT1X_CLIENT_MODE_SUPPORT) + +typedef enum { EAP_MD5=0, EAP_TLS=1, EAP_PEAP=2,EAP_TTLS=3 } EAP_TYPE_T; +typedef enum { INSIDE_MSCHAPV2=0 } INSIDE_TYPE_T; +#define MAX_EAP_USER_ID_LEN 64 +#define MAX_RS_USER_NAME_LEN 64 +#define MAX_RS_USER_PASS_LEN 64 +#define MAX_RS_USER_CERT_PASS_LEN 64 +#define RS_USER_CERT_5G "/var/1x/client_5g.pem" +#define RS_ROOT_CERT_5G "/var/1x/ca_5g.pem" +#define RS_USER_CERT_2G "/var/1x/client_2g.pem" +#define RS_ROOT_CERT_2G "/var/1x/ca_2g.pem" +#define RS_USER_CERT_TMP "/var/1x/client_tmp.pem" +#define RS_ROOT_CERT_TMP "/var/1x/ca_tmp.pem" +#if defined(CONFIG_RTL_ETH_802DOT1X_CLIENT_MODE_SUPPORT) +typedef enum { TTLS_PHASE2_EAP=0,TTLS_PHASE2_PAP=1,TTLS_PHASE2_CHAP=2,TTLS_PHASE2_MSCHAP=3,TTLS_PHASE2_MSCHAPV2=4 } TTLS_PHASE2_TYPE_T; +typedef enum { TTLS_PHASE2_EAP_MD5=0 } TTLS_PHASE2_EAP_METHOD_T; + +#define RS_USER_CERT_ETH "/var/1x/client_eth.pem" +#define RS_ROOT_CERT_ETH "/var/1x/ca_eth.pem" +#define CERT_SIZE 0x12000 //48KB,for ethernet 1x should be sync with users/auth/src/rwCertSrc/rsCertCommon.h +#else +#define CERT_SIZE 0x8000 //32KB, should be sync with users/auth/src/rwCertSrc/rsCertCommon.h +#endif +#endif + + + +#if defined(CONFIG_RTL_ULINKER) +#include "rtl_ulinker.h" +#endif + + + +#define DWORD_SWAP(v) ( (((v&0xff)<<24)&0xff000000) | ((((v>>8)&0xff)<<16)&0xff0000) | \ + ((((v>>16)&0xff)<<8)&0xff00) | (((v>>24)&0xff)&0xff) ) +#define WORD_SWAP(v) ((unsigned short)(((v>>8)&0xff) | ((v<<8)&0xff00))) + +#ifdef HEADER_LEN_INT +#define HEADER_SWAP(v) DWORD_SWAP(v) +#else +#define HEADER_SWAP(v) WORD_SWAP(v) +#endif +/* scramble saved configuration data */ +#define ENCODE_DATA(data,len) { \ + int i; \ + for (i=0; iCHECKSUM_LEN_MAX) + return 0; + for (i=0; i + * + * $Id: apmib.h,v 1.55 2009/10/06 05:49:10 bradhuang Exp $ + * + */ + +#define NOREP + +#ifdef MIB_HW_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, boardVer, , BOARD_VER, BYTE_T, HW_SETTING_T, 0, 0) +MIBDEF(unsigned char, nic0Addr, [6], NIC0_ADDR, BYTE6_T, HW_SETTING_T, 0, 0) +MIBDEF(unsigned char, nic1Addr, [6], NIC1_ADDR, BYTE6_T, HW_SETTING_T, 0, 0) +MIBDEF(HW_WLAN_SETTING_T, wlan, [NUM_WLAN_INTERFACE], WLAN_ROOT, TABLE_LIST_T, HW_SETTING_T, 0, hwmib_wlan_table) +#endif // #ifdef MIB_HW_IMPORT + +#ifdef MIB_HW_WLAN_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, macAddr, [6], WLAN_ADDR, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAddr1, [6], WLAN_ADDR1, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAddr2, [6], WLAN_ADDR2, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAddr3, [6], WLAN_ADDR3, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAddr4, [6], WLAN_ADDR4, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAddr5, [6], WLAN_ADDR5, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAddr6,[6], WLAN_ADDR6, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAddr7, [6], WLAN_ADDR7, BYTE6_T, HW_WLAN_SETTING_T, 0, 0) +#if defined(CONFIG_RTL_8196B) +MIBDEF(unsigned char, txPowerCCK, [MAX_CCK_CHAN_NUM], TX_POWER_CCK, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, txPowerOFDM_HT_OFDM_1S, [MAX_OFDM_CHAN_NUM], TX_POWER_OFDM_1S, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, txPowerOFDM_HT_OFDM_2S, [MAX_OFDM_CHAN_NUM], TX_POWER_OFDM_2S, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, regDomain, , REG_DOMAIN, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rfType, , RF_TYPE, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, xCap, , 11N_XCAP, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, LOFDMPwDiffA, , 11N_LOFDMPWDA, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, LOFDMPwDiffB, , 11N_LOFDMPWDB, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, TSSI1, , 11N_TSSI1, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, TSSI2, , 11N_TSSI2, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Ther, , 11N_THER, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, ledType, , LED_TYPE, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved1, , 11N_RESERVED1, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved2, , 11N_RESERVED2, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved3, , 11N_RESERVED3, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved4, , 11N_RESERVED4, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved5, , 11N_RESERVED5, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved6, , 11N_RESERVED6, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved7, , 11N_RESERVED7, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved8, , 11N_RESERVED8, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +#else /*rtl8196c*/ +MIBDEF(unsigned char, pwrlevelCCK_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_CCK_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevelCCK_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_CCK_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevelHT40_1S_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_HT40_1S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevelHT40_1S_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_HT40_1S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiffHT40_2S, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_HT40_2S, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiffHT20, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_HT20, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiffOFDM, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, regDomain, , REG_DOMAIN, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rfType, , RF_TYPE, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, ledType, , LED_TYPE, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, xCap, , 11N_XCAP, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, TSSI1, , 11N_TSSI1, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, TSSI2, , 11N_TSSI2, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Ther, , 11N_THER, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, trswitch, , 11N_TRSWITCH, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, trswpape_C9, , 11N_TRSWPAPE_C9, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, trswpape_CC, , 11N_TRSWPAPE_CC, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, target_pwr, , 11N_TARGET_PWR, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pa_type, , 11N_PA_TYPE, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Ther2, , 11N_THER_2, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, xCap2, , 11N_XCAP_2, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved8, , 11N_RESERVED8, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved9, , 11N_RESERVED9, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, Reserved10, , 11N_RESERVED10, BYTE_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevel5GHT40_1S_A, [MAX_5G_CHANNEL_NUM_MIB], TX_POWER_5G_HT40_1S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevel5GHT40_1S_B, [MAX_5G_CHANNEL_NUM_MIB], TX_POWER_5G_HT40_1S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff5GHT40_2S, [MAX_5G_CHANNEL_NUM_MIB], TX_POWER_DIFF_5G_HT40_2S, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff5GHT20, [MAX_5G_CHANNEL_NUM_MIB], TX_POWER_DIFF_5G_HT20, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff5GOFDM, [MAX_5G_CHANNEL_NUM_MIB], TX_POWER_DIFF_5G_OFDM, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +#endif +#if defined(WIFI_SIMPLE_CONFIG) || defined(HAVE_WIFI_SIMPLE_CONFIG) +MIBDEF(unsigned char, wscPin, [PIN_LEN+1], WSC_PIN, STRING_T, HW_WLAN_SETTING_T, 0, 0) +#endif + +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) +MIBDEF(unsigned char, pwrdiff_20BW1S_OFDM1T_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_20BW1S_OFDM1T_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW2S_20BW2S_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW2S_20BW2S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM2T_CCK2T_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM2T_CCK2T_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW3S_20BW3S_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW3S_20BW3S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_4OFDM3T_CCK3T_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM3T_CCK3T_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW4S_20BW4S_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW4S_20BW4S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM4T_CCK4T_A, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM4T_CCK4T_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, pwrdiff_5G_20BW1S_OFDM1T_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_20BW1S_OFDM1T_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW2S_20BW2S_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW2S_20BW2S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW3S_20BW3S_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW3S_20BW3S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW4S_20BW4S_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW4S_20BW4S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_RSVD_OFDM4T_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_RSVD_OFDM4T_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW1S_160BW1S_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW1S_160BW1S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW2S_160BW2S_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW2S_160BW2S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW3S_160BW3S_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW3S_160BW3S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW4S_160BW4S_A, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW4S_160BW4S_A, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) + + +MIBDEF(unsigned char, pwrdiff_20BW1S_OFDM1T_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_20BW1S_OFDM1T_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW2S_20BW2S_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW2S_20BW2S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM2T_CCK2T_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM2T_CCK2T_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW3S_20BW3S_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW3S_20BW3S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM3T_CCK3T_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM3T_CCK3T_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW4S_20BW4S_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW4S_20BW4S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM4T_CCK4T_B, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM4T_CCK4T_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, pwrdiff_5G_20BW1S_OFDM1T_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_20BW1S_OFDM1T_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW2S_20BW2S_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW2S_20BW2S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW3S_20BW3S_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW3S_20BW3S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW4S_20BW4S_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW4S_20BW4S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_RSVD_OFDM4T_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_RSVD_OFDM4T_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW1S_160BW1S_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW1S_160BW1S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW2S_160BW2S_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW2S_160BW2S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW3S_160BW3S_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW3S_160BW3S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW4S_160BW4S_B, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW4S_160BW4S_B, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +#endif //#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) + +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) +MIBDEF(unsigned char, pwrdiff_20BW1S_OFDM1T_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_20BW1S_OFDM1T_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW2S_20BW2S_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW2S_20BW2S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM2T_CCK2T_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM2T_CCK2T_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW3S_20BW3S_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW3S_20BW3S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_4OFDM3T_CCK3T_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM3T_CCK3T_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW4S_20BW4S_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW4S_20BW4S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM4T_CCK4T_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM4T_CCK4T_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, pwrdiff_5G_20BW1S_OFDM1T_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_20BW1S_OFDM1T_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW2S_20BW2S_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW2S_20BW2S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW3S_20BW3S_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW3S_20BW3S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW4S_20BW4S_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW4S_20BW4S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_RSVD_OFDM4T_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_RSVD_OFDM4T_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW1S_160BW1S_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW1S_160BW1S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW2S_160BW2S_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW2S_160BW2S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW3S_160BW3S_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW3S_160BW3S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW4S_160BW4S_C, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW4S_160BW4S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, pwrdiff_20BW1S_OFDM1T_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_20BW1S_OFDM1T_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW2S_20BW2S_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW2S_20BW2S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM2T_CCK2T_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM2T_CCK2T_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW3S_20BW3S_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW3S_20BW3S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM3T_CCK3T_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM3T_CCK3T_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_40BW4S_20BW4S_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_40BW4S_20BW4S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_OFDM4T_CCK4T_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_DIFF_OFDM4T_CCK4T_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, pwrdiff_5G_20BW1S_OFDM1T_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_20BW1S_OFDM1T_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW2S_20BW2S_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW2S_20BW2S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW3S_20BW3S_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW3S_20BW3S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_40BW4S_20BW4S_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_40BW4S_20BW4S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_RSVD_OFDM4T_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_RSVD_OFDM4T_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW1S_160BW1S_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW1S_160BW1S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW2S_160BW2S_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW2S_160BW2S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW3S_160BW3S_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW3S_160BW3S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrdiff_5G_80BW4S_160BW4S_D, [MAX_5G_DIFF_NUM], TX_POWER_DIFF_5G_80BW4S_160BW4S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, pwrlevelCCK_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_CCK_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevelCCK_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_CCK_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevelHT40_1S_C, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_HT40_1S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevelHT40_1S_D, [MAX_2G_CHANNEL_NUM_MIB], TX_POWER_HT40_1S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevel5GHT40_1S_C, [MAX_5G_CHANNEL_NUM_MIB], TX_POWER_5G_HT40_1S_C, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, pwrlevel5GHT40_1S_D, [MAX_5G_CHANNEL_NUM_MIB], TX_POWER_5G_HT40_1S_D, BYTE_ARRAY_T, HW_WLAN_SETTING_T, 0, 0) +#endif //#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) +#endif // #ifdef MIB_HW_WLAN_IMPORT + +#ifdef MIB_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +// TCP/IP stuffs +MIBDEF(unsigned char, ipAddr, [4], IP_ADDR, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, subnetMask, [4], SUBNET_MASK, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, defaultGateway, [4], DEFAULT_GATEWAY, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dhcp, , DHCP, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dhcpClientStart, [4], DHCP_CLIENT_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dhcpClientEnd, [4], DHCP_CLIENT_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned long, dhcpLeaseTime, , DHCP_LEASE_TIME, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, elanMacAddr, [6], ELAN_MAC_ADDR, BYTE6_T, APMIB_T, 0, 0) +//Brad add for static dhcp +MIBDEF(unsigned char, dns1, [4], DNS1, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dns2, [4], DNS2, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dns3, [4], DNS3, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, stpEnabled, , STP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, deviceName, [MAX_NAME_LEN], DEVICE_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, scrlogEnabled, , SCRLOG_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, autoDiscoveryEnabled, , AUTO_DISCOVERY_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, domainName, [MAX_NAME_LEN], DOMAIN_NAME, STRING_T, APMIB_T, 0, 0) + +#ifdef SUPER_NAME_SUPPORT +// Supervisor of web server account +MIBDEF(unsigned char, superName, [MAX_NAME_LEN], SUPER_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, superPassword, [MAX_NAME_LEN], SUPER_PASSWORD, STRING_T, APMIB_T, 0, 0) +#endif +// web server account +MIBDEF(unsigned char, userName, [MAX_NAME_LEN], USER_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, userPassword, [MAX_NAME_LEN], USER_PASSWORD, STRING_T, APMIB_T, 0, 0) + +#if defined(CONFIG_RTL_8198_AP_ROOT) || defined(CONFIG_RTL_8197D_AP) +MIBDEF(unsigned char, ntpEnabled, , NTP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, daylightsaveEnabled, , DAYLIGHT_SAVE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerId, , NTP_SERVER_ID, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpTimeZone, [8], NTP_TIMEZONE, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp1, [4], NTP_SERVER_IP1, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp2, [4], NTP_SERVER_IP2, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp3, [4], NTP_SERVER_IP3, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp4, [4], NTP_SERVER_IP4, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp5, [4], NTP_SERVER_IP5, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp6, [4], NTP_SERVER_IP6, IA_T, APMIB_T, 0, 0) +#endif + +#ifdef HOME_GATEWAY +MIBDEF(unsigned char, wanMacAddr, [6], WAN_MAC_ADDR, BYTE6_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wanDhcp, , WAN_DHCP, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wanIpAddr, [4], WAN_IP_ADDR, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wanSubnetMask, [4], WAN_SUBNET_MASK, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wanDefaultGateway, [4], WAN_DEFAULT_GATEWAY, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppUserName, [MAX_NAME_LEN_LONG], PPP_USER_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppPassword, [MAX_NAME_LEN_LONG], PPP_PASSWORD, STRING_T, APMIB_T, 0, 0) +//dzh begin + + +//MIBDEF(unsigned short, pppConnectCount, ,PPP_CONNECT_COUNT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppConnectCount, , PPP_CONNECT_COUNT, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, pppUserName2, [MAX_NAME_LEN_LONG], PPP_USER_NAME2, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppPassword2, [MAX_NAME_LEN_LONG], PPP_PASSWORD2, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, pppUserName3, [MAX_NAME_LEN_LONG], PPP_USER_NAME3, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppPassword3, [MAX_NAME_LEN_LONG], PPP_PASSWORD3, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, pppUserName4, [MAX_NAME_LEN_LONG], PPP_USER_NAME4, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppPassword4, [MAX_NAME_LEN_LONG], PPP_PASSWORD4, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, SubNet1Count, ,SUBNET1_COUNT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet1_F1_start, [4],SUBNET1_F1_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet1_F1_end, [4],SUBNET1_F1_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet1_F2_start, [4],SUBNET1_F2_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet1_F2_end, [4],SUBNET1_F2_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet1_F3_start, [4],SUBNET1_F3_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet1_F3_end, [4],SUBNET1_F3_END, IA_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, SubNet2Count, ,SUBNET2_COUNT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet2_F1_start, [4],SUBNET2_F1_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet2_F1_end, [4],SUBNET2_F1_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet2_F2_start, [4],SUBNET2_F2_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet2_F2_end, [4],SUBNET2_F2_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet2_F3_start, [4],SUBNET2_F3_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet2_F3_end, [4],SUBNET2_F3_END, IA_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, SubNet3Count, ,SUBNET3_COUNT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet3_F1_start, [4],SUBNET3_F1_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet3_F1_end, [4],SUBNET3_F1_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet3_F2_start, [4],SUBNET3_F2_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet3_F2_end, [4],SUBNET3_F2_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet3_F3_start, [4],SUBNET3_F3_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet3_F3_end, [4],SUBNET3_F3_END, IA_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, SubNet4Count, ,SUBNET4_COUNT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet4_F1_start, [4],SUBNET4_F1_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet4_F1_end, [4],SUBNET4_F1_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet4_F2_start, [4],SUBNET4_F2_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet4_F2_end, [4],SUBNET4_F2_END, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet4_F3_start, [4],SUBNET4_F3_START, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, SubNet4_F3_end, [4],SUBNET4_F3_END, IA_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, pppIdleTime2, , PPP_IDLE_TIME2, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppConnectType2, , PPP_CONNECT_TYPE2, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, pppIdleTime3, , PPP_IDLE_TIME3, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppConnectType3, , PPP_CONNECT_TYPE3, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, pppIdleTime4, , PPP_IDLE_TIME4, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppConnectType4, , PPP_CONNECT_TYPE4, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, pppMtuSize2, , PPP_MTU_SIZE2, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pppMtuSize3, , PPP_MTU_SIZE3, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pppMtuSize4, , PPP_MTU_SIZE4, WORD_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, pppServiceName2, [41], PPP_SERVICE_NAME2, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppServiceName3, [41], PPP_SERVICE_NAME3, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppServiceName4, [41], PPP_SERVICE_NAME4, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, pppSubNet1, [30], PPP_SUBNET1, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppSubNet2, [30], PPP_SUBNET2, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppSubNet3, [30], PPP_SUBNET3, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppSubNet4, [30], PPP_SUBNET4, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, pppSessionNum2, , PPP_SESSION_NUM2, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppServerMac2, [6], PPP_SERVER_MAC2, BYTE6_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, pppSessionNum3, , PPP_SESSION_NUM3, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppServerMac3, [6], PPP_SERVER_MAC3, BYTE6_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, pppSessionNum4, , PPP_SESSION_NUM4, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppServerMac4, [6], PPP_SERVER_MAC4, BYTE6_T, APMIB_T, 0, 0) + +//dzh end + +MIBDEF(DNS_TYPE_T, dnsMode, , DNS_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pppIdleTime, , PPP_IDLE_TIME, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppConnectType, , PPP_CONNECT_TYPE, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, dmzEnabled, , DMZ_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dmzHost, [4], DMZ_HOST, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, upnpEnabled, , UPNP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppoeWithDhcpEnabled, , PPPOE_DHCP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pppMtuSize, , PPP_MTU_SIZE, WORD_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, pptpIpAddr, [4], PPTP_IP_ADDR, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpSubnetMask, [4], PPTP_SUBNET_MASK, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpServerIpAddr, [4], PPTP_SERVER_IP_ADDR, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpUserName, [MAX_NAME_LEN_LONG], PPTP_USER_NAME, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, pptpPassword, [MAX_NAME_LEN_LONG], PPTP_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pptpMtuSize, , PPTP_MTU_SIZE, WORD_T, APMIB_T, 0, 0) + +/* # keith: add l2tp support. 20080515 */ +MIBDEF(unsigned char, l2tpIpAddr, [4], L2TP_IP_ADDR, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpSubnetMask, [4], L2TP_SUBNET_MASK, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpServerIpAddr, [MAX_PPTP_HOST_NAME_LEN], L2TP_SERVER_IP_ADDR, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpGateway, [4], L2TP_GATEWAY, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpUserName, [MAX_NAME_LEN_LONG], L2TP_USER_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpPassword, [MAX_NAME_LEN_LONG], L2TP_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, l2tpMtuSize, , L2TP_MTU_SIZE, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, l2tpIdleTime, , L2TP_IDLE_TIME, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpConnectType, , L2TP_CONNECTION_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, L2tpwanIPMode, , L2TP_WAN_IP_DYNAMIC, BYTE_T, APMIB_T, 0, 0) +#if defined(CONFIG_DYNAMIC_WAN_IP) +MIBDEF(unsigned char, l2tpDefGw, [4], L2TP_DEFAULT_GW, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpDefGw, [4], PPTP_DEFAULT_GW, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpWanIPMode, , PPTP_WAN_IP_DYNAMIC, BYTE_T, APMIB_T, 0, 0) +#ifdef CONFIG_GET_SERVER_IP_BY_DOMAIN +MIBDEF(unsigned char, pptpGetServByDomain, , PPTP_GET_SERV_BY_DOMAIN, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpServerDomain, [MAX_SERVER_DOMAIN_LEN], PPTP_SERVER_DOMAIN, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpGetServByDomain, , L2TP_GET_SERV_BY_DOMAIN, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, l2tpServerDomain, [MAX_SERVER_DOMAIN_LEN], L2TP_SERVER_DOMAIN, STRING_T, APMIB_T, 0, 0) +#endif +#endif + +/* USB3G */ +MIBDEF(unsigned char, usb3g_user, [32], USB3G_USER, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, usb3g_pass, [32], USB3G_PASS, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, usb3g_pin, [5], USB3G_PIN, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, usb3g_apn, [20], USB3G_APN, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, usb3g_dialnum, [12], USB3G_DIALNUM, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, usb3g_connType, [5], USB3G_CONN_TYPE, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, usb3g_idleTime, [5] , USB3G_IDLE_TIME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, usb3g_mtuSize, [5], USB3G_MTU_SIZE, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, lte4g, , LTE4G, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, ntpEnabled, , NTP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, daylightsaveEnabled, , DAYLIGHT_SAVE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerId, , NTP_SERVER_ID, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpTimeZone, [8], NTP_TIMEZONE, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp1, [4], NTP_SERVER_IP1, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp2, [4], NTP_SERVER_IP2, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp3, [4], NTP_SERVER_IP3, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp4, [4], NTP_SERVER_IP4, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp5, [4], NTP_SERVER_IP5, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ntpServerIp6, [4], NTP_SERVER_IP6, IA_T, APMIB_T, 0, 0) + +#ifdef CONFIG_CPU_UTILIZATION +MIBDEF(unsigned char, enable_cpu_utilization, , ENABLE_CPU_UTILIZATION, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cpu_utilization_interval, , CPU_UTILIZATION_INTERVAL,BYTE_T, APMIB_T, 0, 0) +#endif + +MIBDEF(unsigned char, ddnsEnabled, , DDNS_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ddnsType, , DDNS_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ddnsDomainName, [MAX_DOMAIN_LEN], DDNS_DOMAIN_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ddnsUser, [MAX_DOMAIN_LEN], DDNS_USER, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ddnsPassword, [MAX_NAME_LEN], DDNS_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, fixedIpMtuSize, , FIXED_IP_MTU_SIZE, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, dhcpMtuSize, , DHCP_MTU_SIZE, WORD_T, APMIB_T, 0, 0) +#endif // HOME_GATEWAY + +MIBDEF(unsigned char, opMode, , OP_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wispWanId, , WISP_WAN_ID, BYTE_T, APMIB_T, 0, 0) + +#ifdef HOME_GATEWAY +MIBDEF(unsigned char, wanAccessEnabled, , WEB_WAN_ACCESS_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pingAccessEnabled, , PING_WAN_ACCESS_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, hostName, [MAX_NAME_LEN], HOST_NAME, STRING_T, APMIB_T, 0, 0) +#endif // #ifdef HOME_GATEWAY + +MIBDEF(unsigned char, rtLogEnabled, , REMOTELOG_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, rtLogServer, [4], REMOTELOG_SERVER, IA_T, APMIB_T, 0, 0) + +#ifdef UNIVERSAL_REPEATER +// for wlan0 interface +MIBDEF(unsigned char, repeaterEnabled1, , REPEATER_ENABLED1, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, repeaterSSID1, [MAX_SSID_LEN], REPEATER_SSID1, STRING_T, APMIB_T, 0, 0) + +// for wlan1 interface +MIBDEF(unsigned char, repeaterEnabled2, , REPEATER_ENABLED2, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, repeaterSSID2, [MAX_SSID_LEN], REPEATER_SSID2, STRING_T, APMIB_T, 0, 0) +#endif // #ifdef UNIVERSAL_REPEATER + +MIBDEF(unsigned char, wifiSpecific, , WIFI_SPECIFIC, BYTE_T, APMIB_T, 0, 0) + +#ifdef HOME_GATEWAY +MIBDEF(unsigned char, pppServiceName, [41], PPP_SERVICE_NAME, STRING_T, APMIB_T, 0, 0) + + +#ifdef DOS_SUPPORT +MIBDEF(unsigned long, dosEnabled, , DOS_ENABLED, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, syssynFlood, , DOS_SYSSYN_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, sysfinFlood, , DOS_SYSFIN_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, sysudpFlood, , DOS_SYSUDP_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, sysicmpFlood, , DOS_SYSICMP_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pipsynFlood, , DOS_PIPSYN_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pipfinFlood, , DOS_PIPFIN_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pipudpFlood, , DOS_PIPUDP_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pipicmpFlood, , DOS_PIPICMP_FLOOD, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, blockTime, , DOS_BLOCK_TIME, WORD_T, APMIB_T, 0, 0) +#endif // #ifdef DOS_SUPPORT + +MIBDEF(unsigned char, vpnPassthruIPsecEnabled, , VPN_PASSTHRU_IPSEC_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vpnPassthruPPTPEnabled, , VPN_PASSTHRU_PPTP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vpnPassthruL2TPEnabled, , VPN_PASSTHRU_L2TP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cusPassThru, , CUSTOM_PASSTHRU_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpSecurityEnabled, , PPTP_SECURITY_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, igmpproxyDisabled, , IGMP_PROXY_DISABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpMppcEnabled, , PPTP_MPPC_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, pptpIdleTime, , PPTP_IDLE_TIME, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pptpConnectType, , PPTP_CONNECTION_TYPE, BYTE_T, APMIB_T, 0, 0) +#endif // #ifdef HOME_GATEWAY +MIBDEF(unsigned char, igmpFastLeaveDisabled, , IGMP_FAST_LEAVE_DISABLED, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, mibVer, , MIB_VER, BYTE_T, APMIB_T, 0, 0) + +// added by rock ///////////////////////////////////////// +#ifdef VOIP_SUPPORT +MIBDEF(voipCfgParam_t, voipCfgParam, , VOIP_CFG, VOIP_T, APMIB_T, 0, 0) +#endif + +MIBDEF(unsigned char, startMp, , START_MP, BYTE_T, APMIB_T, 0, 0) + +#ifdef HOME_GATEWAY +#ifdef CONFIG_IPV6 +MIBDEF(radvdCfgParam_t, radvdCfgParam, , IPV6_RADVD_PARAM, RADVDPREFIX_T, APMIB_T, 0, 0) +MIBDEF(dnsv6CfgParam_t, dnsCfgParam, , IPV6_DNSV6_PARAM, DNSV6_T, APMIB_T, 0, 0) +MIBDEF(dhcp6sCfgParam_t, dhcp6sCfgParam, , IPV6_DHCPV6S_PARAM, DHCPV6S_T, APMIB_T, 0, 0) +MIBDEF(dhcp6cCfgParam_t, dhcp6cCfgParam, , IPV6_DHCPV6C_PARAM, DHCPV6C_T, APMIB_T, 0, 0) +MIBDEF(addrIPv6CfgParam_t, addrIPv6CfgParam, , IPV6_ADDR_PARAM, ADDR6_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6CfgParam, , IPV6_ADDR6_PARAM, ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6LanCfgParam, , IPV6_ADDR_LAN_PARAM,ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6WanCfgParam, , IPV6_ADDR_WAN_PARAM,ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6GwCfgParam, , IPV6_ADDR_GW_PARAM,ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6PrefixCfgParam, , IPV6_ADDR_PFEFIX_PARAM,ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6DnsCfgParam, , IPV6_ADDR_DNS_PARAM,ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6DnsSecondary, , IPV6_ADDR_DNS_SECONDARY,ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(tunnelCfgParam_t, tunnelCfgParam, , IPV6_TUNNEL_PARAM, TUNNEL6_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, linkType, , IPV6_LINK_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, orignType, , IPV6_ORIGIN_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wanEnable, , IPV6_WAN_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipv6DnsAuto, , IPV6_DNS_AUTO, BYTE_T, APMIB_T, 0, 0) +//MIBDEF(unsigned char, mldproxyEnabled, , IPV6_MLD_PROXY_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, mldproxyDisabled, , MLD_PROXY_DISABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipv6DhcpMode, , IPV6_DHCP_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipv6DhcpPdEnable, , IPV6_DHCP_PD_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipv6DhcpRapidCommitEnable, , IPV6_DHCP_RAPID_COMMIT_ENABLE, BYTE_T, APMIB_T, 0, 0) +#ifdef TR181_SUPPORT +MIBDEF(unsigned char, ipv6DhcpcIface, [64] , IPV6_DHCPC_IFACE, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipv6DhcpcReqAddr, , IPV6_DHCPC_REQUEST_ADDR,BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned long, ipv6DhcpcSuggestedT1, , IPV6_DHCPC_SUGGESTEDT1,DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned long, ipv6DhcpcSuggestedT2, , IPV6_DHCPC_SUGGESTEDT2,DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipv6DhcpcSendOptNum, , IPV6_DHCPC_SENDOPT_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(DHCPV6C_SENDOPT_T, ipv6DhcpcSendOptTbl,[IPV6_DHCPC_SENDOPT_NUM], IPV6_DHCPC_SENDOPT_TBL, DHCPV6C_SENDOPT_ARRAY_T, APMIB_T, 0, mib_ipv6DhcpcSendOpt_tbl) +#endif + +#ifdef CONFIG_IPV6_CE_ROUTER_SUPPORT +MIBDEF(unsigned char, ula_enabled, , IPV6_ULA_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ula_mode, , IPV6_ULA_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(addr6CfgParam_t, addr6UlaPrefixParam, , IPV6_ADDR_ULA_PARAM,ADDRV6_T, APMIB_T, 0, 0) +#endif + +#ifdef CONFIG_DSLITE_SUPPORT +MIBDEF(addr6CfgParam_t, addr6AftrParam, , IPV6_ADDR_AFTR_PARAM, ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dsliteMode, , DSLITE_MODE, BYTE_T, APMIB_T, 0, 0) +#endif +#ifdef CONFIG_SIXRD_SUPPORT +MIBDEF(addr6CfgParam_t, addr66rdParam, , IPV6_6RD_PREFIX_PARAM, ADDRV6_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ip4MaskLen, , IPV4_6RD_MASK_LEN, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ip46rdBrAddr, [4], IPV4_6RD_BR_ADDR, IA_T, APMIB_T, 0, 0) +#endif +#endif /* #ifdef CONFIG_IPV6*/ +#ifdef TR181_SUPPORT +MIBDEF(unsigned char, DnsClientEnable, , DNS_CLIENT_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dnsClientServerNum, , DNS_CLIENT_SERVER_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(DNS_CLIENT_SERVER_T, dnsClientServerTbl,[DNS_CLIENT_SERVER_NUM], DNS_CLIENT_SERVER_TBL, DNS_CLIENT_SERVER_ARRAY_T, APMIB_T, 0, mib_dnsClientServer_tbl) +#endif +#endif + +#if (defined CONFIG_RTL_BT_CLIENT) || (defined CONFIG_RTL_TRANSMISSION) +MIBDEF(unsigned char, uploadDir, [64] , BT_UPLOAD_DIR, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, downloadDir, [64] , BT_DOWNLOAD_DIR, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, uLimit, , BT_TOTAL_ULIMIT, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, dLimit, , BT_TOTAL_DLIMIT, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, refreshTime, , BT_REFRESH_TIME, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, bt_enabled, , BT_ENABLED, BYTE_T, APMIB_T, 0, 0) +#endif + +#if defined(CONFIG_RTL_ULINKER) +MIBDEF(unsigned char, ulinker_auto, , ULINKER_AUTO, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ulinker_cur_mode, , ULINKER_CURRENT_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ulinker_lst_mode, , ULINKER_LATEST_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ulinker_cur_wl_mode, , ULINKER_CURRENT_WLAN_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ulinker_lst_wl_mode, , ULINKER_LATEST_WLAN_MODE, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, ulinker_repeaterEnabled1, , ULINKER_REPEATER_ENABLED1, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ulinker_repeaterEnabled2, , ULINKER_REPEATER_ENABLED2, BYTE_T, APMIB_T, 0, 0) + +#endif + +/*+++++added by Jack for Tr-069 configuration+++++*/ +#ifdef CONFIG_APP_TR069 + +MIBDEF(unsigned char, cwmp_enabled, , CWMP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ProvisioningCode, [CWMP_PROVISION_CODE_LEN], CWMP_PROVISIONINGCODE, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ACSURL, [CWMP_ACS_URL_LEN], CWMP_ACS_URL, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ACSUserName, [CWMP_ACS_USERNAME_LEN], CWMP_ACS_USERNAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ACSPassword, [CWMP_ACS_PASSWD_LEN], CWMP_ACS_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_InformEnable, , CWMP_INFORM_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_InformInterval, , CWMP_INFORM_INTERVAL, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_InformTime, , CWMP_INFORM_TIME, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ConnReqUserName, [CWMP_CONREQ_USERNAME_LEN], CWMP_CONREQ_USERNAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ConnReqPassword, [CWMP_CONREQ_PASSWD_LEN], CWMP_CONREQ_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_UpgradesManaged, , CWMP_ACS_UPGRADESMANAGED, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_RetryMinWaitInterval, , CWMP_RETRY_MIN_WAIT_INTERVAL, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_RetryIntervalMutiplier, , CWMP_RETRY_INTERVAL_MUTIPLIER, DWORD_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, cwmp_UDPConnReqAddr, [CWMP_UDP_CONN_REQ_ADDR_LEN], CWMP_UDP_CONN_REQ_ADDR, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_STUNEnable, , CWMP_STUN_EN, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_STUNServerAddr, [CWMP_STUN_SERVER_ADDR_LEN], CWMP_STUN_SERVER_ADDR, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_STUNServerPort, , CWMP_STUN_SERVER_PORT, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_STUNUsername, [CWMP_STUN_USERNAME_LEN], CWMP_STUN_USERNAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_STUNPassword, [CWMP_STUN_PASSWORD_LEN], CWMP_STUN_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(int, cwmp_STUNMaxKeepAlivePeriod, , CWMP_STUN_MAX_KEEP_ALIVE_PERIOD, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_STUNMinKeepAlivePeriod, , CWMP_STUN_MIN_KEEP_ALIVE_PERIOD, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_NATDetected, , CWMP_NAT_DETECTED, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, cwmp_LANConfPassword, [CWMP_LANCONF_PASSWD_LEN], CWMP_LAN_CONFIGPASSWD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_SerialNumber, [CWMP_SERIALNUMBER_LEN], CWMP_SERIALNUMBER, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_DHCP_ServerConf, , CWMP_DHCP_SERVERCONF, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_LAN_IPIFEnable, , CWMP_LAN_IPIFENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_LAN_EthIFEnable, , CWMP_LAN_ETHIFENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_LAN_EthIFDisable, , CWMP_LAN_ETHIFDISABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_WAN_EthIFDisable, , CWMP_WAN_ETHIFDISABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_WLAN_BasicEncry, , CWMP_WLAN_BASICENCRY, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_WLAN_WPAEncry, , CWMP_WLAN_WPAENCRY, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, cwmp_DL_CommandKey, [CWMP_COMMAND_KEY_LEN+1], CWMP_DL_COMMANDKEY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_DL_StartTime, , CWMP_DL_STARTTIME, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_DL_CompleteTime, , CWMP_DL_COMPLETETIME, WORD_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_DL_FaultCode, , CWMP_DL_FAULTCODE, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_Inform_EventCode, , CWMP_INFORM_EVENTCODE, WORD_T, APMIB_T, 0, 0) + + + + + +MIBDEF(unsigned char, cwmp_RB_CommandKey, [CWMP_COMMAND_KEY_LEN+1], CWMP_RB_COMMANDKEY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ACS_ParameterKey, [CWMP_COMMAND_KEY_LEN+1], CWMP_ACS_PARAMETERKEY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_CERT_Password, [CWMP_CERT_PASSWD_LEN+1], CWMP_CERT_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_Flag, , CWMP_FLAG, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_SI_CommandKey, [CWMP_COMMAND_KEY_LEN+1], CWMP_SI_COMMANDKEY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ParameterKey, [CWMP_COMMAND_KEY_LEN+1], CWMP_PARAMETERKEY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_pppconn_instnum, , CWMP_PPPCON_INSTNUM, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_ipconn_instnum, , CWMP_IPCON_INSTNUM, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_pppconn_created, , CWMP_PPPCON_CREATED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ipconn_created, , CWMP_IPCON_CREATED, BYTE_T, APMIB_T, 0, 0) +#ifdef _PRMT_USERINTERFACE_ +MIBDEF(unsigned char, UIF_PW_Shared, , UIF_PW_SHARED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, UIF_PW_Required, , UIF_PW_REQUIRED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, UIF_PW_User_Sel, , UIF_PW_USER_SEL, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, UIF_Upgrade, , UIF_UPGRADE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, UIF_WarrantyDate, , UIF_WARRANTYDATE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, UIF_AutoUpdateServer, [256], UIF_AUTOUPDATESERVER, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, UIF_UserUpdateServer, [256], UIF_USERUPDATESERVER, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, UIF_Cur_Lang, [16], UIF_CUR_LANG, STRING_T, APMIB_T, 0, 0) +#endif // #ifdef _PRMT_USERINTERFACE_ + +MIBDEF(unsigned char, cwmp_ACS_KickURL, [CWMP_KICK_URL], CWMP_ACS_KICKURL, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ACS_DownloadURL, [CWMP_DOWNLOAD_URL], CWMP_ACS_DOWNLOADURL, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_ConnReqPort, , CWMP_CONREQ_PORT, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ConnReqPath, [CONN_REQ_PATH_LEN], CWMP_CONREQ_PATH, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_Flag2, , CWMP_FLAG2, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_NotifyList, [CWMP_NOTIFY_LIST_LEN], CWMP_NOTIFY_LIST, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_ACSURL_old, [CWMP_ACS_URL_LEN], CWMP_ACS_URL_OLD, STRING_T, APMIB_T, 0, 0) + +#ifdef _PRMT_TR143_ +MIBDEF(unsigned char, tr143_udpecho_enable, , TR143_UDPECHO_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, tr143_udpecho_itftype, , TR143_UDPECHO_ITFTYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, tr143_udpecho_srcip, [4], TR143_UDPECHO_SRCIP, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, tr143_udpecho_port, , TR143_UDPECHO_PORT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, tr143_udpecho_plus, , TR143_UDPECHO_PLUS, BYTE_T, APMIB_T, 0, 0) +#endif // #ifdef _PRMT_TR143_ +MIBDEF(unsigned int, cwmp_UserInfo_Result, , CWMP_USERINFO_RESULT, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_Needreboot, , CWMP_NEED_REBOOT , BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_Persistent_Data,[256] , CWMP_PERSISTENT_DATA, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_SW_Port1_Disable, , CWMP_SW_PORT1_DISABLE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(int, cwmp_SW_Port1_MaxBitRate, , CWMP_SW_PORT1_MAXBITRATE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_SW_Port1_DuplexMode,[10] , CWMP_SW_PORT1_DUPLEXMODE, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_SW_Port2_Disable, , CWMP_SW_PORT2_DISABLE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(int, cwmp_SW_Port2_MaxBitRate, , CWMP_SW_PORT2_MAXBITRATE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_SW_Port2_DuplexMode,[10] , CWMP_SW_PORT2_DUPLEXMODE, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_SW_Port3_Disable, , CWMP_SW_PORT3_DISABLE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(int, cwmp_SW_Port3_MaxBitRate, , CWMP_SW_PORT3_MAXBITRATE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_SW_Port3_DuplexMode,[10] , CWMP_SW_PORT3_DUPLEXMODE, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_SW_Port4_Disable, , CWMP_SW_PORT4_DISABLE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(int, cwmp_SW_Port4_MaxBitRate, , CWMP_SW_PORT4_MAXBITRATE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_SW_Port4_DuplexMode,[10] , CWMP_SW_PORT4_DUPLEXMODE, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_SW_Port5_Disable, , CWMP_SW_PORT5_DISABLE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(int, cwmp_SW_Port5_MaxBitRate, , CWMP_SW_PORT5_MAXBITRATE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_SW_Port5_DuplexMode,[10] , CWMP_SW_PORT5_DUPLEXMODE, STRING_T, APMIB_T, 0, 0) + +MIBDEF(unsigned short, cwmp_pppoe_wan_vlanid, , CWMP_PPPOE_WAN_VLANID, WORD_T, APMIB_T, 0, 0) + +MIBDEF(unsigned int, cwmp_DefActNortiThrottle, , CWMP_DEF_ACT_NOTIF_THROTTLE, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned int, cwmp_ManageDevNortiLimit, , CWMP_MANAGE_DEV_NOTIF_LIMIT, DWORD_T, APMIB_T, 0, 0) + +#endif // #ifdef CONFIG_APP_TR069 + +#ifdef CONFIG_RTK_VLAN_WAN_TAG_SUPPORT +MIBDEF(unsigned char, vlan_wan_enable, NOREP, VLAN_WAN_ENALE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_tag, NOREP, VLAN_WAN_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vlan_wan_bridge_enable, NOREP, VLAN_WAN_BRIDGE_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_bridge_tag, NOREP, VLAN_WAN_BRIDGE_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_bridge_port, NOREP, VLAN_WAN_BRIDGE_PORT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vlan_wan_bridge_multicast_enable, NOREP, VLAN_WAN_BRIDGE_MULTICAST_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_bridge_multicast_tag, NOREP, VLAN_WAN_BRIDGE_MULTICAST_TAG, WORD_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, vlan_wan_host_enable, NOREP, VLAN_WAN_HOST_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_host_tag, NOREP, VLAN_WAN_HOST_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_host_pri, NOREP, VLAN_WAN_HOST_PRI, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vlan_wan_wifi_root_enable, NOREP, VLAN_WAN_WIFI_ROOT_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_root_tag, NOREP, VLAN_WAN_WIFI_ROOT_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_root_pri, NOREP, VLAN_WAN_WIFI_ROOT_PRI, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vlan_wan_wifi_vap0_enable, NOREP, VLAN_WAN_WIFI_VAP0_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap0_tag, NOREP, VLAN_WAN_WIFI_VAP0_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap0_pri, NOREP, VLAN_WAN_WIFI_VAP0_PRI, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vlan_wan_wifi_vap1_enable, NOREP, VLAN_WAN_WIFI_VAP1_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap1_tag, NOREP, VLAN_WAN_WIFI_VAP1_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap1_pri, NOREP, VLAN_WAN_WIFI_VAP1_PRI, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vlan_wan_wifi_vap2_enable, NOREP, VLAN_WAN_WIFI_VAP2_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap2_tag, NOREP, VLAN_WAN_WIFI_VAP2_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap2_pri, NOREP, VLAN_WAN_WIFI_VAP2_PRI, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, vlan_wan_wifi_vap3_enable, NOREP, VLAN_WAN_WIFI_VAP3_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap3_tag, NOREP, VLAN_WAN_WIFI_VAP3_TAG, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, vlan_wan_wifi_vap3_pri, NOREP, VLAN_WAN_WIFI_VAP3_PRI, WORD_T, APMIB_T, 0, 0) +#endif +// SNMP, Forrest added, 2007.10.25. +#ifdef CONFIG_SNMP +MIBDEF(unsigned char, snmpEnabled, , SNMP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpName, [MAX_SNMP_NAME_LEN], SNMP_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpLocation, [MAX_SNMP_LOCATION_LEN], SNMP_LOCATION, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpContact, [MAX_SNMP_CONTACT_LEN], SNMP_CONTACT, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpRWCommunity, [MAX_SNMP_COMMUNITY_LEN], SNMP_RWCOMMUNITY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpROCommunity, [MAX_SNMP_COMMUNITY_LEN], SNMP_ROCOMMUNITY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpTrapReceiver1, [4], SNMP_TRAP_RECEIVER1, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpTrapReceiver2, [4], SNMP_TRAP_RECEIVER2, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpTrapReceiver3, [4], SNMP_TRAP_RECEIVER3, IA_T, APMIB_T, 0, 0) +#endif // #ifdef CONFIG_SNMP + +MIBDEF(unsigned short, system_time_year, , SYSTIME_YEAR, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, system_time_month, , SYSTIME_MON, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, system_time_day, , SYSTIME_DAY, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, system_time_hour, , SYSTIME_HOUR, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, system_time_min, , SYSTIME_MIN, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, system_time_sec, , SYSTIME_SEC, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wlan11nOnOffTKIP, , WLAN_11N_ONOFF_TKIP, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, dhcpRsvdIpEnabled, , DHCPRSVDIP_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dhcpRsvdIpNum, , DHCPRSVDIP_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(DHCPRSVDIP_T, dhcpRsvdIpArray, [MAX_DHCP_RSVD_IP_NUM], DHCPRSVDIP_TBL, DHCPRSVDIP_ARRY_T, APMIB_T, 0, mib_dhcpRsvdIp_tbl) + +#ifdef WLAN_PROFILE +MIBDEF(unsigned char, wlan_profile_enable1, , PROFILE_ENABLED1, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wlan_profile_num1, , PROFILE_NUM1, BYTE_T, APMIB_T, 0, 0) +MIBDEF(WLAN_PROFILE_T, wlan_profile_arrary1, [MAX_WLAN_PROFILE_NUM],PROFILE_TBL1,PROFILE_ARRAY_T, APMIB_T, 0, mib_wlan_profile_tbl1) + +MIBDEF(unsigned char, wlan_profile_enable2, , PROFILE_ENABLED2, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, wlan_profile_num2, , PROFILE_NUM2, BYTE_T, APMIB_T, 0, 0) +MIBDEF(WLAN_PROFILE_T, wlan_profile_arrary2, [MAX_WLAN_PROFILE_NUM],PROFILE_TBL2,PROFILE_ARRAY_T, APMIB_T, 0, mib_wlan_profile_tbl2) +#endif + +MIBDEF(unsigned char, VlanConfigEnabled, , VLANCONFIG_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, VlanConfigNum, , VLANCONFIG_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +#if defined(VLAN_CONFIG_SUPPORTED) +MIBDEF(VLAN_CONFIG_T, VlanConfigArray, [MAX_IFACE_VLAN_CONFIG], VLANCONFIG_TBL, VLANCONFIG_ARRAY_T, APMIB_T, 0, mib_vlanconfig_tbl) +#endif + +#ifdef HOME_GATEWAY +MIBDEF(unsigned char, portFwEnabled, , PORTFW_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, portFwNum, , PORTFW_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(PORTFW_T, portFwArray, [MAX_FILTER_NUM], PORTFW_TBL, PORTFW_ARRAY_T, APMIB_T, 0, mib_portfw_tbl) + +MIBDEF(unsigned char, ipFilterEnabled, , IPFILTER_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipFilterNum, , IPFILTER_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(IPFILTER_T, ipFilterArray, [MAX_FILTER_NUM], IPFILTER_TBL, IPFILTER_ARRAY_T, APMIB_T, 0, mib_ipfilter_tbl) + +MIBDEF(unsigned char, portFilterEnabled, , PORTFILTER_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, portFilterNum, , PORTFILTER_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(PORTFILTER_T, portFilterArray, [MAX_FILTER_NUM], PORTFILTER_TBL, PORTFILTER_ARRAY_T, APMIB_T, 0, mib_portfilter_tbl) + +MIBDEF(unsigned char, macFilterEnabled, , MACFILTER_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, macFilterNum, , MACFILTER_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(MACFILTER_T, macFilterArray, [MAX_FILTER_NUM], MACFILTER_TBL, MACFILTER_ARRAY_T, APMIB_T, 0, mib_macfilter_tbl) + +MIBDEF(unsigned char, triggerPortEnabled, , TRIGGERPORT_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, triggerPortNum, , TRIGGERPORT_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(TRIGGERPORT_T, triggerPortArray, [MAX_FILTER_NUM], TRIGGERPORT_TBL, TRIGGERPORT_ARRAY_T, APMIB_T, 0, mib_triggerport_tbl) + +MIBDEF(unsigned char, urlFilterEnabled, , URLFILTER_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, urlFilterMode, , URLFILTER_MODE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, urlFilterNum, , URLFILTER_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(URLFILTER_T, urlFilterArray, [MAX_URLFILTER_NUM], URLFILTER_TBL, URLFILTER_ARRAY_T, APMIB_T, 0, mib_urlfilter_tbl) + +#if defined(_PRMT_X_TELEFONICA_ES_DHCPOPTION_) +MIBDEF(unsigned char, dhcpServerOptionNum, , DHCP_SERVER_OPTION_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(MIB_CE_DHCP_OPTION_T, dhcpServerOptionArray, [MAX_DHCP_SERVER_OPTION_NUM], DHCP_SERVER_OPTION_TBL, DHCP_SERVER_OPTION_ARRAY_T, APMIB_T, 0, mib_dhcpServerOption_tbl) + +MIBDEF(unsigned char, dhcpClientOptionNum, , DHCP_CLIENT_OPTION_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(MIB_CE_DHCP_OPTION_T, dhcpClientOptionArray, [MAX_DHCP_CLIENT_OPTION_NUM], DHCP_CLIENT_OPTION_TBL, DHCP_CLIENT_OPTION_ARRAY_T, APMIB_T, 0, mib_dhcpClientOption_tbl) + +MIBDEF(unsigned char, dhcpsServingPoolNum, , DHCPS_SERVING_POOL_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(DHCPS_SERVING_POOL_T, dhcpsServingPoolArray, [MAX_DHCPS_SERVING_POOL_NUM], DHCPS_SERVING_POOL_TBL, DHCPS_SERVING_POOL_ARRAY_T, APMIB_T, 0, mib_dhcpsServingPool_tbl) +#endif /* #if defined(_PRMT_X_TELEFONICA_ES_DHCPOPTION_) */ + +#ifdef ROUTE_SUPPORT +MIBDEF(unsigned char, staticRouteEnabled, , STATICROUTE_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, staticRouteNum, , STATICROUTE_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(STATICROUTE_T, staticRouteArray, [MAX_ROUTE_NUM], STATICROUTE_TBL, STATICROUTE_ARRAY_T, APMIB_T, 0, mib_staticroute_tbl) +MIBDEF(unsigned char, ripEnabled, , RIP_ENABLED, BYTE_T, APMIB_T, 0, 0) +#ifdef RIP6_SUPPORT +MIBDEF(unsigned char, rip6Enabled, , RIP6_ENABLED, BYTE_T, APMIB_T, 0, 0) +#endif +MIBDEF(unsigned char, ripLanTx, , RIP_LAN_TX, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ripLanRx, , RIP_LAN_RX, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ripWanTx, , RIP_WAN_TX, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ripWanRx, , RIP_WAN_RX, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, natEnabled, , NAT_ENABLED, BYTE_T, APMIB_T, 0, 0) +#endif // #ifdef ROUTE_SUPPORT +MIBDEF(unsigned char, sambaEnabled, , SAMBA_ENABLED, BYTE_T, APMIB_T, 0, 0) +#ifdef VPN_SUPPORT +MIBDEF(unsigned char, ipsecTunnelEnabled, , IPSECTUNNEL_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipsecTunnelNum, , IPSECTUNNEL_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(IPSECTUNNEL_T, ipsecTunnelArray, [MAX_TUNNEL_NUM], IPSECTUNNEL_TBL, IPSECTUNNEL_ARRAY_T, APMIB_T, 0, mib_ipsectunnel_tbl) +MIBDEF(unsigned char, ipsecNattEnabled, , IPSEC_NATT_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, ipsecRsaKeyFile, [MAX_RSA_FILE_LEN], IPSEC_RSA_FILE, BYTE_ARRAY_T, APMIB_T, 0, 0) +#endif // #ifdef VPN_SUPPORT + +MIBDEF(unsigned short, pppSessionNum, , PPP_SESSION_NUM, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, pppServerMac, [6], PPP_SERVER_MAC, BYTE6_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, l2tpPayload, [MAX_L2TP_BUFF_LEN], L2TP_PAYLOAD, BYTE_ARRAY_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, l2tpPayloadLength, , L2TP_PAYLOAD_LENGTH, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, l2tpNs, , L2TP_NS, WORD_T, APMIB_T, 0, 0) +#endif // #ifdef HOME_GATEWAY + +#ifdef CONFIG_APP_SIMPLE_CONFIG +MIBDEF(unsigned char, scDeviceType, , SC_DEVICE_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, scDeviceName, [MAX_SC_DEVICE_NAME], SC_DEVICE_NAME, STRING_T, APMIB_T, 0, 0) +#endif + +#ifdef RTK_CAPWAP +MIBDEF(unsigned char, capwapMode, , CAPWAP_MODE, BYTE_T, APMIB_T, 0, 0) +// for WTP +MIBDEF(unsigned char, wtpId, , CAPWAP_WTP_ID, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, acIpAddr,[4], CAPWAP_AC_IP, IA_T, APMIB_T, 0, 0) +// for AC +MIBDEF(unsigned char, wtpConfigNum, , CAPWAP_WTP_CONFIG_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(CAPWAP_WTP_CONFIG_T, wtpConfigArray, [MAX_CAPWAP_WTP_NUM], CAPWAP_WTP_CONFIG_TBL, CAPWAP_WTP_CONFIG_ARRAY_T, APMIB_T, 0, mib_capwap_wtp_config_tbl) +#endif // #ifdef RTK_CAPWAP + +#ifdef CONFIG_RTL_ETH_802DOT1X_SUPPORT +MIBDEF(unsigned long, rs_reauth_to, , ELAN_RS_REAUTH_TO, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, rsIpAddr, [4], ELAN_RS_IP, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, rsPort, , ELAN_RS_PORT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, rsPassword, [MAX_RS_PASS_LEN], ELAN_RS_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, enable1X, , ELAN_ENABLE_1X, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, accountRsEnabled, , ELAN_ACCOUNT_RS_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, accountRsIpAddr, [4], ELAN_ACCOUNT_RS_IP, IA_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, accountRsPort, , ELAN_ACCOUNT_RS_PORT, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, accountRsPassword, [MAX_RS_PASS_LEN], ELAN_ACCOUNT_RS_PASSWORD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, accountRsUpdateEnabled, , ELAN_ACCOUNT_RS_UPDATE_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, accountRsUpdateDelay, , ELAN_ACCOUNT_RS_UPDATE_DELAY, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, macAuthEnabled, , ELAN_MAC_AUTH_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, rsMaxRetry, , ELAN_RS_MAXRETRY, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, rsIntervalTime, , ELAN_RS_INTERVAL_TIME, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, accountRsMaxRetry, , ELAN_ACCOUNT_RS_MAXRETRY, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, accountRsIntervalTime, , ELAN_ACCOUNT_RS_INTERVAL_TIME, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, dot1xMode, , ELAN_DOT1X_MODE, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, dot1xProxyType, , ELAN_DOT1X_PROXY_TYPE, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, dot1xProxyClientModePortMask, , ELAN_DOT1X_CLIENT_MODE_PORT_MASK, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned short, dot1xProxyProxyModePortMask, , ELAN_DOT1X_PROXY_MODE_PORT_MASK, WORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, dot1xEapolUnicastEnabled, , ELAN_EAPOL_UNICAST_ENABLED, BYTE_T, APMIB_T, 0, 0) +#ifdef CONFIG_RTL_ETH_802DOT1X_CLIENT_MODE_SUPPORT +MIBDEF(unsigned char, eapType, , ELAN_EAP_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, eapInsideType, , ELAN_EAP_INSIDE_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, eapPhase2Type, , ELAN_EAP_PHASE2_TYPE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, phase2EapMethod, , ELAN_PHASE2_EAP_METHOD, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, eapUserId, [MAX_EAP_USER_ID_LEN+1], ELAN_EAP_USER_ID, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, rsUserName, [MAX_RS_USER_NAME_LEN+1], ELAN_RS_USER_NAME, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, rsUserPasswd, [MAX_RS_USER_PASS_LEN+1], ELAN_RS_USER_PASSWD, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, rsUserCertPasswd, [MAX_RS_USER_CERT_PASS_LEN+1], ELAN_RS_USER_CERT_PASSWD, STRING_T, APMIB_T, 0, 0) +#endif +MIBDEF(unsigned char, serverPortNum, , ELAN_DOT1X_SERVER_PORT, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, entryNum, , ELAN_DOT1X_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(ETHDOT1X_T, ethdot1xArray, [MAX_ELAN_DOT1X_PORTNUM+1], ELAN_DOT1X_TBL, ETHDOT1X_ARRAY_T, APMIB_T, 0, mib_ethdot1xconfig_tbl) +#endif + + +#ifdef TLS_CLIENT +MIBDEF(unsigned char, certRootNum, , CERTROOT_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(CERTROOT_T, certRootArray, [MAX_CERTROOT_NUM], CERTROOT_TBL, CERTROOT_ARRAY_T, APMIB_T, 0, mib_certroot_tbl) +MIBDEF(unsigned char, certUserNum, , CERTUSER_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(CERTUSER_T, certUserArray, [MAX_CERTUSER_NUM], CERTUSER_TBL, CERTUSER_ARRAY_T, APMIB_T, 0, mib_certuser_tbl) +MIBDEF(unsigned char, rootIdx, , ROOT_IDX, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, userIdx, , USER_IDX, BYTE_T, APMIB_T, 0, 0) +#endif // #ifdef TLS_CLIENT + +#if defined(GW_QOS_ENGINE) || defined(QOS_BY_BANDWIDTH) +MIBDEF(unsigned char, qosEnabled, , QOS_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, qosAutoUplinkSpeed, , QOS_AUTO_UPLINK_SPEED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned long, qosManualUplinkSpeed, , QOS_MANUAL_UPLINK_SPEED, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, qosAutoDownLinkSpeed, , QOS_AUTO_DOWNLINK_SPEED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned long, qosManualDownLinkSpeed, , QOS_MANUAL_DOWNLINK_SPEED, DWORD_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, qosRuleNum, , QOS_RULE_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +#endif // #if defined(GW_QOS_ENGINE) || defined(QOS_BY_BANDWIDTH) + +#if defined(GW_QOS_ENGINE) +MIBDEF(QOS_T, qosRuleArray, [MAX_QOS_RULE_NUM], QOS_RULE_TBL, QOS_ARRAY_T, APMIB_T, 0, mib_qos_tbl) +#endif // #if defined(GW_QOS_ENGINE) + +#if defined(QOS_BY_BANDWIDTH) +MIBDEF(IPQOS_T, qosRuleArray, [MAX_QOS_RULE_NUM], QOS_RULE_TBL, QOS_ARRAY_T, APMIB_T, 0, mib_qos_tbl) +#endif // #if defined(GW_QOS_ENGINE) + +MIBDEF(unsigned char, snmpROcommunity, [MAX_SNMP_COMMUNITY_LEN], SNMP_RO_COMMUNITY, STRING_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, snmpRWcommunity, [MAX_SNMP_COMMUNITY_LEN], SNMP_RW_COMMUNITY, STRING_T, APMIB_T, 0, 0) + +MIBDEF(CONFIG_WLAN_SETTING_T, wlan, [NUM_WLAN_INTERFACE][NUM_VWLAN_INTERFACE+1], WLAN_ROOT, TABLE_LIST_T, APMIB_T, 0, mib_wlan_table) + +//#ifdef CONFIG_RTL_FLASH_DUAL_IMAGE_ENABLE +MIBDEF(unsigned char, dualBankEnabled, , DUALBANK_ENABLED, BYTE_T, APMIB_T, 0, 0) //default test +MIBDEF(unsigned char, wlanBand2G5GSelect, , WLAN_BAND2G5G_SELECT, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, LanDhcpConfigurable, , LAN_DHCP_CONFIGURABLE, BYTE_T, APMIB_T, 0, 0) + +#if defined(WLAN_SUPPORT) + +MIBDEF(unsigned char, cwmp_WlanConf_Enabled, , CWMP_WLANCONF_ENABLED, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, cwmp_WlanConf_EntryNum, , CWMP_WLANCONF_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(CWMP_WLANCONF_T, cwmp_WlanConfArray, [MAX_CWMP_WLANCONF_NUM], CWMP_WLANCONF_TBL, CWMP_WLANCONF_ARRAY_T, APMIB_T, 0, mib_cwmp_wlanconf_tbl) +#endif + +#ifdef SAMBA_WEB_SUPPORT +MIBDEF(unsigned char, StorageUserNum, , STORAGE_USER_TBL_NUM, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, StorageGroupNum, , STORAGE_GROUP_TBL_NUM, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(unsigned char, StorageAnonEnable, , STORAGE_ANON_ENABLE, BYTE_T, APMIB_T, 0, 0) +//MIBDEF(unsigned char, StorageAnonFtpEnable, , STORAGE_ANON_FTP_ENABLE, BYTE_T, APMIB_T, 0, 0) +MIBDEF(unsigned char, StorageAnonDiskEnable, , STORAGE_ANON_DISK_ENABLE, BYTE_T, APMIB_T, 0, 0) + +MIBDEF(STORAGE_USER_T, StorageUserArray, [MAX_USER_NUM], STORAGE_USER_TBL, STORAGE_USER_ARRAY_T, APMIB_T,0,mib_storage_user_tbl) +MIBDEF(STORAGE_GROUP_T, StorageGroupArray, [MAX_GROUP_NUM], STORAGE_GROUP_TBL, STORAGE_GROUP_ARRAY_T, APMIB_T,0,mib_storage_group_tbl) + +MIBDEF(char, StorageFolderLocal, [20], STORAGE_FOLDER_LOCAL, STRING_T,APMIB_T,0,0) +MIBDEF(unsigned char, StorageEditUserIndex, , STORAGE_USER_EDIT_INDEX, BYTE_T,APMIB_T,0,0) +MIBDEF(unsigned char, StorageEditGroupIndex, , STORAGE_GROUP_EDIT_INDEX, BYTE_T,APMIB_T,0,0) +MIBDEF(char, StorageEditSambaFolder, [MAX_GROUP_NAME_LEN], STORAGE_FOLDER_EDIT_NAME, STRING_T,APMIB_T,0,0) +#endif + +#endif // #ifdef MIB_IMPORT + +#ifdef MIB_DHCPRSVDIP_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +#ifdef _PRMT_X_TELEFONICA_ES_DHCPOPTION_ +MIBDEF(unsigned char, dhcpRsvdIpEntryEnabled, , DHCPRSVDIP_ENTRY_ENABLED, BYTE_T, DHCPRSVDIP_T, 0, 0) +#endif +MIBDEF(unsigned char, ipAddr, [4], DHCPRSVDIP_IPADDR, IA_T, DHCPRSVDIP_T, 0, 0) +MIBDEF(unsigned char, macAddr, [6], DHCPRSVDIP_MACADDR, BYTE6_T, DHCPRSVDIP_T, 0, 0) +MIBDEF(unsigned char, hostName, [32], DHCPRSVDIP_HOSTNAME, STRING_T, DHCPRSVDIP_T, 0, 0) +MIBDEF(unsigned int, InstanceNum, , DHCPRSVDIP_INSTANCENUM, DWORD_T, DHCPRSVDIP_T, 0, 0) +#endif // #ifdef MIB_DHCPRSVDIP_IMPORT +#ifdef CONFIG_IPV6 +#ifdef TR181_SUPPORT +#ifdef MIB_IPV6_DHCPC_SENDOPT_IMPORT +MIBDEF(unsigned char, index, , IPV6_DHCPC_SENDOPT_INDEX, BYTE_T, DHCPV6C_SENDOPT_T, 0, 0) +MIBDEF(unsigned char, enable, , IPV6_DHCPC_SENDOPT_ENABLE, BYTE_T, DHCPV6C_SENDOPT_T, 0, 0) +MIBDEF(unsigned long, tag, , IPV6_DHCPC_SENDOPT_TAG, DWORD_T, DHCPV6C_SENDOPT_T, 0, 0) +MIBDEF(unsigned char, value, [64], IPV6_DHCPC_SENDOPT_VALUE,STRING_T , DHCPV6C_SENDOPT_T, 0, 0) +#endif +#endif +#endif +#ifdef TR181_SUPPORT +#ifdef MIB_DNS_CLIENT_SERVER_IMPORT +MIBDEF(unsigned char, index, , DNS_CLIENT_SERVER_INDEX, BYTE_T, DNS_CLIENT_SERVER_T, 0, 0) +MIBDEF(unsigned char, enable, , DNS_CLIENT_SERVER_ENABLE, BYTE_T, DNS_CLIENT_SERVER_T, 0, 0) +MIBDEF(unsigned char, status, , DNS_CLIENT_SERVER_STATUS, BYTE_T, DNS_CLIENT_SERVER_T, 0, 0) +//MIBDEF(unsigned char, alias, [64], DNS_CLIENT_SERVER_ALIAS, STRING_T, DNS_CLIENT_SERVER_T, 0, 0) +MIBDEF(unsigned char, ipAddr, [40], DNS_CLIENT_SERVER_IPADDR, STRING_T, DNS_CLIENT_SERVER_T, 0, 0) +//MIBDEF(unsigned char, interface, [64], DNS_CLIENT_SERVER_IF, STRING_T, DNS_CLIENT_SERVER_T, 0, 0) +MIBDEF(unsigned char, type, , DNS_CLIENT_SERVER_TYPE, BYTE_T, DNS_CLIENT_SERVER_T, 0, 0) +#endif +#endif +#ifdef WLAN_PROFILE +#ifdef MIB_WLAN_PROFILE_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, ssid, [MAX_SSID_LEN], PROFILE_SSID, STRING_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, encryption, , PROFILE_ENC, BYTE_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, auth, , PROFILE_AUTH, BYTE_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wpa_cipher, , PROFILE_WPA_CIPHER, BYTE_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wpaPSK, [MAX_PSK_LEN+1],PROFILE_WPA_PSK,STRING_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wep_default_key, , PROFILE_WEP_DEFAULT_KEY,BYTE_T,WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wepKey1, [WEP128_KEY_LEN*2+1],PROFILE_WEP_KEY1,BYTE_ARRAY_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wepKey2, [WEP128_KEY_LEN*2+1],PROFILE_WEP_KEY2,BYTE_ARRAY_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wepKey3, [WEP128_KEY_LEN*2+1],PROFILE_WEP_KEY3,BYTE_ARRAY_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wepKey4, [WEP128_KEY_LEN*2+1],PROFILE_WEP_KEY4,BYTE_ARRAY_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wepKeyType, , PROFILE_WEP_KEY_TYPE, BYTE_T, WLAN_PROFILE_T, 0, 0) +MIBDEF(unsigned char, wpaPSKFormat, , PROFILE_PSK_FORMAT, BYTE_T, WLAN_PROFILE_T, 0, 0) +#endif // #ifdef MIB_WLAN_PROFILE_IMPORT +#endif + +#ifdef MIB_SCHEDULE_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, text, [SCHEDULE_NAME_LEN], SCHEDULE_TEXT, STRING_T, SCHEDULE_T, 0, 0) +MIBDEF(unsigned short, eco, , SCHEDULE_ECO, WORD_T, SCHEDULE_T, 0, 0) +MIBDEF(unsigned short, fTime, , SCHEDULE_FTIME, WORD_T, SCHEDULE_T, 0, 0) +MIBDEF(unsigned short, tTime, , SCHEDULE_TTIME, WORD_T, SCHEDULE_T, 0, 0) +MIBDEF(unsigned short, day, , SCHEDULE_DAY, WORD_T, SCHEDULE_T, 0, 0) +#endif // #ifdef MIB_SCHEDULE_IMPORT + +#ifdef MIB_MACFILTER_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, macAddr, [6], MACFILTER_MACADDR, BYTE6_T, MACFILTER_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], MACFILTER_COMMENT, STRING_T, MACFILTER_T, 0, 0) +#endif // #ifdef MIB_MACFILTER_IMPORT + +#ifdef VLAN_CONFIG_SUPPORTED +#ifdef MIB_VLAN_CONFIG_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, enabled, , VLANCONFIG_ENTRY_ENABLED, BYTE_T, VLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned char, netIface, [IFNAMSIZE], VLANCONFIG_NETIFACE, STRING_T, VLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned char, tagged, , VLANCONFIG_TAGGED, BYTE_T, VLAN_CONFIG_T, 0, 0) +//MIBDEF(unsigned char, untagged, , VLANCONFIG_UNTAGGED, BYTE_T, VLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned char, priority, , VLANCONFIG_PRIORITY, BYTE_T, VLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned char, cfi, , VLANCONFIG_CFI, BYTE_T, VLAN_CONFIG_T, 0, 0) +//MIBDEF(unsigned char, groupId, , VLANCONFIG_GROUPID, BYTE_T, VLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned short, vlanId, , VLANCONFIG_VLANID, WORD_T, VLAN_CONFIG_T, 0, 0) +#if defined(CONFIG_RTK_VLAN_NEW_FEATURE) ||defined(CONFIG_RTL_HW_VLAN_SUPPORT) +MIBDEF(unsigned char, forwarding_rule, , VLANCONFIG_FORWARDING_RULE, BYTE_T, VLAN_CONFIG_T, 0, 0) +#endif +#endif // #ifdef MIB_VLAN_CONFIG_IMPORT +#endif // #ifdef VLAN_CONFIG_SUPPORTED + +#ifdef HOME_GATEWAY +#ifdef MIB_PORTFW_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, ipAddr, [4], PORTFW_IPADDR, IA_T, PORTFW_T, 0, 0) +MIBDEF(unsigned short, fromPort, , PORTFW_FROMPORT, WORD_T, PORTFW_T, 0, 0) +MIBDEF(unsigned short, toPort, , PORTFW_TOPORT, WORD_T, PORTFW_T, 0, 0) +MIBDEF(unsigned char, protoType, , PORTFW_PROTOTYPE, BYTE_T, PORTFW_T, 0, 0) +MIBDEF(unsigned short, svrport, , PORTFW_SVRPORT, WORD_T, PORTFW_T, 0, 0) +MIBDEF(unsigned char, svrName, [COMMENT_LEN], PORTFW_SVRNAME, STRING_T, PORTFW_T, 0, 0) +MIBDEF(unsigned int, InstanceNum, , PORTFW_INSTANCENUM, DWORD_T, PORTFW_T, 0, 0) +MIBDEF(unsigned int, WANIfIndex, , PORTFW_WANIFACE_ID, DWORD_T, PORTFW_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], PORTFW_COMMENT, STRING_T, PORTFW_T, 0, 0) +#endif // #ifdef MIB_PORTFW_IMPORT + +#ifdef MIB_IPFILTER_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, ipAddr, [4], IPFILTER_IPADDR, IA_T, IPFILTER_T, 0, 0) +MIBDEF(unsigned char, protoType, , IPFILTER_PROTOTYPE, BYTE_T, IPFILTER_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], IPFILTER_COMMENT, STRING_T, IPFILTER_T, 0, 0) +#ifdef CONFIG_IPV6 +MIBDEF(unsigned char, ip6Addr, [48], IPFILTER_IP6ADDR, STRING_T, IPFILTER_T, 0, 0) +MIBDEF(unsigned char, ipVer, , IPFILTER_IP_VERSION, BYTE_T, IPFILTER_T, 0, 0) +#endif +#endif // #ifdef MIB_IPFILTER_IMPORT + +#ifdef MIB_STORAGE_GROUP_IMPORT +MIBDEF(char, storage_group_name, [MAX_GROUP_NAME_LEN], STORAGE_GROUP_NAME, STRING_T, STORAGE_GROUP_T,0,0) +MIBDEF(char, storage_group_access, [10], STORAGE_GROUP_ACCESS, STRING_T, STORAGE_GROUP_T,0,0) + +MIBDEF(unsigned char, storage_group_sharefolder_flag, , STORAGE_GROUP_SHAREFOLDER_FLAG, BYTE_T, STORAGE_GROUP_T,0,0) +MIBDEF(char, storage_group_sharefolder, [MAX_FOLDER_NAME_LEN], STORAGE_GROUP_SHAREFOLDER, STRING_T, STORAGE_GROUP_T,0,0) +MIBDEF(char, storage_group_displayname, [MAX_DISPLAY_NAME_LEN], STORAGE_GROUP_DISPLAYNAME, STRING_T, STORAGE_GROUP_T,0,0) +#endif + +#ifdef MIB_STORAGE_USER_IMPORT +MIBDEF(char, storage_user_name, [MAX_USER_NAME_LEN], STORAGE_USER_NAME, STRING_T, STORAGE_USER_T,0,0) +MIBDEF(char, storage_user_password, [MAX_USER_PASSWD_LEN], STORAGE_USER_PASSWD,STRING_T, STORAGE_USER_T,0,0) +MIBDEF(char, storage_user_group, [MAX_GROUP_NAME_LEN], STORAGE_USER_GROUP, STRING_T, STORAGE_USER_T,0,0) +#endif + +#ifdef MIB_PORTFILTER_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned short, fromPort, , PORTFILTER_FROMPORT, WORD_T, PORTFILTER_T, 0, 0) +MIBDEF(unsigned short, toPort, , PORTFILTER_TOPORT, WORD_T, PORTFILTER_T, 0, 0) +MIBDEF(unsigned char, protoType, , PORTFILTER_PROTOTYPE, BYTE_T, PORTFILTER_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], PORTFILTER_COMMENT, STRING_T, PORTFILTER_T, 0, 0) +MIBDEF(unsigned char, ipVer, , PORTFILTER_IPVERSION, BYTE_T, PORTFILTER_T, 0, 0) +#endif // #ifdef MIB_PORTFILTER_IMPORT + +#ifdef MIB_TRIGGERPORT_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned short, tri_fromPort, , TRIGGERPORT_TRI_FROMPORT, WORD_T, TRIGGERPORT_T, 0, 0) +MIBDEF(unsigned short, tri_toPort, , TRIGGERPORT_TRI_TOPORT, WORD_T, TRIGGERPORT_T, 0, 0) +MIBDEF(unsigned char, tri_protoType, , TRIGGERPORT_TRI_PROTOTYPE, BYTE_T, TRIGGERPORT_T, 0, 0) +MIBDEF(unsigned short, inc_fromPort, , TRIGGERPORT_INC_FROMPORT, WORD_T, TRIGGERPORT_T, 0, 0) +MIBDEF(unsigned short, inc_toPort, , TRIGGERPORT_INC_TOPORT, WORD_T, TRIGGERPORT_T, 0, 0) +MIBDEF(unsigned char, inc_protoType, , TRIGGERPORT_INC_PROTOTYPE, BYTE_T, TRIGGERPORT_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], TRIGGERPORT_COMMENT, STRING_T, TRIGGERPORT_T, 0, 0) +#endif // #ifdef MIB_TRIGGERPORT_IMPORT + +#ifdef MIB_URLFILTER_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, urlAddr, [31], URLFILTER_URLADDR, STRING_T, URLFILTER_T, 0, 0) +MIBDEF(unsigned char, ruleMode, , URLFILTER_RULE_MODE, BYTE_T, URLFILTER_T, 0, 0) +#ifdef URL_FILTER_USER_MODE_SUPPORT +MIBDEF(unsigned char, usrMode, , URLFILTER_USR_MODE, BYTE_T,URLFILTER_T, 0, 0) +MIBDEF(unsigned char, ipAddr, [4], URLFILTER_IPADDR, IA_T, URLFILTER_T, 0, 0) +MIBDEF(unsigned char, macAddr,[6], URLFILTER_MACADDR, BYTE6_T,URLFILTER_T, 0, 0) +#endif +#endif // #ifdef MIB_URLFILTER_IMPORT + + +#ifdef ROUTE_SUPPORT +#ifdef MIB_STATICROUTE_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, dstAddr, [4], STATICROUTE_DSTADDR, IA_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, netmask, [4], STATICROUTE_NETMASK, IA_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, gateway, [4], STATICROUTE_GATEWAY, IA_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, interface, , STATICROUTE_INTERFACE, BYTE_T, STATICROUTE_T, 0, 0) +MIBDEF(int, metric, , STATICROUTE_METRIC, DWORD_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, Enable, , STATICROUTE_ENABLE, BYTE_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, Type, , STATICROUTE_TYPE, BYTE_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, SourceIP, [4], STATICROUTE_SRCADDR, IA_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, SourceMask, [4], STATICROUTE_SRCNETMASK, IA_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned int, ifIndex, , STATICROUTE_IFACEINDEX, DWORD_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned int, InstanceNum, , STATICROUTE_INSTANCENUM, DWORD_T, STATICROUTE_T, 0, 0) +MIBDEF(unsigned char, Flags, , STATICROUTE_FLAGS, BYTE_T, STATICROUTE_T, 0, 0) +#endif // #ifdef MIB_STATICROUTE_IMPORT +#endif // #ifdef ROUTE_SUPPORT + +#ifdef VPN_SUPPORT +#ifdef MIB_IPSECTUNNEL_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, tunnelId, , IPSECTUNNEL_TUNNELID, IA_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, authType, , IPSECTUNNEL_AUTHTYPE, IA_T, IPSECTUNNEL_T, 0, 0) +//local info +MIBDEF(unsigned char, lcType, , IPSECTUNNEL_LCTYPE, IA_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, lc_ipAddr, [4], IPSECTUNNEL_LC_IPADDR, IA_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, lc_maskLen, , IPSECTUNNEL_LC_MASKLEN, BYTE_T, IPSECTUNNEL_T, 0, 0) +//remote Info +MIBDEF(unsigned char, rtType, , IPSECTUNNEL_RTTYPE, IA_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, rt_ipAddr, [4], IPSECTUNNEL_RT_IPADDR, IA_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, rt_maskLen, , IPSECTUNNEL_RT_MASKLEN, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, rt_gwAddr, [4], IPSECTUNNEL_RT_GWADDR, IA_T, IPSECTUNNEL_T, 0, 0) +// Key mode common +MIBDEF(unsigned char, keyMode, , IPSECTUNNEL_KEYMODE, BYTE_T, IPSECTUNNEL_T, 0, 0) +//MIBDEF(unsigned char, espAh, , IPSECTUNNEL_ESPAH, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, espEncr, , IPSECTUNNEL_ESPENCR, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, espAuth, , IPSECTUNNEL_ESPAUTH, BYTE_T, IPSECTUNNEL_T, 0, 0) +//MIBDEF(unsigned char, ahAuth, , IPSECTUNNEL_AHAUTH, BYTE_T, IPSECTUNNEL_T, 0, 0) +//IKE mode +MIBDEF(unsigned char, conType, , IPSECTUNNEL_CONTYPE, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, psKey, [MAX_NAME_LEN], IPSECTUNNEL_PSKEY, STRING_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, rsaKey, [MAX_RSA_KEY_LEN], IPSECTUNNEL_RSAKEY, STRING_T, IPSECTUNNEL_T, 0, 0) +//Manual Mode +MIBDEF(unsigned char, spi, [MAX_SPI_LEN], IPSECTUNNEL_SPI, STRING_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, encrKey, [MAX_ENCRKEY_LEN], IPSECTUNNEL_ENCRKEY, STRING_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, authKey, [MAX_AUTHKEY_LEN], IPSECTUNNEL_AUTHKEY, STRING_T, IPSECTUNNEL_T, 0, 0) +// tunnel info +MIBDEF(unsigned char, enable, , IPSECTUNNEL_ENABLE, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, connName, [MAX_NAME_LEN], IPSECTUNNEL_CONNNAME, STRING_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, lcIdType, , IPSECTUNNEL_LCIDTYPE, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, rtIdType, , IPSECTUNNEL_LCIDTYPE, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, lcId, [MAX_NAME_LEN], IPSECTUNNEL_LCID, STRING_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, rtId, [MAX_NAME_LEN], IPSECTUNNEL_RTID, STRING_T, IPSECTUNNEL_T, 0, 0) +// ike Advanced setup +MIBDEF(unsigned long, ikeLifeTime, , IPSECTUNNEL_IKELIFETIME, DWORD_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, ikeEncr, , IPSECTUNNEL_IKEENCR, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, ikeAuth, , IPSECTUNNEL_IKEAUTH, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, ikeKeyGroup, , IPSECTUNNEL_IKEKEYGROUP, BYTE_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned long, ipsecLifeTime, , IPSECTUNNEL_IPSECLIFETIME, DWORD_T, IPSECTUNNEL_T, 0, 0) +MIBDEF(unsigned char, ipsecPfs, , IPSECTUNNEL_IPSECPFS, BYTE_T, IPSECTUNNEL_T, 0, 0) +#endif // #ifdef MIB_IPSECTUNNEL_IMPORT +#endif //#ifdef VPN_SUPPORT + +#if defined(_PRMT_X_TELEFONICA_ES_DHCPOPTION_) +#ifdef MIB_DHCPDOPTION_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, enable, , DHCP_SERVER_OPTION_ENABLED, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, usedFor, , DHCP_SERVER_OPTION_USEDFOR, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, order, , DHCP_SERVER_OPTION_ORDER, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, tag, , DHCP_SERVER_OPTION_TAG, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, len, , DHCP_SERVER_OPTION_LEN, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, value, [DHCP_OPT_VAL_LEN], DHCP_SERVER_OPTION_VALUE, BYTE_ARRAY_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, ifIndex, , DHCP_SERVER_OPTION_IFINDEX, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, dhcpOptInstNum, , DHCP_SERVER_OPTION_DHCPOPTINSTNUM, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, dhcpConSPInstNum, , DHCP_SERVER_OPTION_DHCPCONSPINSTNUM, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +#endif // #ifdef MIB_DHCPDOPTION_IMPORT + +#ifdef MIB_DHCPCOPTION_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, enable, , DHCP_CLIENT_OPTION_ENABLED, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, usedFor, , DHCP_CLIENT_OPTION_USEDFOR, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, order, , DHCP_CLIENT_OPTION_ORDER, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, tag, , DHCP_CLIENT_OPTION_TAG, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, len, , DHCP_CLIENT_OPTION_LEN, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, value, [DHCP_OPT_VAL_LEN], DHCP_CLIENT_OPTION_VALUE, BYTE_ARRAY_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, ifIndex, , DHCP_CLIENT_OPTION_IFINDEX, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, dhcpOptInstNum, , DHCP_CLIENT_OPTION_DHCPOPTINSTNUM, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +MIBDEF(unsigned char, dhcpConSPInstNum, , DHCP_CLIENT_OPTION_DHCPCONSPINSTNUM, BYTE_T, MIB_CE_DHCP_OPTION_T, 0, 0) +#endif // #ifdef MIB_DHCPCOPTION_IMPORT + +#ifdef MIB_DHCPS_SERVING_POOL_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, enable, , DHCPS_SERVING_POOL_ENABLE, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned int, poolorder, , DHCPS_SERVING_POOL_POOLORDER, DWORD_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, poolname, [MAX_NAME_LEN], DHCPS_SERVING_POOL_POOLNAME, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, deviceType, , DHCPS_SERVING_POOL_DEVICETYPE, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, rsvOptCode, , DHCPS_SERVING_POOL_RSVOPTCODE, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, sourceinterface, , DHCPS_SERVING_POOL_SOURCEINTERFACE, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, vendorclass,[OPTION_60_LEN+1], DHCPS_SERVING_POOL_VENDORCLASS, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, vendorclassflag, , DHCPS_SERVING_POOL_VENDORCLASSFLAG, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, vendorclassmode, [MODE_LEN], DHCPS_SERVING_POOL_VENDORCLASSMODE, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, clientid, [OPTION_LEN], DHCPS_SERVING_POOL_CLIENTID, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, clientidflag, , DHCPS_SERVING_POOL_CLIENTIDFLAG, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, userclass, [OPTION_LEN], DHCPS_SERVING_POOL_USERCLASS, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, userclassflag, , DHCPS_SERVING_POOL_USERCLASSFLAG, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, chaddr, [MAC_ADDR_LEN], DHCPS_SERVING_POOL_CHADDR, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, chaddrmask, [MAC_ADDR_LEN], DHCPS_SERVING_POOL_CHADDRMASK, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, chaddrflag, , DHCPS_SERVING_POOL_CHADDRFLAG, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, localserved, , DHCPS_SERVING_POOL_LOCALSERVED, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, startaddr, [IP_ADDR_LEN], DHCPS_SERVING_POOL_STARTADDR, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, endaddr, [IP_ADDR_LEN], DHCPS_SERVING_POOL_ENDADDR, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, subnetmask, [IP_ADDR_LEN], DHCPS_SERVING_POOL_SUBNETMASK, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, iprouter, [IP_ADDR_LEN], DHCPS_SERVING_POOL_IPROUTER, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, dnsserver1, [IP_ADDR_LEN], DHCPS_SERVING_POOL_DNSSERVER1, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, dnsserver2, [IP_ADDR_LEN], DHCPS_SERVING_POOL_DNSSERVER2, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, dnsserver3, [IP_ADDR_LEN], DHCPS_SERVING_POOL_DNSSERVER3, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, domainname, [GENERAL_LEN], DHCPS_SERVING_POOL_DOMAINNAME, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned int, leasetime, , DHCPS_SERVING_POOL_LEASETIME, DWORD_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, dhcprelayip,[IP_ADDR_LEN], DHCPS_SERVING_POOL_DHCPRELAYIP, BYTE_ARRAY_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned char, dnsservermode, , DHCPS_SERVING_POOL_DNSSERVERMODE, BYTE_T, DHCPS_SERVING_POOL_T, 0, 0) +MIBDEF(unsigned int, InstanceNum, , DHCPS_SERVING_POOL_INSTANCENUM, DWORD_T, DHCPS_SERVING_POOL_T, 0, 0) +#endif // #ifdef MIB_DHCPS_SERVING_POOL_IMPORT + +#endif /* #if defined(_PRMT_X_TELEFONICA_ES_DHCPOPTION_) */ +#endif // #ifdef HOME_GATEWAY + +#ifdef TLS_CLIENT +#ifdef MIB_CERTROOT_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, comment, [COMMENT_LEN], CERTROOT_COMMENT, STRING_T, CERTROOT_T, 0, 0) +#endif // #ifdef MIB_CERTROOT_IMPORT + +#ifdef MIB_CERTUSER_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, comment, [COMMENT_LEN], CERTUSER_COMMENT, STRING_T, CERTUSER_T, 0, 0) +MIBDEF(unsigned char, pass, [MAX_RS_PASS_LEN], CERTROOT_PASS, STRING_T, CERTUSER_T, 0, 0) +#endif // #ifdef MIB_CERTUSER_IMPORT +#endif //#ifdef TLS_CLIENT + +#if defined(GW_QOS_ENGINE) +#ifdef MIB_QOS_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, entry_name, [MAX_QOS_NAME_LEN+1], QOS_ENTRY_NAME, STRING_T, QOS_T, 0, 0) +MIBDEF(unsigned char, enabled, , QOS_ENTRY_ENABLED, STRING_T, QOS_T, 0, 0) +MIBDEF(unsigned char, priority, , QOS_PRIORITY, STRING_T, QOS_T, 0, 0) +MIBDEF(unsigned short, protocol, , QOS_PROTOCOL, WORD_T, QOS_T, 0, 0) +MIBDEF(unsigned char, local_ip_start, [4], QOS_LOCAL_IP_START, IA_T, QOS_T, 0, 0) +MIBDEF(unsigned char, local_ip_end, [4], QOS_LOCAL_IP_END, IA_T, QOS_T, 0, 0) +MIBDEF(unsigned short, local_port_start, , QOS_LOCAL_PORT_START, WORD_T, QOS_T, 0, 0) +MIBDEF(unsigned short, local_port_end, , QOS_LOCAL_PORT_END, WORD_T, QOS_T, 0, 0) +MIBDEF(unsigned char, remote_ip_start, [4], QOS_REMOTE_IP_START, IA_T, QOS_T, 0, 0) +MIBDEF(unsigned char, remote_ip_end, [4], QOS_REMOTE_IP_END, IA_T, QOS_T, 0, 0) +MIBDEF(unsigned short, remote_port_start, , QOS_REMOTE_PORT_START, WORD_T, QOS_T, 0, 0) +MIBDEF(unsigned short, remote_port_end, , QOS_REMOTE_PORT_END, WORD_T, QOS_T, 0, 0) + +#endif // #ifdef MIB_QOS_IMPORT +#endif // #if defined(GW_QOS_ENGINE) + +#if defined(CONFIG_RTL_ETH_802DOT1X_SUPPORT) +#ifdef MIB_ETH_DOT1X_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, enabled, , ELAN_DOT1X_PORT_ENABLED, STRING_T, ETHDOT1X_T, 0, 0) +MIBDEF(unsigned short, portnum, , ELAN_DOT1X_PORT_NUMBER, WORD_T, ETHDOT1X_T, 0, 0) +#endif // #ifdef MIB_ETH_DOT1X_IMPORT +#endif // #if defined(CONFIG_RTL_ETH_802DOT1X_SUPPORT) + +#if defined(QOS_BY_BANDWIDTH) +#ifdef MIB_IPQOS_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, entry_name, [MAX_QOS_NAME_LEN+1], IPQOS_ENTRY_NAME, STRING_T, IPQOS_T, 0, 0) +MIBDEF(unsigned char, enabled, , IPQOS_ENABLED, BYTE_T, IPQOS_T, 0, 0) +MIBDEF(unsigned char, mac, [MAC_ADDR_LEN], IPQOS_MAC, BYTE6_T, IPQOS_T, 0, 0) +MIBDEF(unsigned char, mode, , IPQOS_MODE, BYTE_T, IPQOS_T, 0, 0) +MIBDEF(unsigned char, local_ip_start, [4], IPQOS_LOCAL_IP_START, IA_T, IPQOS_T, 0, 0) +MIBDEF(unsigned char, local_ip_end, [4], IPQOS_LOCAL_IP_END, IA_T, IPQOS_T, 0, 0) +MIBDEF(unsigned long, bandwidth, , IPQOS_BANDWIDTH, DWORD_T, IPQOS_T, 0, 0) +MIBDEF(unsigned long, bandwidth_downlink, , IPQOS_BANDWIDTH_DOWNLINK, DWORD_T, IPQOS_T, 0, 0) +MIBDEF(unsigned char, l7_protocol, [64+1], IPQOS_LAYER7_PROTOCOL, STRING_T, IPQOS_T, 0, 0) +MIBDEF(unsigned char, ip6_src, [40], IPQOS_IPV6_SRC, STRING_T, IPQOS_T, 0, 0) +#endif // #ifdef MIB_IPQOS_IMPORT +#endif // #if defined(QOS_BY_BANDWIDTH) + +#ifdef MIB_MESH_MACFILTER_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, macAddr, [6], MECH_ACL_MACADDR, BYTE6_T, MACFILTER_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], MECH_ACL_COMMENT, STRING_T, MACFILTER_T, 0, 0) +#endif // #ifdef MIB_MESH_MACFILTER_IMPORT + +#ifdef MIB_WLAN_MACFILTER_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, macAddr, [6], WLAN_ACL_ADDR_MACADDR, BYTE6_T, MACFILTER_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], WLAN_ACL_ADDR_COMMENT, STRING_T, MACFILTER_T, 0, 0) +#endif // #ifdef MIB_WLAN_MACFILTER_IMPORT + +#ifdef MIB_WDS_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, macAddr, [6], WLAN_WDS_MACADDR, BYTE6_T, WDS_T, 0, 0) +MIBDEF(unsigned int, fixedTxRate, , WLAN_WDS_FIXEDTXRATE, DWORD_T, WDS_T, 0, 0) +MIBDEF(unsigned char, comment, [COMMENT_LEN], WLAN_WDS_COMMENT, STRING_T, WDS_T, 0, 0) +#endif // #ifdef MIB_WDS_IMPORT + +#ifdef MIB_CONFIG_WLAN_SETTING_IMPORT +/* _ctype, _cname, _crepeat, _mib_name, _mib_type, _mib_parents_ctype, _default_value, _next_tbl */ +MIBDEF(unsigned char, ssid, [MAX_SSID_LEN], SSID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, channel, , CHANNEL, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wlanMacAddr, [6], WLAN_MAC_ADDR, BYTE6_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep, , WEP, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +//MIBDEF(unsigned char, wep64Key, [WEP64_KEY_LEN], WEP64_KEY, BYTE5_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep64Key1, [WEP64_KEY_LEN], WEP64_KEY1, BYTE5_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep64Key2, [WEP64_KEY_LEN], WEP64_KEY2, BYTE5_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep64Key3, [WEP64_KEY_LEN], WEP64_KEY3, BYTE5_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep64Key4, [WEP64_KEY_LEN], WEP64_KEY4, BYTE5_T, CONFIG_WLAN_SETTING_T, 0, 0) +//MIBDEF(unsigned char, wep128Key, [WEP128_KEY_LEN], WEP128_KEY, BYTE13_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep128Key1, [WEP128_KEY_LEN], WEP128_KEY1, BYTE13_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep128Key2, [WEP128_KEY_LEN], WEP128_KEY2, BYTE13_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep128Key3, [WEP128_KEY_LEN], WEP128_KEY3, BYTE13_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wep128Key4, [WEP128_KEY_LEN], WEP128_KEY4, BYTE13_T, CONFIG_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, wepDefaultKey, , WEP_DEFAULT_KEY, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wepKeyType, , WEP_KEY_TYPE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned short, fragThreshold, , FRAG_THRESHOLD, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, rtsThreshold, , RTS_THRESHOLD, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, supportedRates, , SUPPORTED_RATES, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, basicRates, , BASIC_RATES, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, beaconInterval, , BEACON_INTERVAL, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, preambleType, , PREAMBLE_TYPE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, authType, , AUTH_TYPE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, ackTimeout, , ACK_TIMEOUT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, acEnabled, , MACAC_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acNum, , MACAC_NUM, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(MACFILTER_T, acAddrArray, [MAX_WLAN_AC_NUM], MACAC_ADDR, WLAC_ARRAY_T, CONFIG_WLAN_SETTING_T, 0, wlan_acl_addr_tbl) + +MIBDEF(unsigned char, scheduleRuleEnabled, , SCHEDULE_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, scheduleRuleNum, , SCHEDULE_TBL_NUM, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(SCHEDULE_T, scheduleRuleArray, [MAX_SCHEDULE_NUM], SCHEDULE_TBL, SCHEDULE_ARRAY_T, CONFIG_WLAN_SETTING_T, 0, mib_schedule_tbl) + +MIBDEF(unsigned char, hiddenSSID, , HIDDEN_SSID, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wlanDisabled, , WLAN_DISABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned long, inactivityTime, , INACTIVITY_TIME, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rateAdaptiveEnabled, , RATE_ADAPTIVE_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, dtimPeriod, , DTIM_PERIOD, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wlanMode, , MODE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, networkType, , NETWORK_TYPE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, iappDisabled, , IAPP_DISABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, protectionDisabled, , PROTECTION_DISABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, defaultSsid, [MAX_SSID_LEN], DEFAULT_SSID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, blockRelay, , BLOCK_RELAY, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, maccloneEnabled, , MACCLONE_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wlanBand, , BAND, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned int, fixedTxRate, , FIX_RATE, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, turboMode, , TURBO_MODE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, RFPowerScale, , RFPOWER_SCALE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, retryLimit, , RETRY_LIMIT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, regulatoryDomain, [MAX_REGULATORY_DOMAIN], REGULATORY_DOMAIN, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) + + +//Mutilcast +MIBDEF(unsigned int, lowestMlcstRate, , LOWEST_MLCST_RATE, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned int, mc2u_disable, , MC2U_DISABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +// WPA stuffs +MIBDEF(unsigned char, encrypt, , ENCRYPT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, enableSuppNonWpa, , ENABLE_SUPP_NONWPA, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, suppNonWpa, , SUPP_NONWPA, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wpaAuth, , WPA_AUTH, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wpaCipher, , WPA_CIPHER_SUITE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wpaPSK, [MAX_PSK_LEN+1], WPA_PSK, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned long, rs_reauth_to, , RS_REAUTH_TO, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, func_off, , FUNC_OFF, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned long, wpaGroupRekeyTime, , WPA_GROUP_REKEY_TIME, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rsIpAddr, [4], RS_IP, IA_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, rsPort, , RS_PORT, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rsPassword, [MAX_RS_PASS_LEN], RS_PASSWORD, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rs2IpAddr, [4], RS2_IP, IA_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, rs2Port, , RS2_PORT, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rs2Password, [MAX_RS_PASS_LEN], RS2_PASSWORD, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, enable1X, , ENABLE_1X, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wpaPSKFormat, , PSK_FORMAT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, accountRsEnabled, , ACCOUNT_RS_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, accountRsIpAddr, [4], ACCOUNT_RS_IP, IA_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, accountRsPort, , ACCOUNT_RS_PORT, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, accountRsPassword, [MAX_RS_PASS_LEN], ACCOUNT_RS_PASSWORD, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, accountRs2IpAddr, [4], ACCOUNT_RS2_IP, IA_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, accountRs2Port, , ACCOUNT_RS2_PORT, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, accountRs2Password, [MAX_RS_PASS_LEN], ACCOUNT_RS2_PASSWORD, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, accountRsUpdateEnabled, , ACCOUNT_RS_UPDATE_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, accountRsUpdateDelay, , ACCOUNT_RS_UPDATE_DELAY, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, macAuthEnabled, , MAC_AUTH_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rsMaxRetry, , RS_MAXRETRY, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, rsIntervalTime, , RS_INTERVAL_TIME, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, accountRsMaxRetry, , ACCOUNT_RS_MAXRETRY, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, accountRsIntervalTime, , ACCOUNT_RS_INTERVAL_TIME, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wpa2PreAuth, , WPA2_PRE_AUTH, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wpa2Cipher, , WPA2_CIPHER_SUITE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +#ifdef CONFIG_IEEE80211W +MIBDEF(unsigned char, wpa11w, , IEEE80211W, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wpa2EnableSHA256, , SHA256_ENABLE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +#endif +// WDS stuffs +MIBDEF(unsigned char, wdsEnabled, , WDS_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wdsNum, , WDS_NUM, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(WDS_T, wdsArray, [MAX_WDS_NUM], WDS, WDS_ARRAY_T, CONFIG_WLAN_SETTING_T, 0, wlan_wds_tbl) +MIBDEF(unsigned char, wdsEncrypt, , WDS_ENCRYPT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wdsWepKeyFormat, , WDS_WEP_FORMAT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wdsWepKey, [WEP128_KEY_LEN*2+1], WDS_WEP_KEY, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wdsPskFormat, , WDS_PSK_FORMAT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wdsPsk, [MAX_PSK_LEN+1], WDS_PSK, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) + +//=========add for MESH========= +MIBDEF(unsigned char, meshEnabled, , MESH_ENABLE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshRootEnabled, , MESH_ROOT_ENABLE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshID, [33], MESH_ID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +// for backbone security +MIBDEF(unsigned char, meshEncrypt, , MESH_ENCRYPT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshWpaPSKFormat, , MESH_PSK_FORMAT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshWpaPSK, [MAX_PSK_LEN+1], MESH_WPA_PSK, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshWpaAuth, , MESH_WPA_AUTH, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshWpa2Cipher, , MESH_WPA2_CIPHER_SUITE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshAclEnabled, , MESH_ACL_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshAclNum, , MESH_ACL_NUM, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +//#if defined(CONFIG_RTK_MESH) && defined(_MESH_ACL_ENABLE_) // below code copy above ACL code +MIBDEF(MACFILTER_T, meshAclAddrArray, [MAX_MESH_ACL_NUM], MESH_ACL_ADDR, MESH_ACL_ARRAY_T, CONFIG_WLAN_SETTING_T, 0, mib_mech_acl_tbl) +//#endif +#ifdef _11s_TEST_MODE_ +MIBDEF(unsigned short, meshTestParam1, , MESH_TEST_PARAM1, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam2, , MESH_TEST_PARAM2, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam3, , MESH_TEST_PARAM3, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam4, , MESH_TEST_PARAM4, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam5, , MESH_TEST_PARAM5, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam6, , MESH_TEST_PARAM6, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam7, , MESH_TEST_PARAM7, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam8, , MESH_TEST_PARAM8, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParam9, , MESH_TEST_PARAM9, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParama, , MESH_TEST_PARAMA, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParamb, , MESH_TEST_PARAMB, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParamc, , MESH_TEST_PARAMC WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParamd, , MESH_TEST_PARAMD, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParame, , MESH_TEST_PARAME WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned short, meshTestParamf, , MESH_TEST_PARAMF, WORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, meshTestParamStr1, [16], MESH_TEST_PARAMSTR1, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +#endif // #ifdef _11s_TEST_MODE_ + +// for WMM +MIBDEF(unsigned char, wmmEnabled, , WMM_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, uapsdEnabled, , UAPSD_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +#ifdef WLAN_EASY_CONFIG +MIBDEF(unsigned char, acfEnabled, , EASYCFG_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfMode, , EASYCFG_MODE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfSSID, [MAX_SSID_LEN], EASYCFG_SSID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfKey, [MAX_ACF_KEY_LEN+1], EASYCFG_KEY, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfDigest, [MAX_ACF_DIGEST_LEN+1], EASYCFG_DIGEST, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfAlgReq, , EASYCFG_ALG_REQ, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfAlgSupp, , EASYCFG_ALG_SUPP, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfRole, , EASYCFG_ROLE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfScanSSID, [MAX_SSID_LEN], EASYCFG_SCAN_SSID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, acfWlanMode, , EASYCFG_WLAN_MODE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +#endif // #ifdef WLAN_EASY_CONFIG + +/*for P2P_SUPPORT*/ +MIBDEF(unsigned int, p2p_type , , P2P_TYPE, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, p2p_intent , , P2P_INTENT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, p2p_listen_channel, , P2P_LISTEN_CHANNEL, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, p2p_op_channel, , P2P_OPERATION_CHANNEL, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + + + +#ifdef WIFI_SIMPLE_CONFIG +MIBDEF(unsigned char, wscDisable, , WSC_DISABLE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscMethod, , WSC_METHOD, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscConfigured, , WSC_CONFIGURED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscAuth, , WSC_AUTH, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscEnc, , WSC_ENC, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscManualEnabled, , WSC_MANUAL_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscUpnpEnabled, , WSC_UPNP_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscRegistrarEnabled, , WSC_REGISTRAR_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscSsid, [MAX_SSID_LEN], WSC_SSID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscPsk, [MAX_PSK_LEN+1], WSC_PSK, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wscConfigByExtReg, , WSC_CONFIGBYEXTREG, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +#endif // #ifdef WIFI_SIMPLE_CONFIG + +#ifdef WLAN_HS2_CONFIG +MIBDEF(unsigned char, hs2Enabled, , HS2_ENABLE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +#endif + +//for 11N +MIBDEF(unsigned char, channelbonding, , CHANNEL_BONDING, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, controlsideband, , CONTROL_SIDEBAND, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, aggregation, , AGGREGATION, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, shortgiEnabled, , SHORT_GI, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, access, , ACCESS, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, priority, , PRIORITY, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +// for WAPI +#if CONFIG_RTL_WAPI_SUPPORT +MIBDEF(unsigned char, wapiPsk, [MAX_PSK_LEN+1], WAPI_PSK, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiPskLen, , WAPI_PSKLEN, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiAuth, , WAPI_AUTH, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiPskFormat, , WAPI_PSK_FORMAT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiAsIpAddr, [4], WAPI_ASIPADDR, IA_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiMcastkey, , WAPI_MCASTREKEY, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned long, wapiMcastRekeyTime, , WAPI_MCAST_TIME, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned long, wapiMcastRekeyPackets, , WAPI_MCAST_PACKETS, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiUcastkey, , WAPI_UCASTREKEY, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned long, wapiUcastRekeyTime, , WAPI_UCAST_TIME, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned long, wapiUcastRekeyPackets, , WAPI_UCAST_PACKETS, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +//internal use +MIBDEF(unsigned char, wapiSearchCertInfo, [32], WAPI_SEARCHINFO, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiSearchIndex, , WAPI_SEARCHINDEX, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, wapiCAInit, , WAPI_CA_INIT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, wapiCertSel, , WAPI_CERT_SEL, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +MIBDEF(unsigned char, wapiAuthMode2or3Cert, , WAPI_AUTH_MODE_2or3_CERT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) + +#endif // #if CONFIG_RTL_WAPI_SUPPORT + +MIBDEF(unsigned char, STBCEnabled, , STBC_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, LDPCEnabled, , LDPC_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, CoexistEnabled, , COEXIST_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, phyBandSelect, , PHY_BAND_SELECT, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) //bit1:2G bit2:5G +MIBDEF(unsigned char, macPhyMode, , MAC_PHY_MODE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) //bit0:SmSphy. bit1:DmSphy. bit2:DmDphy. +//### add by sen_liu 2011.3.29 add TX Beamforming in 92D +MIBDEF(unsigned char, TxBeamforming, , TX_BEAMFORMING, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +//### end +MIBDEF(unsigned char, tdls_prohibited, , TDLS_PROHIBITED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, tdls_cs_prohibited, , TDLS_CS_PROHIBITED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, CountryStr, [4], COUNTRY_STRING, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +#ifdef CONFIG_RTL_802_1X_CLIENT_SUPPORT +MIBDEF(unsigned char, eapType, , EAP_TYPE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, eapInsideType, , EAP_INSIDE_TYPE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, eapUserId, [MAX_EAP_USER_ID_LEN+1], EAP_USER_ID, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rsUserName, [MAX_RS_USER_NAME_LEN+1], RS_USER_NAME, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rsUserPasswd, [MAX_RS_USER_PASS_LEN+1], RS_USER_PASSWD, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rsUserCertPasswd, [MAX_RS_USER_CERT_PASS_LEN+1], RS_USER_CERT_PASSWD, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, rsBandSel, , RS_BAND_SEL, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +#endif +MIBDEF(unsigned int, tx_restrict , , TX_RESTRICT, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned int, rx_restrict , , RX_RESTRICT, DWORD_T, CONFIG_WLAN_SETTING_T, 0, 0) + +#ifdef CONFIG_APP_SIMPLE_CONFIG +MIBDEF(unsigned char, ScEnabled, , SC_ENABLED, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, ScSaveProfile, , SC_SAVE_PROFILE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, ScSyncProfile, , SC_SYNC_PROFILE, BYTE_T, CONFIG_WLAN_SETTING_T, 0, 0) +MIBDEF(unsigned char, ScPasswd, [MAX_PSK_LEN+1], SC_PASSWD, STRING_T, CONFIG_WLAN_SETTING_T, 0, 0) +#endif +#endif // #ifdef MIB_CONFIG_WLAN_SETTING_IMPORT + +#if defined(MIB_CWMP_WLANCONF_IMPORT) +MIBDEF(unsigned char, InstanceNum, , CWMP_WLANCONF_INSTANCENUM, BYTE_T, CWMP_WLANCONF_T, 0, 0) +MIBDEF(unsigned char, RootIdx, , CWMP_WLANCONF_ROOT_IDX, BYTE_T, CWMP_WLANCONF_T, 0, 0) +MIBDEF(unsigned char, VWlanIdx, , CWMP_WLANCONF_VWLAN_IDX, BYTE_T, CWMP_WLANCONF_T, 0, 0) +MIBDEF(unsigned char, IsConfigured, ,CWMP_WLANCONF_ISCONFIGURED, BYTE_T, CWMP_WLANCONF_T, 0, 0) +MIBDEF(unsigned char, RfBandAvailable, ,CWMP_WLANCONF_RFBAND, BYTE_T, CWMP_WLANCONF_T, 0, 0) +#endif //#if defined(MIB_CWMP_WLANCONF_IMPORT) + + +#ifdef MIB_CAPWAP_WLAN_CONFIG_IMPORT +MIBDEF(unsigned char, enable, , CAPWAP_CFG_WLAN_ENABLE, BYTE_T, CAPWAP_WLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned char, keyType, , CAPWAP_CFG_KEY_TYPE, BYTE_T, CAPWAP_WLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned char, pskFormat, , CAPWAP_CFG_PSK_FORMAT, BYTE_T, CAPWAP_WLAN_CONFIG_T, 0, 0) +MIBDEF(char, key, [MAX_PSK_LEN+1], CAPWAP_CFG_KEY, STRING_T, CAPWAP_WLAN_CONFIG_T, 0, 0) +MIBDEF(char, ssid,[MAX_SSID_LEN], CAPWAP_CFG_SSID, STRING_T, CAPWAP_WLAN_CONFIG_T, 0, 0) +MIBDEF(unsigned char, bssid, [6], CAPWAP_CFG_BSSID, BYTE6_T, CAPWAP_WLAN_CONFIG_T, 0, 0) +#endif // #ifdef MIB_CAPWAP_WLAN_CONFIG_IMPORT + +#ifdef MIB_CAPWAP_WTP_CONFIG_IMPORT +MIBDEF(unsigned char, wtpId, , CAPWAP_CFG_WTP_ID, BYTE_T, CAPWAP_WTP_CONFIG_T, 0, 0) +MIBDEF(unsigned char, radioNum, , CAPWAP_CFG_RADIO_NUM, BYTE_T, CAPWAP_WTP_CONFIG_T, 0, 0) +MIBDEF(unsigned char, wlanNum, , CAPWAP_CFG_WLAN_NUM, BYTE_T, CAPWAP_WTP_CONFIG_T, 0, 0) +MIBDEF(unsigned char, powerScale, [MAX_CAPWAP_RADIO_NUM], CAPWAP_CFG_RFPOWER_SCALE, BYTE_ARRAY_T, CAPWAP_WTP_CONFIG_T, 0, 0) +MIBDEF(unsigned char, channel, [MAX_CAPWAP_RADIO_NUM], CAPWAP_CFG_CHANNEL, BYTE_ARRAY_T, CAPWAP_WTP_CONFIG_T, 0, 0) +MIBDEF(CAPWAP_WLAN_CONFIG_T, wlanConfig, [MAX_CAPWAP_RADIO_NUM][MAX_CAPWAP_WLAN_NUM], CAPWAP_CFG_WLAN, CAPWAP_ALL_WLANS_CONFIG_T, CAPWAP_WTP_CONFIG_T, 0, 0) +#endif //#ifdef MIB_CAPWAP_WTP_CONFIG_IMPORT + diff --git a/feeds/rtkmipsel/rtk_app/src/mibhw.c b/feeds/rtkmipsel/rtk_app/src/mibhw.c new file mode 100755 index 000000000..dee53bc7d --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/mibhw.c @@ -0,0 +1,1028 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "mibtbl.h" +#include "apmib.h" +#ifndef _DEBUG_ +#include +#else +#define syslog(x,fmt,args...) printf(fmt,## args) +#endif + +#define PIN_LEN 8 +#define HW_WLAN_SETTING_OFFSET 13 + +#define SIGNATURE_LEN 4 + +/* Config file header */ +#if 0 +#ifdef RTK_HW_OFFSET +#define HW_SETTING_OFFSET RTK_HW_OFFSET +#else +#define HW_SETTING_OFFSET 0x6000 +#endif +#endif + +typedef enum { + MIB_READ = 1, + MIB_WRITE, + MIB_SHOW, + MIB_DEFAULT +} FLASH_OP_T; + +static unsigned int hw_setting_off=0x6000; + +static void read_hw_setting_offset(void) +{ + FILE *hwpart_proc; + hwpart_proc = fopen ( "/proc/flash/hwpart", "r" ); + if ( hwpart_proc != NULL ) + { + char buf[16]; + + fgets(buf, sizeof(buf), hwpart_proc); /* eat line */ + sscanf(buf, "%x",&hw_setting_off); +#ifndef CONFIG_MTD_NAND + if(hw_setting_off == 0) + hw_setting_off = HW_SETTING_OFFSET; +#endif + fclose(hwpart_proc); + //printf("read_hw_setting_offset = %x \n",hw_setting_off); + } +} + +static int flash_read(char *buf, int offset, int len) +{ + int fh; + int ok=1; +#ifdef CONFIG_MTD_NAND + fh = open(FLASH_DEVICE_NAME, O_RDWR|O_CREAT); +#else + fh = open(FLASH_DEVICE_NAME, O_RDWR); +#endif + if ( fh == -1 ) + { + printf("open file error\n"); + return 0; + } + + lseek(fh, offset, SEEK_SET); + + if ( read(fh, buf, len) != len) + ok = 0; + + close(fh); + + return ok; +} + +static int flash_write(char *buf, int offset, int len) +{ + int fh; + int ok=1; + +#ifdef CONFIG_MTD_NAND + fh = open(FLASH_DEVICE_NAME, O_RDWR|O_CREAT); +#else + fh = open(FLASH_DEVICE_NAME, O_RDWR); +#endif + + if ( fh == -1 ) + return 0; + + lseek(fh, offset, SEEK_SET); + + if ( write(fh, buf, len) != len) + ok = 0; + + close(fh); + sync(); + + return ok; +} + +static int reset_hw_setting(void) +{ + PARAM_HEADER_Tp header; + unsigned char *buf = NULL, checksum;; + + buf = calloc(1, sizeof(PARAM_HEADER_T)+sizeof(HW_SETTING_T)); + + if(buf) { + //printf("Flash offset:%lx, Write with Tag:%s\n",hw_setting_off,HW_SETTING_HEADER_TAG); + header = (PARAM_HEADER_Tp)buf; + sprintf((char *)header->signature, "%s%02d", HW_SETTING_HEADER_TAG, HW_SETTING_VER); + header->len = sizeof(HW_SETTING_T); + + flash_write(buf, hw_setting_off, header->len+sizeof(PARAM_HEADER_T)); + printf("Reset HW settings done\n"); + free(buf); + } else { + printf("Allocate memory for reset HW settings failed\n"); + } + + return 0; +} + +static int load_hw_setting(char *buf) +{ + PARAM_HEADER_T header; + + if(flash_read(&header,hw_setting_off,sizeof(PARAM_HEADER_T))==0){ + printf("Read wlan hw setting header failed\n"); + return -1; + } + //printf("Tag:%s, match with %s; Length:%d\n",header.signature,HW_SETTING_HEADER_TAG,header.len); + if(memcmp(header.signature, HW_SETTING_HEADER_TAG, TAG_LEN)){ + printf("Invild wlan hw setting signature!\n"); + return -1; + } + if(flash_read(buf,hw_setting_off+sizeof(PARAM_HEADER_T),header.len)==0){ + printf("Read wlan hw setting to memory failed\n"); + + return -1; + } + return 0; + +} + +static int read_hw_setting_length() +{ + PARAM_HEADER_T header; + int len, reason=0; + unsigned short target_signature[SIGNATURE_LEN+1]; + + if(flash_read(&header,hw_setting_off,sizeof(PARAM_HEADER_T))==0){ + printf("Read wlan hw setting header failed\n"); + return -1; + } + + sprintf(target_signature,"%s%02d",HW_SETTING_HEADER_TAG,HW_SETTING_VER); + if((reason = memcmp(header.signature, target_signature, SIGNATURE_LEN)) || + (reason = ((header.len < sizeof(HW_SETTING_T))? 2:0)) ) { + printf("Invild wlan hw setting signature %s, reset!\n",header.signature); + printf("Reset reason: %s\n", (reason==2)? "Length is too short!":"Signature mismatch!"); + reset_hw_setting(); + flash_read(&header,hw_setting_off,sizeof(PARAM_HEADER_T)); + } + + len = header.len; + return len; + +} + +static int hex_to_string(unsigned char *hex,char *str,int len) +{ + int i; + char *d,*s; + const static char hexdig[] = "0123456789abcdef"; + if(hex == NULL||str == NULL) + return -1; + d = str; + s = hex; + + for(i = 0;i < len;i++,s++){ + *d++ = hexdig[(*s >> 4) & 0xf]; + *d++ = hexdig[*s & 0xf]; + } + *d = 0; + return 0; +} + +static int _is_hex(char c) +{ + return (((c >= '0') && (c <= '9')) || + ((c >= 'A') && (c <= 'F')) || + ((c >= 'a') && (c <= 'f'))); +} + +static int string_to_hex(char *string, unsigned char *key, int len) +{ + char tmpBuf[4]; + int idx, ii=0; + for (idx=0; idxwlan[wlan_index]); + pTbl = hwmib_wlan_table; + } else { + printf("HW MIB index:%d not found\n",id); + return 0; + } + + switch (pTbl[i].type) { + case BYTE_T: +// *((int *)value) =(int)(*((unsigned char *)(((long)pMibTbl) + pTbl[i].offset))); + memcpy((char *)&ch, ((char *)pMibTbl) + pTbl[i].offset, 1); + *((int *)value) = (int)ch; + break; + + case BYTE6_T: + memcpy( (unsigned char *)value, (unsigned char *)(((long)pMibTbl) + pTbl[i].offset), 6); + break; + + case BYTE_ARRAY_T: + memcpy( (unsigned char *)value, (unsigned char *)(((long)pMibTbl) + pTbl[i].offset), pTbl[i].size); + break; + + case STRING_T: + strcpy( (char *)value, (const char *)(((long)pMibTbl) + pTbl[i].offset) ); + break; + + default: + break; + } + + return 1; +} + +static void getMIB(unsigned char *mibBuf, char *name, int id, TYPE_T type, int num, int array_separate, char **val, unsigned char wlan_idx) +{ + unsigned char array_val[2048]; + void *value; + unsigned char tmpBuf[2048]={0}, *format=NULL, *buf, tmp1[400]; + int int_val, i; + int index=1, tbl=0; + char mibName[100]={0}; + + if (num ==0) + goto ret; + + strcat(mibName, name); + +getval: + buf = &tmpBuf[strlen((char *)tmpBuf)]; + switch (type) { + case BYTE_T: + value = (void *)&int_val; + format = (unsigned char *)DEC_FORMAT; + break; + case BYTE6_T: + value = (void *)array_val; + format = (unsigned char *)BYTE6_FORMAT; + break; + case STRING_T: + value = (void *)array_val; + format = (unsigned char *)STR_FORMAT; + break; + case BYTE_ARRAY_T: + value = (void *)array_val; + break; + default: + printf("invalid mib!\n"); return; + } + + if ( !hwmib_get(id, value, mibBuf, wlan_idx)) { + printf("Get MIB failed!\n"); + return; + } + + if (type == BYTE_T || type == WORD_T) + sprintf((char *)buf, (char *)format, int_val); + else if ( type == STRING_T ) { + sprintf((char *)buf, (char *)format, value); + + if (type == STRING_T ) { + unsigned char tmpBuf1[1024]; + int srcIdx, dstIdx; + for (srcIdx=0, dstIdx=0; buf[srcIdx]; srcIdx++, dstIdx++) { + if ( buf[srcIdx] == '"' || buf[srcIdx] == '\\' || buf[srcIdx] == '$' || buf[srcIdx] == '`' || buf[srcIdx] == ' ' ) + tmpBuf1[dstIdx++] = '\\'; + + tmpBuf1[dstIdx] = buf[srcIdx]; + } + if (dstIdx != srcIdx) { + memcpy(buf, tmpBuf1, dstIdx); + buf[dstIdx] ='\0'; + } + } + } + else if (type == BYTE6_T ) { + sprintf((char *)buf, (char *)format, array_val[0],array_val[1],array_val[2], + array_val[3],array_val[4],array_val[5],array_val[6]); + convert_lower((char *)buf); + } + else if(type == BYTE_ARRAY_T ) { + int max_chan_num=MAX_2G_CHANNEL_NUM_MIB; + int chan; + + if((id >= MIB_HW_TX_POWER_CCK_A && id <=MIB_HW_TX_POWER_DIFF_OFDM) +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + ||(id >= MIB_HW_TX_POWER_CCK_C && id <=MIB_HW_TX_POWER_CCK_D) + ||(id >= MIB_HW_TX_POWER_HT40_1S_C && id <=MIB_HW_TX_POWER_HT40_1S_D) +#endif + ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + else if((id >= MIB_HW_TX_POWER_5G_HT40_1S_A && id <=MIB_HW_TX_POWER_DIFF_5G_OFDM) +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + ||(id >= MIB_HW_TX_POWER_5G_HT40_1S_C && id <=MIB_HW_TX_POWER_5G_HT40_1S_D) +#endif + ) + max_chan_num = MAX_5G_CHANNEL_NUM_MIB; + else if(id == MIB_L2TP_PAYLOAD) + max_chan_num = MAX_L2TP_BUFF_LEN; + +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + if(((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_A) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_A)) + || ((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_B) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_B)) ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + + if(((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_A) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_A)) + || ((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_B) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_B)) ) + max_chan_num = MAX_5G_DIFF_NUM; +#endif + +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + if(((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_C) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_C)) + || ((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_D) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_D)) ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + + if(((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_C) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_C)) + || ((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_D) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_D)) ) + max_chan_num = MAX_5G_DIFF_NUM; +#endif + + + if(val == NULL || val[0] == NULL){ + for(i=0;i< max_chan_num;i++){ + sprintf((char *)tmp1, "%02x", array_val[i]); + strcat((char *)buf, (char *)tmp1); + } + convert_lower((char *)buf); + } + else{ + chan = atoi(val[0]); + if(chan < 1 || chan > max_chan_num){ + printf("invalid channel number\n"); + return; + } + sprintf((char *)buf, "%d", *(((unsigned char *)value)+chan-1) ); + } + } + + if (--num > 0) { + if (!array_separate) + strcat((char *)tmpBuf, " "); + else { + if (tbl){ + if(type == STRING_T) + printf("%s%d=\"%s\"\n", mibName, index-1, tmpBuf); + else + printf("%s%d=%s\n", mibName, index-1, tmpBuf); + } + else{ + if(type == STRING_T) + printf("%s=\"%s\"\n", mibName, tmpBuf); + else + printf("%s=%s\n", mibName, tmpBuf); + } + tmpBuf[0] = '\0'; + } + goto getval; + } +ret: + if (tbl) { + if(type == STRING_T) + printf("%s%d=\"%s\"\n", mibName, index-1, tmpBuf); + else + printf("%s%d=%s\n", mibName, index-1, tmpBuf); + } + else{ + if(type == STRING_T) + printf("%s=\"%s\"\n", mibName, tmpBuf); + else + printf("%s=%s\n", mibName, tmpBuf); + } +} + +static void dumpAllHW(unsigned char *buf) +{ + int idx=0, num, wlan_idx=0; + mib_table_entry_T *pTbl=NULL; + config_area=0; + +next_tbl: + if (++config_area > HW_MIB_WLAN_AREA) + return; + if (config_area == HW_MIB_AREA) + pTbl = hwmib_table; + else if (config_area == HW_MIB_WLAN_AREA) + pTbl = hwmib_wlan_table; + +next_wlan: + while (pTbl[idx].id) { + num = 1; + if (num >0) { +#ifdef MIB_TLV + if(pTbl[idx].type == TABLE_LIST_T) // ignore table root entry. keith + { + idx++; + continue; + } +#endif // #ifdef MIB_TLV + if ( config_area == HW_MIB_AREA || config_area == HW_MIB_WLAN_AREA) + { + printf("HW_"); + if (config_area == HW_MIB_WLAN_AREA) { + printf("WLAN%d_", wlan_idx); + } + } + getMIB(buf, pTbl[idx].name, pTbl[idx].id, pTbl[idx].type, num, 1 , NULL, wlan_idx); + } + idx++; + } + idx = 0; + + if (config_area == HW_MIB_WLAN_AREA ) { + if (++wlan_idx < NUM_WLAN_INTERFACE) + goto next_wlan; + else + wlan_idx = 0; + } + goto next_tbl; +} + +int hwmib_set(int id, void *value, unsigned char *mibBuf, unsigned char wlan_idx) +{ + int i, ret=1; + void *pMibTbl; + mib_table_entry_T *pTbl; + unsigned char ch; + unsigned short wd; + unsigned long dwd; + unsigned char* tmp; + int max_chan_num=MAX_2G_CHANNEL_NUM_MIB; +#ifdef MIB_TLV + //unsigned int offset=0; + unsigned int mib_num_id=0; + unsigned int num; + unsigned int id_orig; + #if defined(MIB_MOD_TBL_ENTRY) + unsigned int mod_tbl=0; + #endif +#endif + + if ( search_tbl(id, hwmib_table, &i) ) { + pMibTbl = (void *)mibBuf; + pTbl = hwmib_table; + } + else if ( search_tbl(id, hwmib_wlan_table, &i) ) { + pMibTbl = (void *)&(((HW_SETTING_Tp)mibBuf)->wlan[wlan_idx]); + pTbl = hwmib_wlan_table; + } + else { + printf("id not found\n"); + ret=0; + goto hwmib_set_errorout; + } + + switch (pTbl[i].type) { + case BYTE_T: +// *((unsigned char *)(((long)pMibTbl) + pTbl[i].offset)) = (unsigned char)(*((int *)value)); + ch = (unsigned char)(*((int *)value)); + memcpy( ((char *)pMibTbl) + pTbl[i].offset, &ch, 1); + break; + + case STRING_T: + if ( strlen(value)+1 > pTbl[i].size ) + { + return 0; + } + if (value==NULL || strlen(value)==0) + *((char *)(((long)pMibTbl) + pTbl[i].offset)) = '\0'; + else + strcpy((char *)(((long)pMibTbl) + pTbl[i].offset), (char *)value); + break; + + case BYTE6_T: + memcpy((unsigned char *)(((long)pMibTbl) + pTbl[i].offset), (unsigned char *)value, 6); + break; + + case BYTE_ARRAY_T: + tmp = (unsigned char *) value; + + { + if((id >= MIB_HW_TX_POWER_CCK_A && id <=MIB_HW_TX_POWER_DIFF_OFDM) +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + ||(id >= MIB_HW_TX_POWER_CCK_C && id <=MIB_HW_TX_POWER_CCK_D) + ||(id >= MIB_HW_TX_POWER_HT40_1S_C && id <=MIB_HW_TX_POWER_HT40_1S_D) +#endif + ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + else if((id >= MIB_HW_TX_POWER_5G_HT40_1S_A && id <=MIB_HW_TX_POWER_DIFF_5G_OFDM) +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + ||(id >= MIB_HW_TX_POWER_5G_HT40_1S_C && id <=MIB_HW_TX_POWER_5G_HT40_1S_D) +#endif + ) + max_chan_num = MAX_5G_CHANNEL_NUM_MIB; + +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + if(((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_A) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_A)) + || ((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_B) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_B)) ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + + if(((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_A) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_A)) + || ((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_B) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_B)) ) + max_chan_num = MAX_5G_DIFF_NUM; +#endif + + if(tmp[0]==2){ + if(tmp[3] == 0xff){ // set one channel value + memcpy((unsigned char *)(((long)pMibTbl) + pTbl[i].offset + (long)tmp[1] -1), (unsigned char *)(tmp+2), 1); + } + }else{ + memcpy((unsigned char *)(((long)pMibTbl) + pTbl[i].offset), (unsigned char *)(value+1), max_chan_num); + } + } + break; + + default: + break; + } + +hwmib_set_errorout: + return ret; +} + +int hwmib_update(unsigned char *buf) +{ + int i, len; +#ifndef MIB_TLV + int j, k; +#endif + unsigned char checksum; + unsigned char *data; + PARAM_HEADER_T header; +#ifdef MIB_TLV + unsigned char *pfile = NULL; + unsigned char *mib_tlv_data = NULL; + unsigned int tlv_content_len = 0; + unsigned int mib_tlv_max_len = 0; +#endif + + int write_hw_tlv = 0; + // always Write HW setting uncompressed + // if(compress_hw_setting == 0) + // write_hw_tlv = 0; + if(flash_read(&header,hw_setting_off,sizeof(PARAM_HEADER_T))==0){ + printf("Read wlan hw setting header failed\n"); + return -1; + } + len=header.len; + + if ( flash_write((char *)buf, hw_setting_off+sizeof(header), header.len)==0 ) { + printf("write hs MIB failed!\n"); +#if CONFIG_APMIB_SHARED_MEMORY == 1 + apmib_sem_unlock(); +#endif +#ifdef MIB_TLV + if(write_hw_tlv) { + + if(mib_tlv_data) + free(mib_tlv_data); + + if(pfile) + free(pfile); + } +#endif + return 0; + } + +#ifdef MIB_TLV + if(mib_tlv_data) + free(mib_tlv_data); + if(pfile) + free(pfile); +#endif + + return 1; +} + + +static void setMIB(unsigned char *mibBuf, char *name, int id, TYPE_T type, int len, int valNum, char **val, unsigned char wlan_idx) +{ + unsigned char key[200]; + void *value=NULL; + int int_val, i; + int entryNum; + int max_chan_num=0, tx_power_cnt=0; + + switch (type) { + case BYTE_T: + int_val = atoi(val[0]); + value = (void *)&int_val; + break; + + case BYTE6_T: + if ( strlen(val[0])!=12 || !string_to_hex(val[0], key, 12)) { + printf("invalid value!\n"); + return; + } + value = (void *)key; + break; + + case BYTE_ARRAY_T: + if(!(id >= MIB_HW_TX_POWER_CCK_A && id <=MIB_HW_TX_POWER_DIFF_OFDM) && + !(id >= MIB_HW_TX_POWER_5G_HT40_1S_A && id <=MIB_HW_TX_POWER_DIFF_5G_OFDM) +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + && !(id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_A && id <=MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_B) +#endif +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + && !(id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_C && id <=MIB_HW_TX_POWER_5G_HT40_1S_D) +#endif + ){ + printf("invalid mib!\n"); + return; + } + + if((id >= MIB_HW_TX_POWER_CCK_A && id <=MIB_HW_TX_POWER_DIFF_OFDM) +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + ||(id >= MIB_HW_TX_POWER_CCK_C && id <=MIB_HW_TX_POWER_CCK_D) + ||(id >= MIB_HW_TX_POWER_HT40_1S_C && id <=MIB_HW_TX_POWER_HT40_1S_D) +#endif + ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + else if((id >= MIB_HW_TX_POWER_5G_HT40_1S_A && id <=MIB_HW_TX_POWER_DIFF_5G_OFDM) +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + ||(id >= MIB_HW_TX_POWER_5G_HT40_1S_C && id <=MIB_HW_TX_POWER_5G_HT40_1S_D) +#endif + ) + max_chan_num = MAX_5G_CHANNEL_NUM_MIB; + +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + if(((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_A) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_A)) + || ((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_B) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_B)) ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + + if(((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_A) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_A)) + || ((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_B) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_B)) ) + max_chan_num = MAX_5G_DIFF_NUM; +#endif + +#if defined(CONFIG_WLAN_HAL_8814AE) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + if(((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_C) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_C)) + || ((id >= MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_D) && (id <= MIB_HW_TX_POWER_DIFF_OFDM4T_CCK4T_D)) ) + max_chan_num = MAX_2G_CHANNEL_NUM_MIB; + + if(((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_C) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_C)) + || ((id >= MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_D) && (id <= MIB_HW_TX_POWER_DIFF_5G_80BW4S_160BW4S_D)) ) + max_chan_num = MAX_5G_DIFF_NUM; +#endif + + for (i=0; i max_chan_num){ + if((key[1]<1) || ((id >= MIB_HW_TX_POWER_CCK_A && id <=MIB_HW_TX_POWER_DIFF_OFDM)) || + ((id >= MIB_HW_TX_POWER_5G_HT40_1S_A && id <=MIB_HW_TX_POWER_DIFF_5G_OFDM) && (key[1]>216))){ + printf("invalid channel number\n"); + return; + } + } + key[3] = 0xff ; + } + key[0] = tx_power_cnt; + value = (void *)key; + break; + + case STRING_T: + if ( strlen(val[0]) > len) { + printf("string value too long!\n"); + return; + } + value = (void *)val[0]; + break; + default: + printf("invalid mib!\n"); + return; + } + + if ( !hwmib_set(id, value, mibBuf, wlan_idx)) + printf("set MIB failed!\n"); + //printf("setMIB end...\n"); + hwmib_update(mibBuf); +} + +static int searchMIB(char *token, unsigned int *wlan_idx) +{ + int idx = 0; + char tmpBuf[100]; + int desired_config=0; + + if (!memcmp(token, "HW_", 3)) { + config_area = HW_MIB_AREA; + if (!memcmp(&token[3], "WLAN", 4) && token[8] == '_') { + *wlan_idx = token[7] - '0'; + if (*wlan_idx >= NUM_WLAN_INTERFACE) { + printf("WLAN%d is not supported\n",*wlan_idx); + return -1; + } + strcpy(tmpBuf, &token[9]); + desired_config = config_area+1; + } + else + strcpy(tmpBuf, &token[3]); + } else { + printf("Invalid HW MIB name:%s\n",token); + return -1; + } + + while (hwmib_table[idx].id) { + if ( !strcmp(hwmib_table[idx].name, tmpBuf)) { + if (desired_config && config_area != desired_config) + return -1; + return idx; + } + idx++; + } + idx=0; + while (hwmib_wlan_table[idx].id) { + if ( !strcmp(hwmib_wlan_table[idx].name, tmpBuf)) { + config_area++; + if (desired_config && config_area != desired_config) + return -1; + return idx; + } + idx++; + } + return -1; +} + +int main(int argc, char *argv[]) +{ + PARAM_HEADER_T header; + unsigned int mibIdx=0, valNum=0; + char *buf = NULL, mib[100]={0}, valueArray[170][100], *value[170], *ptr; + int hw_len = 0, action=0, argNum=1, wlan_idx=0; + HW_WLAN_SETTING_Tp phw; + + read_hw_setting_offset(); //mark_hw + + argNum=1; + if ( argc > 1 ) { + if ( !strcmp(argv[argNum], "sethw") || !strcmp(argv[argNum], "set") ) { + action = MIB_WRITE; + if (++argNum < argc) { + if (argc > 4 && !memcmp(argv[argNum], "wlan", 4)) { + wlan_idx = atoi(&argv[argNum++][4]); + if (wlan_idx >= NUM_WLAN_INTERFACE) { + printf("invalid wlan interface index number!\n"); + return 0; + } + } + sscanf(argv[argNum], "%s", mib); + while (++argNum < argc) { + sscanf(argv[argNum], "%s", valueArray[valNum]); + value[valNum] = valueArray[valNum]; + valNum++; + } + value[valNum]= NULL; + } + } else if ( !strcmp(argv[argNum], "gethw") || !strcmp(argv[argNum], "get") ) { + action = MIB_READ; + if (++argNum < argc) { + if (argc > 3 && !memcmp(argv[argNum], "wlan", 4)) { + wlan_idx = atoi(&argv[argNum++][4]); + if (wlan_idx >= NUM_WLAN_INTERFACE) { + printf("invalid wlan interface index number!\n"); + return 0; + } + } + sscanf(argv[argNum], "%s", mib); + while (++argNum < argc) { + sscanf(argv[argNum], "%s", valueArray[valNum]); + value[valNum] = valueArray[valNum]; + valNum++; + } + value[valNum]= NULL; + } + } else if ( !strcmp(argv[argNum], "allhw") ) { + action = MIB_SHOW; + } else if ( !strcmp(argv[argNum], "resethw") || !strcmp(argv[argNum], "reset") ) { + action = MIB_DEFAULT; + } + } + + if(action < MIB_DEFAULT) { + hw_len = read_hw_setting_length(); +#if 0 + if(hw_len < NUM_WLAN_INTERFACE*sizeof(HW_WLAN_SETTING_T)+HW_WLAN_SETTING_OFFSET){ + printf("Wlan HW setting length invalid!\n"); + return -1; + } +#endif + if(hw_len > 0) { + buf = malloc(hw_len); + if(!buf){ + printf("Can't allocate memory for loading wlan HW setting!\n"); + return -1; + } + + if(load_hw_setting(buf) < 0) { + free(buf); + return -1; + } + + switch(action) { + case MIB_SHOW: + dumpAllHW(buf); + break; + case MIB_WRITE: + { + unsigned int mibIdx=0; + mib_table_entry_T *pTbl=NULL; + + mibIdx = searchMIB(mib, &wlan_idx); + + if ( mibIdx == -1 ) { + //showHelp(); + //showAllMibName(); + printf("MIB not found!\n"); + goto error_return; + } + + if ( valNum < 1) { + //showHelp(); + printf("Invalid input value!\n"); + goto error_return; + } + + if (config_area == HW_MIB_AREA) + pTbl = hwmib_table; + else if (config_area == HW_MIB_WLAN_AREA) + pTbl = hwmib_wlan_table; + else { + printf("Unknown HW setting area!\n"); + goto error_return; + } + setMIB(buf, mib, pTbl[mibIdx].id, pTbl[mibIdx].type, pTbl[mibIdx].size, valNum, value, wlan_idx); + break; + } + case MIB_READ: + { + unsigned int mibIdx=0, num=1; + mib_table_entry_T *pTbl=NULL; + + mibIdx = searchMIB(mib,&wlan_idx); + if ( mibIdx == -1 ) { + //showHelp(); + //showAllMibName(); + printf("MIB not found!\n"); + return -1; + } + + if (config_area == HW_MIB_AREA) + pTbl = hwmib_table; + else if (config_area == HW_MIB_WLAN_AREA) + pTbl = hwmib_wlan_table; + else { + printf("Unknown HW setting area!\n"); + goto error_return; + } + + getMIB(buf, mib, pTbl[mibIdx].id, pTbl[mibIdx].type, num, 1 ,value, wlan_idx); + break; + } + default: + printf("Unknown MIB operation!\n"); + break; + } + + free(buf); + } else { + printf("Unknown HW settings header!\n"); + } + } else { + reset_hw_setting(); + } + +error_return: + return 0; +} + diff --git a/feeds/rtkmipsel/rtk_app/src/mibtbl.h b/feeds/rtkmipsel/rtk_app/src/mibtbl.h new file mode 100755 index 000000000..7a222bce4 --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/mibtbl.h @@ -0,0 +1,70 @@ +/* + * Include file of mibtbl.c + * + * Authors: David Hsu + * + * $Id: mibtbl.h,v 1.9 2009/07/30 11:32:12 keith_huang Exp $ + * + */ + +#ifndef INCLUDE_MIBTBL_H +#define INCLUDE_MIBTBL_H + +#include "apmib.h" + +#ifdef WIN32 +#ifdef FIELD_OFFSET +#undef FIELD_OFFSET +#endif +#endif + +#define FIELD_OFFSET(type, field) ((unsigned long)(long *)&(((type *)0)->field)) +#define FIELD_SIZE(type, field) sizeof(((type *)0)->field) + +#define _OFFSET(field) ((int)FIELD_OFFSET(APMIB_T,field)) +#define _SIZE(field) sizeof(((APMIB_T *)0)->field) +#define _OFFSET_WLAN(field) ((int)FIELD_OFFSET(CONFIG_WLAN_SETTING_T,field)) +#define _SIZE_WLAN(field) sizeof(((CONFIG_WLAN_SETTING_T *)0)->field) + +#define _OFFSET_HW(field) ((int)FIELD_OFFSET(HW_SETTING_T,field)) +#define _SIZE_HW(field) sizeof(((HW_SETTING_T *)0)->field) +#define _OFFSET_HW_WLAN(field) ((int)FIELD_OFFSET(HW_WLAN_SETTING_T,field)) +#define _SIZE_HW_WLAN(field) sizeof(((HW_WLAN_SETTING_T *)0)->field) + +#ifdef MIB_TLV +#define _TOTAL_SIZE(type, field) sizeof(((type *)0)->field) +#define _UNIT_SIZE(field) sizeof(field) + +#define _MIBHWID_NAME(name) MIB_HW_##name, #name +#define _MIBID_NAME(name) MIB_##name, #name +#define _MIBWLANID_NAME(name) MIB_WLAN_##name, #name + +#define _OFFSET_SIZE_FIELD(type, field) \ + FIELD_OFFSET(type, field), \ + FIELD_SIZE(type, field), \ + _TOTAL_SIZE(type, field) +#endif //#ifdef MIB_TLV + +// MIB value, id mapping table +typedef struct _mib_table_entry mib_table_entry_T; +struct _mib_table_entry { + int id; +#if defined(CONFIG_RTL_8812_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + char name[40]; +#else + char name[32]; +#endif + TYPE_T type; + int offset; + int size; +#ifdef MIB_TLV + unsigned short total_size; + unsigned short unit_size; + const unsigned char *default_value; + mib_table_entry_T * next_mib_table; +#endif //#ifdef MIB_TLV +}; + +extern mib_table_entry_T mib_table[], mib_wlan_table[], hwmib_table[], hwmib_wlan_table[]; + +#endif // INCLUDE_MIBTBL_H diff --git a/feeds/rtkmipsel/rtk_app/src/packet_capture.c b/feeds/rtkmipsel/rtk_app/src/packet_capture.c new file mode 100644 index 000000000..1f7849ffc --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/packet_capture.c @@ -0,0 +1,185 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "pcap/pcap.h" + + +/*************************************** + Global Variable +***************************************/ + +#define PCAP_DEBUG +#ifdef PCAP_DEBUG +#define pcap_printf(fmt,...) do{printf("PCAP: ");printf(fmt,##__VA_ARGS__);}while(0) +#else +#define pcap_printf(fmt,...) +#endif + +struct rtl_wifi_header{ + unsigned char frame_type; // Frame type + unsigned char sub_frame_type; //mac subframe type => BEACON_FRAME 0x80, PROBE_RESP 0x50 + unsigned char rssi; //rssi. + unsigned char wi_add1[6]; //DA mac addr + unsigned char wi_add2[6]; //SA mac addr + unsigned char data_rate; //rx rate + unsigned char channel_num; //present channel num +}__attribute__((packed)); + +#define ASSOCIATION_REQUEST 0x00 +#define ASSOCIATION_RESPONSE 0x10 +#define REASSICIATION_REQUEST 0x20 +#define REASSICIATION_RESPONSE 0x30 +#define PROBE_REQUEST 0x40 +#define PROBE_RESPONSE 0x50 +#define BEACON_FRAME 0x80 +#define DIASSOCIATION 0xA0 +#define AUTHENTICAION 0xB0 +#define DEAUTHENTICAION 0xc0 + +#define MANAGEMENT_FRAME 0x00 +#define DATA_FRAME 0x08 + +pcap_t *descr = NULL; +/*************************************** + Function +***************************************/ + +void macSubFrameType(struct rtl_wifi_header *rh) +{ + //printf("rh->sub_frame_type = %x\n", rh->sub_frame_type); + switch(rh->sub_frame_type) + { + case ASSOCIATION_REQUEST: + pcap_printf("SubType: ASSOCIATION_REQUEST\n"); + break; + case ASSOCIATION_RESPONSE: + pcap_printf("SubType: ASSOCIATION_RESPONSE\n"); + break; + case REASSICIATION_REQUEST: + pcap_printf("SubType: REASSICIATION_REQUEST\n"); + break; + case REASSICIATION_RESPONSE: + pcap_printf("SubType: REASSICIATION_RESPONSE\n"); + break; + case PROBE_REQUEST: + pcap_printf("SubType: PROBE_REQUEST\n"); + break; + case PROBE_RESPONSE: + pcap_printf("SubType: PROBE_RESPONSE\n"); + break; + case BEACON_FRAME : + pcap_printf("SubType: BEACON \n"); + pcap_printf("Present Channel Num: %u \n", rh->channel_num); + break; + case DIASSOCIATION: + pcap_printf("SubType: DIASSOCIATION\n"); + break; + case AUTHENTICAION: + pcap_printf("SubType: AUTHENTICAION\n"); + break; + case DEAUTHENTICAION: + pcap_printf("SubType: DEAUTHENTICAION\n"); + break; + default: + pcap_printf("Unknown Subtype\n"); + break; + } +} + +void macFrameType(struct rtl_wifi_header *rh) +{ + //printf("rh->frame_type = %x\n", rh->frame_type); + switch(rh->frame_type) + { + case MANAGEMENT_FRAME: + pcap_printf("FrameType: Management Frame\n"); + macSubFrameType(rh); + break; + case DATA_FRAME: + pcap_printf("FrameType: Data Frame\n"); + pcap_printf("SubType: none\n"); + break; + default: + pcap_printf("Unknown Frametype\n"); + break; + } +} + +void processPacket(u_char *argu, const struct pcap_pkthdr* pkthdr, const u_char* packet) +{ + struct rtl_wifi_header *rh = (struct rtl_wifi_header* )packet; + char mac[32] = {0}; + static int count = 0; + + pcap_printf("Packet Count: %d\n", ++count); + macFrameType(rh); + pcap_printf("RX Data Rate: %d bps\n", rh->data_rate); + pcap_printf("RSSI: %d dBm\n", (-100)+rh->rssi); + + sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", + (unsigned char)rh->wi_add1[0], + (unsigned char)rh->wi_add1[1], + (unsigned char)rh->wi_add1[2], + (unsigned char)rh->wi_add1[3], + (unsigned char)rh->wi_add1[4], + (unsigned char)rh->wi_add1[5]); + pcap_printf("DA: %s\n", mac); + + sprintf(mac, "%02X:%02X:%02X:%02X:%02X:%02X", + (unsigned char)rh->wi_add2[0], + (unsigned char)rh->wi_add2[1], + (unsigned char)rh->wi_add2[2], + (unsigned char)rh->wi_add2[3], + (unsigned char)rh->wi_add2[4], + (unsigned char)rh->wi_add2[5]); + pcap_printf("SA: %s\n", mac); + + pcap_printf("Packet Info End:\n\n"); + return; +} + +void terminal_process(int signum) +{ + printf("Terminal Capture Process\n"); + pcap_breakloop(descr); + pcap_close(descr); + descr = NULL; +} + +int main(int argc, char **argv) +{ + char errbuf[PCAP_ERRBUF_SIZE]; + + descr = pcap_create(argv[1],errbuf); //depends on wlan interface + if (descr == NULL) + { + printf("pcap_create failed\n"); + return (1); + } + if(pcap_set_rfmon(descr,1)==0 ) + printf("monitor mode enabled\n"); + + pcap_set_snaplen(descr, 2048); + pcap_set_promisc(descr, 1); + + int status = pcap_activate(descr); + if(status < 0) + printf("WLAN status = %d\n",status); + + //int dl = pcap_datalink(descr); + //printf("The Data Link Type = %s\n", pcap_datalink_val_to_name(dl)); + + signal(SIGINT, terminal_process); + pcap_loop(descr, -1, processPacket, NULL); + return 0; +} + diff --git a/feeds/rtkmipsel/rtk_app/src/rtk_bootinfo.c b/feeds/rtkmipsel/rtk_app/src/rtk_bootinfo.c new file mode 100755 index 000000000..83686c069 --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/rtk_bootinfo.c @@ -0,0 +1,292 @@ +#include +#include +#include +#include +#include +#include +#include + +#define TAG_LEN 4 +#define RTK_BOOTINFO_SIGN "hwbt" +#define RTK_MAX_VALID_BOOTCNT 16 + +#define BOOT_NORMAL_MODE 0 +#define BOOT_DUALIMAGE_TOGGLE_MODE 1 +#define BOOT_DEFAULT_MAXCNT 3 +/* Config file header */ + +typedef struct bootinfo_header { + unsigned char tag[TAG_LEN] ; // Tag + version + unsigned int len ; +} BOOTINFO_HEADER_T, *BOOTINFO_HEADER_Tp; + +typedef union bootinfo_data{ + unsigned int val; + struct { + unsigned char bootbank; + unsigned char bootmaxcnt; + unsigned char bootcnt; + unsigned char bootmode; + } field; +} BOOTINFO_DATA_T, *BOOTINFO_DATA_P; + +typedef struct bootinfo { + BOOTINFO_HEADER_T header; + BOOTINFO_DATA_T data; +}BOOTINFO_T, *BOOTINFO_P; + + +#define FLASH_DEVICE_NAME ("/dev/mtdblock0") + +#define BOOTBANK_TMP_FILE ("/tmp/bootbank") +#define BOOTMODE_TMP_FILE ("/tmp/bootmode") + + +#ifdef CONFIG_RTL_8198C +static unsigned int FLASH_BOOTINFO_OFFSET=0x2a000; +#else +#ifdef CONFIG_RTL_8197F //97F , is possible to use 64k erase flash , hence don't reuse 2a000 as bootinfo offset , use 30000 as new one +static unsigned int FLASH_BOOTINFO_OFFSET=0x30000; +#else //9XD/8881A/96E +static unsigned int FLASH_BOOTINFO_OFFSET=0xc000; +#endif +#endif + +static BOOTINFO_T bootinfo_ram; + +static int flash_read(char *buf, int offset, int len) +{ + int fh; + int ok=1; + + fh = open(FLASH_DEVICE_NAME, O_RDWR ); + + if ( fh == -1 ) + { + printf("open file error\n"); + return 0; + } + + lseek(fh, offset, SEEK_SET); + + if ( read(fh, buf, len) != len) + ok = 0; + + close(fh); + + return ok; +} + + +static int flash_write(char *buf, int offset, int len) +{ + int fh; + int ok=1; + + fh = open(FLASH_DEVICE_NAME, O_RDWR); + + if ( fh == -1 ) + { + printf("open file error\n"); + return 0; + } + + lseek(fh, offset, SEEK_SET); + + if ( write(fh, buf, len) != len) + ok = 0; + + close(fh); + + return ok; +} + +static int tmp_bootinfo_file_write(BOOTINFO_P bootinfo_ram_p) +{ + int fh, ok=1; + char buf[8]; + + fh = open(BOOTBANK_TMP_FILE, O_RDWR | O_CREAT); + + if ( fh == -1 ) + { + printf("open file error\n"); + return 0; + } + + sprintf(buf, "%d",bootinfo_ram_p->data.field.bootbank); + write(fh, buf, strlen(buf)+1); + close(fh); + + fh = open(BOOTMODE_TMP_FILE, O_RDWR | O_CREAT); + + if ( fh == -1 ) + { + printf("open file error\n"); + return 0; + } + + sprintf(buf, "%d",bootinfo_ram_p->data.field.bootmode); + write(fh, buf, strlen(buf)+1); + + close(fh); + return ok; +} + + +void rtk_read_bootinfo_from_flash(BOOTINFO_P bootinfo_ram_p) +{ + + unsigned int bootinfo_offset = FLASH_BOOTINFO_OFFSET; + + memset((char *)bootinfo_ram_p,0,sizeof(BOOTINFO_T)); + + //flash(spi...etc) can be read directly + //memcpy((char *)bootinfo_ram_p,(char *)bootinfo_addr,sizeof(BOOTINFO_T)); + flash_read(bootinfo_ram_p,bootinfo_offset,sizeof(BOOTINFO_T)); + +} + +void rtk_write_bootinfo_to_flash(BOOTINFO_P bootinfo_ram_p) +{ + unsigned int bootinfo_offset = FLASH_BOOTINFO_OFFSET; + + flash_write(bootinfo_ram_p,bootinfo_offset,sizeof(BOOTINFO_T)); +} + +static int read_bootinfo_offset(void) +{ + FILE *offset_proc; + + offset_proc = fopen ( "/proc/flash/bootoffset", "r" ); + + if ( offset_proc != NULL ) + { + char buf[16]; + unsigned int offset_setting_off=0; + + fgets(buf, sizeof(buf), offset_proc); /* eat line */ + sscanf(buf, "%x",&offset_setting_off); + + if(offset_setting_off == 0) + offset_setting_off = FLASH_BOOTINFO_OFFSET; + + FLASH_BOOTINFO_OFFSET = offset_setting_off; + fclose(offset_proc); + //printf("read_hw_setting_offset = %x \n",HW_SETTING_OFFSET); + } + else + return 1; //not bootinfo mode + + return 0; +} + +// bootinfo setbank 0/1 , +// bootinfo setbootcnt 0/1 , +int main(int argc, char *argv[]) +{ + char *cmd =NULL; + unsigned char val=0; + BOOTINFO_P bootinfo_ram_p=&bootinfo_ram; + + //check bootinfo proc exit and read bootoffset + if(read_bootinfo_offset()) + return 0; + + //decide command + if(argc==3) + { + cmd = argv[1]; + + if(!strcmp(cmd, "setbootcnt")) + { + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + + val = (unsigned char)(atoi(argv[2])); + + bootinfo_ram_p->data.field.bootcnt = val ; + + rtk_write_bootinfo_to_flash(bootinfo_ram_p); + } + else if(!strcmp(cmd, "setbootbank")) + { + + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + + val = (unsigned char)(atoi(argv[2])); + + bootinfo_ram_p->data.field.bootbank = val ; + + rtk_write_bootinfo_to_flash(bootinfo_ram_p); + + } + else if(!strcmp(cmd, "setbootmode")) + { + + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + + val = (unsigned char)(atoi(argv[2])); + + bootinfo_ram_p->data.field.bootmode = val ; + + rtk_write_bootinfo_to_flash(bootinfo_ram_p); + + } + else if(!strcmp(cmd, "setbootmaxcnt")) + { + + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + + val = (unsigned char)(atoi(argv[2])); + + bootinfo_ram_p->data.field.bootmaxcnt = val ; + + rtk_write_bootinfo_to_flash(bootinfo_ram_p); + + } + + } + if(argc==2) + { + cmd = argv[1]; + if(!strcmp(cmd, "update")) + { + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + tmp_bootinfo_file_write(bootinfo_ram_p); + + //optional , reset bootcnt + bootinfo_ram_p->data.field.bootcnt = 0 ; + rtk_write_bootinfo_to_flash(bootinfo_ram_p); + + } + else if(!strcmp(cmd, "getbootmode")) + { + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + + printf("%d", bootinfo_ram_p->data.field.bootmode); + } + else if(!strcmp(cmd, "getbootbank")) + { + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + + printf("%d", bootinfo_ram_p->data.field.bootbank); + } + else if(!strcmp(cmd, "getbootmaxcnt")) + { + //read bootinfo from mtd0 + rtk_read_bootinfo_from_flash(bootinfo_ram_p); + + printf("%d", bootinfo_ram_p->data.field.bootmaxcnt); + } + + } + +} + diff --git a/feeds/rtkmipsel/rtk_app/src/rtk_tx_calibration.c b/feeds/rtkmipsel/rtk_app/src/rtk_tx_calibration.c new file mode 100755 index 000000000..5eea90f0e --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/rtk_tx_calibration.c @@ -0,0 +1,981 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _DEBUG_ +#include +#else +#define syslog(x,fmt,args...) printf(fmt,## args) +#endif + +#define CMD_SET_ETHERNET 0x01 +#define CMD_SET_WIFI 0x02 + +#define MAX_2G_CHANNEL_NUM_MIB 14 +#define MAX_5G_CHANNEL_NUM_MIB 196 + + +#define MAX_5G_DIFF_NUM 14 + +#define PIN_LEN 8 +#ifdef HAVE_RTK_DUAL_BAND_SUPPORT +#define NUM_WLAN_INTERFACE 2 +#else +#define NUM_WLAN_INTERFACE 1 +#endif +#define HW_SETTING_HEADER_TAG ((char *)"H6") +#define HW_WLAN_SETTING_OFFSET 13 + +#define HW_SETTING_HEADER_OFFSET 6 +#define HW_SETTING_ETHMAC_OFFSET 1 +#define ETH_ALEN 6 + +#define __PACK__ __attribute__ ((packed)) + + +typedef struct hw_wlan_setting { + unsigned char macAddr[6] __PACK__; + unsigned char macAddr1[6] __PACK__; + unsigned char macAddr2[6] __PACK__; + unsigned char macAddr3[6] __PACK__; + unsigned char macAddr4[6] __PACK__; + unsigned char macAddr5[6] __PACK__; + unsigned char macAddr6[6] __PACK__; + unsigned char macAddr7[6] __PACK__; + unsigned char pwrlevelCCK_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelCCK_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelHT40_1S_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelHT40_1S_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiffHT40_2S[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiffHT20[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiffOFDM[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char regDomain __PACK__; + unsigned char rfType __PACK__; + unsigned char ledType __PACK__; // LED type, see LED_TYPE_T for definition + unsigned char xCap __PACK__; + unsigned char TSSI1 __PACK__; + unsigned char TSSI2 __PACK__; + unsigned char Ther __PACK__; + unsigned char Reserved1 __PACK__; + unsigned char Reserved2 __PACK__; + unsigned char Reserved3 __PACK__; + unsigned char Reserved4 __PACK__; + unsigned char Reserved5 __PACK__; + unsigned char Reserved6 __PACK__; + unsigned char Reserved7 __PACK__; + unsigned char Reserved8 __PACK__; + unsigned char Reserved9 __PACK__; + unsigned char Reserved10 __PACK__; + unsigned char pwrlevel5GHT40_1S_A[MAX_5G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevel5GHT40_1S_B[MAX_5G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff5GHT40_2S[MAX_5G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff5GHT20[MAX_5G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff5GOFDM[MAX_5G_CHANNEL_NUM_MIB] __PACK__; + + + unsigned char wscPin[PIN_LEN+1] __PACK__; + +#if defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + unsigned char pwrdiff_20BW1S_OFDM1T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW2S_20BW2S_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM2T_CCK2T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_4OFDM3T_CCK3T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_A[MAX_5G_DIFF_NUM] __PACK__; + + + unsigned char pwrdiff_20BW1S_OFDM1T_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW2S_20BW2S_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM2T_CCK2T_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM3T_CCK3T_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_B[MAX_5G_DIFF_NUM] __PACK__; +#endif + +#if defined(HAVE_RTK_4T4R_AC_SUPPORT) + unsigned char pwrdiff_20BW1S_OFDM1T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW2S_20BW2S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM2T_CCK2T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_4OFDM3T_CCK3T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_C[MAX_5G_DIFF_NUM] __PACK__; + + unsigned char pwrdiff_20BW1S_OFDM1T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW2S_20BW2S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM2T_CCK2T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM3T_CCK3T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_D[MAX_5G_DIFF_NUM] __PACK__; + + unsigned char pwrlevelCCK_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelCCK_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelHT40_1S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelHT40_1S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevel5GHT40_1S_C[MAX_5G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevel5GHT40_1S_D[MAX_5G_CHANNEL_NUM_MIB] __PACK__; +#endif +} HW_WLAN_SETTING_T, *HW_WLAN_SETTING_Tp; +typedef struct hw_wlan_ac_setting{ + unsigned char pwrdiff_20BW1S_OFDM1T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW2S_20BW2S_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM2T_CCK2T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_4OFDM3T_CCK3T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_A[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_A[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_A[MAX_5G_DIFF_NUM] __PACK__; + + + unsigned char pwrdiff_20BW1S_OFDM1T_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM3T_CCK3T_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_B[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_B[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_B[MAX_5G_DIFF_NUM] __PACK__; +#if defined(HAVE_RTK_4T4R_AC_SUPPORT) + unsigned char pwrdiff_20BW1S_OFDM1T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW2S_20BW2S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM2T_CCK2T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_4OFDM3T_CCK3T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_C[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_C[MAX_5G_DIFF_NUM] __PACK__; + + + unsigned char pwrdiff_20BW1S_OFDM1T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW2S_20BW2S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM2T_CCK2T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW3S_20BW3S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM3T_CCK3T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_40BW4S_20BW4S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrdiff_OFDM4T_CCK4T_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + + unsigned char pwrdiff_5G_20BW1S_OFDM1T_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW2S_20BW2S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW3S_20BW3S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_40BW4S_20BW4S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_RSVD_OFDM4T_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW1S_160BW1S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW2S_160BW2S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW3S_160BW3S_D[MAX_5G_DIFF_NUM] __PACK__; + unsigned char pwrdiff_5G_80BW4S_160BW4S_D[MAX_5G_DIFF_NUM] __PACK__; + + unsigned char pwrlevelCCK_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelCCK_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelHT40_1S_C[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevelHT40_1S_D[MAX_2G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevel5GHT40_1S_C[MAX_5G_CHANNEL_NUM_MIB] __PACK__; + unsigned char pwrlevel5GHT40_1S_D[MAX_5G_CHANNEL_NUM_MIB] __PACK__; +#endif +}HW_WLAN_AC_SETTING_T, *HW_WLAN_AC_SETTING_Tp; +typedef struct hw_setting { + unsigned char boardVer __PACK__; // h/w board version + unsigned char nic0Addr[6] __PACK__; + unsigned char nic1Addr[6] __PACK__; + HW_WLAN_SETTING_T wlan[NUM_WLAN_INTERFACE]; +} HW_SETTING_T, *HW_SETTING_Tp; +#define TAG_LEN 2 +#define SIGNATURE_LEN 4 +#define HW_SETTING_VER 3 // hw setting version +/* Config file header */ +typedef struct param_header { + unsigned char signature[SIGNATURE_LEN] __PACK__; // Tag + version + unsigned short len __PACK__; +} PARAM_HEADER_T, *PARAM_HEADER_Tp; + +#ifdef CONFIG_MTD_NAND +#define FLASH_DEVICE_NAME ("/hw_setting/hw.bin") +#define FLASH_DEVICE_NAME1 ("/hw_setting/hw1.bin") +#else +#define FLASH_DEVICE_NAME ("/dev/mtdblock0") +#define FLASH_DEVICE_NAME1 ("/dev/mtdblock1") +#endif +#if 0 +#ifdef RTK_HW_OFFSET +#define HW_SETTING_OFFSET RTK_HW_OFFSET +#else +#define HW_SETTING_OFFSET 0x6000 +#endif +#endif +unsigned int HW_SETTING_OFFSET = 0x6000; //mark_hw , non-8198c default hw setting + +static void read_hw_setting_offset(void) +{ + FILE *hwpart_proc; + hwpart_proc = fopen ( "/proc/flash/hwpart", "r" ); + if ( hwpart_proc != NULL ) + { + char buf[16]; + unsigned int hw_setting_off=0; + + fgets(buf, sizeof(buf), hwpart_proc); /* eat line */ + sscanf(buf, "%x",&hw_setting_off); +#ifndef CONFIG_MTD_NAND + if(hw_setting_off == 0) + hw_setting_off = HW_SETTING_OFFSET; +#endif + HW_SETTING_OFFSET = hw_setting_off; + fclose(hwpart_proc); + //printf("read_hw_setting_offset = %x \n",HW_SETTING_OFFSET); + } +} +static int flash_read(char *buf, int offset, int len) +{ + int fh; + int ok=1; + +#ifdef CONFIG_MTD_NAND + fh = open(FLASH_DEVICE_NAME, O_RDWR|O_CREAT); +#else + fh = open(FLASH_DEVICE_NAME, O_RDWR); +#endif + + if ( fh == -1 ) + { + printf("open file error\n"); + return 0; + } + + lseek(fh, offset, SEEK_SET); + + if ( read(fh, buf, len) != len) + ok = 0; + + close(fh); + + return ok; +} +static int read_hw_setting(char *buf) +{ + PARAM_HEADER_T header; + if(flash_read(&header,HW_SETTING_OFFSET,sizeof(PARAM_HEADER_T))==0){ + syslog(LOG_ERR,"Read wlan hw setting header failed\n"); + return -1; + } + if(memcmp(header.signature, HW_SETTING_HEADER_TAG, TAG_LEN)){ + syslog(LOG_ERR,"Invild wlan hw setting signature!\n"); + return -1; + } + if(flash_read(buf,HW_SETTING_OFFSET+sizeof(PARAM_HEADER_T),header.len)==0){ + syslog(LOG_ERR,"Read wlan hw setting to memory failed\n"); + + return -1; + } + return 0; + +} +static int read_hw_setting_length() +{ + PARAM_HEADER_T header; + int len; + if(flash_read(&header,HW_SETTING_OFFSET,sizeof(PARAM_HEADER_T))==0){ + syslog(LOG_ERR,"Read wlan hw setting header failed\n"); + return -1; + } + if(memcmp(header.signature, HW_SETTING_HEADER_TAG, TAG_LEN)){ + syslog(LOG_ERR,"Invild wlan hw setting signature %s!\n",header.signature); + return -1; + } + len = header.len; + return len; + +} + +static int hex_to_string(unsigned char *hex,char *str,int len) +{ + int i; + char *d,*s; + const static char hexdig[] = "0123456789abcdef"; + if(hex == NULL||str == NULL) + return -1; + d = str; + s = hex; + + for(i = 0;i < len;i++,s++){ + *d++ = hexdig[(*s >> 4) & 0xf]; + *d++ = hexdig[*s & 0xf]; + } + *d = 0; + return 0; +} +#if defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + +#define B1_G1 40 +#define B1_G2 48 + +#define B2_G1 56 +#define B2_G2 64 + +#define B3_G1 104 +#define B3_G2 112 +#define B3_G3 120 +#define B3_G4 128 +#define B3_G5 136 +#define B3_G6 144 + +#define B4_G1 153 +#define B4_G2 161 +#define B4_G3 169 +#define B4_G4 177 + +void assign_diff_AC(unsigned char* pMib, unsigned char* pVal) +{ + int x=0, y=0; + + memset((pMib+35), pVal[0], (B1_G1-35)); + memset((pMib+B1_G1), pVal[1], (B1_G2-B1_G1)); + memset((pMib+B1_G2), pVal[2], (B2_G1-B1_G2)); + memset((pMib+B2_G1), pVal[3], (B2_G2-B2_G1)); + memset((pMib+B2_G2), pVal[4], (B3_G1-B2_G2)); + memset((pMib+B3_G1), pVal[5], (B3_G2-B3_G1)); + memset((pMib+B3_G2), pVal[6], (B3_G3-B3_G2)); + memset((pMib+B3_G3), pVal[7], (B3_G4-B3_G3)); + memset((pMib+B3_G4), pVal[8], (B3_G5-B3_G4)); + memset((pMib+B3_G5), pVal[9], (B3_G6-B3_G5)); + memset((pMib+B3_G6), pVal[10], (B4_G1-B3_G6)); + memset((pMib+B4_G1), pVal[11], (B4_G2-B4_G1)); + memset((pMib+B4_G2), pVal[12], (B4_G3-B4_G2)); + memset((pMib+B4_G3), pVal[13], (B4_G4-B4_G3)); + +} +void assign_diff_AC_hex_to_string(unsigned char* pmib,char* str,int len) +{ + char mib_buf[MAX_5G_CHANNEL_NUM_MIB]; + memset(mib_buf,0,sizeof(mib_buf)); + assign_diff_AC(mib_buf, pmib); + hex_to_string(mib_buf,str,MAX_5G_CHANNEL_NUM_MIB); +} +#endif + +int set_led_type(HW_WLAN_SETTING_Tp phw) +{ + unsigned char tmpbuff[100] = {0}; +#ifdef HAVE_RTK_DUAL_BAND_SUPPORT + HW_WLAN_SETTING_Tp phw_5g = (HW_WLAN_SETTING_Tp)((unsigned char *)phw+sizeof(HW_WLAN_SETTING_T)); +#endif + + sprintf(tmpbuff,"iwpriv wlan0 set_mib led_type=%d",phw->ledType); + system(tmpbuff); + printf("%s\n",tmpbuff); +#ifdef HAVE_RTK_DUAL_BAND_SUPPORT + sprintf(tmpbuff,"iwpriv wlan1 set_mib led_type=%d",phw_5g->ledType); + system(tmpbuff); + printf("%s\n",tmpbuff); +#endif + return 0; +} + +int set_tx_calibration(HW_WLAN_SETTING_Tp phw,char* interface) +{ + char tmpbuff[1024],p[MAX_5G_CHANNEL_NUM_MIB*2+1]; + if(!phw) + return -1; + + sprintf(tmpbuff,"iwpriv %s set_mib ther=%d",interface,phw->Ther); + system(tmpbuff); + printf("%s\n",tmpbuff); + + sprintf(tmpbuff,"iwpriv %s set_mib xcap=%d",interface,phw->xCap); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrlevelCCK_A,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelCCK_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrlevelCCK_B,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelCCK_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrlevelHT40_1S_A,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelHT40_1S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrlevelHT40_1S_B,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelHT40_1S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiffHT40_2S,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiffHT40_2S=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiffHT20,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiffHT20=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiffOFDM,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiffOFDM=%s",interface,p); + system(tmpbuff); + + hex_to_string(phw->pwrlevel5GHT40_1S_A,p,MAX_5G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevel5GHT40_1S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrlevel5GHT40_1S_B,p,MAX_5G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevel5GHT40_1S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + +#if defined(HAVE_RTK_92D_SUPPORT) || defined(HAVE_RTK_AC_SUPPORT) + hex_to_string(phw->pwrdiff5GHT40_2S,p,MAX_5G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff5GHT40_2S=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiff5GHT20,p,MAX_5G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff5GHT20=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiff5GOFDM,p,MAX_5G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff5GOFDM=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); +#endif + +#if defined(HAVE_RTK_AC_SUPPORT) || defined(HAVE_RTK_4T4R_AC_SUPPORT) + hex_to_string(phw->pwrdiff_20BW1S_OFDM1T_A,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_20BW1S_OFDM1T_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiff_40BW2S_20BW2S_A,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW2S_20BW2S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_20BW1S_OFDM1T_A,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_20BW1S_OFDM1T_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW2S_20BW2S_A,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW2S_20BW2S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW1S_160BW1S_A,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW1S_160BW1S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW2S_160BW2S_A,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW2S_160BW2S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiff_20BW1S_OFDM1T_B,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_20BW1S_OFDM1T_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + hex_to_string(phw->pwrdiff_40BW2S_20BW2S_B,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW2S_20BW2S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_20BW1S_OFDM1T_B,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_20BW1S_OFDM1T_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW2S_20BW2S_B,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW2S_20BW2S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW1S_160BW1S_B,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW1S_160BW1S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW2S_160BW2S_B,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW2S_160BW2S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); +#endif + +//#if defined(CONFIG_WLAN_HAL_8814AE) +#if defined(HAVE_RTK_4T4R_AC_SUPPORT) + //3 5G + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_A, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_40BW3S_20BW3S_A, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW3S_20BW3S_A,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW3S_20BW3S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_A, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW3S_160BW3S_A, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW3S_160BW3S_A,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW3S_160BW3S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_B, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_40BW3S_20BW3S_B, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW3S_20BW3S_B,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW3S_20BW3S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_B, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW3S_160BW3S_B, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW3S_160BW3S_B,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW3S_160BW3S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_C, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_20BW1S_OFDM1T_C, (unsigned char*) buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_20BW1S_OFDM1T_C,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_20BW1S_OFDM1T_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_40BW2S_20BW2S_C, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_40BW2S_20BW2S_C, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW2S_20BW2S_C,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW2S_20BW2S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW1S_160BW1S_C, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW1S_160BW1S_C, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW1S_160BW1S_C,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW1S_160BW1S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW2S_160BW2S_C, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW2S_160BW2S_C, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW2S_160BW2S_C,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW2S_160BW2S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_C, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_40BW3S_20BW3S_C, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW3S_20BW3S_C,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW3S_20BW3S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_C, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW3S_160BW3S_C, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW3S_160BW3S_C,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW3S_160BW3S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_20BW1S_OFDM1T_D, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_20BW1S_OFDM1T_D, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_20BW1S_OFDM1T_D,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_20BW1S_OFDM1T_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_40BW2S_20BW2S_D, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_40BW2S_20BW2S_D, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW2S_20BW2S_D,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW2S_20BW2S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_40BW3S_20BW3S_D, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_40BW3S_20BW3S_D, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_40BW3S_20BW3S_D,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_40BW3S_20BW3S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW1S_160BW1S_D, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW1S_160BW1S_D, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW1S_160BW1S_D,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW1S_160BW1S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW2S_160BW2S_D, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW2S_160BW2S_D, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW2S_160BW2S_D,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW2S_160BW2S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_5G_80BW3S_160BW3S_D, (void *)buf1); + //assign_diff_AC(pmib->dot11RFEntry.pwrdiff_5G_80BW3S_160BW3S_D, (unsigned char*)buf1); + assign_diff_AC_hex_to_string(phw->pwrdiff_5G_80BW3S_160BW3S_D,p,MAX_5G_DIFF_NUM); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_5G_80BW3S_160BW3S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + //3 2G + + //apmib_get(MIB_HW_TX_POWER_HT40_1S_C, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrlevelHT40_1S_C, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrlevelHT40_1S_C,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelHT40_1S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_HT40_1S_D, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrlevelHT40_1S_D, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrlevelHT40_1S_D,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelHT40_1S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_CCK_C, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrlevelCCK_C, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrlevelCCK_C,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelCCK_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_CCK_D, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrlevelCCK_D, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrlevelCCK_D,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevelCCK_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_A, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_40BW3S_20BW3S_A, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_40BW3S_20BW3S_A,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW3S_20BW3S_A=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_B, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_40BW3S_20BW3S_B, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_40BW3S_20BW3S_B,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW3S_20BW3S_B=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_C, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_20BW1S_OFDM1T_C, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_20BW1S_OFDM1T_C,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_20BW1S_OFDM1T_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_40BW2S_20BW2S_C, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_40BW2S_20BW2S_C, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_40BW2S_20BW2S_C,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW2S_20BW2S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_C, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_40BW3S_20BW3S_C, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_40BW3S_20BW3S_C,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW3S_20BW3S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_20BW1S_OFDM1T_D, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_20BW1S_OFDM1T_D, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_20BW1S_OFDM1T_D,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_20BW1S_OFDM1T_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_40BW2S_20BW2S_D, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_40BW2S_20BW2S_D, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_40BW2S_20BW2S_D,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW2S_20BW2S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_DIFF_40BW3S_20BW3S_D, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrdiff_40BW3S_20BW3S_D, buf1, MAX_2G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrdiff_40BW3S_20BW3S_D,p,MAX_2G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrdiff_40BW3S_20BW3S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_5G_HT40_1S_C, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrlevel5GHT40_1S_C, buf1, MAX_5G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrlevel5GHT40_1S_C,p,MAX_5G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevel5GHT40_1S_C=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //apmib_get(MIB_HW_TX_POWER_5G_HT40_1S_D, (void *)buf1); + //memcpy(pmib->dot11RFEntry.pwrlevel5GHT40_1S_D, buf1, MAX_5G_CHANNEL_NUM_MIB); + hex_to_string(phw->pwrlevel5GHT40_1S_D,p,MAX_5G_CHANNEL_NUM_MIB); + sprintf(tmpbuff,"iwpriv %s set_mib pwrlevel5GHT40_1S_D=%s",interface,p); + system(tmpbuff); + printf("%s\n",tmpbuff); + + //printf("pmib->dot11RFEntry.pwrlevel5GHT40_1S_A=%s\n",pmib->dot11RFEntry.pwrlevel5GHT40_1S_A); + //printf("pmib->dot11RFEntry.pwrlevel5GHT40_1S_B=%s\n",pmib->dot11RFEntry.pwrlevel5GHT40_1S_B); + //printf("pmib->dot11RFEntry.pwrlevel5GHT40_1S_C=%s\n",pmib->dot11RFEntry.pwrlevel5GHT40_1S_C); + //printf("pmib->dot11RFEntry.pwrlevel5GHT40_1S_D=%s\n",pmib->dot11RFEntry.pwrlevel5GHT40_1S_D); +#endif + return 0; +} + + +int set_wifi_mac(char* buf) +{ + unsigned int offset, wifi_count; + unsigned char tmpbuff[64]; + unsigned char mactmp[ETH_ALEN+1]; + int idx; + + /* wifi mac */ + memset(mactmp,0,ETH_ALEN+1); + idx = 0; + offset = HW_WLAN_SETTING_OFFSET + sizeof(struct hw_wlan_setting) * idx; + if(!memcmp(mactmp,(unsigned char *)(buf+offset),ETH_ALEN)) { + printf("wlan0's MAC Adddress is not calibrated, dismissed!!"); + } else { + memcpy(mactmp,(unsigned char *)(buf+offset),ETH_ALEN); + sprintf(tmpbuff,"ifconfig wlan0 hw ether %02x%02x%02x%02x%02x%02x",mactmp[0],mactmp[1],mactmp[2],mactmp[3],mactmp[4],mactmp[5]); + //printf("cmd=%s\n",tmpbuff); + system(tmpbuff); + } +//#if defined(HAVE_WIFI_MBSSID) +#if 0 + for(wifi_count=0;wifi_count<7;wifi_count++){ + memset(mactmp,0,ETH_ALEN+1); + if(!memcmp(mactmp,(unsigned char *)(buf+offset+ETH_ALEN*(wifi_count+1)),ETH_ALEN)) { + printf("wlan0-%d's MAC Adddress is not calibrated, dismissed!!",wifi_count+1); + } else { + memcpy(mactmp,(unsigned char *)(buf+offset+ETH_ALEN*(wifi_count+1)),ETH_ALEN); + sprintf(tmpbuff,"ifconfig wlan0-%d hw ether %02x%02x%02x%02x%02x%02x",wifi_count+1,mactmp[0],mactmp[1],mactmp[2],mactmp[3],mactmp[4],mactmp[5]); + //printf("cmd=%s\n",tmpbuff); + system(tmpbuff); + } + } +#endif +#ifdef HAVE_RTK_DUAL_BAND_SUPPORT + memset(mactmp,0,ETH_ALEN+1); + idx = 1; + offset = HW_WLAN_SETTING_OFFSET + sizeof(struct hw_wlan_setting) * idx; + if(!memcmp(mactmp,(unsigned char *)(buf+offset),ETH_ALEN)) { + printf("wlan1's MAC Adddress is not calibrated, dismissed!!"); + } else { + memcpy(mactmp,(unsigned char *)(buf+offset),ETH_ALEN); + sprintf(tmpbuff,"ifconfig wlan1 hw ether %02x%02x%02x%02x%02x%02x",mactmp[0],mactmp[1],mactmp[2],mactmp[3],mactmp[4],mactmp[5]); + //printf("cmd=%s\n",tmpbuff); + system(tmpbuff); + } +//#if defined(HAVE_WIFI_MBSSID) +#if 0 + for(wifi_count=0;wifi_count<7;wifi_count++){ + memset(mactmp,0,ETH_ALEN+1); + if(!memcmp(mactmp,(unsigned char *)(buf+offset+ETH_ALEN*(wifi_count+1)),ETH_ALEN)) { + printf("wlan1-%d's MAC Adddress is not calibrated, dismissed!!",wifi_count+1); + } else { + memcpy(mactmp,(unsigned char *)(buf+offset+ETH_ALEN*(wifi_count+1)),ETH_ALEN); + sprintf(tmpbuff,"ifconfig wlan1-%d hw ether %02x%02x%02x%02x%02x%02x",wifi_count+1,mactmp[0],mactmp[1],mactmp[2],mactmp[3],mactmp[4],mactmp[5]); + //printf("cmd=%s\n",tmpbuff); + system(tmpbuff); + } + } +#endif //MBSSID +#endif //HAVE_RTK_DUAL_BAND_SUPPORT +} + +int set_ethernet_mac(char* buf) +{ + unsigned int offset; + unsigned char tmpbuff[64]; + unsigned char mactmp[ETH_ALEN+1]; + int idx; + + memset(mactmp,0,ETH_ALEN+1); + /* ethernet mac */ + + idx = 0; + offset = HW_SETTING_ETHMAC_OFFSET + idx*ETH_ALEN; + + if(memcmp(mactmp,(unsigned char *)(buf+offset),ETH_ALEN)) { + memcpy(mactmp,(unsigned char *)(buf+offset),ETH_ALEN); + sprintf(tmpbuff,"ifconfig br-lan hw ether %02x%02x%02x%02x%02x%02x",mactmp[0],mactmp[1],mactmp[2],mactmp[3],mactmp[4],mactmp[5]); + system(tmpbuff); + sprintf(tmpbuff,"ifconfig eth0 hw ether %02x%02x%02x%02x%02x%02x",mactmp[0],mactmp[1],mactmp[2],mactmp[3],mactmp[4],mactmp[5]); + system(tmpbuff); + } else { + printf("br-lan/eth0's MAC Adddress is not calibrated, aborded!!\n"); + } + memset(mactmp,0,ETH_ALEN+1); + idx = 1; + offset = HW_SETTING_ETHMAC_OFFSET + idx*ETH_ALEN; + if(memcmp(mactmp,(unsigned char *)(buf+offset),ETH_ALEN)) { + memcpy(mactmp,(unsigned char *)(buf+offset),ETH_ALEN); + sprintf(tmpbuff,"ifconfig eth1 hw ether %02x%02x%02x%02x%02x%02x",mactmp[0],mactmp[1],mactmp[2],mactmp[3],mactmp[4],mactmp[5]); + system(tmpbuff); + } else { + printf("eth1's MAC Adddress is not calibrated, aborded!!\n"); + } +} + +int main(int argc, char *argv[]) +{ + PARAM_HEADER_T header; + char *buf = NULL; + int hw_len = 0; + HW_WLAN_SETTING_Tp phw; + + int ch,cmd = 0; + while((ch = getopt(argc,argv,"we")) != -1) + { + switch(ch) + { + case 'w': + cmd = CMD_SET_WIFI; + break; + case 'e': + cmd = CMD_SET_ETHERNET; + break; + default: + printf("cmd not support\n"); + } + } + + +#ifdef CONFIG_MTD_NAND + if(cmd == CMD_SET_ETHERNET){ + if(access("/hw_setting",0) != 0) + { + system("mkdir /hw_setting;chmod 777 /hw_setting"); + } + system("mount -t yaffs2 -o tags-ecc-off -o inband-tags /dev/mtdblock1 /hw_setting"); + } +#endif + read_hw_setting_offset(); //mark_hw + hw_len = read_hw_setting_length(); +#if 0 + if(hw_len < NUM_WLAN_INTERFACE*sizeof(HW_WLAN_SETTING_T)+HW_WLAN_SETTING_OFFSET){ + syslog(LOG_ERR,"Wlan HW setting length invalid!\n"); + return -1; + } +#endif + buf = malloc(hw_len); + if(!buf){ + syslog(LOG_ERR,"Can't allocate memory for reading wlan HW setting!\n"); + return -1; + } + if(read_hw_setting(buf) < 0){ + free(buf); + return -1; + } + + if(cmd == CMD_SET_ETHERNET) + set_ethernet_mac(buf); + else if(cmd == CMD_SET_WIFI){ + phw = (HW_WLAN_SETTING_Tp)(buf+HW_WLAN_SETTING_OFFSET); + set_led_type(phw); +#ifdef HAVE_RTK_EFUSE + syslog(LOG_WARNING,"Efuse enabled. Calibration aborded!\n"); +#else + set_wifi_mac(buf); + set_tx_calibration(phw,"wlan0"); +#ifdef HAVE_RTK_DUAL_BAND_SUPPORT + phw = (HW_WLAN_SETTING_Tp)(buf+HW_WLAN_SETTING_OFFSET+sizeof(HW_WLAN_SETTING_T)); + set_tx_calibration(phw,"wlan1"); +#endif +#endif + } + free(buf); + + +#ifdef CONFIG_MTD_NAND + if(cmd == CMD_SET_WIFI){ + system("umount /hw_setting"); + system("rm -rf /hw_setting"); + } +#endif + return 0; +} + diff --git a/feeds/rtkmipsel/rtk_app/src/rtk_wpsled.c b/feeds/rtkmipsel/rtk_app/src/rtk_wpsled.c new file mode 100644 index 000000000..65ec39a2a --- /dev/null +++ b/feeds/rtkmipsel/rtk_app/src/rtk_wpsled.c @@ -0,0 +1,139 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#ifndef _DEBUG_ +#include +#else +#define syslog(x,fmt,args...) printf(fmt,## args) +#endif +#include + + + +int tmp_cnt = 0; +int led_can_blink =0; +struct itimerval value, ovalue; + + +struct cmdobj { + char cmd_name[32]; + int (*cmdfun)(int argc, char**argv); +}; + +void wps_led_blink_timer(int signo) +{ + if(led_can_blink){ + + if(tmp_cnt%2) + system("echo 1 > /sys/class/leds/rtl819x\:green\:wps/brightness"); + else + system("echo 0 > /sys/class/leds/rtl819x\:green\:wps/brightness"); + + tmp_cnt ++; + + } else { + + value.it_value.tv_sec = 0; + value.it_value.tv_usec = 0; + value.it_interval.tv_sec = 0; + value.it_interval.tv_usec = 0; + + } + + +} + + +void rtk_wps_led_on(int argc, char**argv) +{ + led_can_blink = 0; + system("echo 1 > /sys/class/leds/rtl819x\:green\:wps/brightness"); + +} + +void rtk_wps_led_off(int argc, char**argv) +{ + led_can_blink = 0; + system("echo 0 > /sys/class/leds/rtl819x\:green\:wps/brightness"); + +} + +void rtk_wps_led_blink(int argc, char**argv) +{ + int sec = atoi(argv[2]); + + led_can_blink = 1; + + if(!sec) + sec=1; + + if(1){ + + //printf("process id is %d\n", getpid()); + tmp_cnt = 0; + + value.it_value.tv_sec = 1; + + value.it_value.tv_usec = 0; + + value.it_interval.tv_sec = sec; + + value.it_interval.tv_usec = 0; + + signal(SIGALRM, wps_led_blink_timer); + setitimer(ITIMER_REAL, &value, &ovalue); + + } + +} + + +struct cmdobj rtk_wpsled_cmds[] = +{ + {"on", rtk_wps_led_on}, + {"off", rtk_wps_led_off}, + {"blink", rtk_wps_led_blink}, + + {"LAST", NULL} //This must put in the end of this struct !! +}; + + +int main(int argc, char *argv[]) +{ + int i = 0; + int (*cmdcallback)(int argc, char**argv) = NULL; + + if ( argc > 1 ) { + + while(1) { + if(!strcmp("LAST", rtk_wpsled_cmds[i].cmd_name)) + break; + + if(!strcmp(argv[1], rtk_wpsled_cmds[i].cmd_name)){ + cmdcallback = rtk_wpsled_cmds[i].cmdfun; + break; + } + + i ++; + } + + if(cmdcallback) { + cmdcallback(argc, argv); + return 0; + } + + } + + return -1; + +} + diff --git a/feeds/rtkmipsel/rtkmipsel/Makefile b/feeds/rtkmipsel/rtkmipsel/Makefile new file mode 100755 index 000000000..df2f5d0f4 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/Makefile @@ -0,0 +1,27 @@ +# +# Copyright (C) 2006-2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +include $(TOPDIR)/rules.mk + +ARCH:=mipsel +BOARD:=rtkmipsel +BOARDNAME:=Realtek mipsel SOC +SUBTARGETS:=rtl8197f +#FEATURES:=squashfs usb +FEATURES:=squashfs usb +#LINUX_VERSION:=3.10.49 +KERNEL_PATCHVER:=3.18 +KERNEL_NAME_SUFFIX=-rtkmipsel + +include $(INCLUDE_DIR)/target.mk + +#DEFAULT_PACKAGES += kmod-gpio-button-hotplug + +define Target/Description + Build firmware images for Realtek based boards +endef + +$(eval $(call BuildTarget)) diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/00_model b/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/00_model new file mode 100755 index 000000000..30d5fc1b4 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/00_model @@ -0,0 +1,12 @@ +#!/bin/sh + +. /lib/functions/uci-defaults.sh + +board_config_update + +ucidef_set_board_id "sp-w2m-ac1200" +ucidef_set_model_name "IgniteNet sp w2m ac1200" + +board_config_flush + +exit 0 diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/01_leds b/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/01_leds new file mode 100755 index 000000000..e42ecd89e --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/01_leds @@ -0,0 +1,22 @@ +#!/bin/sh + +. /lib/functions/uci-defaults.sh +. /lib/realtek.sh + +board=$(realtek_board_name) + +board_config_update + +case $board in + sp-w2m-ac1200) + ucidef_set_led_netdev "wifi2" "wifi2" "led1" "wlan1" + ucidef_set_led_netdev "wifi5" "wifi5" "led2" "wlan0" + ucidef_set_led_netdev "wan" "WAN" "led3" "eth0" + ucidef_set_led_netdev "lan" "LAN" "led4" "eth1" + + ;; +esac + +board_config_flush + +exit 0 diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/02_network b/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/02_network new file mode 100755 index 000000000..e1ea7b535 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/board.d/02_network @@ -0,0 +1,25 @@ +#!/bin/sh + +. /lib/functions.sh +. /lib/realtek.sh +. /lib/functions/uci-defaults.sh +. /lib/functions/system.sh + +realtek_setup_interfaces() +{ + local board="$1" + + case $board in + sp-w2m-ac1200) + ucidef_set_interfaces_lan_wan "eth1" "eth0" + ;; + + esac +} + +board_config_update +board=$(realtek_board_name) +realtek_setup_interfaces $board +board_config_flush + +exit 0 diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/init.d/swdone b/feeds/rtkmipsel/rtkmipsel/base-files/etc/init.d/swdone new file mode 100755 index 000000000..27b9da44f --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/init.d/swdone @@ -0,0 +1,28 @@ +#!/bin/sh /etc/rc.common +START=99 + +start() { + #config watchdog to be kicked per second + #ubus call system watchdog '{"frequency":1}' + #reset bootting counter in hw info to indicate booting succesfully + rtk_bootinfo update + + echo 4096 > /proc/sys/vm/min_free_kbytes + + #mount yaffs on mtdblock1 for nand + if [ -f "/proc/nandinfo" ]; then + mkdir /hw_setting + mount -t yaffs2 -o tags-ecc-off -o inband-tags /dev/mtdblock1 /hw_setting + fi + #BT networking fine-tune from turnkey SDK + #echo "24576" > /proc/sys/net/ipv4/route/max_size + echo "16384" > /proc/sys/net/ipv4/route/max_size + echo "180" > /proc/sys/net/ipv4/route/gc_thresh + echo 20 > /proc/sys/net/ipv4/route/gc_elasticity + #echo "12288" > /proc/sys/net/netfilter/nf_conntrack_max + echo "8192" > /proc/sys/net/netfilter/nf_conntrack_max + echo "32" > /proc/sys/net/netfilter/nf_conntrack_expect_max + +} + + diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/11-fix_mgmt_url.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/11-fix_mgmt_url.sh new file mode 100644 index 000000000..0e61a0832 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/11-fix_mgmt_url.sh @@ -0,0 +1,8 @@ +#!/bin/sh + +url=$(uci -q get acn.register.url) + +if [ "$url" == "https://staging.ignitenet.com/register" ]; then + uci set acn.register.url="https://regsvc.ignitenet.com/register" + uci commit acn.register +fi diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/2-min_signal_defaults.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/2-min_signal_defaults.sh new file mode 100755 index 000000000..d07a7f86a --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/2-min_signal_defaults.sh @@ -0,0 +1,16 @@ +add_min_signal_defaults () { + + local min_signal_allowed + + config_get min_signal_allowed "$1" min_signal_allowed + + [ -z "$min_signal_allowed" ] && { + uci set wireless."$1".min_signal_allowed=0 + } +} + +. /lib/functions.sh + +config_load wireless +config_foreach add_min_signal_defaults wifi-iface +uci commit wireless diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/3-hotspot_not_forced.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/3-hotspot_not_forced.sh new file mode 100755 index 000000000..54f37d190 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/3-hotspot_not_forced.sh @@ -0,0 +1,3 @@ +uci set network.hotspot.force_link=0 +uci commit network + diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/5-add-hotspot-to-firewall.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/5-add-hotspot-to-firewall.sh new file mode 100755 index 000000000..ee7a65b91 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/5-add-hotspot-to-firewall.sh @@ -0,0 +1,77 @@ +#!/bin/sh + +. /lib/functions.sh + +check_interface() { + if [ "$1" == "hotspot_tunnel" ]; then + hstunnel=1 + fi +} + +check_zone() { + local name + + config_get name $1 name + if [ "$name" == "hotspot" ]; then + hszone=1 + fi +} + +update_include() { + local path + + config_get path $1 path + if [ "$path" == "/etc/firewall.chilli" ]; then + uci_set firewall $1 reload 1 + uci_set firewall $1 path /etc/firewall.hotspot + fi +} + +add_tunnel_interface() { + local hstunnel + + config_load network + config_foreach check_interface interface + + if [ "$hstunnel" ]; then + return + fi + + uci_add network interface hotspot_tunnel + uci_set network hotspot_tunnel ifname tun0 + uci_set network hotspot_tunnel proto none + uci_commit network +} + +add_firewall_zone() { + local hszone + + config_load firewall + config_foreach check_zone zone + + if [ "$hszone" ]; then + return + fi + + uci batch <<-EOF + add firewall zone + set firewall.@zone[-1].name=hotspot + add_list firewall.@zone[-1].network=hotspot + add_list firewall.@zone[-1].network=hotspot_tunnel + set firewall.@zone[-1].input=ACCEPT + set firewall.@zone[-1].output=ACCEPT + set firewall.@zone[-1].forward=ACCEPT + EOF + + uci batch <<-EOF + add firewall forwarding + set firewall.@forwarding[-1].src=hotspot + set firewall.@forwarding[-1].dest=wan + EOF + + config_foreach update_include include + uci_commit firewall +} + +add_tunnel_interface +add_firewall_zone diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/6-add-smart-isolation-to-firewall.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/6-add-smart-isolation-to-firewall.sh new file mode 100755 index 000000000..dc1159079 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/6-add-smart-isolation-to-firewall.sh @@ -0,0 +1,54 @@ +#!/bin/sh + +. /lib/functions.sh + +check_interface() { + local smi + + if [ "$1" == "hotspot" ]; then + config_get smi $1 smart_isolation + if [ -z "$smi" ]; then + uci_set network $1 smart_isolation 0 + fi + fi +} + +delete_forwarding() { + uci_remove firewall $1 +} + +check_include() { + local path + + config_get path $1 path + if [ "$path" == "/etc/firewall.smart_isolation" ]; then + smi_include=1 + fi +} + +add_hotspot_policy() { + config_load network + config_foreach check_interface interface + uci_commit network +} + +update_firewall_rules() { + local smi_include + + config_load firewall + config_foreach delete_forwarding forwarding + + config_foreach check_include include + if [ "$smi_include" != "1" ]; then + uci batch <<-EOF + add firewall include + set firewall.@include[-1].path=/etc/firewall.smart_isolation + set firewall.@include[-1].reload=1 + EOF + fi + + uci_commit firewall +} + +add_hotspot_policy +update_firewall_rules diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/7-add-dae-to-firewall.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/7-add-dae-to-firewall.sh new file mode 100755 index 000000000..4e8938fb0 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/7-add-dae-to-firewall.sh @@ -0,0 +1,32 @@ +#!/bin/sh + +. /lib/functions.sh + +check_include() { + local path + + config_get path $1 path + if [ "$path" == "/etc/firewall.dae" ]; then + dae_include=1 + fi +} + +update_firewall_rules() { + local dae_include + + config_load firewall + config_foreach check_include include + + if [ "$dae_include" != "1" ]; then + uci batch <<-EOF + add firewall include + set firewall.@include[-1].path=/etc/firewall.dae + set firewall.@include[-1].reload=1 + EOF + fi + + uci_commit firewall + +} + +update_firewall_rules diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/8-snmpd-to-mini-snmpd.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/8-snmpd-to-mini-snmpd.sh new file mode 100755 index 000000000..4e40aa4c5 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/8-snmpd-to-mini-snmpd.sh @@ -0,0 +1,14 @@ +[ -n "$(uci -q show snmpd)" ] \ +&& [ -n "$(uci -q show mini_snmpd)" ] \ +&& { + community="$(uci -q get snmpd.public.community)" + location="$(uci -q get snmpd.@system[0].sysLocation)" + contact="$(uci -q get snmpd.@system[0].sysContact)" + uci set mini_snmpd.@mini_snmpd[0].community="$community" + uci set mini_snmpd.@mini_snmpd[0].location="$location" + uci set mini_snmpd.@mini_snmpd[0].contact="$contact" + #firewall rule is in another config, it won't be affected + uci commit mini_snmpd + rm /etc/config/snmpd +} + diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/9-wanvlan_defaults.sh b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/9-wanvlan_defaults.sh new file mode 100644 index 000000000..5a0b2000f --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/etc/migrate/9-wanvlan_defaults.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +wanvlan_interface="`uci get network.wanvlan 2>/dev/null`" + +[ -z "$wanvlan_interface" ] && { + uci set network.wanvlan=interface + uci set network.wanvlan.enabled=0 + uci commit network +} + + diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/lib/preinit/03_preinit_do_realtek.sh b/feeds/rtkmipsel/rtkmipsel/base-files/lib/preinit/03_preinit_do_realtek.sh new file mode 100644 index 000000000..a91245ad1 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/lib/preinit/03_preinit_do_realtek.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +do_realtek() { + . /lib/realtek.sh + + realtek_board_detect + + if [ -z "$(grep SP-W2M-AC1200-POE /dev/mtd6)" ]; then + modprobe rtl819x_8211f + else + modprobe rtl819x_83xx + fi +} + +boot_hook_add preinit_main do_realtek diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/lib/realtek.sh b/feeds/rtkmipsel/rtkmipsel/base-files/lib/realtek.sh new file mode 100755 index 000000000..850ff69c7 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/lib/realtek.sh @@ -0,0 +1,16 @@ +#!/bin/sh + +realtek_board_detect() { + [ -e /tmp/sysinfo/ ] || mkdir /tmp/sysinfo/ + echo "sp-w2m-ac1200" > /tmp/sysinfo/board_name + echo "IgniteNet SP-W2M-AC1200" > /tmp/sysinfo/model +} + +realtek_board_name() { + local name + + [ -f /tmp/sysinfo/board_name ] && name=$(cat /tmp/sysinfo/board_name) + [ -z "$name" ] && name="unknown" + + echo "$name" +} diff --git a/feeds/rtkmipsel/rtkmipsel/base-files/lib/upgrade/platform.sh b/feeds/rtkmipsel/rtkmipsel/base-files/lib/upgrade/platform.sh new file mode 100755 index 000000000..8350998df --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/base-files/lib/upgrade/platform.sh @@ -0,0 +1,114 @@ +RAMDISK_SWITCH=1 +#NO_LDD_SUPPORT=1 + +get_fwhw_string() { + local seek=$(($(wc -c < "$1")-64)) + 2>/dev/null hexdump -n 64 -s $seek -e "64 \"%_c\"" $1 | cut -d '\' -f 1 + return 0; +} + +sysupgrade_l() { + logger -t sysupgrade -p info $1 + return 0 +} + +image_fw_product_matches() { + # get DISTRIB_PRODUCT value as current_prod + local current_prod=$(2>/dev/null grep DISTRIB_PRODUCT /etc/release | cut -d= -f2 | sed -e 's/^"//' -e 's/"$//') + local candidate=$(get_fwhw_string $1) + # allow all firmwares if product in /etc/release is not set + [ -z "$current_prod" ] && {\ + sysupgrade_l "Empty product value. Allowing all firmwares." + return 0; + } + # candidate must have non empty custom fw string + [ -z "$candidate" ] && {\ + sysupgrade_l "Firmware without fw string set. Aborting..." + return 1; + } + + local candidate_prod=$(echo -n $candidate | cut -d. -f1) + + [ "$candidate_prod" = "$current_prod" ] && return 0; + + sysupgrade_l "Not matching fw products found $candidate_prod and $current_prod" + # not an exact product match + return 1; +} + +platform_check_image() { + [ "$ARGC" -gt 1 ] && return 1 + + case "$(get_magic_word "$1")" in + # .cvimg files + 6373) + image_fw_product_matches $1 || return 1 + return 0;; + *) + echo "Invalid image type. Please use only .trx files" + return 1 + ;; + esac +} + +platform_do_upgrade() { + + default_do_upgrade "$ARGV" +} +# use default for platform_do_upgrade() + +# without toolchain ldd support(NO_LDD_SUPPORT=1) , you have to below before switch root to ramdisk +#realtek pre upgrade +install_ram_libs() { + echo "- install_ram_libs -" + ramlib="$RAM_ROOT/lib" + mkdir -p "$ramlib" + cp /lib/*.so.* $ramlib + cp /lib/*.so $ramlib +} + +disable_watchdog() { + killall watchdog + ( ps | grep -v 'grep' | grep '/dev/watchdog' ) && { + echo 'Could not disable watchdog' + return 1 + } +} +rtk_dualimage_check() { + local bootmode_cmd=`cat /tmp/bootmode` + local bootbank_cmd=`cat /tmp/bootbank` + local bootmode=0 + local cur_bootbank=0 + local next_bootbank=$cur_bootbank + PART_NAME=linux + + [ -f /proc/flash/bootoffset ] && { + bootmode=$bootmode_cmd + cur_bootbank=$bootbank_cmd + if [ $bootmode = '1' ];then + echo "It's dualimage toggle mode,always burn image to backup and next boot from it" + PART_NAME=linux_backup + if [ $cur_bootbank = '0' ];then + next_bootbank=1 + else + next_bootbank=0 + fi + fi + rtk_bootinfo setbootbank $next_bootbank + sleep 1 + } +} + + +rtk_pre_upgrade() { + echo "- rtk_pre_upgrade -" + rtk_dualimage_check + if [ -n "$RAMDISK_SWITCH" ]; then + if [ -n "$NO_LDD_SUPPORT" ]; then + install_ram_libs + fi + fi + disable_watchdog +} + +append sysupgrade_pre_upgrade rtk_pre_upgrade diff --git a/feeds/rtkmipsel/rtkmipsel/config-3.18 b/feeds/rtkmipsel/rtkmipsel/config-3.18 new file mode 100644 index 000000000..6038692b7 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/config-3.18 @@ -0,0 +1,4641 @@ +CONFIG_32BIT=y +# CONFIG_6LOWPAN is not set +# CONFIG_6PACK is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_9P_FS is not set +# CONFIG_AB3100_CORE is not set +# CONFIG_AB8500_CORE is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_ACENIC is not set +# CONFIG_ACERHDF is not set +# CONFIG_ACORN_PARTITION is not set +# CONFIG_ACPI_APEI is not set +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_EXTLOG is not set +# CONFIG_ACPI_HED is not set +# CONFIG_ACPI_INT3403_THERMAL is not set +# CONFIG_ACPI_POWER_METER is not set +# CONFIG_ACPI_QUICKSTART is not set +# CONFIG_ACPI_REDUCED_HARDWARE_ONLY is not set +# CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set +# CONFIG_AD2S90 is not set +# CONFIG_AD5064 is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_AD5686 is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5791 is not set +# CONFIG_AD5930 is not set +# CONFIG_AD5933 is not set +# CONFIG_AD7150 is not set +# CONFIG_AD7152 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7266 is not set +# CONFIG_AD7280 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7303 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7606 is not set +# CONFIG_AD7746 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7816 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD799X is not set +# CONFIG_AD8366 is not set +# CONFIG_AD9523 is not set +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set +# CONFIG_AD9850 is not set +# CONFIG_AD9852 is not set +# CONFIG_AD9910 is not set +# CONFIG_AD9951 is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_ADE7753 is not set +# CONFIG_ADE7754 is not set +# CONFIG_ADE7758 is not set +# CONFIG_ADE7759 is not set +# CONFIG_ADE7854 is not set +# CONFIG_ADF4350 is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADIS16060 is not set +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16204 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADIS16220 is not set +# CONFIG_ADIS16240 is not set +# CONFIG_ADIS16255 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_ADJD_S311 is not set +# CONFIG_ADM6996_PHY is not set +# CONFIG_ADM8211 is not set +# CONFIG_ADT7316 is not set +# CONFIG_ADVISE_SYSCALLS is not set +# CONFIG_ADXRS450 is not set +CONFIG_AEABI=y +# CONFIG_AFFS_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AGP is not set +# CONFIG_AHCI_MVEBU is not set +CONFIG_AIO=y +# CONFIG_AIRO is not set +# CONFIG_AIRO_CS is not set +# CONFIG_AIX_PARTITION is not set +# CONFIG_AK09911 is not set +# CONFIG_AK8975 is not set +# CONFIG_AL3320A is not set +# CONFIG_ALCHEMY_GPIO_INDIRECT is not set +# CONFIG_ALIM7101_WDT is not set +CONFIG_ALLOW_DEV_COREDUMP=y +# CONFIG_ALTERA_STAPL is not set +# CONFIG_ALTERA_TSE is not set +# CONFIG_ALX is not set +# CONFIG_AM335X_PHY_USB is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_AMD_XGBE is not set +# CONFIG_AMD_XGBE_PHY is not set +# CONFIG_AMD_PHY is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_AMILO_RFKILL is not set +# CONFIG_ANDROID is not set +CONFIG_ANON_INODES=y +# CONFIG_APDS9300 is not set +# CONFIG_APDS9802ALS is not set +# CONFIG_APM8018X is not set +# CONFIG_APPLICOM is not set +# CONFIG_AR5523 is not set +# CONFIG_AR7 is not set +# CONFIG_AR8216_PHY is not set +# CONFIG_AR8216_PHY_LEDS is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCM is not set +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCMRING is not set +# CONFIG_ARCH_BERLIN is not set +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CNS3XXX is not set +# CONFIG_ARCH_DAVINCI is not set +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_EXYNOS is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_H720X is not set +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +# CONFIG_ARCH_HI3xxx is not set +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_HISI is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_KEYSTONE is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_MEDIATEK is not set +# CONFIG_ARCH_MESON is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_MSM_DT is not set +# CONFIG_ARCH_MSM_NODT is not set +# CONFIG_ARCH_MULTIPLATFORM is not set +# CONFIG_ARCH_MULTI_V6 is not set +# CONFIG_ARCH_MULTI_V7 is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MXS is not set +# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_NOMADIK is not set +# CONFIG_ARCH_NSPIRE is not set +# CONFIG_ARCH_NUC93X is not set +# CONFIG_ARCH_OMAP is not set +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2PLUS is not set +# CONFIG_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_PICOXCELL is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PRIMA2 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_QCOM is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_ROCKCHIP is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5P64X0 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_SHMOBILE is not set +# CONFIG_ARCH_SHMOBILE_LEGACY is not set +# CONFIG_ARCH_SHMOBILE_MULTI is not set +# CONFIG_ARCH_SIRF is not set +# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_ARCH_STI is not set +# CONFIG_ARCH_SUNXI is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +# CONFIG_ARCH_TCC_926 is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VIRT is not set +# CONFIG_ARCH_VT8500 is not set +# CONFIG_ARCH_W90X900 is not set +# CONFIG_ARCH_WM8505 is not set +# CONFIG_ARCH_WM8850 is not set +# CONFIG_ARCH_ZYNQ is not set +# CONFIG_ARCNET is not set +# CONFIG_ARC_EMAC is not set +# CONFIG_ARM_APPENDED_DTB is not set +# CONFIG_ARM_ARCH_TIMER is not set +# CONFIG_ARM_AT91_ETHER is not set +# CONFIG_ARM_CCI is not set +# CONFIG_ARM_CCN is not set +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +# CONFIG_ARM_ERRATA_326103 is not set +# CONFIG_ARM_ERRATA_364296 is not set +# CONFIG_ARM_ERRATA_411920 is not set +# CONFIG_ARM_ERRATA_430973 is not set +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +# CONFIG_ARM_ERRATA_643719 is not set +# CONFIG_ARM_ERRATA_720789 is not set +# CONFIG_ARM_ERRATA_742230 is not set +# CONFIG_ARM_ERRATA_742231 is not set +# CONFIG_ARM_ERRATA_743622 is not set +# CONFIG_ARM_ERRATA_751472 is not set +# CONFIG_ARM_ERRATA_754322 is not set +# CONFIG_ARM_ERRATA_754327 is not set +# CONFIG_ARM_ERRATA_764369 is not set +# CONFIG_ARM_ERRATA_773022 is not set +# CONFIG_ARM_ERRATA_775420 is not set +# CONFIG_ARM_ERRATA_798181 is not set +# CONFIG_ARM_KPROBES_TEST is not set +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +# CONFIG_ARM_PSCI is not set +# CONFIG_ARM_PTDUMP is not set +# CONFIG_ARM_UNWIND is not set +# CONFIG_ARM_VIRT_EXT is not set +CONFIG_ARPD=y +# CONFIG_ARTHUR is not set +# CONFIG_AS3935 is not set +# CONFIG_ASUS_OLED is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set +# CONFIG_ASYNC_RAID6_TEST is not set +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_AT76C50X_USB is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_ATA is not set +# CONFIG_ATAGS is not set +CONFIG_ATAGS_PROC=y +# CONFIG_ATALK is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_ATA_ACPI is not set +CONFIG_ATA_BMDMA=y +# CONFIG_ATA_GENERIC is not set +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_ATA_PIIX is not set +CONFIG_ATA_SFF=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_ATH10K is not set +# CONFIG_ATH5K is not set +# CONFIG_ATH6KL is not set +# CONFIG_ATH6K_LEGACY is not set +# CONFIG_ATH79 is not set +# CONFIG_ATH9K is not set +# CONFIG_ATH9K_HTC is not set +# CONFIG_ATH_CARDS is not set +# CONFIG_ATH_DEBUG is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1C is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL2 is not set +# CONFIG_ATM is not set +# CONFIG_ATMEL is not set +# CONFIG_ATMEL_PIT is not set +# CONFIG_ATMEL_PWM is not set +# CONFIG_ATMEL_SSC is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_BR2684 is not set +CONFIG_ATM_BR2684_IPFILTER=y +# CONFIG_ATM_CLIP is not set +CONFIG_ATM_CLIP_NO_ICMP=y +# CONFIG_ATM_DRIVERS is not set +# CONFIG_ATM_DUMMY is not set +# CONFIG_ATM_ENI is not set +# CONFIG_ATM_FIRESTREAM is not set +# CONFIG_ATM_FORE200E is not set +# CONFIG_ATM_HE is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_LANAI is not set +# CONFIG_ATM_LANE is not set +# CONFIG_ATM_MPOA is not set +# CONFIG_ATM_NICSTAR is not set +# CONFIG_ATM_SOLOS is not set +# CONFIG_ATM_TCP is not set +# CONFIG_ATM_ZATM is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_ATP is not set +# CONFIG_AUDIT is not set +# CONFIG_AUDIT_ARCH_COMPAT_GENERIC is not set +# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTO_ZRELADDR is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_AVERAGE is not set +# CONFIG_AX25 is not set +# CONFIG_AX25_DAMA_SLAVE is not set +# CONFIG_AX88796 is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_B44 is not set +# CONFIG_B53 is not set +# CONFIG_B53_SPI_DRIVER is not set +# CONFIG_BACKLIGHT_BD6107 is not set +# CONFIG_BACKLIGHT_GPIO is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_BACKLIGHT_LM3630 is not set +# CONFIG_BACKLIGHT_LM3630A is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LP855X is not set +# CONFIG_BACKLIGHT_LV5207LP is not set +# CONFIG_BACKLIGHT_PANDORA is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +# CONFIG_BATMAN_ADV is not set +# CONFIG_BATTERY_BQ27x00 is not set +# CONFIG_BATTERY_DS2760 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_GOLDFISH is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_BAYCOM_EPP is not set +# CONFIG_BAYCOM_PAR is not set +# CONFIG_BAYCOM_SER_FDX is not set +# CONFIG_BAYCOM_SER_HDX is not set +# CONFIG_BCACHE is not set +# CONFIG_BCM47XX is not set +# CONFIG_BCM63XX is not set +# CONFIG_BCM63XX_PHY is not set +# CONFIG_BCM7XXX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_BCMA is not set +# CONFIG_BCMA_DRIVER_GPIO is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCMGENET is not set +# CONFIG_BCM_KONA_USB2_PHY is not set +# CONFIG_BCM_WIMAX is not set +# CONFIG_BDI_SWITCH is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BE2NET is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_BGMAC is not set +# CONFIG_BIG_KEYS is not set +# CONFIG_BIG_LITTLE is not set +# CONFIG_BINARY_PRINTF is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_BINFMT_SCRIPT=y +CONFIG_BITREVERSE=y +# CONFIG_BLK_CMDLINE_PARSER is not set +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_CPQ_DA is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_BLK_DEV_4DRIVES is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI14XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_ATIIXP is not set +# CONFIG_BLK_DEV_BSG is not set +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CS5535 is not set +# CONFIG_BLK_DEV_CS5536 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_DELKIN is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_DTC2278 is not set +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_GENERIC is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_HT6560B is not set +# CONFIG_BLK_DEV_IDEACPI is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDECS is not set +# CONFIG_BLK_DEV_IDEPCI is not set +# CONFIG_BLK_DEV_IDEPNP is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDE_AU1XXX is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +CONFIG_BLK_DEV_INITRD=y +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_BLK_DEV_IT8172 is not set +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_JMICRON is not set +# CONFIG_BLK_DEV_LOOP is not set +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_NULL_BLK is not set +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_PLATFORM is not set +# CONFIG_BLK_DEV_QD65XX is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set +# CONFIG_BLK_DEV_RZ1000 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_SD is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SKD is not set +# CONFIG_BLK_DEV_SL82C105 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_TC86C001 is not set +# CONFIG_BLK_DEV_THROTTLING is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_UB is not set +# CONFIG_BLK_DEV_UMC8672 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_XIP is not set +CONFIG_BLOCK=y +# CONFIG_BMA180 is not set +# CONFIG_BMC150_ACCEL is not set +# CONFIG_BMG160 is not set +# CONFIG_BMP085 is not set +# CONFIG_BMP085_I2C is not set +# CONFIG_BMP085_SPI is not set +# CONFIG_BNA is not set +# CONFIG_BNX2 is not set +# CONFIG_BNX2X is not set +# CONFIG_BONDING is not set +# CONFIG_BOOKE_WDT is not set +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3 +# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_BOOT_RAW=y +# CONFIG_BPCTL is not set +CONFIG_BPF=y +# CONFIG_BPF_JIT is not set +CONFIG_BPF_SYSCALL=y +# CONFIG_BPQETHER is not set +CONFIG_BQL=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_BRCMFMAC is not set +# CONFIG_BRCMSMAC is not set +# CONFIG_BRCMSTB_GISB_ARB is not set +CONFIG_BRIDGE=y +# CONFIG_BRIDGE_EBT_802_3 is not set +# CONFIG_BRIDGE_EBT_AMONG is not set +# CONFIG_BRIDGE_EBT_ARP is not set +# CONFIG_BRIDGE_EBT_ARPREPLY is not set +# CONFIG_BRIDGE_EBT_BROUTE is not set +# CONFIG_BRIDGE_EBT_DNAT is not set +# CONFIG_BRIDGE_EBT_IP is not set +# CONFIG_BRIDGE_EBT_IP6 is not set +# CONFIG_BRIDGE_EBT_LIMIT is not set +# CONFIG_BRIDGE_EBT_LOG is not set +# CONFIG_BRIDGE_EBT_MARK is not set +# CONFIG_BRIDGE_EBT_MARK_T is not set +# CONFIG_BRIDGE_EBT_NFLOG is not set +# CONFIG_BRIDGE_EBT_PKTTYPE is not set +# CONFIG_BRIDGE_EBT_REDIRECT is not set +# CONFIG_BRIDGE_EBT_SNAT is not set +# CONFIG_BRIDGE_EBT_STP is not set +# CONFIG_BRIDGE_EBT_T_FILTER is not set +# CONFIG_BRIDGE_EBT_T_NAT is not set +# CONFIG_BRIDGE_EBT_ULOG is not set +# CONFIG_BRIDGE_EBT_VLAN is not set +CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_NETFILTER is not set +# CONFIG_BRIDGE_NF_EBTABLES is not set +# CONFIG_BRIDGE_VLAN_FILTERING is not set +# CONFIG_BROADCOM_PHY is not set +CONFIG_BROKEN_ON_SMP=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_BSD_PROCESS_ACCT_V3 is not set +# CONFIG_BT is not set +# CONFIG_BTRFS_ASSERT is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BT_ATH3K is not set +# CONFIG_BT_BNEP is not set +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +# CONFIG_BT_CMTP is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIBLUECARD is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBT3C is not set +# CONFIG_BT_HCIBTSDIO is not set +# CONFIG_BT_HCIBTUART is not set +# CONFIG_BT_HCIBTUSB is not set +# CONFIG_BT_HCIDTL1 is not set +# CONFIG_BT_HCIUART is not set +# CONFIG_BT_HCIUART_3WIRE is not set +# CONFIG_BT_HCIUART_ATH3K is not set +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_LL is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_BT_HIDP is not set +CONFIG_BT_L2CAP=y +# CONFIG_BT_MRVL is not set +# CONFIG_BT_RFCOMM is not set +# CONFIG_BUILD_BIN2C is not set +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_SCO=y +CONFIG_BUG=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +# CONFIG_C2PORT is not set +# CONFIG_CADENCE_WATCHDOG is not set +# CONFIG_CAIF is not set +# CONFIG_CAN is not set +# CONFIG_CAN_GS_USB is not set +# CONFIG_CAN_M_CAN is not set +# CONFIG_CAN_RCAR is not set +# CONFIG_CAPI_AVM is not set +# CONFIG_CAPI_EICON is not set +# CONFIG_CAPI_TRACE is not set +CONFIG_CARDBUS=y +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set +# CONFIG_CARL9170 is not set +# CONFIG_CARMA_FPGA is not set +# CONFIG_CARMA_FPGA_PROGRAM is not set +# CONFIG_CASSINI is not set +CONFIG_CAVIUM_OCTEON_HELPER=y +# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set +# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set +# CONFIG_CAVIUM_OCTEON_SOC is not set +# CONFIG_CB710_CORE is not set +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_CC_STACKPROTECTOR is not set +CONFIG_CC_STACKPROTECTOR_NONE=y +# CONFIG_CC_STACKPROTECTOR_REGULAR is not set +# CONFIG_CC_STACKPROTECTOR_STRONG is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_CED1401 is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_CFG80211 is not set +# CONFIG_CFG80211_CERTIFICATION_ONUS is not set +# CONFIG_CFG80211_DEBUGFS is not set +# CONFIG_CFG80211_DEFAULT_PS is not set +# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set +# CONFIG_CFG80211_INTERNAL_REGDB is not set +# CONFIG_CFG80211_REG_DEBUG is not set +# CONFIG_CFG80211_WEXT is not set +# CONFIG_CGROUPS is not set +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_CGROUP_NET_PRIO is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_BQ24190 is not set +# CONFIG_CHARGER_BQ24735 is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_ISP1704 is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_MANAGER is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_CHARGER_TWL4030 is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +# CONFIG_CHROME_PLATFORMS is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CIFS is not set +# CONFIG_CIFS_ACL is not set +# CONFIG_CIFS_DEBUG is not set +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_FSCACHE is not set +# CONFIG_CIFS_NFSD_EXPORT is not set +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_SMB2 is not set +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +# CONFIG_CIFS_WEAK_PW_HASH is not set +# CONFIG_CIFS_XATTR is not set +# CONFIG_CLEANCACHE is not set +# CONFIG_CLKSRC_VERSATILE is not set +CONFIG_CLS_U32_MARK=y +# CONFIG_CLS_U32_PERF is not set +# CONFIG_CM32181 is not set +# CONFIG_CM36651 is not set +# CONFIG_CMA is not set +CONFIG_CMDLINE="" +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_CMDLINE_EXTEND is not set +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_CMDLINE_FROM_BOOTLOADER is not set +# CONFIG_CMDLINE_PARTITION is not set +# CONFIG_CNIC is not set +# CONFIG_CODA_FS is not set +# CONFIG_CODE_PATCHING_SELFTEST is not set +# CONFIG_COMEDI is not set +# CONFIG_COMMON_CLK_DEBUG is not set +# CONFIG_COMMON_CLK_PXA is not set +# CONFIG_COMMON_CLK_QCOM is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMMON_CLK_SI570 is not set +# CONFIG_COMPACTION is not set +# CONFIG_COMPAL_LAPTOP is not set +# CONFIG_COMPAT_BRK is not set +# CONFIG_COMPILE_TEST is not set +# CONFIG_CONFIGFS_FS is not set +# CONFIG_CONNECTOR is not set +CONFIG_CONSTRUCTORS=y +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_COPS is not set +# CONFIG_CORDIC is not set +# CONFIG_COREDUMP is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_CPA_DEBUG is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_FREQ is not set +# CONFIG_CPU_IDLE is not set +# CONFIG_CPU_IDLE_GOV_MENU is not set +# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set +# CONFIG_CRAMFS is not set +CONFIG_CRASHLOG=y +# CONFIG_CRASH_DUMP is not set +# CONFIG_CRC16 is not set +CONFIG_CRC32=y +# CONFIG_CRC32_BIT is not set +CONFIG_CRC32_SARWATE=y +# CONFIG_CRC32_SELFTEST is not set +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SLICEBY8 is not set +# CONFIG_CRC7 is not set +# CONFIG_CRC8 is not set +# CONFIG_CRC_CCITT is not set +# CONFIG_CRC_ITU_T is not set +# CONFIG_CRC_T10DIF is not set +CONFIG_CROSS_COMPILE="" +# CONFIG_CROSS_MEMORY_ATTACH is not set +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_AEAD is not set +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_586 is not set +# CONFIG_CRYPTO_AES_ARM is not set +# CONFIG_CRYPTO_AES_ARM_BS is not set +# CONFIG_CRYPTO_AES_NI_INTEL is not set +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +# CONFIG_CRYPTO_ANSI_CPRNG is not set +# CONFIG_CRYPTO_ANUBIS is not set +# CONFIG_CRYPTO_ARC4 is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_BLKCIPHER is not set +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRCT10DIF is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_DEV_ATMEL_AES is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA is not set +# CONFIG_CRYPTO_DEV_ATMEL_TDES is not set +# CONFIG_CRYPTO_DEV_CCP is not set +# CONFIG_CRYPTO_DEV_FSL_CAAM is not set +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +# CONFIG_CRYPTO_DEV_MV_CESA is not set +# CONFIG_CRYPTO_DEV_QAT_DH895xCC is not set +# CONFIG_CRYPTO_DEV_QCE is not set +# CONFIG_CRYPTO_DEV_SAHARA is not set +# CONFIG_CRYPTO_DEV_TALITOS is not set +# CONFIG_CRYPTO_DRBG_MENU is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_FIPS is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set +# CONFIG_CRYPTO_HASH is not set +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_HW is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_LZ4 is not set +# CONFIG_CRYPTO_LZ4HC is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_MANAGER is not set +# CONFIG_CRYPTO_MANAGER2 is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_MCRYPTD is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_PCOMP is not set +# CONFIG_CRYPTO_PCOMP2 is not set +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +# CONFIG_CRYPTO_RNG is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SALSA20_586 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SEQIV is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_SHA1 is not set +# CONFIG_CRYPTO_SHA1_ARM is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TEST is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_TWOFISH_586 is not set +# CONFIG_CRYPTO_TWOFISH_COMMON is not set +# CONFIG_CRYPTO_USER is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_VMAC is not set +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_XZ is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYSTALHD is not set +# CONFIG_CS5535_MFGPT is not set +# CONFIG_CS89x0 is not set +# CONFIG_CUSE is not set +# CONFIG_CW1200 is not set +# CONFIG_CXL_BASE is not set +# CONFIG_CXT1E1 is not set +# CONFIG_CYPRESS_FIRMWARE is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DCB is not set +# CONFIG_DDR is not set +# CONFIG_DE600 is not set +# CONFIG_DE620 is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +CONFIG_DEBUG_FS=y +# CONFIG_DEBUG_GPIO is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_INFO_DWARF4 is not set +CONFIG_DEBUG_INFO_REDUCED=y +# CONFIG_DEBUG_INFO_SPLIT is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_KOBJECT_RELEASE is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_LL_UART_8250 is not set +# CONFIG_DEBUG_LL_UART_PL01X is not set +# CONFIG_DEBUG_LOCKDEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_PI_LIST is not set +# CONFIG_DEBUG_PINCTRL is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +# CONFIG_DEBUG_SEMIHOSTING is not set +# CONFIG_DEBUG_SET_MODULE_RONX is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set +# CONFIG_DEBUG_UART_BCM63XX is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set +# CONFIG_DEBUG_ZBOOT is not set +# CONFIG_DECNET is not set +CONFIG_DEFAULT_CUBIC=y +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_HOSTNAME="(none)" +CONFIG_DEFAULT_IOSCHED="deadline" +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +# CONFIG_DEFAULT_NOOP is not set +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY="" +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +# CONFIG_DELL_SMO8800 is not set +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_DEVKMEM is not set +CONFIG_DEVPORT=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_DEVTMPFS is not set +# CONFIG_DEVTMPFS_MOUNT is not set +# CONFIG_DGAP is not set +# CONFIG_DGNC is not set +# CONFIG_DGRP is not set +# CONFIG_DHT11 is not set +# CONFIG_DIRECT_IO is not set +CONFIG_DISABLE_DEV_COREDUMP=y +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_DISPLAY_CONNECTOR_ANALOG_TV is not set +# CONFIG_DISPLAY_CONNECTOR_DVI is not set +# CONFIG_DISPLAY_CONNECTOR_HDMI is not set +# CONFIG_DISPLAY_ENCODER_TFP410 is not set +# CONFIG_DISPLAY_ENCODER_TPD12S015 is not set +# CONFIG_DISPLAY_PANEL_DPI is not set +# CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02 is not set +# CONFIG_DISPLAY_PANEL_TPO_TD028TTEC1 is not set +# CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1 is not set +# CONFIG_DISPLAY_SUPPORT is not set +# CONFIG_DL2K is not set +# CONFIG_DLM is not set +# CONFIG_DM9000 is not set +# CONFIG_DMADEVICES is not set +# CONFIG_DMADEVICES_DEBUG is not set +# CONFIG_DMASCC is not set +# CONFIG_DMATEST is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_ENGINE is not set +# CONFIG_DMA_SHARED_BUFFER is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_ERA is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_LOG_USERSPACE is not set +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_RAID is not set +# CONFIG_DM_SWITCH is not set +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DNET is not set +# CONFIG_DNOTIFY is not set +# CONFIG_DNS_RESOLVER is not set +CONFIG_DOUBLEFAULT=y +CONFIG_DQL=y +# CONFIG_DRAGONRISE_FF is not set +# CONFIG_DRM is not set +# CONFIG_DS1682 is not set +# CONFIG_DTLK is not set +# CONFIG_DUMMY is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_DVB_AU8522_V4L is not set +# CONFIG_DVB_CORE is not set +# CONFIG_DVB_DUMMY_FE is not set +# CONFIG_DVB_TUNER_DIB0070 is not set +# CONFIG_DVB_TUNER_DIB0090 is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_DWC3_HOST_USB3_LPM_ENABLE is not set +# CONFIG_DX_SEP is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_E100 is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_E2100 is not set +# CONFIG_EARLY_PRINTK_8250 is not set +# CONFIG_EASYCAP is not set +# CONFIG_ECHO is not set +# CONFIG_ECONET is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_EDAC is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_DIGSY_MTC_CFG is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEXPRESS is not set +# CONFIG_EEXPRESS_PRO is not set +CONFIG_EFI_PARTITION=y +# CONFIG_EFS_FS is not set +# CONFIG_ELF_CORE is not set +# CONFIG_EMAC_ROCKCHIP is not set +CONFIG_EMBEDDED=y +# CONFIG_EM_TIMER_STI is not set +# CONFIG_ENABLE_MUST_CHECK is not set +CONFIG_ENABLE_WARN_DEPRECATED=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_ENIC is not set +# CONFIG_EPAPR_PARAVIRT is not set +# CONFIG_EPIC100 is not set +CONFIG_EPOLL=y +# CONFIG_EQUALIZER is not set +# CONFIG_ET131X is not set +# CONFIG_GATEWORKS_GW16083 is not set +# CONFIG_GLOB_SELFTEST is not set +# CONFIG_GS_FPGABOOT is not set +# CONFIG_ETH16I is not set +CONFIG_ETHERNET=y +# CONFIG_ETHOC is not set +CONFIG_EVENTFD=y +# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set +# CONFIG_EWRK3 is not set +CONFIG_EXPERIMENTAL=y +CONFIG_EXPERT=y +# CONFIG_EXPORTFS is not set +# CONFIG_EXT2_FS is not set +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT3_FS_XATTR is not set +# CONFIG_EXT4_DEBUG is not set +# CONFIG_EXT4_FS is not set +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_USE_FOR_EXT23=y +# CONFIG_EXTCON is not set +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +# CONFIG_EXYNOS_ADC is not set +# CONFIG_EXYNOS_VIDEO is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FAIR_GROUP_SCHED is not set +# CONFIG_FANOTIFY is not set +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_FAT_FS is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_FB is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_ARC is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_ARMCLCD is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_AUO_K190X is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_CFB_COPYAREA is not set +# CONFIG_FB_CFB_FILLRECT is not set +# CONFIG_FB_CFB_IMAGEBLIT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_DA8XX is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_GEODE is not set +# CONFIG_FB_GOLDFISH is not set +# CONFIG_FB_HGA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_IMX is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_LE80578 is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_N411 is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_OF is not set +# CONFIG_FB_OPENCORES is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_PS3 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_SM7XX is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_TMIO is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_UVESA is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_VIA is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_XGI is not set +# CONFIG_FCOE is not set +# CONFIG_FCOE_FNIC is not set +# CONFIG_FDDI is not set +# CONFIG_FEALNX is not set +# CONFIG_FENCE_TRACE is not set +# CONFIG_FHANDLE is not set +CONFIG_FIB_RULES=y +CONFIG_FILE_LOCKING=y +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# CONFIG_FIREWIRE_SERIAL is not set +# CONFIG_FIRMWARE_EDID is not set +# CONFIG_FIRMWARE_IN_KERNEL is not set +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FIXED_PHY is not set +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FM10K is not set +# CONFIG_FMC is not set +# CONFIG_FORCEDETH is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_FRAMEBUFFER_CONSOLE is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_FREEZER is not set +# CONFIG_FRONTSWAP is not set +# CONFIG_FSCACHE is not set +# CONFIG_FSL_EDMA is not set +# CONFIG_FSL_XGMAC_MDIO is not set +CONFIG_FSNOTIFY=y +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_FT1000 is not set +# CONFIG_FTGMAC100 is not set +# CONFIG_FTL is not set +# CONFIG_FTMAC100 is not set +# CONFIG_FTRACE is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_FTR_FIXUP_SELFTEST is not set +# CONFIG_FUJITSU_TABLET is not set +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_FUSE_FS is not set +# CONFIG_FUSION is not set +# CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set +# CONFIG_FUSION_SPI is not set +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_FW_LOADER_USER_HELPER_FALLBACK=y +CONFIG_GACT_PROB=y +# CONFIG_GADGET_UAC1 is not set +# CONFIG_GAMEPORT is not set +# CONFIG_GCOV is not set +# CONFIG_GCOV_KERNEL is not set +# CONFIG_GENEVE is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +CONFIG_GENERIC_CALIBRATE_DELAY=y +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_NET_UTILS=y +# CONFIG_GENERIC_PHY is not set +CONFIG_GENERIC_TIME=y +# CONFIG_GENWQE is not set +# CONFIG_GFS2_FS is not set +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GP2AP020A00F is not set +# CONFIG_GPIOLIB is not set +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_AMD8111 is not set +# CONFIG_GPIO_BCM_KONA is not set +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_CS5535 is not set +# CONFIG_GPIO_DWAPB is not set +# CONFIG_GPIO_EM is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_ICH is not set +# CONFIG_GPIO_IT8761E is not set +# CONFIG_GPIO_LANGWELL is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_ML_IOH is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_PCH is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_RCAR is not set +# CONFIG_GPIO_RDC321X is not set +# CONFIG_GPIO_SCH is not set +# CONFIG_GPIO_SCH311X is not set +# CONFIG_GPIO_SX150X is not set +# CONFIG_GPIO_SYSCON is not set +# CONFIG_GPIO_SYSFS is not set +# CONFIG_GPIO_TS5500 is not set +# CONFIG_GPIO_VX855 is not set +# CONFIG_GPIO_WATCHDOG is not set +# CONFIG_GPIO_WDT is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GPIO_ZEVIO is not set +# CONFIG_GREENASIA_FF is not set +# CONFIG_HAMACHI is not set +# CONFIG_HAMRADIO is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set +# CONFIG_HAVE_AOUT is not set +# CONFIG_HAVE_ARM_ARCH_TIMER is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +# CONFIG_HCALL_STATS is not set +# CONFIG_HDLC is not set +# CONFIG_HDLC_CISCO is not set +# CONFIG_HDLC_FR is not set +# CONFIG_HDLC_PPP is not set +# CONFIG_HDLC_RAW is not set +# CONFIG_HDLC_RAW_ETH is not set +# CONFIG_HDQ_MASTER_OMAP is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_HERMES is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_HFSPLUS_FS_POSIX_ACL is not set +# CONFIG_HFS_FS is not set +# CONFIG_HIBERNATION is not set +# CONFIG_HID is not set +# CONFIG_HIDRAW is not set +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_ACRUX_FF is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CP2112 is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_ELO is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GENERIC is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_GT683R is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_HUION is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO is not set +# CONFIG_HID_LENOVO_TPKBD is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_LOGITECH_DJ is not set +# CONFIG_HID_LOGITECH_HIDPP is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PENMOUNT is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PID is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_PS3REMOTE is not set +# CONFIG_HID_QUANTA is not set +# CONFIG_HID_RMI is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_ROCCAT_ARVO is not set +# CONFIG_HID_ROCCAT_KONE is not set +# CONFIG_HID_ROCCAT_KONEPLUS is not set +# CONFIG_HID_ROCCAT_KOVAPLUS is not set +# CONFIG_HID_ROCCAT_PYRA is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_HID_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_XINMO is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HIGHMEM is not set +CONFIG_HIGH_RES_TIMERS=y +# CONFIG_HIPPI is not set +# CONFIG_HIX5HD2_GMAC is not set +# CONFIG_HMC6352 is not set +# CONFIG_HOSTAP is not set +# CONFIG_HOSTAP_CS is not set +# CONFIG_HOSTAP_PCI is not set +# CONFIG_HOSTAP_PLX is not set +CONFIG_HOTPLUG=y +# CONFIG_HOTPLUG_CPU is not set +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HP100 is not set +CONFIG_HPET_MMAP_DEFAULT=y +# CONFIG_HPFS_FS is not set +# CONFIG_HPLAN is not set +# CONFIG_HPLAN_PLUS is not set +# CONFIG_HP_ILO is not set +# CONFIG_HP_WIRELESS is not set +# CONFIG_HSI is not set +# CONFIG_HSR is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_HVC_DCC is not set +# CONFIG_HVC_UDBG is not set +# CONFIG_HWMON is not set +# CONFIG_HWMON_DEBUG_CHIP is not set +# CONFIG_HWMON_VID is not set +# CONFIG_HWSPINLOCK_OMAP is not set +CONFIG_HW_PERF_EVENTS=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HW_RANDOM_AMD is not set +# CONFIG_HW_RANDOM_ATMEL is not set +# CONFIG_HW_RANDOM_EXYNOS is not set +# CONFIG_HW_RANDOM_GEODE is not set +# CONFIG_HW_RANDOM_INTEL is not set +# CONFIG_HW_RANDOM_OMAP3_ROM is not set +# CONFIG_HW_RANDOM_PPC4XX is not set +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_VIA is not set +# CONFIG_HYPERV is not set +# CONFIG_HYSDN is not set +CONFIG_HZ=100 +CONFIG_HZ_100=y +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_1024 is not set +# CONFIG_HZ_128 is not set +# CONFIG_HZ_200 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_256 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_48 is not set +# CONFIG_HZ_500 is not set +# CONFIG_HZ_PERIODIC is not set +# CONFIG_I2C is not set +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_I2C_ALGOPCA is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_AU1550 is not set +# CONFIG_I2C_BCM2835 is not set +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_CHARDEV is not set +# CONFIG_I2C_COMPAT is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DESIGNWARE is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_EG20T is not set +# CONFIG_I2C_ELEKTOR is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_HELPER_AUTO is not set +# CONFIG_I2C_HID is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_IBM_IIC is not set +# CONFIG_I2C_INTEL_MID is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_ISMT is not set +# CONFIG_I2C_MPC is not set +# CONFIG_I2C_MUX is not set +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MV64XXX is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_OCTEON is not set +# CONFIG_I2C_PARPORT is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_PCA_ISA is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_RCAR is not set +# CONFIG_I2C_RK3X is not set +# CONFIG_I2C_ROBOTFUZZ_OSIF is not set +# CONFIG_I2C_SCMI is not set +# CONFIG_I2C_SH_MOBILE is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_SMBUS is not set +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set +# CONFIG_I2C_VERSATILE is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set +# CONFIG_I2C_XILINX is not set +# CONFIG_I2O is not set +# CONFIG_I40E is not set +# CONFIG_I40EVF is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_IBM_ASM is not set +# CONFIG_IBM_EMAC_DEBUG is not set +# CONFIG_IBM_EMAC_EMAC4 is not set +# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set +# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_EMAC_RGMII is not set +# CONFIG_IBM_EMAC_TAH is not set +# CONFIG_IBM_EMAC_ZMII is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_ICS932S401 is not set +# CONFIG_IDE is not set +# CONFIG_IDEAPAD_LAPTOP is not set +# CONFIG_IDE_GD is not set +# CONFIG_IDE_PHISON is not set +# CONFIG_IDE_PROC_FS is not set +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IEEE802154 is not set +# CONFIG_IEEE802154_FAKEHARD is not set +# CONFIG_IFB is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IIO is not set +# CONFIG_IIO_BUFFER_CB is not set +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_GPIO_TRIGGER is not set +# CONFIG_IIO_INTERRUPT_TRIGGER is not set +# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set +# CONFIG_IIO_SIMPLE_DUMMY is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_IIO_ST_PRESS is not set +# CONFIG_IIO_SYSFS_TRIGGER is not set +# CONFIG_IKCONFIG is not set +# CONFIG_IKCONFIG_PROC is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set +# CONFIG_IMX_IPUV3_CORE is not set +CONFIG_INET=y +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_INET6_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_BEET is not set +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET6_XFRM_MODE_TUNNEL is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_DIAG is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_LRO is not set +# CONFIG_INET_TCP_DIAG is not set +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INFINIBAND is not set +# CONFIG_INFTL is not set +# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set +CONFIG_INITRAMFS_COMPRESSION_NONE=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_INLINE_READ_LOCK is not set +# CONFIG_INLINE_READ_LOCK_BH is not set +# CONFIG_INLINE_READ_LOCK_IRQ is not set +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set +# CONFIG_INLINE_READ_TRYLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_SPIN_LOCK is not set +# CONFIG_INLINE_SPIN_LOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set +# CONFIG_INLINE_SPIN_TRYLOCK is not set +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK=y +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_WRITE_LOCK is not set +# CONFIG_INLINE_WRITE_LOCK_BH is not set +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set +# CONFIG_INLINE_WRITE_TRYLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set +CONFIG_INOTIFY_USER=y +# CONFIG_INPUT is not set +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_APANEL is not set +# CONFIG_INPUT_ATI_REMOTE is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_ATLAS_BTNS is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_DRV260X_HAPTICS is not set +# CONFIG_INPUT_DRV2667_HAPTICS is not set +# CONFIG_INPUT_EVBUG is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_GP2A is not set +# CONFIG_INPUT_GPIO_BEEPER is not set +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_GPIO_TILT_POLLED is not set +# CONFIG_INPUT_IDEAPAD_SLIDEBAR is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_MATRIXKMAP is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_MPU3050 is not set +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_PCSPKR is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_PWM_BEEPER is not set +# CONFIG_INPUT_SOC_BUTTON_ARRAY is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_UINPUT is not set +# CONFIG_INPUT_WISTRON_BTNS is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INT340X_THERMAL is not set +# CONFIG_INTEL_IDLE is not set +# CONFIG_INTEL_MEI is not set +# CONFIG_INTEL_MEI_ME is not set +# CONFIG_INTEL_MEI_TXE is not set +# CONFIG_INTEL_MIC_CARD is not set +# CONFIG_INTEL_MIC_HOST is not set +# CONFIG_INTEL_MID_PTI is not set +# CONFIG_INTEL_OAKTRAIL is not set +# CONFIG_INTEL_RST is not set +# CONFIG_INTEL_SMARTCONNECT is not set +# CONFIG_INTEL_SOC_PMIC is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_INV_MPU6050_IIO is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_IOSCHED_DEADLINE=y +CONFIG_IOSCHED_NOOP=y +# CONFIG_IP1000 is not set +# CONFIG_IP17XX_PHY is not set +# CONFIG_IP6_NF_FILTER is not set +# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_IP6_NF_MATCH_AH is not set +# CONFIG_IP6_NF_MATCH_EUI64 is not set +# CONFIG_IP6_NF_MATCH_FRAG is not set +# CONFIG_IP6_NF_MATCH_HL is not set +# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set +# CONFIG_IP6_NF_MATCH_MH is not set +# CONFIG_IP6_NF_MATCH_OPTS is not set +# CONFIG_IP6_NF_MATCH_RPFILTER is not set +# CONFIG_IP6_NF_MATCH_RT is not set +# CONFIG_IP6_NF_NAT is not set +# CONFIG_IP6_NF_QUEUE is not set +# CONFIG_IP6_NF_RAW is not set +# CONFIG_IP6_NF_TARGET_HL is not set +# CONFIG_IP6_NF_TARGET_LOG is not set +# CONFIG_IP6_NF_TARGET_REJECT is not set +# CONFIG_IP6_NF_TARGET_SYNPROXY is not set +# CONFIG_IPACK_BUS is not set +# CONFIG_IPC_NS is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPV6 is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_ROUTE_INFO is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_IPV6_SIT_6RD is not set +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_VTI is not set +# CONFIG_IPW2100 is not set +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +# CONFIG_IPW2200 is not set +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +# CONFIG_IPW2200_PROMISCUOUS is not set +# CONFIG_IPW2200_QOS is not set +# CONFIG_IPW2200_RADIOTAP is not set +# CONFIG_IPWIRELESS is not set +# CONFIG_IPX is not set +CONFIG_IP_ADVANCED_ROUTER=y +# CONFIG_IP_DCCP is not set +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_NF_ARPFILTER is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_ARP_MANGLE is not set +# CONFIG_IP_NF_FILTER is not set +# CONFIG_IP_NF_IPTABLES is not set +# CONFIG_IP_NF_MANGLE is not set +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_RPFILTER is not set +# CONFIG_IP_NF_MATCH_TTL is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_SECURITY is not set +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_LOG is not set +# CONFIG_IP_NF_TARGET_MASQUERADE is not set +# CONFIG_IP_NF_TARGET_NETMAP is not set +# CONFIG_IP_NF_TARGET_REDIRECT is not set +# CONFIG_IP_NF_TARGET_REJECT is not set +# CONFIG_IP_NF_TARGET_SYNPROXY is not set +# CONFIG_IP_NF_TARGET_TTL is not set +# CONFIG_IP_NF_TARGET_ULOG is not set +# CONFIG_IP_PIMSM_V1 is not set +# CONFIG_IP_PIMSM_V2 is not set +# CONFIG_IP_PNP is not set +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_SCTP is not set +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set +# CONFIG_IRDA is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_IRQ_ALL_CPUS is not set +# CONFIG_IRQ_DOMAIN_DEBUG is not set +# CONFIG_IRQ_TIME_ACCOUNTING is not set +# CONFIG_IR_GPIO_CIR is not set +# CONFIG_IR_HIX5HD2 is not set +# CONFIG_IR_IGUANA is not set +# CONFIG_IR_IMG is not set +# CONFIG_IR_IMON is not set +# CONFIG_IR_JVC_DECODER is not set +# CONFIG_IR_LIRC_CODEC is not set +# CONFIG_IR_MCEUSB is not set +# CONFIG_IR_NEC_DECODER is not set +# CONFIG_IR_RC5_DECODER is not set +# CONFIG_IR_RC5_SZ_DECODER is not set +# CONFIG_IR_RC6_DECODER is not set +# CONFIG_IR_REDRAT3 is not set +# CONFIG_IR_SONY_DECODER is not set +# CONFIG_IR_STREAMZAP is not set +# CONFIG_IR_TTUSBIR is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_ISCSI_TCP is not set +CONFIG_ISDN=y +# CONFIG_ISDN_AUDIO is not set +# CONFIG_ISDN_CAPI is not set +# CONFIG_ISDN_CAPI_CAPIDRV is not set +# CONFIG_ISDN_DIVERSION is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set +# CONFIG_ISDN_DRV_GIGASET is not set +# CONFIG_ISDN_DRV_HISAX is not set +# CONFIG_ISDN_DRV_ICN is not set +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISDN_DRV_PCBIT is not set +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_I4L is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_ISL29125 is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_ISS4xx is not set +# CONFIG_ITG3200 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLAGN is not set +# CONFIG_IWLWIFI is not set +# CONFIG_IWMC3200TOP is not set +# CONFIG_IXGB is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_JBD is not set +# CONFIG_JBD2_DEBUG is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +CONFIG_JFFS2_FS=y +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_POSIX_ACL is not set +# CONFIG_JFFS2_FS_SECURITY is not set +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_LZMA=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +CONFIG_JFFS2_SUMMARY=y +# CONFIG_JFFS2_ZLIB is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_POSIX_ACL is not set +# CONFIG_JFS_SECURITY is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_JME is not set +CONFIG_JOLIET=y +# CONFIG_JUMP_LABEL is not set +# CONFIG_KALLSYMS is not set +# CONFIG_KALLSYMS_ALL is not set +# CONFIG_KALLSYMS_UNCOMPRESSED is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_GZIP is not set +# CONFIG_KERNEL_LZ4 is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +CONFIG_KERNEL_MODE_NEON=y +CONFIG_KERNEL_XZ=y +CONFIG_KERNFS=y +# CONFIG_KEXEC is not set +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_CAP1106 is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_PXA27x is not set +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_SH_KEYSC is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYS is not set +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_KGDB is not set +# CONFIG_KMEMCHECK is not set +# CONFIG_KPROBES is not set +# CONFIG_KPROBES_SANITY_TEST is not set +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_KSM is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_KUSER_HELPERS=y +# CONFIG_KVM_GUEST is not set +# CONFIG_KXCJK1013 is not set +# CONFIG_KXSD9 is not set +# CONFIG_L2TP is not set +# CONFIG_L2TP_ETH is not set +# CONFIG_L2TP_IP is not set +# CONFIG_L2TP_V3 is not set +# CONFIG_LANMEDIA is not set +# CONFIG_LANTIQ is not set +# CONFIG_LAPB is not set +# CONFIG_LASAT is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_LBDAF=y +# CONFIG_LCD_HX8357 is not set +# CONFIG_LCD_ILI922X is not set +# CONFIG_LCD_ILI9320 is not set +# CONFIG_LCD_LMS501KF03 is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_LEDS_ATMEL_PWM is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_BLINKM is not set +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_GPIO is not set +CONFIG_LEDS_GPIO_OF=y +CONFIG_LEDS_GPIO_PLATFORM=y +# CONFIG_LEDS_INTEL_SS4200 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3556 is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LP8501 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_NET5501 is not set +# CONFIG_LEDS_OT200 is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA9633 is not set +# CONFIG_LEDS_PCA963X is not set +# CONFIG_LEDS_PCA9685 is not set +# CONFIG_LEDS_PWM is not set +# CONFIG_LEDS_RENESAS_TPU is not set +# CONFIG_LEDS_SYSCON is not set +# CONFIG_LEDS_TCA6507 is not set +CONFIG_LEDS_TRIGGERS=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set +# CONFIG_LEDS_TRIGGER_IDE_DISK is not set +# CONFIG_LEDS_TRIGGER_MORSE is not set +CONFIG_LEDS_TRIGGER_NETDEV=y +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +CONFIG_LEDS_TRIGGER_TIMER=y +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_USBDEV is not set +# CONFIG_LEGACY_PTYS is not set +# CONFIG_LIB80211 is not set +# CONFIG_LIB80211_CRYPT_CCMP is not set +# CONFIG_LIB80211_CRYPT_TKIP is not set +# CONFIG_LIB80211_CRYPT_WEP is not set +# CONFIG_LIB80211_DEBUG is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_LIBERTAS is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_LIBERTAS_USB is not set +# CONFIG_LIBFC is not set +# CONFIG_LIBFCOE is not set +# CONFIG_LIBIPW_DEBUG is not set +# CONFIG_LINE6_USB is not set +# CONFIG_LIRC_STAGING is not set +# CONFIG_LIS3L02DQ is not set +# CONFIG_LKDTM is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +CONFIG_LOCALVERSION="" +# CONFIG_LOCALVERSION_AUTO is not set +# CONFIG_LOCKD is not set +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_LOCKD_V4=y +# CONFIG_LOCKUP_DETECTOR is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_LOCK_TORTURE_TEST is not set +# CONFIG_LOGFS is not set +# CONFIG_LOGIG940_FF is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGIWHEELS_FF is not set +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=17 +CONFIG_LOG_CPU_MAX_BUF_SHIFT=12 +# CONFIG_LOONGSON_MC146818 is not set +# CONFIG_LP486E is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_LP_CONSOLE is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LTE_GDM724X is not set +# CONFIG_LTR501 is not set +# CONFIG_LTPC is not set +# CONFIG_LUSTRE_FS is not set +# CONFIG_LXT_PHY is not set +CONFIG_LZMA_COMPRESS=y +CONFIG_LZMA_DECOMPRESS=y +# CONFIG_LZO_COMPRESS is not set +# CONFIG_LZO_DECOMPRESS is not set +# CONFIG_LZ4_COMPRESS is not set +# CONFIG_LZ4_DECOMPRESS is not set +# CONFIG_LZ4HC_COMPRESS is not set +# CONFIG_M25PXX_PREFER_SMALL_SECTOR_ERASE is not set +# CONFIG_MAC80211 is not set +# CONFIG_MAC80211_MESSAGE_TRACING is not set +# CONFIG_MACB is not set +# CONFIG_MACH_DECSTATION is not set +# CONFIG_MACH_JAZZ is not set +# CONFIG_MACH_JZ4740 is not set +# CONFIG_MACH_LOONGSON is not set +# CONFIG_MACH_LOONGSON1 is not set +# CONFIG_MACH_NO_WESTBRIDGE is not set +# CONFIG_MACH_TX39XX is not set +# CONFIG_MACH_TX49XX is not set +# CONFIG_MACH_VR41XX is not set +# CONFIG_MACINTOSH_DRIVERS is not set +# CONFIG_MACVLAN is not set +# CONFIG_MACVTAP is not set +# CONFIG_MAC_EMUMOUSEBTN is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MAG3110 is not set +# CONFIG_MAGIC_SYSRQ is not set +CONFIG_MAGIC_SYSRQ_DEFAULT_ENABLE=0x1 +# CONFIG_MAILBOX is not set +# CONFIG_MANGLE_BOOTARGS is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MAX1027 is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX5821 is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_MCB is not set +# CONFIG_MCP320X is not set +# CONFIG_MCP3422 is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCP4922 is not set +# CONFIG_MCPM is not set +# CONFIG_MD is not set +# CONFIG_MDIO_BCM_UNIMAC is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MD_FAULTY is not set +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_ATTACH is not set +# CONFIG_MEDIA_CAMERA_SUPPORT is not set +# CONFIG_MEDIA_CONTROLLER is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_PARPORT_SUPPORT is not set +# CONFIG_MEDIA_PCI_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_RC_SUPPORT is not set +# CONFIG_MEDIA_SDR_SUPPORT is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +# CONFIG_MEDIA_SUPPORT is not set +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +# CONFIG_MEDIA_USB_SUPPORT is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_MEMORY is not set +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_MEMSTICK is not set +# CONFIG_MEN_A21_WDT is not set +CONFIG_MESSAGE_LOGLEVEL_DEFAULT=4 +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_AS3722 is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_MFD_AXP20X is not set +# CONFIG_MFD_BCM590XX is not set +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_CS5535 is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_DA9063 is not set +# CONFIG_MFD_HI6421_PMIC is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_KEMPLD is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_LP3943 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_MAX14577 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MC13783 is not set +# CONFIG_MFD_MC13XXX is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_MENF21BMC is not set +# CONFIG_MFD_OMAP_USB_HOST is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_PM8921_CORE is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_RK808 is not set +# CONFIG_MFD_RN5T618 is not set +# CONFIG_MFD_RTSX_PCI is not set +# CONFIG_MFD_RTSX_USB is not set +# CONFIG_MFD_S5M_CORE is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SUPPORT=y +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_MFD_TIMBERDALE is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TPS65218 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_WM831X is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MG_DISK is not set +# CONFIG_MICREL_KS8995MA is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MIGRATION is not set +CONFIG_MII=y +# CONFIG_MIKROTIK_RB532 is not set +# CONFIG_MINIX_FS is not set +# CONFIG_MINIX_FS_NATIVE_ENDIAN is not set +# CONFIG_MINIX_SUBPARTITION is not set +# CONFIG_MIPS_ALCHEMY is not set +# CONFIG_MIPS_COBALT is not set +# CONFIG_MIPS_FPU_EMULATOR is not set +# CONFIG_MIPS_MALTA is not set +# CONFIG_MIPS_O32_FP64_SUPPORT is not set +# CONFIG_MIPS_PARAVIRT is not set +# CONFIG_MIPS_SEAD3 is not set +# CONFIG_MIPS_SIM is not set +CONFIG_MISC_DEVICES=y +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_MISDN is not set +# CONFIG_MISDN_AVMFRITZ is not set +# CONFIG_MISDN_HFCPCI is not set +# CONFIG_MISDN_HFCUSB is not set +# CONFIG_MISDN_INFINEON is not set +# CONFIG_MISDN_NETJET is not set +# CONFIG_MISDN_SPEEDFAX is not set +# CONFIG_MISDN_W6692 is not set +# CONFIG_MKISS is not set +# CONFIG_MLX4_CORE is not set +# CONFIG_MLX4_EN is not set +# CONFIG_MLX5_CORE is not set +# CONFIG_MLX90614 is not set +# CONFIG_MMA8452 is not set +# CONFIG_MMC is not set +# CONFIG_MMC_ARMMMCI is not set +# CONFIG_MMC_AU1X is not set +# CONFIG_MMC_BLOCK is not set +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_MMC_BLOCK_MINORS=8 +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_CLKGATE is not set +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_MVSDIO is not set +# CONFIG_MMC_S3C is not set +# CONFIG_MMC_SDHCI is not set +# CONFIG_MMC_SDHCI_ACPI is not set +# CONFIG_MMC_SDHCI_BCM_KONA is not set +# CONFIG_MMC_SDHCI_MSM is not set +# CONFIG_MMC_SDHCI_OF_ARASAN is not set +# CONFIG_MMC_SDHCI_OF_ESDHC is not set +# CONFIG_MMC_SDHCI_OF_HLWD is not set +# CONFIG_MMC_SDHCI_PXAV2 is not set +# CONFIG_MMC_SDHCI_PXAV3 is not set +# CONFIG_MMC_SDRICOH_CS is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_TEST is not set +# CONFIG_MMC_UNSAFE_RESUME is not set +# CONFIG_MMC_USDHI6ROL0 is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_VIA_SDMMC is not set +# CONFIG_MMC_VUB300 is not set +# CONFIG_MMIOTRACE is not set +CONFIG_MMU=y +CONFIG_MODULES=y +# CONFIG_MODULE_COMPRESS is not set +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_MODULE_STRIPPED=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +# CONFIG_MPL115 is not set +# CONFIG_MPL3115 is not set +# CONFIG_MSDOS_FS is not set +CONFIG_MSDOS_PARTITION=y +# CONFIG_MSI_BITMAP_SELFTEST is not set +# CONFIG_MSI_LAPTOP is not set +CONFIG_MTD=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_ALAUDA is not set +# CONFIG_MTD_AR7_PARTS is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_MTD_BLOCK2MTD is not set +CONFIG_MTD_CFI=y +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +CONFIG_MTD_CHAR=y +# CONFIG_MTD_CMDLINE_PARTS is not set +CONFIG_MTD_COMPLEX_MAPPINGS=y +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +# CONFIG_MTD_DOCG3 is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_GPIO_ADDR is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_LATCH_ADDR is not set +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_LPDDR2_NVM is not set +# CONFIG_MTD_M25P80 is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MYLOADER_PARTS is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_AMS_DELTA is not set +# CONFIG_MTD_NAND_AR934X is not set +# CONFIG_MTD_NAND_AR934X_HW_ECC is not set +# CONFIG_MTD_NAND_ATMEL is not set +# CONFIG_MTD_NAND_AU1550 is not set +# CONFIG_MTD_NAND_AUTCPU12 is not set +# CONFIG_MTD_NAND_BCH is not set +# CONFIG_MTD_NAND_BCM_UMI is not set +# CONFIG_MTD_NAND_BF5XX is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_CM_X270 is not set +# CONFIG_MTD_NAND_CS553X is not set +# CONFIG_MTD_NAND_DAVINCI is not set +# CONFIG_MTD_NAND_DENALI is not set +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xff108018 +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_DOCG4 is not set +# CONFIG_MTD_NAND_ECC is not set +# CONFIG_MTD_NAND_ECC_BCH is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_FSL_ELBC is not set +# CONFIG_MTD_NAND_FSL_IFC is not set +# CONFIG_MTD_NAND_FSL_UPM is not set +# CONFIG_MTD_NAND_FSMC is not set +# CONFIG_MTD_NAND_GPIO is not set +# CONFIG_MTD_NAND_GPMI_NAND is not set +# CONFIG_MTD_NAND_H1900 is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_JZ4740 is not set +# CONFIG_MTD_NAND_MPC5121_NFC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_MXC is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_NDFC is not set +# CONFIG_MTD_NAND_NOMADIK is not set +# CONFIG_MTD_NAND_NUC900 is not set +# CONFIG_MTD_NAND_OMAP2 is not set +# CONFIG_MTD_NAND_OMAP_BCH_BUILD is not set +# CONFIG_MTD_NAND_ORION is not set +# CONFIG_MTD_NAND_PASEMI is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_NAND_PPCHAMELEONEVB is not set +# CONFIG_MTD_NAND_PXA3xx is not set +# CONFIG_MTD_NAND_RB4XX is not set +# CONFIG_MTD_NAND_RB750 is not set +# CONFIG_MTD_NAND_RICOH is not set +# CONFIG_MTD_NAND_RTC_FROM4 is not set +# CONFIG_MTD_NAND_S3C2410 is not set +# CONFIG_MTD_NAND_SHARPSL is not set +# CONFIG_MTD_NAND_SH_FLCTL is not set +# CONFIG_MTD_NAND_SOCRATES is not set +# CONFIG_MTD_NAND_SPIA is not set +# CONFIG_MTD_NAND_TMIO is not set +# CONFIG_MTD_NAND_TXX9NDFMC is not set +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +CONFIG_MTD_OF_PARTS=y +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_OTP is not set +# CONFIG_MTD_PCI is not set +# CONFIG_MTD_PCMCIA is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_PHYSMAP_COMPAT is not set +CONFIG_MTD_PHYSMAP_OF=y +# CONFIG_MTD_PLATRAM is not set +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_ROM is not set +CONFIG_MTD_ROOTFS_ROOT_DEV=y +CONFIG_MTD_ROOTFS_SPLIT=y +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_SM_COMMON is not set +# CONFIG_MTD_SPI_NOR_USE_4K_SECTORS is not set +# CONFIG_MTD_SPI_NOR is not set +# CONFIG_MTD_SPINAND_MT29F is not set +CONFIG_MTD_SPLIT=y +# CONFIG_MTD_SPLIT_FIRMWARE is not set +CONFIG_MTD_SPLIT_FIRMWARE_NAME="firmware" +# CONFIG_MTD_SPLIT_FIT_FW is not set +# CONFIG_MTD_SPLIT_LZMA_FW is not set +# CONFIG_MTD_SPLIT_SEAMA_FW is not set +CONFIG_MTD_SPLIT_SQUASHFS_ROOT=y +CONFIG_MTD_SPLIT_SUPPORT=y +# CONFIG_MTD_SPLIT_TRX_FW is not set +# CONFIG_MTD_SPLIT_TPLINK_FW is not set +# CONFIG_MTD_SPLIT_UIMAGE_FW is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_UBI is not set +# CONFIG_MTD_UIMAGE_SPLIT is not set +# CONFIG_MUTEX_SPIN_ON_OWNER is not set +# CONFIG_MV643XX_ETH is not set +# CONFIG_MVMDIO is not set +# CONFIG_MVSW61XX_PHY is not set +# CONFIG_MVSW6171_PHY is not set +# CONFIG_MVSWITCH_PHY is not set +# CONFIG_MWAVE is not set +# CONFIG_MWIFIEX is not set +# CONFIG_MWL8K is not set +# CONFIG_MYRI10GE is not set +# CONFIG_NAMESPACES is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NATSEMI is not set +# CONFIG_NAU7802 is not set +# CONFIG_NBPFAXI_DMA is not set +# CONFIG_NCP_FS is not set +# CONFIG_NE2000 is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_NEC_MARKEINS is not set +CONFIG_NET=y +# CONFIG_NETCONSOLE is not set +CONFIG_NETDEVICES=y +CONFIG_NETDEV_1000=y +# CONFIG_NETDEV_10000 is not set +# CONFIG_NETFILTER is not set +# CONFIG_NETFILTER_ADVANCED is not set +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_NETFILTER_NETLINK is not set +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_QUEUE_CT is not set +# CONFIG_NETFILTER_TPROXY is not set +# CONFIG_NETFILTER_XTABLES is not set +# CONFIG_NETFILTER_XT_CONNMARK is not set +# CONFIG_NETFILTER_XT_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set +# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +# CONFIG_NETFILTER_XT_MATCH_HL is not set +# CONFIG_NETFILTER_XT_MATCH_IPCOMP is not set +# CONFIG_NETFILTER_XT_MATCH_IPRANGE is not set +# CONFIG_NETFILTER_XT_MATCH_L2TP is not set +# CONFIG_NETFILTER_XT_MATCH_LAYER7 is not set +# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_MAC is not set +# CONFIG_NETFILTER_XT_MATCH_MARK is not set +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_POLICY is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +# CONFIG_NETFILTER_XT_MATCH_STATE is not set +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_CT is not set +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LED is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +# CONFIG_NETFILTER_XT_TARGET_MARK is not set +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set +# CONFIG_NETFILTER_XT_TARGET_TCPMSS is not set +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set +# CONFIG_NETFILTER_XT_TARGET_TRACE is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_NETLINK_MMAP is not set +# CONFIG_NETPOLL is not set +# CONFIG_NETROM is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_NET_9P is not set +# CONFIG_NET_ACT_CSUM is not set +# CONFIG_NET_ACT_GACT is not set +# CONFIG_NET_ACT_IPT is not set +# CONFIG_NET_ACT_MIRRED is not set +# CONFIG_NET_ACT_NAT is not set +# CONFIG_NET_ACT_PEDIT is not set +# CONFIG_NET_ACT_POLICE is not set +# CONFIG_NET_ACT_SIMP is not set +# CONFIG_NET_ACT_SKBEDIT is not set +CONFIG_NET_CADENCE=y +# CONFIG_NET_CALXEDA_XGMAC is not set +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_ACT is not set +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_BPF is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_CLS_FW is not set +CONFIG_NET_CLS_IND=y +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_U32 is not set +CONFIG_NET_CORE=y +# CONFIG_NET_DROP_MONITOR is not set +# CONFIG_NET_DSA is not set +# CONFIG_NET_DSA_BCM_SF2 is not set +# CONFIG_NET_DSA_MV88E6060 is not set +# CONFIG_NET_DSA_MV88E6123_61_65 is not set +# CONFIG_NET_DSA_MV88E6131 is not set +# CONFIG_NET_DSA_MV88E6171 is not set +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +# CONFIG_NET_DSA_TAG_DSA is not set +# CONFIG_NET_DSA_TAG_EDSA is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_EMATCH_CMP is not set +# CONFIG_NET_EMATCH_META is not set +# CONFIG_NET_EMATCH_NBYTE is not set +CONFIG_NET_EMATCH_STACK=32 +# CONFIG_NET_EMATCH_TEXT is not set +# CONFIG_NET_EMATCH_U32 is not set +CONFIG_NET_ETHERNET=y +# CONFIG_NET_FC is not set +# CONFIG_NET_FOU is not set +# CONFIG_NET_IPGRE is not set +CONFIG_NET_IPGRE_BROADCAST=y +# CONFIG_NET_IPGRE_DEMUX is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_IP_TUNNEL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_KEY is not set +# CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_NET_MPLS_GSO is not set +# CONFIG_NET_PACKET_ENGINE is not set +CONFIG_NET_PCI=y +# CONFIG_NET_PCMCIA is not set +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_POCKET is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_NET_PTP_CLASSIFY is not set +CONFIG_NET_RX_BUSY_POLL=y +# CONFIG_NET_SB1000 is not set +CONFIG_NET_SCHED=y +# CONFIG_NET_SCH_ATM is not set +# CONFIG_NET_SCH_CBQ is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_ESFQ is not set +CONFIG_NET_SCH_ESFQ_NFCT=y +CONFIG_NET_SCH_FIFO=y +# CONFIG_NET_SCH_FQ is not set +CONFIG_NET_SCH_FQ_CODEL=y +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_HHF is not set +# CONFIG_NET_SCH_HTB is not set +# CONFIG_NET_SCH_INGRESS is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_PIE is not set +# CONFIG_NET_SCH_PLUG is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +# CONFIG_NET_SCH_SFQ is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_TCPPROBE is not set +# CONFIG_NET_TEAM is not set +# CONFIG_NET_TULIP is not set +# CONFIG_NET_UDP_TUNNEL is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_AGERE=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ARC=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_FARADAY=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_NET_VENDOR_HISILICON=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_IBM=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_QUALCOMM=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_SAMSUNG=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SILICOM=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_TOSHIBA=y +CONFIG_NET_VENDOR_VIA=y +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +# CONFIG_NET_XGENE is not set +CONFIG_NEW_LEDS=y +# CONFIG_NFC is not set +# CONFIG_NFC_DEVICES is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_DEPRECATED is not set +# CONFIG_NFSD_V2_ACL is not set +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +# CONFIG_NFSD_V4 is not set +# CONFIG_NFS_ACL_SUPPORT is not set +CONFIG_NFS_COMMON=y +# CONFIG_NFS_FS is not set +# CONFIG_NFS_FSCACHE is not set +# CONFIG_NFS_SWAP is not set +# CONFIG_NFS_V2 is not set +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_V4_1 is not set +# CONFIG_NFTL is not set +# CONFIG_NF_CONNTRACK is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +# CONFIG_NF_CONNTRACK_EVENTS is not set +# CONFIG_NF_CONNTRACK_FTP is not set +# CONFIG_NF_CONNTRACK_H323 is not set +# CONFIG_NF_CONNTRACK_IPV4 is not set +# CONFIG_NF_CONNTRACK_IPV6 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_MARK is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_PPTP is not set +CONFIG_NF_CONNTRACK_PROCFS=y +# CONFIG_NF_CONNTRACK_PROC_COMPAT is not set +# CONFIG_NF_CONNTRACK_RTSP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +# CONFIG_NF_CONNTRACK_SIP is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CONNTRACK_ZONES is not set +# CONFIG_NF_CT_NETLINK is not set +# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +# CONFIG_NF_CT_PROTO_GRE is not set +# CONFIG_NF_CT_PROTO_SCTP is not set +# CONFIG_NF_CT_PROTO_UDPLITE is not set +# CONFIG_NF_DEFRAG_IPV4 is not set +# CONFIG_NF_LOG_ARP is not set +# CONFIG_NF_LOG_IPV4 is not set +# CONFIG_NF_NAT is not set +# CONFIG_NF_NAT_AMANDA is not set +# CONFIG_NF_NAT_FTP is not set +# CONFIG_NF_NAT_H323 is not set +# CONFIG_NF_NAT_IPV6 is not set +# CONFIG_NF_NAT_IRC is not set +# CONFIG_NF_NAT_MASQUERADE_IPV4 is not set +# CONFIG_NF_NAT_MASQUERADE_IPV6 is not set +# CONFIG_NF_NAT_NEEDED is not set +# CONFIG_NF_NAT_PPTP is not set +# CONFIG_NF_NAT_PROTO_GRE is not set +# CONFIG_NF_NAT_RTSP is not set +# CONFIG_NF_NAT_SIP is not set +# CONFIG_NF_NAT_SNMP_BASIC is not set +# CONFIG_NF_NAT_TFTP is not set +# CONFIG_NF_REJECT_IPV4 is not set +# CONFIG_NF_TABLES is not set +# CONFIG_NI52 is not set +# CONFIG_NI65 is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_NIU is not set +# CONFIG_NL80211_TESTMODE is not set +CONFIG_NLATTR=y +# CONFIG_NLMON is not set +# CONFIG_NLM_XLP_BOARD is not set +# CONFIG_NLM_XLR_BOARD is not set +# CONFIG_NLS is not set +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_CODEPAGE_437 is not set +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_DEFAULT="iso8859-1" +# CONFIG_NLS_ISO8859_1 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_NORTEL_HERMES is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_NOZOMI is not set +# CONFIG_NO_BOOTMEM is not set +# CONFIG_NO_HZ is not set +# CONFIG_NO_HZ_FULL is not set +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_IOPORT is not set +# CONFIG_NS83820 is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_NTP_PPS is not set +# CONFIG_NVRAM is not set +# CONFIG_NV_TCO is not set +# CONFIG_NXP_STB220 is not set +# CONFIG_NXP_STB225 is not set +# CONFIG_N_GSM is not set +# CONFIG_OABI_COMPAT is not set +# CONFIG_OBS600 is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_OCF_BENCH is not set +# CONFIG_OCF_C7108 is not set +# CONFIG_OCF_CRYPTOCTEON is not set +# CONFIG_OCF_EP80579 is not set +# CONFIG_OCF_HIFN is not set +# CONFIG_OCF_HIFNHIPP is not set +# CONFIG_OCF_IXP4XX is not set +# CONFIG_OCF_KIRKWOOD is not set +# CONFIG_OCF_OCF is not set +# CONFIG_OCF_OCFNULL is not set +# CONFIG_OCF_SAFE is not set +# CONFIG_OCF_TALITOS is not set +# CONFIG_OCF_UBSEC_SSB is not set +# CONFIG_OC_ETM is not set +# CONFIG_OF_SELFTEST is not set +# CONFIG_OMAP2_DSS_DEBUG is not set +# CONFIG_OMAP2_DSS_DEBUGFS is not set +# CONFIG_OMAP2_DSS_SDI is not set +# CONFIG_OMAP_CONTROL_USB is not set +# CONFIG_OMAP_OCP2SCP is not set +# CONFIG_OMAP_USB2 is not set +# CONFIG_OMAP_USB3 is not set +# CONFIG_OMFS_FS is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_OPROFILE_EVENT_MULTIPLEX is not set +# CONFIG_ORION_WATCHDOG is not set +# CONFIG_OSF_PARTITION is not set +CONFIG_OVERLAY_FS=y +# CONFIG_P54_COMMON is not set +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +# CONFIG_PAGE_POISONING is not set +# CONFIG_PAGE_SIZE_16KB is not set +# CONFIG_PAGE_SIZE_32KB is not set +CONFIG_PAGE_SIZE_4KB=y +# CONFIG_PAGE_SIZE_64KB is not set +# CONFIG_PAGE_SIZE_8KB is not set +# CONFIG_PANEL is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +CONFIG_PANIC_TIMEOUT=0 +# CONFIG_PANTHERLORD_FF is not set +# CONFIG_PARPORT is not set +# CONFIG_PARPORT_1284 is not set +# CONFIG_PARPORT_AX88796 is not set +# CONFIG_PARPORT_PC is not set +CONFIG_PARTITION_ADVANCED=y +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARASAN_CF is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CS5535 is not set +# CONFIG_PATA_CS5536 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_ISAPNP is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_LEGACY is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OCTEON_CF is not set +# CONFIG_PATA_OF_PLATFORM is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PCMCIA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_QDI is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_WINBOND_VLB is not set +# CONFIG_PC300TOO is not set +# CONFIG_PCCARD is not set +# CONFIG_PCH_GBE is not set +# CONFIG_PCH_PHUB is not set +# CONFIG_PCI200SYN is not set +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIEASPM is not set +# CONFIG_PCIEPORTBUS is not set +# CONFIG_PCIE_ECRC is not set +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_PCI_ATMEL is not set +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set +# CONFIG_PCI_HERMES is not set +# CONFIG_PCI_HOST_GENERIC is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_MSI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCI_PRI is not set +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +CONFIG_PCI_SYSCALL=y +# CONFIG_PCMCIA is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_AHA152X is not set +# CONFIG_PCMCIA_ATMEL is not set +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_DEBUG is not set +# CONFIG_PCMCIA_FDOMAIN is not set +# CONFIG_PCMCIA_FMVJ18X is not set +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_PCMCIA_LOAD_CIS is not set +# CONFIG_PCMCIA_NINJA_SCSI is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_PCNET is not set +# CONFIG_PCMCIA_QLOGIC is not set +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_SPECTRUM is not set +# CONFIG_PCMCIA_SYM53C500 is not set +# CONFIG_PCMCIA_WL3501 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_XIRCOM is not set +# CONFIG_PCNET32 is not set +# CONFIG_PCSPKR_PLATFORM is not set +# CONFIG_PD6729 is not set +# CONFIG_PDA_POWER is not set +# CONFIG_PDC_ADMA is not set +# CONFIG_PERCPU_TEST is not set +# CONFIG_PERF_COUNTERS is not set +# CONFIG_PERF_EVENTS is not set +# CONFIG_PERSISTENT_KEYRINGS is not set +# CONFIG_PHANTOM is not set +# CONFIG_PHONE is not set +# CONFIG_PHONET is not set +# CONFIG_PHYLIB is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PHY_EXYNOS_DP_VIDEO is not set +# CONFIG_PHY_EXYNOS_MIPI_VIDEO is not set +# CONFIG_PHY_QCOM_DWC3 is not set +# CONFIG_PHY_SAMSUNG_USB2 is not set +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_PID_NS is not set +CONFIG_PINCONF=y +# CONFIG_PINCTRL is not set +# CONFIG_PINCTRL_CAPRI is not set +# CONFIG_PINCTRL_EXYNOS is not set +# CONFIG_PINCTRL_EXYNOS5440 is not set +# CONFIG_PINCTRL_MSM8X74 is not set +CONFIG_PINCTRL_SINGLE=y +CONFIG_PINMUX=y +# CONFIG_PLAT_SPEAR is not set +# CONFIG_PLIP is not set +# CONFIG_PLX_HERMES is not set +# CONFIG_PM is not set +# CONFIG_PMBUS is not set +# CONFIG_PMC_MSP is not set +# CONFIG_PMC_YOSEMITE is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_PM_RUNTIME is not set +# CONFIG_PM_WAKELOCKS is not set +# CONFIG_PNX8550_JBS is not set +# CONFIG_PNX8550_STB810 is not set +# CONFIG_POHMELFS is not set +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_POWERCAP is not set +# CONFIG_POWERTV is not set +# CONFIG_POWER_AVS is not set +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_RESET_VERSATILE is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PPC4xx_GPIO is not set +# CONFIG_PPC_16K_PAGES is not set +# CONFIG_PPC_256K_PAGES is not set +CONFIG_PPC_4K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_DISABLE_WERROR is not set +# CONFIG_PPC_EMULATED_STATS is not set +# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set +# CONFIG_PPP is not set +# CONFIG_PPPOATM is not set +# CONFIG_PPPOE is not set +# CONFIG_PPPOL2TP is not set +# CONFIG_PPP_ASYNC is not set +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPP_DEFLATE is not set +CONFIG_PPP_FILTER=y +# CONFIG_PPP_MPPE is not set +CONFIG_PPP_MULTILINK=y +# CONFIG_PPP_SYNC_TTY is not set +# CONFIG_PPS is not set +# CONFIG_PPS_CLIENT_GPIO is not set +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_PARPORT is not set +# CONFIG_PPS_DEBUG is not set +# CONFIG_PPTP is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_TRACER is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTK=y +# CONFIG_PRINTK_TIME is not set +CONFIG_PRINT_STACK_DEPTH=64 +# CONFIG_PRISM2_USB is not set +# CONFIG_PRISM54 is not set +# CONFIG_PROBE_INITRD_HEADER is not set +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_PROC_STRIPPED=y +CONFIG_PROC_SYSCTL=y +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILING is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVE_RCU is not set +# CONFIG_PROVE_RCU_DELAY is not set +# CONFIG_PSB6970_PHY is not set +# CONFIG_PSTORE is not set +# CONFIG_PTP_1588_CLOCK is not set +# CONFIG_PTP_1588_CLOCK_IXP46X is not set +# CONFIG_PTP_1588_CLOCK_PCH is not set +# CONFIG_PWM is not set +# CONFIG_PWM_PCA9685 is not set +# CONFIG_QCA7000 is not set +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_QLGE is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_QUOTA_DEBUG is not set +# CONFIG_R3964 is not set +# CONFIG_R6040 is not set +# CONFIG_R8169 is not set +# CONFIG_R8187SE is not set +# CONFIG_R8188EU is not set +# CONFIG_R8712U is not set +# CONFIG_R8723AU is not set +# CONFIG_RADIO_ADAPTERS is not set +# CONFIG_RADIO_AZTECH is not set +# CONFIG_RADIO_CADET is not set +# CONFIG_RADIO_GEMTEK is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_RTRACK is not set +# CONFIG_RADIO_RTRACK2 is not set +# CONFIG_RADIO_SF16FMI is not set +# CONFIG_RADIO_SF16FMR2 is not set +# CONFIG_RADIO_TERRATEC is not set +# CONFIG_RADIO_TRUST is not set +# CONFIG_RADIO_TYPHOON is not set +# CONFIG_RADIO_ZOLTRIX is not set +# CONFIG_RAID_ATTRS is not set +# CONFIG_RALINK is not set +# CONFIG_RAMOOPS is not set +# CONFIG_RANDOM32_SELFTEST is not set +# CONFIG_RAPIDIO is not set +# CONFIG_RAR_REGISTER is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_RCU_CPU_STALL_INFO is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_FANOUT_EXACT is not set +CONFIG_RCU_FANOUT_LEAF=16 +# CONFIG_RCU_FAST_NO_HZ is not set +# CONFIG_RCU_NOCB_CPU is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_USER_QS is not set +# CONFIG_RC_ATI_REMOTE is not set +# CONFIG_RC_CORE is not set +# CONFIG_RC_DECODERS is not set +# CONFIG_RC_LOOPBACK is not set +# CONFIG_RC_MAP is not set +# CONFIG_RDS is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_GZIP is not set +# CONFIG_RD_LZ4 is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_XZ is not set +# CONFIG_READABLE_ASM is not set +# CONFIG_REALTEK_PHY is not set +# CONFIG_REDWOOD is not set +# CONFIG_REGMAP is not set +# CONFIG_REGMAP_I2C is not set +# CONFIG_REGMAP_SPI is not set +# CONFIG_REGULATOR is not set +# CONFIG_REGULATOR_ACT8865 is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_ANATOP is not set +# CONFIG_REGULATOR_BQ24022 is not set +# CONFIG_REGULATOR_DA9210 is not set +# CONFIG_REGULATOR_DA9211 is not set +# CONFIG_REGULATOR_FAN53555 is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +# CONFIG_REGULATOR_GPIO is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_ISL9305 is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_LTC3589 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_PFUZE100 is not set +# CONFIG_REGULATOR_TI_ABB is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_TPS6524X is not set +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_FS_POSIX_ACL is not set +# CONFIG_REISERFS_FS_SECURITY is not set +# CONFIG_REISERFS_FS_XATTR is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_RELAY is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_RFD_FTL is not set +# CONFIG_RFKILL is not set +# CONFIG_RFKILL_INPUT is not set +# CONFIG_RFKILL_REGULATOR is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_ROSE is not set +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RT2X00 is not set +# CONFIG_RTC_CLASS is not set +# CONFIG_RTC_DEBUG is not set +# CONFIG_RTC_DRV_AU1XXX is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_BQ4802 is not set +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1343 is not set +# CONFIG_RTC_DRV_DS1347 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_DS3234 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_EP93XX is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_GENERIC is not set +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +# CONFIG_RTC_DRV_HYM8563 is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL12057 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_MCP795 is not set +# CONFIG_RTC_DRV_MOXART is not set +# CONFIG_RTC_DRV_MPC5121 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_OMAP is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_PCF2127 is not set +# CONFIG_RTC_DRV_PCF85063 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_PS3 is not set +# CONFIG_RTC_DRV_PT7C4338 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_RTC7301 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_SUN6I is not set +# CONFIG_RTC_DRV_TEST is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_X1205 is not set +# CONFIG_RTC_DRV_XGENE is not set +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_LIB=y +CONFIG_RTC_SYSTOHC=y +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +# CONFIG_RTL8192E is not set +# CONFIG_RTL8192U is not set +# CONFIG_RTL8306_PHY is not set +# CONFIG_RTL8366RB_PHY is not set +# CONFIG_RTL8366S_PHY is not set +# CONFIG_RTL8366_SMI is not set +# CONFIG_RTL8366_SMI_DEBUG_FS is not set +# CONFIG_RTL8367B_PHY is not set +# CONFIG_RTL8367_PHY is not set +# CONFIG_RTLLIB is not set +# CONFIG_RTL_CARDS is not set +# CONFIG_RTS5139 is not set +# CONFIG_RTS5208 is not set +# CONFIG_RTS_PSTOR is not set +CONFIG_RT_MUTEXES=y +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_RUNTIME_DEBUG is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_S2IO is not set +# CONFIG_SAMPLES is not set +# CONFIG_SAMSUNG_LAPTOP is not set +# CONFIG_SAMSUNG_USB2PHY is not set +# CONFIG_SAMSUNG_USB3PHY is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_AHCI is not set +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_SATA_DWC is not set +# CONFIG_SATA_FSL is not set +# CONFIG_SATA_HIGHBANK is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PMP is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_RCAR is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIL24 is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_SBC_FITPC2_WATCHDOG is not set +# CONFIG_SBE_2T3E3 is not set +# CONFIG_SBYPASS is not set +# CONFIG_SC92031 is not set +# CONFIG_SCA3000 is not set +# CONFIG_SCC is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SCHED_DEBUG is not set +# CONFIG_SCHED_MC is not set +CONFIG_SCHED_OMIT_FRAME_POINTER=y +# CONFIG_SCHED_SMT is not set +# CONFIG_SCHED_STACK_END_CHECK is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_SCSI is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_BFA_FC is not set +# CONFIG_SCSI_BNX2X_FCOE is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CHELSIO_FCOE is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_DH is not set +CONFIG_SCSI_DMA=y +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_ESAS2R is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_ISCI is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_LOGGING is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +# CONFIG_SCSI_LPFC is not set +CONFIG_SCSI_MOD=y +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +# CONFIG_SCSI_MQ_DEFAULT is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_PMCRAID is not set +CONFIG_SCSI_PROC_FS=y +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_SRP is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_ULTRASTOR is not set +# CONFIG_SCSI_VIRTIO is not set +# CONFIG_SCx200_ACB is not set +# CONFIG_SDIO_UART is not set +# CONFIG_SECCOMP is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SEEQ8005 is not set +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_ACPI_POWER is not set +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADC128D818 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_SENSORS_APPLESMC is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ATK0110 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_BH1780 is not set +# CONFIG_SENSORS_CORETEMP is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FAM15H_POWER is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_G762 is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_GSC is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_HMC5843 is not set +# CONFIG_SENSORS_HMC5843_I2C is not set +# CONFIG_SENSORS_HMC5843_SPI is not set +# CONFIG_SENSORS_HTU21 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_ISL29018 is not set +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_K10TEMP is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LIS3LV02D is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_LTC2945 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4222 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4260 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_NCT6683 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_POWR1220 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SHTC1 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP103 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_SENSORS_VEXPRESS is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VIA_CPUTEMP is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_ACCENT is not set +# CONFIG_SERIAL_8250_BOCA is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_CS is not set +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_DMA=y +# CONFIG_SERIAL_8250_DW is not set +# CONFIG_SERIAL_8250_EM is not set +# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_FOURPORT is not set +# CONFIG_SERIAL_8250_FINTEK is not set +# CONFIG_SERIAL_8250_HUB6 is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +CONFIG_SERIAL_8250_NR_UARTS=2 +# CONFIG_SERIAL_8250_PCI is not set +# CONFIG_SERIAL_8250_RSA is not set +CONFIG_SERIAL_8250_RUNTIME_UARTS=2 +# CONFIG_SERIAL_8250_SYSRQ is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +CONFIG_SERIAL_EARLYCON=y +# CONFIG_SERIAL_EARLYCON_ARM_SEMIHOST is not set +# CONFIG_SERIAL_FSL_LPUART is not set +# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX3107 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_MFD_HSU is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_OF_PLATFORM is not set +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set +# CONFIG_SERIAL_PCH_UART is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_SC16IS7XX is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_SH_SCI is not set +# CONFIG_SERIAL_ST_ASC is not set +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_UARTLITE is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIO is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_I8042 is not set +# CONFIG_SERIO_LIBPS2 is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SFC is not set +# CONFIG_SFI is not set +# CONFIG_SGETMASK_SYSCALL is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_SGI_IP22 is not set +# CONFIG_SGI_IP27 is not set +# CONFIG_SGI_IP28 is not set +# CONFIG_SGI_IP32 is not set +# CONFIG_SGI_PARTITION is not set +CONFIG_SHMEM=y +# CONFIG_SH_ETH is not set +# CONFIG_SH_TIMER_CMT is not set +# CONFIG_SH_TIMER_MTU2 is not set +# CONFIG_SH_TIMER_TMU is not set +# CONFIG_SI7005 is not set +# CONFIG_SIBYTE_BIGSUR is not set +# CONFIG_SIBYTE_CARMEL is not set +# CONFIG_SIBYTE_CRHINE is not set +# CONFIG_SIBYTE_CRHONE is not set +# CONFIG_SIBYTE_LITTLESUR is not set +# CONFIG_SIBYTE_RHONE is not set +# CONFIG_SIBYTE_SENTOSA is not set +# CONFIG_SIBYTE_SWARM is not set +# CONFIG_SIGMA is not set +CONFIG_SIGNALFD=y +# CONFIG_SIMPLE_GPIO is not set +# CONFIG_SIS190 is not set +# CONFIG_SIS900 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_SKY2_DEBUG is not set +CONFIG_SLAB=y +CONFIG_SLABINFO=y +# CONFIG_SLHC is not set +# CONFIG_SLICOSS is not set +# CONFIG_SLIP is not set +# CONFIG_SLOB is not set +# CONFIG_SLUB is not set +# CONFIG_SLUB_DEBUG is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_SMARTJOYPLUS_FF is not set +# CONFIG_SMC911X is not set +# CONFIG_SMC9194 is not set +# CONFIG_SMC91X is not set +# CONFIG_SMP is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_SM_FTL is not set +# CONFIG_SND is not set +# CONFIG_SND_AC97_POWER_SAVE is not set +# CONFIG_SND_AD1816A is not set +# CONFIG_SND_AD1848 is not set +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ADLIB is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_ALS100 is not set +# CONFIG_SND_ALS300 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_ASIHPI is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_ATMEL_AC97C is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_AZT2320 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BCD2000 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMI8330 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_CS4231 is not set +# CONFIG_SND_CS4236 is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CS5530 is not set +# CONFIG_SND_CS5535AUDIO is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_DESIGNWARE_I2S is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1688 is not set +# CONFIG_SND_ES18XX is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FIREWIRE is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_GUSCLASSIC is not set +# CONFIG_SND_GUSEXTREME is not set +# CONFIG_SND_GUSMAX is not set +# CONFIG_SND_HDA_INTEL is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_HWDEP is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGODJX is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_INTERWAVE is not set +# CONFIG_SND_INTERWAVE_STB is not set +# CONFIG_SND_ISA is not set +# CONFIG_SND_KIRKWOOD_SOC is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_MIPS is not set +# CONFIG_SND_MIRO is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MPC52xx_SOC_EFIKA is not set +# CONFIG_SND_MPU401 is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_MTS64 is not set +# CONFIG_SND_MXS_SOC is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_OPL3SA2 is not set +# CONFIG_SND_OPTI92X_AD1848 is not set +# CONFIG_SND_OPTI92X_CS4231 is not set +# CONFIG_SND_OPTI93X is not set +CONFIG_SND_OSSEMUL=y +# CONFIG_SND_OXYGEN is not set +CONFIG_SND_PCI=y +# CONFIG_SND_PCM is not set +# CONFIG_SND_PCMCIA is not set +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_PDAUDIOCF is not set +# CONFIG_SND_PORTMAN2X4 is not set +# CONFIG_SND_POWERPC_SOC is not set +# CONFIG_SND_PPC is not set +# CONFIG_SND_RAWMIDI is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_RTCTIMER is not set +# CONFIG_SND_SB16 is not set +# CONFIG_SND_SB8 is not set +# CONFIG_SND_SBAWE is not set +# CONFIG_SND_SEQUENCER is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_SIMPLE_CARD is not set +# CONFIG_SND_SIS7019 is not set +# CONFIG_SND_SOC is not set +# CONFIG_SND_SOC_ADAU1701 is not set +# CONFIG_SND_SOC_AK4104 is not set +# CONFIG_SND_SOC_AK4554 is not set +# CONFIG_SND_SOC_AK4642 is not set +# CONFIG_SND_SOC_AK5386 is not set +# CONFIG_SND_SOC_ALC5623 is not set +# CONFIG_SND_SOC_AU1XAUDIO is not set +# CONFIG_SND_SOC_AU1XPSC is not set +# CONFIG_SND_SOC_CACHE_LZO is not set +# CONFIG_SND_SOC_CS35L32 is not set +# CONFIG_SND_SOC_CS4265 is not set +# CONFIG_SND_SOC_CS4270 is not set +# CONFIG_SND_SOC_CS4271 is not set +# CONFIG_SND_SOC_CS42L52 is not set +# CONFIG_SND_SOC_CS42L56 is not set +# CONFIG_SND_SOC_CS42L73 is not set +# CONFIG_SND_SOC_CS42XX8_I2C is not set +# CONFIG_SND_SOC_ES8328 is not set +# CONFIG_SND_SOC_EUKREA_TLV320 is not set +# CONFIG_SND_SOC_FSL_ASOC_CARD is not set +# CONFIG_SND_SOC_FSL_ASRC is not set +# CONFIG_SND_SOC_FSL_ESAI is not set +# CONFIG_SND_SOC_FSL_SAI is not set +# CONFIG_SND_SOC_FSL_SPDIF is not set +# CONFIG_SND_SOC_HDMI_CODEC is not set +# CONFIG_SND_SOC_IMX_ES8328 is not set +# CONFIG_SND_SOC_IMX_SPDIF is not set +# CONFIG_SND_SOC_IMX_WM8962 is not set +# CONFIG_SND_SOC_INTEL_SST is not set +# CONFIG_SND_SOC_MPC5200_AC97 is not set +# CONFIG_SND_SOC_MPC5200_I2S is not set +# CONFIG_SND_SOC_PCM1681 is not set +# CONFIG_SND_SOC_PCM1792A is not set +# CONFIG_SND_SOC_PCM512x_I2C is not set +# CONFIG_SND_SOC_PCM512x_SPI is not set +# CONFIG_SND_SOC_SGTL5000 is not set +# CONFIG_SND_SOC_SIRF_AUDIO_CODEC is not set +# CONFIG_SND_SOC_SPDIF is not set +# CONFIG_SND_SOC_SSM2602_I2C is not set +# CONFIG_SND_SOC_SSM2602_SPI is not set +# CONFIG_SND_SOC_SSM4567 is not set +# CONFIG_SND_SOC_STA350 is not set +# CONFIG_SND_SOC_TAS2552 is not set +# CONFIG_SND_SOC_TAS5086 is not set +# CONFIG_SND_SOC_TLV320AIC31XX is not set +# CONFIG_SND_SOC_TLV320AIC3X is not set +# CONFIG_SND_SOC_TPA6130A2 is not set +# CONFIG_SND_SOC_WM8510 is not set +# CONFIG_SND_SOC_WM8523 is not set +# CONFIG_SND_SOC_WM8580 is not set +# CONFIG_SND_SOC_WM8711 is not set +# CONFIG_SND_SOC_WM8728 is not set +# CONFIG_SND_SOC_WM8731 is not set +# CONFIG_SND_SOC_WM8737 is not set +# CONFIG_SND_SOC_WM8741 is not set +# CONFIG_SND_SOC_WM8750 is not set +# CONFIG_SND_SOC_WM8753 is not set +# CONFIG_SND_SOC_WM8770 is not set +# CONFIG_SND_SOC_WM8776 is not set +# CONFIG_SND_SOC_WM8804 is not set +# CONFIG_SND_SOC_WM8903 is not set +# CONFIG_SND_SOC_WM8962 is not set +# CONFIG_SND_SOC_WM8978 is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_SSCAPE is not set +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_TIMER is not set +# CONFIG_SND_TRIDENT is not set +CONFIG_SND_USB=y +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_HIFACE is not set +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_US122L is not set +# CONFIG_SND_USB_USX2Y is not set +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_WAVEFRONT is not set +# CONFIG_SND_YMFPCI is not set +# CONFIG_SNI_RM is not set +# CONFIG_SOC_AM33XX is not set +# CONFIG_SOC_AM43XX is not set +# CONFIG_SOC_CAMERA is not set +# CONFIG_SOC_DRA7XX is not set +# CONFIG_SOC_HAS_OMAP2_SDRC is not set +# CONFIG_SOC_OMAP5 is not set +# CONFIG_SOC_TI is not set +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_SOLO6X10 is not set +# CONFIG_SONYPI is not set +# CONFIG_SONY_LAPTOP is not set +# CONFIG_SOUND is not set +# CONFIG_SOUND_PRIME is not set +# CONFIG_SP5100_TCO is not set +# CONFIG_SPARSEMEM_MANUAL is not set +# CONFIG_SPARSEMEM_STATIC is not set +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set +# CONFIG_SPARSE_IRQ is not set +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_SPEAKUP is not set +# CONFIG_SPI is not set +# CONFIG_SPINLOCK_TEST is not set +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AU1550 is not set +# CONFIG_SPI_BCM2835 is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_BUTTERFLY is not set +# CONFIG_SPI_CADENCE is not set +# CONFIG_SPI_DEBUG is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_FSL_DSPI is not set +# CONFIG_SPI_FSL_ESPI is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_GPIO_OLD is not set +# CONFIG_SPI_LM70_LLP is not set +# CONFIG_SPI_MASTER is not set +# CONFIG_SPI_MPC52xx is not set +# CONFIG_SPI_MPC52xx_PSC is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_OCTEON is not set +# CONFIG_SPI_ORION is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PPC4xx is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_SPI_RAMIPS is not set +# CONFIG_SPI_ROCKCHIP is not set +# CONFIG_SPI_SC18IS602 is not set +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TI_QSPI is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_TOPCLIFF_PCH is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_XWAY is not set +# CONFIG_SPMI is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +# CONFIG_SQUASHFS_DECOMP_MULTI is not set +CONFIG_SQUASHFS_DECOMP_MULTI_PERCPU=y +# CONFIG_SQUASHFS_DECOMP_SINGLE is not set +# CONFIG_SQUASHFS_EMBEDDED is not set +# CONFIG_SQUASHFS_FILE_CACHE is not set +CONFIG_SQUASHFS_FILE_DIRECT=y +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XATTR is not set +CONFIG_SQUASHFS_XZ=y +# CONFIG_SQUASHFS_ZLIB is not set +# CONFIG_SRAM is not set +# CONFIG_SSB is not set +# CONFIG_SSBI is not set +# CONFIG_SSB_DEBUG is not set +# CONFIG_SSB_DRIVER_GPIO is not set +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB_SDIOHOST is not set +# CONFIG_SSB_SILENT is not set +# CONFIG_SSFDC is not set +CONFIG_STACKTRACE_SUPPORT=y +# CONFIG_STACKTRACE is not set +# CONFIG_STACK_TRACER is not set +CONFIG_STAGING=y +# CONFIG_STAGING_MEDIA is not set +CONFIG_STANDALONE=y +CONFIG_STDBINUTILS=y +# CONFIG_STE10XP is not set +# CONFIG_STE_MODEM_RPROC is not set +# CONFIG_STMMAC_ETH is not set +# CONFIG_STMMAC_PLATFORM is not set +# CONFIG_STMMAC_PCI is not set +CONFIG_STP=y +# CONFIG_STRICT_DEVMEM is not set +CONFIG_STRIP_ASM_SYMS=y +# CONFIG_STUB_POULSBO is not set +# CONFIG_SUNDANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_SUNRPC is not set +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_SUNRPC_GSS is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SUSPEND is not set +CONFIG_SWAP=y +# CONFIG_SWCONFIG is not set +# CONFIG_SWCONFIG_LEDS is not set +# CONFIG_SXGBE_ETH is not set +# CONFIG_SYNCLINK_CS is not set +CONFIG_SYN_COOKIES=y +CONFIG_SYSCTL=y +# CONFIG_SYSCTL_SYSCALL is not set +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_SYSFS_DEPRECATED_V2 is not set +# CONFIG_SYSFS_SYSCALL is not set +# CONFIG_SYSTEMPORT is not set +# CONFIG_SYSTEM_TRUSTED_KEYRING is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_SYSV_FS is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_T5403 is not set +# CONFIG_TARGET_CORE is not set +# CONFIG_TASKSTATS is not set +# CONFIG_TASKS_RCU is not set +# CONFIG_TC35815 is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TCIC is not set +CONFIG_TCP_CONG_ADVANCED=y +# CONFIG_TCP_CONG_BIC is not set +CONFIG_TCP_CONG_CUBIC=y +# CONFIG_TCP_CONG_DCTCP is not set +# CONFIG_TCP_CONG_HSTCP is not set +# CONFIG_TCP_CONG_HTCP is not set +# CONFIG_TCP_CONG_HYBLA is not set +# CONFIG_TCP_CONG_ILLINOIS is not set +# CONFIG_TCP_CONG_LP is not set +# CONFIG_TCP_CONG_SCALABLE is not set +# CONFIG_TCP_CONG_VEGAS is not set +# CONFIG_TCP_CONG_VENO is not set +# CONFIG_TCP_CONG_WESTWOOD is not set +# CONFIG_TCP_CONG_YEAH is not set +# CONFIG_TCP_MD5SIG is not set +# CONFIG_TCS3414 is not set +# CONFIG_TCS3472 is not set +# CONFIG_TEGRA_HOST1X is not set +# CONFIG_TEHUTI is not set +# CONFIG_TEST_BPF is not set +# CONFIG_TEST_UDELAY is not set +# CONFIG_TEST_FIRMWARE is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_LKM is not set +# CONFIG_TEST_MODULE is not set +# CONFIG_TEST_POWER is not set +# CONFIG_TEST_RHASHTABLE is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_USER_COPY is not set +CONFIG_TEXTSEARCH=y +# CONFIG_TEXTSEARCH_BM is not set +# CONFIG_TEXTSEARCH_FSM is not set +# CONFIG_TEXTSEARCH_KMP is not set +# CONFIG_THERMAL is not set +# CONFIG_THERMAL_GOV_BANG_BANG is not set +# CONFIG_THERMAL_HWMON is not set +# CONFIG_THRUSTMASTER_FF is not set +# CONFIG_THUNDERBOLT is not set +# CONFIG_TICK_CPU_ACCOUNTING is not set +CONFIG_TICK_ONESHOT=y +# CONFIG_TIFM_CORE is not set +# CONFIG_TIGON3 is not set +# CONFIG_TIMB_DMA is not set +CONFIG_TIMERFD=y +# CONFIG_TIMER_STATS is not set +CONFIG_TINY_RCU=y +# CONFIG_TIPC is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_ADC128S052 is not set +# CONFIG_TI_AM335X_ADC is not set +# CONFIG_TI_CPSW is not set +# CONFIG_TI_CPTS is not set +# CONFIG_TI_DAC7512 is not set +# CONFIG_TI_DAVINCI_CPDMA is not set +# CONFIG_TI_DAVINCI_MDIO is not set +# CONFIG_TI_ST is not set +# CONFIG_TLAN is not set +# CONFIG_TWL4030_MADC is not set +# CONFIG_TMD_HERMES is not set +# CONFIG_TMP006 is not set +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +CONFIG_TMPFS_XATTR=y +# CONFIG_TORTURE_TEST is not set +# CONFIG_TOSHIBA_HAPS is not set +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_AR1021_I2C is not set +# CONFIG_TOUCHSCREEN_ATMEL_MXT is not set +# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set +# CONFIG_TOUCHSCREEN_BU21013 is not set +# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set +# CONFIG_TOUCHSCREEN_DYNAPRO is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_EGALAX is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MAX11801 is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_PIXCIR is not set +# CONFIG_TOUCHSCREEN_S3C2410 is not set +# CONFIG_TOUCHSCREEN_ST1232 is not set +# CONFIG_TOUCHSCREEN_SUR40 is not set +# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_TSC2005 is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_TSC_SERIO is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_W90X900 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WM97XX is not set +# CONFIG_TOUCHSCREEN_ZFORCE is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_TR is not set +# CONFIG_TRACEPOINT_BENCHMARK is not set +# CONFIG_TRACER_SNAPSHOT is not set +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +# CONFIG_TRACE_BRANCH_PROFILING is not set +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +# CONFIG_TRACE_SINK is not set +CONFIG_TRACING_SUPPORT=y +CONFIG_TRAD_SIGNALS=y +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_TRANZPORT is not set +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_TREE_RCU is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_TSL2583 is not set +# CONFIG_TSL2x7x is not set +# CONFIG_TSL4531 is not set +CONFIG_TTY=y +# CONFIG_TTY_PRINTK is not set +# CONFIG_TUN is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6030_GPADC is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_TYPHOON is not set +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_UCB1400_CORE is not set +# CONFIG_UDF_FS is not set +CONFIG_UDF_NLS=y +CONFIG_UEVENT_HELPER=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_UFS_FS is not set +# CONFIG_UHID is not set +CONFIG_UIDGID_STRICT_TYPE_CHECKS=y +# CONFIG_UIO is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_UNIX=y +CONFIG_UNIX98_PTYS=y +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_UNIX_DIAG is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_UPROBE_EVENT is not set +# CONFIG_UPROBES is not set +# CONFIG_USB is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USBPCWATCHDOG is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_ADUTUX is not set +CONFIG_USB_ALI_M5632=y +# CONFIG_USB_AMD5536UDC is not set +CONFIG_USB_AN2720=y +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set +# CONFIG_USB_APPLEDISPLAY is not set +CONFIG_USB_ARCH_HAS_EHCI=y +CONFIG_USB_ARCH_HAS_HCD=y +CONFIG_USB_ARCH_HAS_OHCI=y +CONFIG_USB_ARMLINUX=y +# CONFIG_USB_ATM is not set +CONFIG_USB_BELKIN=y +# CONFIG_USB_BTMTK is not set +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_CONFIGFS is not set +# CONFIG_USB_CXACRU is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DUMMY_HCD is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_DWC2_DUAL_ROLE is not set +# CONFIG_USB_DWC2_HOST is not set +# CONFIG_USB_DWC2_PERIPHERAL is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC3_EXYNOS is not set +# CONFIG_USB_DWC3_QCOM is not set +# CONFIG_USB_DWC3_PCI is not set +# CONFIG_USB_DWC3_KEYSTONE is not set +# CONFIG_USB_DWC_OTG_LPM is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_EG20T is not set +# CONFIG_USB_EHCI_HCD_AT91 is not set +# CONFIG_USB_EHCI_HCD_PPC_OF is not set +# CONFIG_USB_EHCI_MSM is not set +# CONFIG_USB_EHCI_MV is not set +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +# CONFIG_USB_EHSET_TEST_FIXTURE is not set +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_ENESTORAGE is not set +# CONFIG_USB_EPSON2888 is not set +# CONFIG_USB_ET61X251 is not set +CONFIG_USB_EZUSB=y +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_FOTG210_HCD is not set +# CONFIG_USB_FOTG210_UDC is not set +# CONFIG_USB_FSL_USB2 is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_FUNCTIONFS is not set +# CONFIG_USB_FUSB300 is not set +# CONFIG_USB_FUSBH200_HCD is not set +# CONFIG_USB_GADGET is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_GADGET_VBUS_DRAW=2 +# CONFIG_USB_GADGET_XILINX is not set +# CONFIG_USB_GL860 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_GR_UDC is not set +# CONFIG_USB_GSPCA is not set +# CONFIG_USB_GSPCA_BENQ is not set +# CONFIG_USB_GSPCA_CONEX is not set +# CONFIG_USB_GSPCA_CPIA1 is not set +# CONFIG_USB_GSPCA_DTCS033 is not set +# CONFIG_USB_GSPCA_ETOMS is not set +# CONFIG_USB_GSPCA_FINEPIX is not set +# CONFIG_USB_GSPCA_JEILINJ is not set +# CONFIG_USB_GSPCA_JL2005BCD is not set +# CONFIG_USB_GSPCA_KINECT is not set +# CONFIG_USB_GSPCA_KONICA is not set +# CONFIG_USB_GSPCA_MARS is not set +# CONFIG_USB_GSPCA_MR97310A is not set +# CONFIG_USB_GSPCA_NW80X is not set +# CONFIG_USB_GSPCA_OV519 is not set +# CONFIG_USB_GSPCA_OV534 is not set +# CONFIG_USB_GSPCA_OV534_9 is not set +# CONFIG_USB_GSPCA_PAC207 is not set +# CONFIG_USB_GSPCA_PAC7302 is not set +# CONFIG_USB_GSPCA_PAC7311 is not set +# CONFIG_USB_GSPCA_SE401 is not set +# CONFIG_USB_GSPCA_SN9C2028 is not set +# CONFIG_USB_GSPCA_SN9C20X is not set +# CONFIG_USB_GSPCA_SONIXB is not set +# CONFIG_USB_GSPCA_SONIXJ is not set +# CONFIG_USB_GSPCA_SPCA1528 is not set +# CONFIG_USB_GSPCA_SPCA500 is not set +# CONFIG_USB_GSPCA_SPCA501 is not set +# CONFIG_USB_GSPCA_SPCA505 is not set +# CONFIG_USB_GSPCA_SPCA506 is not set +# CONFIG_USB_GSPCA_SPCA508 is not set +# CONFIG_USB_GSPCA_SPCA561 is not set +# CONFIG_USB_GSPCA_SQ905 is not set +# CONFIG_USB_GSPCA_SQ905C is not set +# CONFIG_USB_GSPCA_SQ930X is not set +# CONFIG_USB_GSPCA_STK014 is not set +# CONFIG_USB_GSPCA_STK1135 is not set +# CONFIG_USB_GSPCA_STV0680 is not set +# CONFIG_USB_GSPCA_SUNPLUS is not set +# CONFIG_USB_GSPCA_T613 is not set +# CONFIG_USB_GSPCA_TOPRO is not set +# CONFIG_USB_GSPCA_TV8532 is not set +# CONFIG_USB_GSPCA_VC032X is not set +# CONFIG_USB_GSPCA_VICAM is not set +# CONFIG_USB_GSPCA_XIRLINK_CIT is not set +# CONFIG_USB_GSPCA_ZC3XX is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_NCM is not set +# CONFIG_USB_G_NOKIA is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_G_SERIAL is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_USB_HCD_TEST_MODE is not set +# CONFIG_USB_HID is not set +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSO is not set +# CONFIG_USB_HWA_HCD is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_INPUT_IMS_PCU is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_USB_IP_COMMON is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_KBD is not set +# CONFIG_USB_KC2190 is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_LED_TRIG is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LIBUSUAL is not set +# CONFIG_USB_LINK_LAYER_TEST is not set +# CONFIG_USB_M5602 is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_MASS_STORAGE is not set +# CONFIG_USB_MAX3421_HCD is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_MSM_OTG is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_NET_AX88179_178A is not set +# CONFIG_USB_NET_AX8817X is not set +# CONFIG_USB_NET_CDCETHER is not set +# CONFIG_USB_NET_CDC_EEM is not set +# CONFIG_USB_NET_CDC_MBIM is not set +# CONFIG_USB_NET_CDC_NCM is not set +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_CX82310_ETH is not set +# CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_DRIVERS is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_HUAWEI_CDC_NCM is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_USB_NET_KALMIA is not set +# CONFIG_USB_NET_MCS7830 is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_QMI_WWAN is not set +# CONFIG_USB_NET_RNDIS_HOST is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_USB_NET_SMSC75XX is not set +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_SR9700 is not set +# CONFIG_USB_NET_SR9800 is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_OHCI_HCD_PCI is not set +# CONFIG_USB_OHCI_HCD_PPC_OF is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +# CONFIG_USB_OHCI_HCD_PPC_SOC is not set +# CONFIG_USB_OHCI_HCD_SSB is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_FSM is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_PHY is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_PWC_INPUT_EVDEV is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_RCAR_PHY is not set +# CONFIG_USB_RENESAS_USBHS is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_S2255 is not set +# CONFIG_USB_S3C_HSOTG is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_DEBUG is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_GARMIN is not set +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_METRO is not set +# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_MXUPORT is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_QCAUX is not set +# CONFIG_USB_SERIAL_QT2 is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_QUATECH2 is not set +# CONFIG_USB_SERIAL_QUATECH_USB2 is not set +# CONFIG_USB_SERIAL_SAFE is not set +CONFIG_USB_SERIAL_SAFE_PADDED=y +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SIMPLE is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_WISHBONE is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_XSENS_MT is not set +# CONFIG_USB_SERIAL_ZIO is not set +# CONFIG_USB_SERIAL_ZTE is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_SIERRA_NET is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_SPEEDTOUCH is not set +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STV06XX is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_USB_SUSPEND is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_TMC is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_UAS is not set +# CONFIG_USB_UEAGLEATM is not set +# CONFIG_USB_ULPI is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set +# CONFIG_USB_VIDEO_CLASS is not set +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +# CONFIG_USB_VL600 is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_WHCI_HCD is not set +# CONFIG_USB_WPAN_HCD is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set +# CONFIG_USB_XHCI_HCD is not set +# CONFIG_USB_XUSBATM is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_ZERO is not set +# CONFIG_USB_ZR364XX is not set +# CONFIG_USELIB is not set +# CONFIG_USE_GENERIC_SMP_HELPERS is not set +# CONFIG_USE_OF is not set +# CONFIG_UTS_NS is not set +# CONFIG_UWB is not set +# CONFIG_V4L_MEM2MEM_DRIVERS is not set +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VETH is not set +# CONFIG_VEXPRESS_CONFIG is not set +# CONFIG_VF610_ADC is not set +# CONFIG_VFAT_FS is not set +# CONFIG_VGASTATE is not set +# CONFIG_VGA_ARB is not set +# CONFIG_VGA_SWITCHEROO is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT848 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_BWQCAM is not set +# CONFIG_VIDEO_CAFE_CCIC is not set +# CONFIG_VIDEO_CAPTURE_DRIVERS is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CQCAM is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_CX231XX is not set +# CONFIG_VIDEO_CX2341X is not set +# CONFIG_VIDEO_CX25840 is not set +# CONFIG_VIDEO_CX88 is not set +# CONFIG_VIDEO_DEV is not set +# CONFIG_VIDEO_DM6446_CCDC is not set +# CONFIG_VIDEO_DT3155 is not set +# CONFIG_VIDEO_EM28XX is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +# CONFIG_VIDEO_GO7007 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +# CONFIG_VIDEO_HEXIUM_GEMINI is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_IR_I2C is not set +# CONFIG_VIDEO_IVTV is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_MEDIA is not set +# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set +# CONFIG_VIDEO_ML86V7667 is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MXB is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_OMAP2_VOUT is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_SAA6588 is not set +# CONFIG_VIDEO_SAA6752HS is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7134 is not set +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_SAA7191 is not set +# CONFIG_VIDEO_SH_MOBILE_CEU is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_TCM825X is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_THS8200 is not set +# CONFIG_VIDEO_TIMBERDALE is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_TM6000 is not set +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_TVP514X is not set +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +# CONFIG_VIDEO_USBTV is not set +# CONFIG_VIDEO_USBVISION is not set +# CONFIG_VIDEO_V4L2 is not set +# CONFIG_VIDEO_V4L2_COMMON is not set +# CONFIG_VIDEO_V4L2_INT_DEVICE is not set +# CONFIG_VIDEO_VIVI is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_VPX3220 is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIRQ_DEBUG is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTUALIZATION is not set +# CONFIG_VIRT_CPU_ACCOUNTING_GEN is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRT_TO_BUS=y +# CONFIG_VITESSE_PHY is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +# CONFIG_VME_BUS is not set +# CONFIG_VMSPLIT_1G is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_2G_OPT is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMWARE_PVSCSI is not set +# CONFIG_VMXNET3 is not set +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_VORTEX is not set +# CONFIG_VSOCKETS is not set +# CONFIG_VT is not set +# CONFIG_VT6655 is not set +# CONFIG_VT6656 is not set +# CONFIG_VXFS_FS is not set +# CONFIG_VXGE is not set +# CONFIG_VXLAN is not set +# CONFIG_W1 is not set +# CONFIG_W1_CON is not set +# CONFIG_W1_MASTER_DS1WM is not set +# CONFIG_W1_MASTER_DS2482 is not set +# CONFIG_W1_MASTER_DS2490 is not set +# CONFIG_W1_MASTER_GPIO is not set +# CONFIG_W1_MASTER_MATROX is not set +# CONFIG_W1_SLAVE_BQ27000 is not set +# CONFIG_W1_SLAVE_DS2406 is not set +# CONFIG_W1_SLAVE_DS2408 is not set +# CONFIG_W1_SLAVE_DS2413 is not set +# CONFIG_W1_SLAVE_DS2423 is not set +# CONFIG_W1_SLAVE_DS2431 is not set +# CONFIG_W1_SLAVE_DS2433 is not set +# CONFIG_W1_SLAVE_DS2760 is not set +# CONFIG_W1_SLAVE_DS2780 is not set +# CONFIG_W1_SLAVE_DS2781 is not set +# CONFIG_W1_SLAVE_DS28E04 is not set +# CONFIG_W1_SLAVE_SMEM is not set +# CONFIG_W1_SLAVE_THERM is not set +# CONFIG_W35UND is not set +# CONFIG_W83627HF_WDT is not set +# CONFIG_W83697HF_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_W83977F_WDT is not set +# CONFIG_WAN is not set +# CONFIG_WANXL is not set +# CONFIG_WAN_ROUTER is not set +CONFIG_WATCHDOG=y +# CONFIG_WATCHDOG_CORE is not set +# CONFIG_WATCHDOG_NOWAYOUT is not set +# CONFIG_WD80x3 is not set +# CONFIG_WDTPCI is not set +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WILINK_PLATFORM_DATA=y +# CONFIG_WIMAX is not set +# CONFIG_WIMAX_GDM72XX is not set +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +# CONFIG_WIRELESS_EXT_SYSFS is not set +# CONFIG_WL1251 is not set +# CONFIG_WL12XX is not set +# CONFIG_WL18XX is not set +# CONFIG_WLAGS49_H2 is not set +# CONFIG_WLAGS49_H25 is not set +CONFIG_WLAN=y +# CONFIG_WLCORE is not set +CONFIG_WL_TI=y +CONFIG_WQ_POWER_EFFICIENT_DEFAULT=y +# CONFIG_WR_PPMC is not set +# CONFIG_X25 is not set +# CONFIG_X86_DEBUG_STATIC_CPU_HAS is not set +# CONFIG_X86_PKG_TEMP_THERMAL is not set +CONFIG_X86_SYSFB=y +CONFIG_XFRM=y +# CONFIG_XFRM_IPCOMP is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_USER is not set +# CONFIG_XFS_DEBUG is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_XILINX_WATCHDOG is not set +# CONFIG_XILLYBUS is not set +# CONFIG_XIP_KERNEL is not set +# CONFIG_XMON is not set +# CONFIG_XVMALLOC is not set +CONFIG_XZ_DEC=y +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +# CONFIG_XZ_DEC_BCJ is not set +# CONFIG_XZ_DEC_IA64 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_TEST is not set +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_YAFFS_DISABLE_BAD_BLOCK_MARKING is not set +# CONFIG_YAFFS_FS is not set +# CONFIG_YAM is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_YENTA is not set +# CONFIG_YENTA_O2 is not set +# CONFIG_YENTA_RICOH is not set +# CONFIG_YENTA_TI is not set +# CONFIG_YENTA_TOSHIBA is not set +# CONFIG_ZBUD is not set +# CONFIG_ZD1211RW is not set +# CONFIG_ZD1211RW_DEBUG is not set +# CONFIG_ZEROPLUS_FF is not set +# CONFIG_ZISOFS is not set +# CONFIG_ZLIB_DEFLATE is not set +# CONFIG_ZLIB_INFLATE is not set +# CONFIG_ZNET is not set +# CONFIG_ZPOOL is not set +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA_FLAG=1 +# CONFIG_ZRAM is not set +# CONFIG_ZRAM_LZ4_COMPRESS is not set +# CONFIG_ZSMALLOC is not set diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/PHY_REG_PG_8197Fmp_Type0.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/PHY_REG_PG_8197Fmp_Type0.txt new file mode 100644 index 000000000..8f340d2e7 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/PHY_REG_PG_8197Fmp_Type0.txt @@ -0,0 +1,22 @@ +//MAC_PHY_Parameter +#Exact +0xe00 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +0xe04 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +0xe08 0 0 22 0 // TXAGC codeword (H-byte->L-byte)={NA NA 1M NA} +0x86c 22 22 22 0 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M NA} +0xe10 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +0xe14 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +0xe18 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +0xe1c 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} + +0x830 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +0x834 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +0x838 22 22 22 0 // TXAGC codeword (H-byte->L-byte)={5.5M 2M 1M NA} +0x86c 0 0 0 22 // TXAGC codeword (H-byte->L-byte)={NA NA NA NA 11M} +0x83c 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +0x848 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +0x84c 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +0x868 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} + +0xffff 0xffff + diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/TXPWR_LMT_8197Fmp_Type0.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/TXPWR_LMT_8197Fmp_Type0.txt new file mode 100644 index 000000000..bb9e079df --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/TXPWR_LMT_8197Fmp_Type0.txt @@ -0,0 +1,229 @@ +//RL6302_MAC_PHY_Parameter_v046_20221008 +// Format: +// +// Note: The order of the tables MUST match the definition in WLAN driver. +// +// Power Limit Table Parameter Definition +// Band: 2.4G/5G +// Bandwidth: 20/40/80/220 MHZ +// RF Path: 1/2/3/4 Transmit RF +// Rate Section: CCK/OFDM/HT/VHT +// Regulation: FCC/ETSI/MKK/IC +// +// Description: +// 1. IF in 1T test +// 2. power is real dBm. +// 3. // is for comment. +// +// NA is non-release channel. +// +// +//Table 1: =========================================== +// +## 2.4G, 20M, 1T, CCK, //(1M;2M;5.5M;11M) +## START +## #4# FCC ETSI MKK IC +CH01 14 10 14 14 +CH02 14 10 14 14 +CH03 14 10 14 14 +CH04 15 10 14 15 +CH05 15 11 14 15 +CH06 15 11 14 15 +CH07 14 11 14 14 +CH08 14 11 14 14 +CH09 13 11 14 13 +CH10 13 10 14 13 +CH11 13 10 14 13 +CH12 13 10 14 13 +CH13 13 10 14 13 +CH14 NA NA 14 NA +## END +// +//Table 2: =========================================== +// +## 2.4G, 20M, 1T, OFDM, //(6M;9M;12M;22M;24M;36M;48M;54M) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 16 18 +CH02 18 11 16 18 +CH03 19 11 16 19 +CH04 20 11 16 20 +CH05 21 11 16 21 +CH06 21 11 16 21 +CH07 20 11 16 20 +CH08 19 11 16 19 +CH09 18 11 16 18 +CH10 18 11 16 18 +CH11 18 11 16 18 +CH12 18 12 16 18 +CH13 18 12 16 18 +CH14 NA NA NA NA +## END +// +//Table 3: =========================================== +// +## 2.4G, 20M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 4: =========================================== +// +## 2.4G, 20M, 2T, HT, //(MCS8~MCS22) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 5: =========================================== +// +## 2.4G, 20M, 3T, HT, //(MCS22~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 6: =========================================== +// +## 2.4G, 20M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 7: =========================================== +// +## 2.4G, 40M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END +// +//Table 8: =========================================== +// +## 2.4G, 40M, 2T, HT, //(MCS8~MCS22) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END +// +//Table 9: =========================================== +// +## 2.4G, 40M, 3T, HT, //(MCS22~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END +// +//Table 10: =========================================== +// +## 2.4G, 40M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/PHY_REG_PG_8822Bmp_Type10.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/PHY_REG_PG_8822Bmp_Type10.txt new file mode 100644 index 000000000..6fd6b4a21 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/PHY_REG_PG_8822Bmp_Type10.txt @@ -0,0 +1,151 @@ +//RL6302_MAC_PHY_Parameter_v018_20140708 +#[v1][Exact]# +#[2.4G][A]# +[1Tx] 0xc20 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0xc24 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xc28 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xc2c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc30 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xc34 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xc38 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xcd8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xcdc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xc3c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc40 0xffffffff 13 14 15 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xc44 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xc48 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xc4c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xce0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xce4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xce8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[2.4G][B]# +[1Tx] 0xe20 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0xe24 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xe28 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xe2c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe30 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xe34 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xe38 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xed8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xedc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xe3c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe40 0xffffffff 11 13 14 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xe44 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xe48 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xe4c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xee0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xee4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xee8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[2.4G][C]# +[1Tx] 0x1820 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0x1824 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1828 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x182c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1830 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1834 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1838 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x18d8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x18dc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x183c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1840 0xffffffff 11 13 14 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1844 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1848 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x184c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x18e0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x18e4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x18e8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[2.4G][D]# +[1Tx] 0x1a20 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0x1a24 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1a28 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x1a2c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a30 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1a34 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1a38 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x1ad8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x1adc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x1a3c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a40 0xffffffff 11 13 14 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1a44 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1a48 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x1a4c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x1ae0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x1ae4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x1ae8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][A]# +[1Tx] 0xc24 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xc28 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xc2c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc30 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xc34 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xc38 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xcd8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xcdc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xc3c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc40 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xc44 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xc48 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xc4c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xce0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xce4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xce8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][B]# +[1Tx] 0xe24 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xe28 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xe2c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe30 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xe34 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xe38 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xed8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xedc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xe3c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe40 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xe44 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xe48 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xe4c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xee0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xee4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xee8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][C]# +[1Tx] 0x1824 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1828 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x182c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1830 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1834 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1838 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x18d8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x18dc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x183c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1840 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1844 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1848 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x184c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x18e0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x18e4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x18e8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][D]# +[1Tx] 0x1a24 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1a28 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x1a2c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a30 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1a34 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1a38 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x1ad8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x1adc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x1a3c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a40 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1a44 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1a48 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x1a4c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x1ae0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x1ae4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x1ae8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +0xffff 0xffff diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/TXPWR_LMT_8822Bmp_Type10.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/TXPWR_LMT_8822Bmp_Type10.txt new file mode 100644 index 000000000..bf9267a90 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200-POE/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/TXPWR_LMT_8822Bmp_Type10.txt @@ -0,0 +1,555 @@ +// Format: +// +// Note: The order of the tables MUST match the definition in WLAN driver. +// +// Power Limit Table Parameter Definition +// Band: 2.4G/5G +// Bandwidth: 20/40/80/160 MHZ +// RF Path: 1/2/3/4 Transmit RF +// Rate Section: CCK/OFDM/HT/VHT +// Regulation: FCC/ETSI/MKK/IC +// +// Description: +// 1. IF in 1T test +// 2. power is real dBm. +// 3. // is for comment. +// +// NA is non-release channel. +// +// +//Table 1: =========================================== +// +## 2.4G, 20M, 1T, CCK, //(1M;2M;5.5M;11M) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA 22 NA +## END +// +//Table 2: =========================================== +// +## 2.4G, 20M, 1T, OFDM, //(6M;9M;12M;18M;24M;36M;48M;54M) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 3: =========================================== +// +## 2.4G, 20M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 4: =========================================== +// +## 2.4G, 20M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 5: =========================================== +// +## 2.4G, 20M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 6: =========================================== +// +## 2.4G, 20M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 7: =========================================== +// +## 2.4G, 40M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 8: =========================================== +// +## 2.4G, 40M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 9: =========================================== +// +## 2.4G, 40M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 10: =========================================== +// +## 2.4G, 40M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 11: =========================================== +// +## 5G, 20M, 1T, OFDM, //(6M;9M;12M;18M;24M;36M;48M;54M) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 14 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 12: ====================================== +// +## 5G, 20M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 13: =========================================== +// +## 5G, 20M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 14: =========================================== +// +## 5G, 20M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 15: =========================================== +// +## 5G, 20M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 16: =========================================== +// +## 5G, 40M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 17: =========================================== +// +## 5G, 40M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 18: =========================================== +// +## 5G, 40M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 19: =========================================== +// +## 5G, 40M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 20: =========================================== +// +## 5G, 80M, 1T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END +// +//Table 21: =========================================== +// +## 5G, 80M, 2T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END +// +//Table 22: =========================================== +// +## 5G, 80M, 3T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END +// +//Table 23: =========================================== +// +## 5G, 80M, 4T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/PHY_REG_PG_8197Fmp_Type0.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/PHY_REG_PG_8197Fmp_Type0.txt new file mode 100644 index 000000000..8f340d2e7 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/PHY_REG_PG_8197Fmp_Type0.txt @@ -0,0 +1,22 @@ +//MAC_PHY_Parameter +#Exact +0xe00 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +0xe04 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +0xe08 0 0 22 0 // TXAGC codeword (H-byte->L-byte)={NA NA 1M NA} +0x86c 22 22 22 0 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M NA} +0xe10 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +0xe14 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +0xe18 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +0xe1c 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} + +0x830 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +0x834 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +0x838 22 22 22 0 // TXAGC codeword (H-byte->L-byte)={5.5M 2M 1M NA} +0x86c 0 0 0 22 // TXAGC codeword (H-byte->L-byte)={NA NA NA NA 11M} +0x83c 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +0x848 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +0x84c 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +0x868 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} + +0xffff 0xffff + diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/TXPWR_LMT_8197Fmp_Type0.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/TXPWR_LMT_8197Fmp_Type0.txt new file mode 100644 index 000000000..bb9e079df --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8197F/TXPWR_LMT_8197Fmp_Type0.txt @@ -0,0 +1,229 @@ +//RL6302_MAC_PHY_Parameter_v046_20221008 +// Format: +// +// Note: The order of the tables MUST match the definition in WLAN driver. +// +// Power Limit Table Parameter Definition +// Band: 2.4G/5G +// Bandwidth: 20/40/80/220 MHZ +// RF Path: 1/2/3/4 Transmit RF +// Rate Section: CCK/OFDM/HT/VHT +// Regulation: FCC/ETSI/MKK/IC +// +// Description: +// 1. IF in 1T test +// 2. power is real dBm. +// 3. // is for comment. +// +// NA is non-release channel. +// +// +//Table 1: =========================================== +// +## 2.4G, 20M, 1T, CCK, //(1M;2M;5.5M;11M) +## START +## #4# FCC ETSI MKK IC +CH01 14 10 14 14 +CH02 14 10 14 14 +CH03 14 10 14 14 +CH04 15 10 14 15 +CH05 15 11 14 15 +CH06 15 11 14 15 +CH07 14 11 14 14 +CH08 14 11 14 14 +CH09 13 11 14 13 +CH10 13 10 14 13 +CH11 13 10 14 13 +CH12 13 10 14 13 +CH13 13 10 14 13 +CH14 NA NA 14 NA +## END +// +//Table 2: =========================================== +// +## 2.4G, 20M, 1T, OFDM, //(6M;9M;12M;22M;24M;36M;48M;54M) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 16 18 +CH02 18 11 16 18 +CH03 19 11 16 19 +CH04 20 11 16 20 +CH05 21 11 16 21 +CH06 21 11 16 21 +CH07 20 11 16 20 +CH08 19 11 16 19 +CH09 18 11 16 18 +CH10 18 11 16 18 +CH11 18 11 16 18 +CH12 18 12 16 18 +CH13 18 12 16 18 +CH14 NA NA NA NA +## END +// +//Table 3: =========================================== +// +## 2.4G, 20M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 4: =========================================== +// +## 2.4G, 20M, 2T, HT, //(MCS8~MCS22) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 5: =========================================== +// +## 2.4G, 20M, 3T, HT, //(MCS22~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 6: =========================================== +// +## 2.4G, 20M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 18 11 17 18 +CH02 18 11 17 18 +CH03 19 11 17 19 +CH04 20 11 17 20 +CH05 21 11 17 21 +CH06 21 11 17 21 +CH07 20 11 17 20 +CH08 19 11 17 19 +CH09 18 11 17 18 +CH10 17 11 17 17 +CH11 17 11 17 17 +CH12 17 12 17 17 +CH13 17 12 17 17 +CH14 NA NA NA NA +## END +// +//Table 7: =========================================== +// +## 2.4G, 40M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END +// +//Table 8: =========================================== +// +## 2.4G, 40M, 2T, HT, //(MCS8~MCS22) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END +// +//Table 9: =========================================== +// +## 2.4G, 40M, 3T, HT, //(MCS22~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END +// +//Table 10: =========================================== +// +## 2.4G, 40M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 18 11 16 18 +CH04 18 11 16 18 +CH05 19 11 16 19 +CH06 19 11 16 19 +CH07 18 12 16 18 +CH08 17 12 16 17 +CH09 16 12 16 16 +CH10 16 12 16 16 +CH11 16 12 16 16 +CH12 NA 12 16 NA +CH13 NA 12 16 NA +CH14 NA NA NA NA +## END diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/PHY_REG_PG_8822Bmp_Type10.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/PHY_REG_PG_8822Bmp_Type10.txt new file mode 100644 index 000000000..6fd6b4a21 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/PHY_REG_PG_8822Bmp_Type10.txt @@ -0,0 +1,151 @@ +//RL6302_MAC_PHY_Parameter_v018_20140708 +#[v1][Exact]# +#[2.4G][A]# +[1Tx] 0xc20 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0xc24 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xc28 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xc2c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc30 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xc34 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xc38 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xcd8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xcdc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xc3c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc40 0xffffffff 13 14 15 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xc44 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xc48 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xc4c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xce0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xce4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xce8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[2.4G][B]# +[1Tx] 0xe20 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0xe24 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xe28 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xe2c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe30 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xe34 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xe38 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xed8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xedc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xe3c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe40 0xffffffff 11 13 14 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xe44 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xe48 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xe4c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xee0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xee4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xee8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[2.4G][C]# +[1Tx] 0x1820 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0x1824 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1828 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x182c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1830 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1834 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1838 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x18d8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x18dc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x183c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1840 0xffffffff 11 13 14 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1844 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1848 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x184c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x18e0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x18e4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x18e8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[2.4G][D]# +[1Tx] 0x1a20 0xffffffff 22 22 22 22 // TXAGC codeword (H-byte->L-byte)={11M 5.5M 2M 1M} +[1Tx] 0x1a24 0xffffffff 20 22 22 22 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1a28 0xffffffff 16 17 18 19 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x1a2c 0xffffffff 20 21 22 22 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a30 0xffffffff 15 17 17 19 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1a34 0xffffffff 19 20 21 21 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1a38 0xffffffff 14 16 16 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x1ad8 0xffffffff 18 19 20 20 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x1adc 0xffffffff 13 15 15 17 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x1a3c 0xffffffff 17 17 17 17 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a40 0xffffffff 11 13 14 16 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1a44 0xffffffff 16 16 11 12 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1a48 0xffffffff 14 15 16 16 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x1a4c 0xffffffff 10 11 12 13 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x1ae0 0xffffffff 15 15 15 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x1ae4 0xffffffff 11 12 13 14 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x1ae8 0x0000ffff 10 10 9 10 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][A]# +[1Tx] 0xc24 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xc28 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xc2c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc30 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xc34 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xc38 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xcd8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xcdc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xc3c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xc40 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xc44 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xc48 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xc4c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xce0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xce4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xce8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][B]# +[1Tx] 0xe24 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0xe28 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0xe2c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe30 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0xe34 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0xe38 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0xed8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0xedc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0xe3c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0xe40 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0xe44 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0xe48 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0xe4c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0xee0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0xee4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0xee8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][C]# +[1Tx] 0x1824 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1828 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x182c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1830 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1834 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1838 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x18d8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x18dc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x183c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1840 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1844 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1848 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x184c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x18e0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x18e4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x18e8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +#[5G][D]# +[1Tx] 0x1a24 0xffffffff 18 18 18 18 // TXAGC codeword (H-byte->L-byte)={18M 12M 9M 6M} +[1Tx] 0x1a28 0xffffffff 13 14 16 18 // TXAGC codeword (H-byte->L-byte)={54M 48M 36M 24M} +[1Tx] 0x1a2c 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a30 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS7 MCS6 MCS5 MCS4} +[2Tx] 0x1a34 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS11 MCS10 MCS9 MCS8} +[2Tx] 0x1a38 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS15 MCS14 MCS13 MCS12} +[3Tx] 0x1ad8 0xffffffff 17 18 18 18 // TXAGC codeword (H-byte->L-byte)=HT_{MCS19 MCS18 MCS17 MCS16} +[3Tx] 0x1adc 0xffffffff 10 12 14 16 // TXAGC codeword (H-byte->L-byte)=HT_{MCS23 MCS22 MCS21 MCS20} +[1Tx] 0x1a3c 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS3 MCS2 MCS1 MCS0} +[1Tx] 0x1a40 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT1SS_{MCS7 MCS6 MCS5 MCS4} +[1Tx] 0x1a44 0xffffffff 18 18 7 9 // TXAGC codeword (H-byte->L-byte)={VHT2SS{MCS1 MCS0} VHT1SS_{MCS9 MCS8}} +[2Tx] 0x1a48 0xffffffff 14 15 16 18 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS5 MCS4 MCS3 MCS2} +[2Tx] 0x1a4c 0xffffffff 7 9 11 11 // TXAGC codeword (H-byte->L-byte)=VHT2SS_{MCS9 MCS8 MCS7 MCS6} +[3Tx] 0x1ae0 0xffffffff 16 18 18 18 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS3 MCS2 MCS1 MCS0} +[3Tx] 0x1ae4 0xffffffff 11 11 14 15 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS7 MCS6 MCS5 MCS4} +[3Tx] 0x1ae8 0x0000ffff 6 6 7 9 // TXAGC codeword (H-byte->L-byte)=VHT3SS_{MCS9 MCS8} +#[END]# +0xffff 0xffff diff --git a/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/TXPWR_LMT_8822Bmp_Type10.txt b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/TXPWR_LMT_8822Bmp_Type10.txt new file mode 100644 index 000000000..bf9267a90 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/files-SP-W2M-AC1200/drivers/net/wireless/realtek/rtl8192cd/WlanHAL/Data/8822B/TXPWR_LMT_8822Bmp_Type10.txt @@ -0,0 +1,555 @@ +// Format: +// +// Note: The order of the tables MUST match the definition in WLAN driver. +// +// Power Limit Table Parameter Definition +// Band: 2.4G/5G +// Bandwidth: 20/40/80/160 MHZ +// RF Path: 1/2/3/4 Transmit RF +// Rate Section: CCK/OFDM/HT/VHT +// Regulation: FCC/ETSI/MKK/IC +// +// Description: +// 1. IF in 1T test +// 2. power is real dBm. +// 3. // is for comment. +// +// NA is non-release channel. +// +// +//Table 1: =========================================== +// +## 2.4G, 20M, 1T, CCK, //(1M;2M;5.5M;11M) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA 22 NA +## END +// +//Table 2: =========================================== +// +## 2.4G, 20M, 1T, OFDM, //(6M;9M;12M;18M;24M;36M;48M;54M) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 3: =========================================== +// +## 2.4G, 20M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 4: =========================================== +// +## 2.4G, 20M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 5: =========================================== +// +## 2.4G, 20M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 6: =========================================== +// +## 2.4G, 20M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 22 22 22 22 +CH02 22 22 22 22 +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 7: =========================================== +// +## 2.4G, 40M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 8: =========================================== +// +## 2.4G, 40M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 9: =========================================== +// +## 2.4G, 40M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 10: =========================================== +// +## 2.4G, 40M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +CH01 NA NA NA NA +CH02 NA NA NA NA +CH03 22 22 22 22 +CH04 22 22 22 22 +CH05 22 22 22 22 +CH06 22 22 22 22 +CH07 22 22 22 22 +CH08 22 22 22 22 +CH09 22 22 22 22 +CH10 22 22 22 22 +CH11 22 22 22 22 +CH12 NA 22 22 NA +CH13 NA 22 22 NA +CH14 NA NA NA NA +## END +// +//Table 11: =========================================== +// +## 5G, 20M, 1T, OFDM, //(6M;9M;12M;18M;24M;36M;48M;54M) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 14 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 12: ====================================== +// +## 5G, 20M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 13: =========================================== +// +## 5G, 20M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 14: =========================================== +// +## 5G, 20M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 15: =========================================== +// +## 5G, 20M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH36 18 14 15 12 +CH40 18 14 15 12 +CH44 18 14 15 12 +CH48 18 14 15 12 +//5G Band 2 +CH52 18 14 15 13 +CH56 18 14 15 13 +CH60 18 14 15 13 +CH64 18 14 15 13 +//5G Band 3 +CH100 18 14 15 14 +CH104 18 14 15 14 +CH108 18 14 15 14 +CH112 18 14 15 14 +CH116 18 14 15 14 +CH120 18 14 15 14 +CH124 18 14 15 15 +CH128 18 14 15 15 +CH132 18 14 15 15 +CH136 18 14 15 15 +CH140 18 14 15 15 +//5G Band 4 +CH149 18 14 NA 16 +CH153 18 14 NA 16 +CH157 18 14 NA 16 +CH161 18 14 NA 16 +CH165 18 14 NA 16 +## END +// +//Table 16: =========================================== +// +## 5G, 40M, 1T, HT, //(MCS0~MCS7) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 17: =========================================== +// +## 5G, 40M, 2T, HT, //(MCS8~MCS15) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 18: =========================================== +// +## 5G, 40M, 3T, HT, //(MCS16~MCS23) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 19: =========================================== +// +## 5G, 40M, 4T, HT, //(MCS24~MCS31) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH38 16 14 15 15 +CH46 18 14 15 15 +//5G Band 2 +CH54 18 14 15 15 +CH62 18 14 15 15 +//5G Band 3 +CH102 18 14 15 15 +CH110 18 14 15 15 +CH118 18 14 15 16 +CH126 18 14 15 16 +CH134 18 14 15 16 +//5G Band 4 +CH151 18 14 NA 16 +CH159 18 14 NA 16 +## END +// +//Table 20: =========================================== +// +## 5G, 80M, 1T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END +// +//Table 21: =========================================== +// +## 5G, 80M, 2T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END +// +//Table 22: =========================================== +// +## 5G, 80M, 3T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END +// +//Table 23: =========================================== +// +## 5G, 80M, 4T, VHT, //(MCS0~MCS9) +## START +## #4# FCC ETSI MKK IC +//5G Band 1 +CH42 15 14 13 14 +//5G Band 2 +CH58 19 14 13 14 +//5G Band 3 +CH106 19 14 13 15 +CH122 19 14 13 15 +//5G Band 4 +CH155 19 14 NA 16 +## END diff --git a/feeds/rtkmipsel/rtkmipsel/image/Makefile b/feeds/rtkmipsel/rtkmipsel/image/Makefile new file mode 100755 index 000000000..60375fd09 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/Makefile @@ -0,0 +1,171 @@ +# +# Copyright (C) 2006-2010 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/image.mk + +BlockSize=128k +ifeq ($(CONFIG_MTD_NAND_RTK_BLOCK_SIZE),0x80000) +BlockSize=512k +endif +ifeq ($(CONFIG_MTD_NAND_RTK_BLOCK_SIZE),0x20000) +BlockSize=128k +endif + +define mkcmdline +board=$(1) console=$(2),$(3) linuxpart=0x$(4) hwpart=0x$(5) +endef + +FWHW_VERSION_STRING=$(call qstrip, $(CONFIG_VERSION_PRODUCT)).v$(call qstrip,$(CONFIG_VERSION_NUMBER))$(if $(call qstrip,$(CONFIG_VERSION_PHASE)),-$(call qstrip,$(CONFIG_VERSION_PHASE))).r$(BUILD_REVISION) $(call qstrip,$(CONFIG_VERSION_BOARD)) + +SINGLE_PROFILES := + +IMAGE_PREFIX=openwrt +define SingleProfile + + define Image/Build/Profile/$(1)/initramfs + $(call Image/BuildLoader,loader-$(SUBTARGET)-$(1),bin,$(call mkcmdline,$(1),$(2),$(3)) $(4),$(5)) + cvimg-$(SUBTARGET) linux $(KDIR)/loader-$(SUBTARGET)-$(1).bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-ramfs.bin $(5) $(6) + endef +ifeq ($(CONFIG_MTD_NAND_RTK),y) + define Image/Build/Profile/$(1)/squashfs + $(call Image/BuildLoader,loader-$(SUBTARGET)-$(1),bin,$(call mkcmdline,$(1),$(2),$(3),$(6),$(7)),$(5)) + + cvimg-$(SUBTARGET) linux $(KDIR)/loader-$(SUBTARGET)-$(1).bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin $(5) $(6) + dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin bs=$(BlockSize) conv=sync + cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(KDIR)/root.squashfs-4k > $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin + cvimg-$(SUBTARGET) fix_chksum $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw.bin + rm -rf $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin + endef +else + define Image/Build/Profile/$(1)/squashfs + $(call Image/BuildLoader,loader-$(SUBTARGET)-$(1),bin,$(call mkcmdline,$(1),$(2),$(3),$(6),$(7)),$(5)) + + cvimg-$(SUBTARGET) linux $(KDIR)/loader-$(SUBTARGET)-$(1).bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin $(5) $(6) + echo -n '$(FWHW_VERSION_STRING)' > $(BIN_DIR)/FWHW_FILE + dd if=/dev/zero of=$(BIN_DIR)/FWHW_FILE bs=1 count=0 seek=64 + + dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin bs=4k conv=sync + cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(KDIR)/root.squashfs-4k > $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin + cvimg-$(SUBTARGET) fix_chksum $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-4k-fw.bin + cat $(BIN_DIR)/FWHW_FILE >> $(BIN_DIR)/$(IMG_PREFIX)-$(1)-4k-fw.bin + mv $(BIN_DIR)/$(IMG_PREFIX)-$(1)-4k-fw.bin $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED)).bin + rm -rf $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin + + ifeq ($(1),SP-W2M-AC1200) + dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_64k.bin bs=64k conv=sync + cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_64k.bin $(KDIR)/root.squashfs-64k > $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_64k_cat.bin + cvimg-$(SUBTARGET) fix_chksum $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_64k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-64k-fw.bin + cat $(BIN_DIR)/FWHW_FILE >> $(BIN_DIR)/$(IMG_PREFIX)-$(1)-64k-fw.bin + mv $(BIN_DIR)/$(IMG_PREFIX)-$(1)-64k-fw.bin $(BIN_DIR)/$(IMG_PREFIX)$(if $(PROFILE_SANITIZED),-$(PROFILE_SANITIZED))_64k.bin + rm -rf $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_64k.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_64k_cat.bin + endif + + rm -f $(BIN_DIR)/FWHW_FILE $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin + endef + +endif + SINGLE_PROFILES += $(1) + +endef + +define MultiProfile + + define Image/Build/Profile/$(1)/initramfs + $(foreach p,$(2), + $$(call Image/Build/Profile/$p/initramfs) + ) + endef + + define Image/Build/Profile/$(1)/squashfs + $(foreach p,$(2), + $$(call Image/Build/Profile/$p/squashfs) + ) + endef + +endef + +define Image/Prepare + lzma e $(KDIR)/vmlinux -lc1 -lp2 -pb2 $(KDIR)/vmlinux.bin.lzma +endef + +LOADER_MAKE := $(NO_TRACE_MAKE) -C lzma-loader KDIR=$(KDIR) LINUX_DIR=$(LINUX_DIR) + +define Build/Clean + $(LOADER_MAKE) clean +endef + +define Image/BuildLoader + -rm -rf $(KDIR)/lzma-loader + $(LOADER_MAKE) LOADER=$(1).$(2) KERNEL_CMDLINE="$(3)" \ + LZMA_TEXT_START=$(4) LOADADDR=0x80000000 \ + LOADER_DATA="$(KDIR)/vmlinux.bin.lzma" BOARD="$(1)" \ + compile loader.$(2) +endef + +# +# rtl819xd profiles +# +# 98c move default linux 60000 +ifeq ($(CONFIG_TARGET_rtkmips_rtl8198c),y) +# linun partition offset = 0x6000 +# hw setting parttion offset = 0x20000 +ifeq ($(CONFIG_MTD_NAND_RTK),y) +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock3,0x80500000,800000,0)) +else +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +endif +endif + +ifeq ($(CONFIG_TARGET_rtkmips_rtl8954e),y) +# linun partition offset = 0x6000 +# hw setting parttion offset = 0x20000 +ifeq ($(CONFIG_MTD_NAND_RTK),y) +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock3,0x80500000,800000,0)) +else +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +endif +endif + +ifeq ($(CONFIG_TARGET_rtkmipsel_rtl8197f),y) +# linun partition offset = 0x6000 +# hw setting parttion offset = 0x20000 +ifeq ($(CONFIG_MTD_NAND_RTK),y) +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock3,0x80500000,800000,0)) +else +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +$(eval $(call SingleProfile,rtk_IOT,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +$(eval $(call SingleProfile,SP-W2M-AC1200,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +$(eval $(call SingleProfile,SP-W2M-AC1200-POE,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +endif +endif + + +# + +# RAMFS +define Image/Build/Initramfs + $(call Image/Build/Profile/$(PROFILE)/initramfs) +endef + +# SQUASHFS +ifeq ($(CONFIG_MTD_NAND_RTK),y) +define Image/Build + dd if=$(KDIR)/root.squashfs of=$(KDIR)/root.squashfs-4k bs=$(BlockSize) conv=sync + $(call add_jffs2_mark,$(KDIR)/root.squashfs-4k) + $(call Image/Build/Profile/$(PROFILE)/squashfs) +endef +else +define Image/Build + dd if=$(KDIR)/root.squashfs of=$(KDIR)/root.squashfs-4k bs=4k conv=sync + $(call add_jffs2_mark,$(KDIR)/root.squashfs-4k) + dd if=$(KDIR)/root.squashfs of=$(KDIR)/root.squashfs-64k bs=64k conv=sync + $(call add_jffs2_mark,$(KDIR)/root.squashfs-64k) + $(call Image/Build/Profile/$(PROFILE)/squashfs) +endef +endif + +$(eval $(call BuildImage)) diff --git a/feeds/rtkmipsel/rtkmipsel/image/Makefile.new b/feeds/rtkmipsel/rtkmipsel/image/Makefile.new new file mode 100755 index 000000000..136f59603 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/Makefile.new @@ -0,0 +1,147 @@ +# +# Copyright (C) 2006-2010 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/image.mk + +BlockSize=128k +ifeq ($(CONFIG_MTD_NAND_RTK_BLOCK_SIZE),0x80000) +BlockSize=512k +endif +ifeq ($(CONFIG_MTD_NAND_RTK_BLOCK_SIZE),0x20000) +BlockSize=128k +endif + +define mkcmdline +board=$(1) console=$(2),$(3) linuxpart=0x$(4) hwpart=0x$(5) +endef + +SINGLE_PROFILES := + +define SingleProfile + + define Image/Build/Profile/$(1)/initramfs + $(call Image/BuildLoader,loader-$(SUBTARGET)-$(1),bin,$(call mkcmdline,$(1),$(2),$(3)) $(4),$(5)) + cvimg-$(SUBTARGET) linux $(KDIR)/loader-$(SUBTARGET)-$(1).bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-ramfs.bin $(5) $(6) + endef +ifeq ($(CONFIG_MTD_NAND_RTK),y) + define Image/Build/Profile/$(1)/squashfs + $(call Image/BuildLoader,loader-$(SUBTARGET)-$(1),bin,$(call mkcmdline,$(1),$(2),$(3),$(6),$(7)),$(5)) + + cvimg-$(SUBTARGET) linux $(KDIR)/loader-$(SUBTARGET)-$(1).bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin $(5) $(6) + dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin bs=$(BlockSize) conv=sync + cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(KDIR)/root.squashfs-4k > $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin + cvimg-$(SUBTARGET) fix_chksum $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw.bin + rm -rf $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin + endef +else + define Image/Build/Profile/$(1)/squashfs + $(call Image/BuildLoader,loader-$(SUBTARGET)-$(1),bin,$(call mkcmdline,$(1),$(2),$(3),$(6),$(7)),$(5)) + + cvimg-$(SUBTARGET) linux $(KDIR)/loader-$(SUBTARGET)-$(1).bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin $(5) $(6) + dd if=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin of=$(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin bs=4k conv=sync + cat $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(KDIR)/root.squashfs-4k > $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin + cvimg-$(SUBTARGET) fix_chksum $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw.bin + rm -rf $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux_4k.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-fw_4k_cat.bin $(BIN_DIR)/$(IMG_PREFIX)-$(1)-linux.bin + endef + +endif + SINGLE_PROFILES += $(1) + +endef + +define MultiProfile + + define Image/Build/Profile/$(1)/initramfs + $(foreach p,$(2), + $$(call Image/Build/Profile/$p/initramfs) + ) + endef + + define Image/Build/Profile/$(1)/squashfs + $(foreach p,$(2), + $$(call Image/Build/Profile/$p/squashfs) + ) + endef + +endef + +define Image/Prepare + lzma e $(KDIR)/vmlinux -lc1 -lp2 -pb2 $(KDIR)/vmlinux.bin.lzma +endef + +LOADER_MAKE := $(NO_TRACE_MAKE) -C lzma-loader KDIR=$(KDIR) LINUX_DIR=$(LINUX_DIR) + +define Build/Clean + $(LOADER_MAKE) clean +endef + +define Image/BuildLoader + -rm -rf $(KDIR)/lzma-loader + $(LOADER_MAKE) LOADER=$(1).$(2) KERNEL_CMDLINE="$(3)" \ + LZMA_TEXT_START=$(4) LOADADDR=0x80000000 \ + LOADER_DATA="$(KDIR)/vmlinux.bin.lzma" BOARD="$(1)" \ + compile loader.$(2) +endef + +# +# rtl819xd profiles +# +# 98c move default linux 60000 +ifeq ($(CONFIG_TARGET_rtkmips_rtl8198c),y) +# linun partition offset = 0x6000 +# hw setting parttion offset = 0x20000 +ifeq ($(CONFIG_MTD_NAND_RTK),y) +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock3,0x80500000,800000,0)) +else +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +endif +endif + +ifeq ($(CONFIG_TARGET_rtkmips_rtl8954e),y) +# linun partition offset = 0x6000 +# hw setting parttion offset = 0x20000 +ifeq ($(CONFIG_MTD_NAND_RTK),y) +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock3,0x80500000,800000,0)) +else +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +endif +endif + +ifeq ($(CONFIG_TARGET_rtkmips_rtl8197f),y) +# linun partition offset = 0x6000 +# hw setting parttion offset = 0x20000 +ifeq ($(CONFIG_MTD_NAND_RTK),y) +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock3,0x80500000,800000,0)) +else +$(eval $(call SingleProfile,AP,ttyS0,38400,root=/dev/mtdblock2,0x80500000,60000,20000)) +endif +endif + + +# + +# RAMFS +define Image/Build/Initramfs + $(call Image/Build/Profile/$(PROFILE)/initramfs) +endef + +# SQUASHFS +ifeq ($(CONFIG_MTD_NAND_RTK),y) +define Image/Build + dd if=$(KDIR)/root.squashfs of=$(KDIR)/root.squashfs-4k bs=$(BlockSize) conv=sync + $(call add_jffs2_mark,$(KDIR)/root.squashfs-4k) + $(call Image/Build/Profile/$(PROFILE)/squashfs) +endef +else +define Image/Build + dd if=$(KDIR)/root.squashfs of=$(KDIR)/root.squashfs-4k bs=4k conv=sync + $(call add_jffs2_mark,$(KDIR)/root.squashfs-4k) + $(call Image/Build/Profile/$(PROFILE)/squashfs) +endef +endif + +$(eval $(call BuildImage)) diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/Makefile b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/Makefile new file mode 100755 index 000000000..2e0b9111f --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/Makefile @@ -0,0 +1,64 @@ +# +# Copyright (C) 2011 OpenWrt.org +# Copyright (C) 2011 Gabor Juhos +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +LZMA_TEXT_START := 0x80a00000 +LOADER := loader.bin +LOADER_NAME := $(basename $(notdir $(LOADER))) +LOADER_DATA := +TARGET_DIR := +FLASH_OFFS := +FLASH_MAX := +BOARD := + +ifeq ($(TARGET_DIR),) +TARGET_DIR := $(KDIR) +endif + +LOADER_BIN := $(TARGET_DIR)/$(LOADER_NAME).bin +LOADER_GZ := $(TARGET_DIR)/$(LOADER_NAME).gz +LOADER_ELF := $(TARGET_DIR)/$(LOADER_NAME).elf + +PKG_NAME := lzma-loader +PKG_BUILD_DIR := $(KDIR)/$(PKG_NAME) + +.PHONY : loader-compile loader.bin loader.elf loader.gz + +$(PKG_BUILD_DIR)/.prepared: + mkdir $(PKG_BUILD_DIR) + $(CP) ./src/* $(PKG_BUILD_DIR)/ + touch $@ + +loader-compile: $(PKG_BUILD_DIR)/.prepared + $(MAKE) -C $(PKG_BUILD_DIR) CROSS_COMPILE="$(TARGET_CROSS)" \ + LZMA_TEXT_START=$(LZMA_TEXT_START) \ + LOADER_DATA=$(LOADER_DATA) \ + FLASH_OFFS=$(FLASH_OFFS) \ + FLASH_MAX=$(FLASH_MAX) \ + BOARD="$(BOARD)" \ + clean all + +loader.gz: $(PKG_BUILD_DIR)/loader.bin + gzip -nc9 $< > $(LOADER_GZ) + +loader.elf: $(PKG_BUILD_DIR)/loader.elf + $(CP) $< $(LOADER_ELF) + +loader.bin: $(PKG_BUILD_DIR)/loader.bin + $(CP) $< $(LOADER_BIN) + +download: +prepare: $(PKG_BUILD_DIR)/.prepared +compile: loader-compile + +install: + +clean: + rm -rf $(PKG_BUILD_DIR) + diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaDecode.c b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaDecode.c new file mode 100755 index 000000000..cb8345377 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaDecode.c @@ -0,0 +1,584 @@ +/* + LzmaDecode.c + LZMA Decoder (optimized for Speed version) + + LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01) + http://www.7-zip.org/ + + LZMA SDK is licensed under two licenses: + 1) GNU Lesser General Public License (GNU LGPL) + 2) Common Public License (CPL) + It means that you can select one of these two licenses and + follow rules of that license. + + SPECIAL EXCEPTION: + Igor Pavlov, as the author of this Code, expressly permits you to + statically or dynamically link your Code (or bind by name) to the + interfaces of this file without subjecting your linked Code to the + terms of the CPL or GNU LGPL. Any modifications or additions + to this file, however, are subject to the LGPL or CPL terms. +*/ + +#include "LzmaDecode.h" + +#define kNumTopBits 24 +#define kTopValue ((UInt32)1 << kNumTopBits) + +#define kNumBitModelTotalBits 11 +#define kBitModelTotal (1 << kNumBitModelTotalBits) +#define kNumMoveBits 5 + +#define RC_READ_BYTE (*Buffer++) + +#define RC_INIT2 Code = 0; Range = 0xFFFFFFFF; \ + { int i; for(i = 0; i < 5; i++) { RC_TEST; Code = (Code << 8) | RC_READ_BYTE; }} + +#ifdef _LZMA_IN_CB + +#define RC_TEST { if (Buffer == BufferLim) \ + { SizeT size; int result = InCallback->Read(InCallback, &Buffer, &size); if (result != LZMA_RESULT_OK) return result; \ + BufferLim = Buffer + size; if (size == 0) return LZMA_RESULT_DATA_ERROR; }} + +#define RC_INIT Buffer = BufferLim = 0; RC_INIT2 + +#else + +#define RC_TEST { if (Buffer == BufferLim) return LZMA_RESULT_DATA_ERROR; } + +#define RC_INIT(buffer, bufferSize) Buffer = buffer; BufferLim = buffer + bufferSize; RC_INIT2 + +#endif + +#define RC_NORMALIZE if (Range < kTopValue) { RC_TEST; Range <<= 8; Code = (Code << 8) | RC_READ_BYTE; } + +#define IfBit0(p) RC_NORMALIZE; bound = (Range >> kNumBitModelTotalBits) * *(p); if (Code < bound) +#define UpdateBit0(p) Range = bound; *(p) += (kBitModelTotal - *(p)) >> kNumMoveBits; +#define UpdateBit1(p) Range -= bound; Code -= bound; *(p) -= (*(p)) >> kNumMoveBits; + +#define RC_GET_BIT2(p, mi, A0, A1) IfBit0(p) \ + { UpdateBit0(p); mi <<= 1; A0; } else \ + { UpdateBit1(p); mi = (mi + mi) + 1; A1; } + +#define RC_GET_BIT(p, mi) RC_GET_BIT2(p, mi, ; , ;) + +#define RangeDecoderBitTreeDecode(probs, numLevels, res) \ + { int i = numLevels; res = 1; \ + do { CProb *p = probs + res; RC_GET_BIT(p, res) } while(--i != 0); \ + res -= (1 << numLevels); } + + +#define kNumPosBitsMax 4 +#define kNumPosStatesMax (1 << kNumPosBitsMax) + +#define kLenNumLowBits 3 +#define kLenNumLowSymbols (1 << kLenNumLowBits) +#define kLenNumMidBits 3 +#define kLenNumMidSymbols (1 << kLenNumMidBits) +#define kLenNumHighBits 8 +#define kLenNumHighSymbols (1 << kLenNumHighBits) + +#define LenChoice 0 +#define LenChoice2 (LenChoice + 1) +#define LenLow (LenChoice2 + 1) +#define LenMid (LenLow + (kNumPosStatesMax << kLenNumLowBits)) +#define LenHigh (LenMid + (kNumPosStatesMax << kLenNumMidBits)) +#define kNumLenProbs (LenHigh + kLenNumHighSymbols) + + +#define kNumStates 12 +#define kNumLitStates 7 + +#define kStartPosModelIndex 4 +#define kEndPosModelIndex 14 +#define kNumFullDistances (1 << (kEndPosModelIndex >> 1)) + +#define kNumPosSlotBits 6 +#define kNumLenToPosStates 4 + +#define kNumAlignBits 4 +#define kAlignTableSize (1 << kNumAlignBits) + +#define kMatchMinLen 2 + +#define IsMatch 0 +#define IsRep (IsMatch + (kNumStates << kNumPosBitsMax)) +#define IsRepG0 (IsRep + kNumStates) +#define IsRepG1 (IsRepG0 + kNumStates) +#define IsRepG2 (IsRepG1 + kNumStates) +#define IsRep0Long (IsRepG2 + kNumStates) +#define PosSlot (IsRep0Long + (kNumStates << kNumPosBitsMax)) +#define SpecPos (PosSlot + (kNumLenToPosStates << kNumPosSlotBits)) +#define Align (SpecPos + kNumFullDistances - kEndPosModelIndex) +#define LenCoder (Align + kAlignTableSize) +#define RepLenCoder (LenCoder + kNumLenProbs) +#define Literal (RepLenCoder + kNumLenProbs) + +#if Literal != LZMA_BASE_SIZE +StopCompilingDueBUG +#endif + +int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size) +{ + unsigned char prop0; + if (size < LZMA_PROPERTIES_SIZE) + return LZMA_RESULT_DATA_ERROR; + prop0 = propsData[0]; + if (prop0 >= (9 * 5 * 5)) + return LZMA_RESULT_DATA_ERROR; + { + for (propsRes->pb = 0; prop0 >= (9 * 5); propsRes->pb++, prop0 -= (9 * 5)); + for (propsRes->lp = 0; prop0 >= 9; propsRes->lp++, prop0 -= 9); + propsRes->lc = prop0; + /* + unsigned char remainder = (unsigned char)(prop0 / 9); + propsRes->lc = prop0 % 9; + propsRes->pb = remainder / 5; + propsRes->lp = remainder % 5; + */ + } + + #ifdef _LZMA_OUT_READ + { + int i; + propsRes->DictionarySize = 0; + for (i = 0; i < 4; i++) + propsRes->DictionarySize += (UInt32)(propsData[1 + i]) << (i * 8); + if (propsRes->DictionarySize == 0) + propsRes->DictionarySize = 1; + } + #endif + return LZMA_RESULT_OK; +} + +#define kLzmaStreamWasFinishedId (-1) + +int LzmaDecode(CLzmaDecoderState *vs, + #ifdef _LZMA_IN_CB + ILzmaInCallback *InCallback, + #else + const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed, + #endif + unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed) +{ + CProb *p = vs->Probs; + SizeT nowPos = 0; + Byte previousByte = 0; + UInt32 posStateMask = (1 << (vs->Properties.pb)) - 1; + UInt32 literalPosMask = (1 << (vs->Properties.lp)) - 1; + int lc = vs->Properties.lc; + + #ifdef _LZMA_OUT_READ + + UInt32 Range = vs->Range; + UInt32 Code = vs->Code; + #ifdef _LZMA_IN_CB + const Byte *Buffer = vs->Buffer; + const Byte *BufferLim = vs->BufferLim; + #else + const Byte *Buffer = inStream; + const Byte *BufferLim = inStream + inSize; + #endif + int state = vs->State; + UInt32 rep0 = vs->Reps[0], rep1 = vs->Reps[1], rep2 = vs->Reps[2], rep3 = vs->Reps[3]; + int len = vs->RemainLen; + UInt32 globalPos = vs->GlobalPos; + UInt32 distanceLimit = vs->DistanceLimit; + + Byte *dictionary = vs->Dictionary; + UInt32 dictionarySize = vs->Properties.DictionarySize; + UInt32 dictionaryPos = vs->DictionaryPos; + + Byte tempDictionary[4]; + + #ifndef _LZMA_IN_CB + *inSizeProcessed = 0; + #endif + *outSizeProcessed = 0; + if (len == kLzmaStreamWasFinishedId) + return LZMA_RESULT_OK; + + if (dictionarySize == 0) + { + dictionary = tempDictionary; + dictionarySize = 1; + tempDictionary[0] = vs->TempDictionary[0]; + } + + if (len == kLzmaNeedInitId) + { + { + UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp)); + UInt32 i; + for (i = 0; i < numProbs; i++) + p[i] = kBitModelTotal >> 1; + rep0 = rep1 = rep2 = rep3 = 1; + state = 0; + globalPos = 0; + distanceLimit = 0; + dictionaryPos = 0; + dictionary[dictionarySize - 1] = 0; + #ifdef _LZMA_IN_CB + RC_INIT; + #else + RC_INIT(inStream, inSize); + #endif + } + len = 0; + } + while(len != 0 && nowPos < outSize) + { + UInt32 pos = dictionaryPos - rep0; + if (pos >= dictionarySize) + pos += dictionarySize; + outStream[nowPos++] = dictionary[dictionaryPos] = dictionary[pos]; + if (++dictionaryPos == dictionarySize) + dictionaryPos = 0; + len--; + } + if (dictionaryPos == 0) + previousByte = dictionary[dictionarySize - 1]; + else + previousByte = dictionary[dictionaryPos - 1]; + + #else /* if !_LZMA_OUT_READ */ + + int state = 0; + UInt32 rep0 = 1, rep1 = 1, rep2 = 1, rep3 = 1; + int len = 0; + const Byte *Buffer; + const Byte *BufferLim; + UInt32 Range; + UInt32 Code; + + #ifndef _LZMA_IN_CB + *inSizeProcessed = 0; + #endif + *outSizeProcessed = 0; + + { + UInt32 i; + UInt32 numProbs = Literal + ((UInt32)LZMA_LIT_SIZE << (lc + vs->Properties.lp)); + for (i = 0; i < numProbs; i++) + p[i] = kBitModelTotal >> 1; + } + + #ifdef _LZMA_IN_CB + RC_INIT; + #else + RC_INIT(inStream, inSize); + #endif + + #endif /* _LZMA_OUT_READ */ + + while(nowPos < outSize) + { + CProb *prob; + UInt32 bound; + int posState = (int)( + (nowPos + #ifdef _LZMA_OUT_READ + + globalPos + #endif + ) + & posStateMask); + + prob = p + IsMatch + (state << kNumPosBitsMax) + posState; + IfBit0(prob) + { + int symbol = 1; + UpdateBit0(prob) + prob = p + Literal + (LZMA_LIT_SIZE * + ((( + (nowPos + #ifdef _LZMA_OUT_READ + + globalPos + #endif + ) + & literalPosMask) << lc) + (previousByte >> (8 - lc)))); + + if (state >= kNumLitStates) + { + int matchByte; + #ifdef _LZMA_OUT_READ + UInt32 pos = dictionaryPos - rep0; + if (pos >= dictionarySize) + pos += dictionarySize; + matchByte = dictionary[pos]; + #else + matchByte = outStream[nowPos - rep0]; + #endif + do + { + int bit; + CProb *probLit; + matchByte <<= 1; + bit = (matchByte & 0x100); + probLit = prob + 0x100 + bit + symbol; + RC_GET_BIT2(probLit, symbol, if (bit != 0) break, if (bit == 0) break) + } + while (symbol < 0x100); + } + while (symbol < 0x100) + { + CProb *probLit = prob + symbol; + RC_GET_BIT(probLit, symbol) + } + previousByte = (Byte)symbol; + + outStream[nowPos++] = previousByte; + #ifdef _LZMA_OUT_READ + if (distanceLimit < dictionarySize) + distanceLimit++; + + dictionary[dictionaryPos] = previousByte; + if (++dictionaryPos == dictionarySize) + dictionaryPos = 0; + #endif + if (state < 4) state = 0; + else if (state < 10) state -= 3; + else state -= 6; + } + else + { + UpdateBit1(prob); + prob = p + IsRep + state; + IfBit0(prob) + { + UpdateBit0(prob); + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + state = state < kNumLitStates ? 0 : 3; + prob = p + LenCoder; + } + else + { + UpdateBit1(prob); + prob = p + IsRepG0 + state; + IfBit0(prob) + { + UpdateBit0(prob); + prob = p + IsRep0Long + (state << kNumPosBitsMax) + posState; + IfBit0(prob) + { + #ifdef _LZMA_OUT_READ + UInt32 pos; + #endif + UpdateBit0(prob); + + #ifdef _LZMA_OUT_READ + if (distanceLimit == 0) + #else + if (nowPos == 0) + #endif + return LZMA_RESULT_DATA_ERROR; + + state = state < kNumLitStates ? 9 : 11; + #ifdef _LZMA_OUT_READ + pos = dictionaryPos - rep0; + if (pos >= dictionarySize) + pos += dictionarySize; + previousByte = dictionary[pos]; + dictionary[dictionaryPos] = previousByte; + if (++dictionaryPos == dictionarySize) + dictionaryPos = 0; + #else + previousByte = outStream[nowPos - rep0]; + #endif + outStream[nowPos++] = previousByte; + #ifdef _LZMA_OUT_READ + if (distanceLimit < dictionarySize) + distanceLimit++; + #endif + + continue; + } + else + { + UpdateBit1(prob); + } + } + else + { + UInt32 distance; + UpdateBit1(prob); + prob = p + IsRepG1 + state; + IfBit0(prob) + { + UpdateBit0(prob); + distance = rep1; + } + else + { + UpdateBit1(prob); + prob = p + IsRepG2 + state; + IfBit0(prob) + { + UpdateBit0(prob); + distance = rep2; + } + else + { + UpdateBit1(prob); + distance = rep3; + rep3 = rep2; + } + rep2 = rep1; + } + rep1 = rep0; + rep0 = distance; + } + state = state < kNumLitStates ? 8 : 11; + prob = p + RepLenCoder; + } + { + int numBits, offset; + CProb *probLen = prob + LenChoice; + IfBit0(probLen) + { + UpdateBit0(probLen); + probLen = prob + LenLow + (posState << kLenNumLowBits); + offset = 0; + numBits = kLenNumLowBits; + } + else + { + UpdateBit1(probLen); + probLen = prob + LenChoice2; + IfBit0(probLen) + { + UpdateBit0(probLen); + probLen = prob + LenMid + (posState << kLenNumMidBits); + offset = kLenNumLowSymbols; + numBits = kLenNumMidBits; + } + else + { + UpdateBit1(probLen); + probLen = prob + LenHigh; + offset = kLenNumLowSymbols + kLenNumMidSymbols; + numBits = kLenNumHighBits; + } + } + RangeDecoderBitTreeDecode(probLen, numBits, len); + len += offset; + } + + if (state < 4) + { + int posSlot; + state += kNumLitStates; + prob = p + PosSlot + + ((len < kNumLenToPosStates ? len : kNumLenToPosStates - 1) << + kNumPosSlotBits); + RangeDecoderBitTreeDecode(prob, kNumPosSlotBits, posSlot); + if (posSlot >= kStartPosModelIndex) + { + int numDirectBits = ((posSlot >> 1) - 1); + rep0 = (2 | ((UInt32)posSlot & 1)); + if (posSlot < kEndPosModelIndex) + { + rep0 <<= numDirectBits; + prob = p + SpecPos + rep0 - posSlot - 1; + } + else + { + numDirectBits -= kNumAlignBits; + do + { + RC_NORMALIZE + Range >>= 1; + rep0 <<= 1; + if (Code >= Range) + { + Code -= Range; + rep0 |= 1; + } + } + while (--numDirectBits != 0); + prob = p + Align; + rep0 <<= kNumAlignBits; + numDirectBits = kNumAlignBits; + } + { + int i = 1; + int mi = 1; + do + { + CProb *prob3 = prob + mi; + RC_GET_BIT2(prob3, mi, ; , rep0 |= i); + i <<= 1; + } + while(--numDirectBits != 0); + } + } + else + rep0 = posSlot; + if (++rep0 == (UInt32)(0)) + { + /* it's for stream version */ + len = kLzmaStreamWasFinishedId; + break; + } + } + + len += kMatchMinLen; + #ifdef _LZMA_OUT_READ + if (rep0 > distanceLimit) + #else + if (rep0 > nowPos) + #endif + return LZMA_RESULT_DATA_ERROR; + + #ifdef _LZMA_OUT_READ + if (dictionarySize - distanceLimit > (UInt32)len) + distanceLimit += len; + else + distanceLimit = dictionarySize; + #endif + + do + { + #ifdef _LZMA_OUT_READ + UInt32 pos = dictionaryPos - rep0; + if (pos >= dictionarySize) + pos += dictionarySize; + previousByte = dictionary[pos]; + dictionary[dictionaryPos] = previousByte; + if (++dictionaryPos == dictionarySize) + dictionaryPos = 0; + #else + previousByte = outStream[nowPos - rep0]; + #endif + len--; + outStream[nowPos++] = previousByte; + } + while(len != 0 && nowPos < outSize); + } + } + RC_NORMALIZE; + + #ifdef _LZMA_OUT_READ + vs->Range = Range; + vs->Code = Code; + vs->DictionaryPos = dictionaryPos; + vs->GlobalPos = globalPos + (UInt32)nowPos; + vs->DistanceLimit = distanceLimit; + vs->Reps[0] = rep0; + vs->Reps[1] = rep1; + vs->Reps[2] = rep2; + vs->Reps[3] = rep3; + vs->State = state; + vs->RemainLen = len; + vs->TempDictionary[0] = tempDictionary[0]; + #endif + + #ifdef _LZMA_IN_CB + vs->Buffer = Buffer; + vs->BufferLim = BufferLim; + #else + *inSizeProcessed = (SizeT)(Buffer - inStream); + #endif + *outSizeProcessed = nowPos; + return LZMA_RESULT_OK; +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaDecode.h b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaDecode.h new file mode 100755 index 000000000..2870eeb9c --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaDecode.h @@ -0,0 +1,113 @@ +/* + LzmaDecode.h + LZMA Decoder interface + + LZMA SDK 4.40 Copyright (c) 1999-2006 Igor Pavlov (2006-05-01) + http://www.7-zip.org/ + + LZMA SDK is licensed under two licenses: + 1) GNU Lesser General Public License (GNU LGPL) + 2) Common Public License (CPL) + It means that you can select one of these two licenses and + follow rules of that license. + + SPECIAL EXCEPTION: + Igor Pavlov, as the author of this code, expressly permits you to + statically or dynamically link your code (or bind by name) to the + interfaces of this file without subjecting your linked code to the + terms of the CPL or GNU LGPL. Any modifications or additions + to this file, however, are subject to the LGPL or CPL terms. +*/ + +#ifndef __LZMADECODE_H +#define __LZMADECODE_H + +#include "LzmaTypes.h" + +/* #define _LZMA_IN_CB */ +/* Use callback for input data */ + +/* #define _LZMA_OUT_READ */ +/* Use read function for output data */ + +/* #define _LZMA_PROB32 */ +/* It can increase speed on some 32-bit CPUs, + but memory usage will be doubled in that case */ + +/* #define _LZMA_LOC_OPT */ +/* Enable local speed optimizations inside code */ + +#ifdef _LZMA_PROB32 +#define CProb UInt32 +#else +#define CProb UInt16 +#endif + +#define LZMA_RESULT_OK 0 +#define LZMA_RESULT_DATA_ERROR 1 + +#ifdef _LZMA_IN_CB +typedef struct _ILzmaInCallback +{ + int (*Read)(void *object, const unsigned char **buffer, SizeT *bufferSize); +} ILzmaInCallback; +#endif + +#define LZMA_BASE_SIZE 1846 +#define LZMA_LIT_SIZE 768 + +#define LZMA_PROPERTIES_SIZE 5 + +typedef struct _CLzmaProperties +{ + int lc; + int lp; + int pb; + #ifdef _LZMA_OUT_READ + UInt32 DictionarySize; + #endif +}CLzmaProperties; + +int LzmaDecodeProperties(CLzmaProperties *propsRes, const unsigned char *propsData, int size); + +#define LzmaGetNumProbs(Properties) (LZMA_BASE_SIZE + (LZMA_LIT_SIZE << ((Properties)->lc + (Properties)->lp))) + +#define kLzmaNeedInitId (-2) + +typedef struct _CLzmaDecoderState +{ + CLzmaProperties Properties; + CProb *Probs; + + #ifdef _LZMA_IN_CB + const unsigned char *Buffer; + const unsigned char *BufferLim; + #endif + + #ifdef _LZMA_OUT_READ + unsigned char *Dictionary; + UInt32 Range; + UInt32 Code; + UInt32 DictionaryPos; + UInt32 GlobalPos; + UInt32 DistanceLimit; + UInt32 Reps[4]; + int State; + int RemainLen; + unsigned char TempDictionary[4]; + #endif +} CLzmaDecoderState; + +#ifdef _LZMA_OUT_READ +#define LzmaDecoderInit(vs) { (vs)->RemainLen = kLzmaNeedInitId; } +#endif + +int LzmaDecode(CLzmaDecoderState *vs, + #ifdef _LZMA_IN_CB + ILzmaInCallback *inCallback, + #else + const unsigned char *inStream, SizeT inSize, SizeT *inSizeProcessed, + #endif + unsigned char *outStream, SizeT outSize, SizeT *outSizeProcessed); + +#endif diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaTypes.h b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaTypes.h new file mode 100755 index 000000000..9c2729075 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/LzmaTypes.h @@ -0,0 +1,45 @@ +/* +LzmaTypes.h + +Types for LZMA Decoder + +This file written and distributed to public domain by Igor Pavlov. +This file is part of LZMA SDK 4.40 (2006-05-01) +*/ + +#ifndef __LZMATYPES_H +#define __LZMATYPES_H + +#ifndef _7ZIP_BYTE_DEFINED +#define _7ZIP_BYTE_DEFINED +typedef unsigned char Byte; +#endif + +#ifndef _7ZIP_UINT16_DEFINED +#define _7ZIP_UINT16_DEFINED +typedef unsigned short UInt16; +#endif + +#ifndef _7ZIP_UINT32_DEFINED +#define _7ZIP_UINT32_DEFINED +#ifdef _LZMA_UINT32_IS_ULONG +typedef unsigned long UInt32; +#else +typedef unsigned int UInt32; +#endif +#endif + +/* #define _LZMA_NO_SYSTEM_SIZE_T */ +/* You can use it, if you don't want */ + +#ifndef _7ZIP_SIZET_DEFINED +#define _7ZIP_SIZET_DEFINED +#ifdef _LZMA_NO_SYSTEM_SIZE_T +typedef UInt32 SizeT; +#else +#include +typedef size_t SizeT; +#endif +#endif + +#endif diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/Makefile b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/Makefile new file mode 100755 index 000000000..c7bb935a0 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/Makefile @@ -0,0 +1,113 @@ +# +# Makefile for the LZMA compressed kernel loader for +# Atheros AR7XXX/AR9XXX based boards +# +# Copyright (C) 2011 Gabor Juhos +# +# Some parts of this file was based on the OpenWrt specific lzma-loader +# for the BCM47xx and ADM5120 based boards: +# Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org) +# Copyright (C) 2005 Mineharu Takahara +# Copyright (C) 2005 by Oleg I. Vdovikin +# +# This program is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 as published +# by the Free Software Foundation. +# + +LOADADDR := +LZMA_TEXT_START := 0x80a00000 +LOADER_DATA := +KERNEL_MAGIC := +BOARD := +FLASH_OFFS := +FLASH_MAX := + +CC := $(CROSS_COMPILE)gcc +LD := $(CROSS_COMPILE)ld +OBJCOPY := $(CROSS_COMPILE)objcopy +OBJDUMP := $(CROSS_COMPILE)objdump + +BIN_FLAGS := -O binary -R .reginfo -R .note -R .comment -R .mdebug \ + -R .MIPS.abiflags -S + +CFLAGS = -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \ + -fno-strict-aliasing -fno-common -fomit-frame-pointer -G 0 \ + -mno-abicalls -fno-pic -ffunction-sections -pipe -mlong-calls \ + -fno-common -ffreestanding -fhonour-copts -nostartfiles \ + -mabi=32 -march=mips32r2 \ + -Wa,-32 -Wa,-march=mips32r2 -Wa,-mips32r2 -Wa,--trap +CFLAGS += -D_LZMA_PROB32 +CFLAGS += -flto + +ASFLAGS = $(CFLAGS) -D__ASSEMBLY__ + +LDFLAGS = -static -Wl,--gc-sections -Wl,-no-warn-mismatch +LDFLAGS += -Wl,-e,startup -T loader.lds -Wl,-Ttext,$(LZMA_TEXT_START) +LDFLAGS += -flto -fwhole-program + +O_FORMAT = $(shell $(OBJDUMP) -i | head -2 | grep elf32) + +OBJECTS := head.o loader.o cache.o board.o printf.o LzmaDecode.o + +ifneq ($(strip $(LOADER_DATA)),) +OBJECTS += data.o +CFLAGS += -DLZMA_WRAPPER=1 -DLOADADDR=$(LOADADDR) +endif + +ifneq ($(strip $(KERNEL_MAGIC)),) +CFLAGS += -DCONFIG_KERNEL_MAGIC=$(KERNEL_MAGIC) +endif + +ifneq ($(strip $(KERNEL_CMDLINE)),) +CFLAGS += -DCONFIG_KERNEL_CMDLINE='"$(KERNEL_CMDLINE)"' +endif + +ifneq ($(strip $(FLASH_OFFS)),) +CFLAGS += -DCONFIG_FLASH_OFFS=$(FLASH_OFFS) +endif + +ifneq ($(strip $(FLASH_MAX)),) +CFLAGS += -DCONFIG_FLASH_MAX=$(FLASH_MAX) +endif + +BOARD_DEF := $(shell echo $(strip $(BOARD)) | tr a-z A-Z | tr - _) +ifneq ($(BOARD_DEF),) +CFLAGS += -DCONFIG_BOARD_$(BOARD_DEF) +endif + +all: loader.elf + +# Don't build dependencies, this may die if $(CC) isn't gcc +dep: + +install: + +%.o : %.c + $(CC) $(CFLAGS) -c -o $@ $< + +%.o : %.S + $(CC) $(ASFLAGS) -c -o $@ $< + +data.o: $(LOADER_DATA) + $(LD) -r -b binary --oformat $(O_FORMAT) -T lzma-data.lds -o $@ $< + +loader: $(OBJECTS) + $(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJECTS) + +loader.bin: loader + $(OBJCOPY) $(BIN_FLAGS) $< $@ + +loader2.o: loader.bin + $(LD) -r -b binary --oformat $(O_FORMAT) -o $@ $< + +loader.elf: loader2.o + $(LD) -z max-page-size=0x1000 -e startup -T loader2.lds -Ttext $(LOADADDR) -o $@ $< + +mrproper: clean + +clean: + rm -f loader *.elf *.bin *.o + + + diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/board.c b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/board.c new file mode 100755 index 000000000..fe67af549 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/board.c @@ -0,0 +1,43 @@ +/* + * LZMA compressed kernel loader for Realtek 819X + * + * Copyright (C) 2011 Gabor Juhos + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include + +#define BSP_UART0_BASE 0xB8147000 +#define UART_THR (BSP_UART0_BASE + 0x024) +#define UART_LSR (BSP_UART0_BASE + 0x014) +#define REG8(reg) (*(volatile unsigned char *)((unsigned int)reg)) + + +void serial_outc(char c) +{ + int i=0; + + while (1) + { + i++; + if (i >=0x6000) + break; + if (REG8(UART_LSR) & 0x20) + break; + } + REG8(UART_THR) = (c); +} + + +void board_putc(int ch) +{ + serial_outc(ch); +} + +void board_init(void) +{ + //tlwr1043nd_init(); +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cache.c b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cache.c new file mode 100755 index 000000000..28cc84833 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cache.c @@ -0,0 +1,43 @@ +/* + * LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards + * + * Copyright (C) 2011 Gabor Juhos + * + * The cache manipulation routine has been taken from the U-Boot project. + * (C) Copyright 2003 + * Wolfgang Denk, DENX Software Engineering, + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + */ + +#include "cache.h" +#include "cacheops.h" +#include "config.h" + +#define cache_op(op,addr) \ + __asm__ __volatile__( \ + " .set push \n" \ + " .set noreorder \n" \ + " .set mips3\n\t \n" \ + " cache %0, %1 \n" \ + " .set pop \n" \ + : \ + : "i" (op), "R" (*(unsigned char *)(addr))) + +void flush_cache(unsigned long start_addr, unsigned long size) +{ + unsigned long lsize = CONFIG_CACHELINE_SIZE; + unsigned long addr = start_addr & ~(lsize - 1); + unsigned long aend = (start_addr + size - 1) & ~(lsize - 1); + + while (1) { + cache_op(Hit_Writeback_Inv_D, addr); + cache_op(Hit_Invalidate_I, addr); + if (addr == aend) + break; + addr += lsize; + } +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cache.h b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cache.h new file mode 100755 index 000000000..506a23588 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cache.h @@ -0,0 +1,17 @@ +/* + * LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards + * + * Copyright (C) 2011 Gabor Juhos + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + */ + +#ifndef __CACHE_H +#define __CACHE_H + +void flush_cache(unsigned long start_addr, unsigned long size); + +#endif /* __CACHE_H */ diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cacheops.h b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cacheops.h new file mode 100755 index 000000000..70bcad769 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cacheops.h @@ -0,0 +1,85 @@ +/* + * Cache operations for the cache instruction. + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * (C) Copyright 1996, 97, 99, 2002, 03 Ralf Baechle + * (C) Copyright 1999 Silicon Graphics, Inc. + */ +#ifndef __ASM_CACHEOPS_H +#define __ASM_CACHEOPS_H + +/* + * Cache Operations available on all MIPS processors with R4000-style caches + */ +#define Index_Invalidate_I 0x00 +#define Index_Writeback_Inv_D 0x01 +#define Index_Load_Tag_I 0x04 +#define Index_Load_Tag_D 0x05 +#define Index_Store_Tag_I 0x08 +#define Index_Store_Tag_D 0x09 +#if defined(CONFIG_CPU_LOONGSON2) +#define Hit_Invalidate_I 0x00 +#else +#define Hit_Invalidate_I 0x10 +#endif +#define Hit_Invalidate_D 0x11 +#define Hit_Writeback_Inv_D 0x15 + +/* + * R4000-specific cacheops + */ +#define Create_Dirty_Excl_D 0x0d +#define Fill 0x14 +#define Hit_Writeback_I 0x18 +#define Hit_Writeback_D 0x19 + +/* + * R4000SC and R4400SC-specific cacheops + */ +#define Index_Invalidate_SI 0x02 +#define Index_Writeback_Inv_SD 0x03 +#define Index_Load_Tag_SI 0x06 +#define Index_Load_Tag_SD 0x07 +#define Index_Store_Tag_SI 0x0A +#define Index_Store_Tag_SD 0x0B +#define Create_Dirty_Excl_SD 0x0f +#define Hit_Invalidate_SI 0x12 +#define Hit_Invalidate_SD 0x13 +#define Hit_Writeback_Inv_SD 0x17 +#define Hit_Writeback_SD 0x1b +#define Hit_Set_Virtual_SI 0x1e +#define Hit_Set_Virtual_SD 0x1f + +/* + * R5000-specific cacheops + */ +#define R5K_Page_Invalidate_S 0x17 + +/* + * RM7000-specific cacheops + */ +#define Page_Invalidate_T 0x16 + +/* + * R10000-specific cacheops + * + * Cacheops 0x02, 0x06, 0x0a, 0x0c-0x0e, 0x16, 0x1a and 0x1e are unused. + * Most of the _S cacheops are identical to the R4000SC _SD cacheops. + */ +#define Index_Writeback_Inv_S 0x03 +#define Index_Load_Tag_S 0x07 +#define Index_Store_Tag_S 0x0B +#define Hit_Invalidate_S 0x13 +#define Cache_Barrier 0x14 +#define Hit_Writeback_Inv_S 0x17 +#define Index_Load_Data_I 0x18 +#define Index_Load_Data_D 0x19 +#define Index_Load_Data_S 0x1b +#define Index_Store_Data_I 0x1c +#define Index_Store_Data_D 0x1d +#define Index_Store_Data_S 0x1f + +#endif /* __ASM_CACHEOPS_H */ diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/config.h b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/config.h new file mode 100755 index 000000000..15b178475 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/config.h @@ -0,0 +1,34 @@ +/* + * LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards + * + * Copyright (C) 2011 Gabor Juhos + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + * + */ + +#ifndef _CONFIG_H_ +#define _CONFIG_H_ + +//#define CONFIG_ICACHE_SIZE (32 * 1024) +#define CONFIG_ICACHE_SIZE (64 * 1024) +//#define CONFIG_DCACHE_SIZE (64 * 1024) +#define CONFIG_DCACHE_SIZE (32 * 1024) + +#define CONFIG_CACHELINE_SIZE 32 + +#ifndef CONFIG_FLASH_OFFS +#define CONFIG_FLASH_OFFS 0 +#endif + +#ifndef CONFIG_FLASH_MAX +#define CONFIG_FLASH_MAX 0 +#endif + +#ifndef CONFIG_FLASH_STEP +#define CONFIG_FLASH_STEP 0x1000 +#endif + +#endif /* _CONFIG_H_ */ diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cp0regdef.h b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cp0regdef.h new file mode 100755 index 000000000..c1188ad8c --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/cp0regdef.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 1994, 1995, 1996, 1997, 2000, 2001 by Ralf Baechle + * + * Copyright (C) 2001, Monta Vista Software + * Author: jsun@mvista.com or jsun@junsun.net + */ +#ifndef _cp0regdef_h_ +#define _cp0regdef_h_ + +#define CP0_INDEX $0 +#define CP0_RANDOM $1 +#define CP0_ENTRYLO0 $2 +#define CP0_ENTRYLO1 $3 +#define CP0_CONTEXT $4 +#define CP0_PAGEMASK $5 +#define CP0_WIRED $6 +#define CP0_BADVADDR $8 +#define CP0_COUNT $9 +#define CP0_ENTRYHI $10 +#define CP0_COMPARE $11 +#define CP0_STATUS $12 +#define CP0_CAUSE $13 +#define CP0_EPC $14 +#define CP0_PRID $15 +#define CP0_CONFIG $16 +#define CP0_LLADDR $17 +#define CP0_WATCHLO $18 +#define CP0_WATCHHI $19 +#define CP0_XCONTEXT $20 +#define CP0_FRAMEMASK $21 +#define CP0_DIAGNOSTIC $22 +#define CP0_PERFORMANCE $25 +#define CP0_ECC $26 +#define CP0_CACHEERR $27 +#define CP0_TAGLO $28 +#define CP0_TAGHI $29 +#define CP0_ERROREPC $30 + +#endif diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/head.S b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/head.S new file mode 100755 index 000000000..543996a0d --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/head.S @@ -0,0 +1,118 @@ +/* + * LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards + * + * Copyright (C) 2011 Gabor Juhos + * + * Some parts of this code was based on the OpenWrt specific lzma-loader + * for the BCM47xx and ADM5120 based boards: + * Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org) + * Copyright (C) 2005 by Oleg I. Vdovikin + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include +#include +#include "cp0regdef.h" +#include "cacheops.h" +#include "config.h" + +#define KSEG0 0x80000000 + + .macro ehb + sll zero, 3 + .endm + + .text + +LEAF(startup) + .set noreorder + .set mips32 + + mtc0 zero, CP0_WATCHLO # clear watch registers + mtc0 zero, CP0_WATCHHI + mtc0 zero, CP0_CAUSE # clear before writing status register + + mfc0 t0, CP0_STATUS + li t1, 0x1000001f + or t0, t1 + xori t0, 0x1f + mtc0 t0, CP0_STATUS + ehb + + mtc0 zero, CP0_COUNT + mtc0 zero, CP0_COMPARE + ehb + + la t0, __reloc_label # get linked address of label + bal __reloc_label # branch and link to label to + nop # get actual address +__reloc_label: + subu t0, ra, t0 # get reloc_delta + + beqz t0, __reloc_done # if delta is 0 we are in the right place + nop + + /* Copy our code to the right place */ + la t1, _code_start # get linked address of _code_start + la t2, _code_end # get linked address of _code_end + addu t0, t0, t1 # calculate actual address of _code_start + +__reloc_copy: + lw t3, 0(t0) + sw t3, 0(t1) + add t1, 4 + blt t1, t2, __reloc_copy + add t0, 4 + + /* flush cache */ + la t0, _code_start + la t1, _code_end + + li t2, ~(CONFIG_CACHELINE_SIZE - 1) + and t0, t2 + and t1, t2 + li t2, CONFIG_CACHELINE_SIZE + + b __flush_check + nop + +__flush_line: + cache Hit_Writeback_Inv_D, 0(t0) + cache Hit_Invalidate_I, 0(t0) + add t0, t2 + +__flush_check: + bne t0, t1, __flush_line + nop + + sync + +__reloc_done: + + /* clear bss */ + la t0, _bss_start + la t1, _bss_end + b __bss_check + nop + +__bss_fill: + sw zero, 0(t0) + addi t0, 4 + +__bss_check: + bne t0, t1, __bss_fill + nop + + /* Setup new "C" stack */ + la sp, _stack + + /* jump to the decompressor routine */ + la t0, loader_main + jr t0 + nop + + .set reorder +END(startup) diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader.c b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader.c new file mode 100755 index 000000000..b1c1e803c --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader.c @@ -0,0 +1,263 @@ +/* + * LZMA compressed kernel loader for Atheros AR7XXX/AR9XXX based boards + * + * Copyright (C) 2011 Gabor Juhos + * + * Some parts of this code was based on the OpenWrt specific lzma-loader + * for the BCM47xx and ADM5120 based boards: + * Copyright (C) 2004 Manuel Novoa III (mjn3@codepoet.org) + * Copyright (C) 2005 Mineharu Takahara + * Copyright (C) 2005 by Oleg I. Vdovikin + * + * The image_header structure has been taken from the U-Boot project. + * (C) Copyright 2008 Semihalf + * (C) Copyright 2000-2005 + * Wolfgang Denk, DENX Software Engineering, wd@denx.de. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published + * by the Free Software Foundation. + */ + +#include +#include + +#include "config.h" +#include "cache.h" +#include "printf.h" +#include "LzmaDecode.h" + +#define AR71XX_FLASH_START 0x1f000000 +#define AR71XX_FLASH_END 0x1fe00000 + +#define KSEG0 0x80000000 +#define KSEG1 0xa0000000 + +#define KSEG1ADDR(a) ((((unsigned)(a)) & 0x1fffffffU) | KSEG1) + +#undef LZMA_DEBUG + +#ifdef LZMA_DEBUG +# define DBG(f, a...) printf(f, ## a) +#else +# define DBG(f, a...) do {} while (0) +#endif + +#define IH_MAGIC_OKLI 0x4f4b4c49 /* 'OKLI' */ + +#define IH_NMLEN 32 /* Image Name Length */ + +typedef struct image_header { + uint32_t ih_magic; /* Image Header Magic Number */ + uint32_t ih_hcrc; /* Image Header CRC Checksum */ + uint32_t ih_time; /* Image Creation Timestamp */ + uint32_t ih_size; /* Image Data Size */ + uint32_t ih_load; /* Data Load Address */ + uint32_t ih_ep; /* Entry Point Address */ + uint32_t ih_dcrc; /* Image Data CRC Checksum */ + uint8_t ih_os; /* Operating System */ + uint8_t ih_arch; /* CPU architecture */ + uint8_t ih_type; /* Image Type */ + uint8_t ih_comp; /* Compression Type */ + uint8_t ih_name[IH_NMLEN]; /* Image Name */ +} image_header_t; + +/* beyond the image end, size not known in advance */ +extern unsigned char workspace[]; +extern void board_init(void); + +static CLzmaDecoderState lzma_state; +static unsigned char *lzma_data; +static unsigned long lzma_datasize; +static unsigned long lzma_outsize; +static unsigned long kernel_la; + +#ifdef CONFIG_KERNEL_CMDLINE +#define kernel_argc 1 +static const char kernel_cmdline[] = CONFIG_KERNEL_CMDLINE; +static const char *kernel_argv[] = { + kernel_cmdline, + NULL, +}; +#endif /* CONFIG_KERNEL_CMDLINE */ + +static void halt(void) +{ + printf("\nSystem halted!\n"); + for(;;); +} + +static __inline__ unsigned long get_be32(void *buf) +{ + unsigned char *p = buf; + + return (((unsigned long) p[0] << 24) + + ((unsigned long) p[1] << 16) + + ((unsigned long) p[2] << 8) + + (unsigned long) p[3]); +} + +static __inline__ unsigned char lzma_get_byte(void) +{ + unsigned char c; + + lzma_datasize--; + c = *lzma_data++; + + return c; +} + +static int lzma_init_props(void) +{ + unsigned char props[LZMA_PROPERTIES_SIZE]; + int res; + int i; + + /* read lzma properties */ + for (i = 0; i < LZMA_PROPERTIES_SIZE; i++) + props[i] = lzma_get_byte(); + + /* read the lower half of uncompressed size in the header */ + lzma_outsize = ((SizeT) lzma_get_byte()) + + ((SizeT) lzma_get_byte() << 8) + + ((SizeT) lzma_get_byte() << 16) + + ((SizeT) lzma_get_byte() << 24); + + /* skip rest of the header (upper half of uncompressed size) */ + for (i = 0; i < 4; i++) + lzma_get_byte(); + + res = LzmaDecodeProperties(&lzma_state.Properties, props, + LZMA_PROPERTIES_SIZE); + return res; +} + +static int lzma_decompress(unsigned char *outStream) +{ + SizeT ip, op; + int ret; + + lzma_state.Probs = (CProb *) workspace; + + ret = LzmaDecode(&lzma_state, lzma_data, lzma_datasize, &ip, outStream, + lzma_outsize, &op); + + if (ret != LZMA_RESULT_OK) { + int i; + + DBG("LzmaDecode error %d at %08x, osize:%d ip:%d op:%d\n", + ret, lzma_data + ip, lzma_outsize, ip, op); + + for (i = 0; i < 16; i++) + DBG("%02x ", lzma_data[ip + i]); + + DBG("\n"); + } + + return ret; +} + +#if (LZMA_WRAPPER) +static void lzma_init_data(void) +{ + extern unsigned char _lzma_data_start[]; + extern unsigned char _lzma_data_end[]; + + kernel_la = LOADADDR; + lzma_data = _lzma_data_start; + lzma_datasize = _lzma_data_end - _lzma_data_start; +} +#else +static void lzma_init_data(void) +{ + struct image_header *hdr = NULL; + unsigned char *flash_base; + unsigned long flash_ofs; + unsigned long kernel_ofs; + unsigned long kernel_size; + + flash_base = (unsigned char *) KSEG1ADDR(AR71XX_FLASH_START); + + printf("Looking for OpenWrt image... "); + + for (flash_ofs = CONFIG_FLASH_OFFS; + flash_ofs <= (CONFIG_FLASH_OFFS + CONFIG_FLASH_MAX); + flash_ofs += CONFIG_FLASH_STEP) { + unsigned long magic; + unsigned char *p; + + p = flash_base + flash_ofs; + magic = get_be32(p); + if (magic == IH_MAGIC_OKLI) { + hdr = (struct image_header *) p; + break; + } + } + + if (hdr == NULL) { + printf("not found!\n"); + halt(); + } + + printf("found at 0x%08x\n", flash_base + flash_ofs); + + kernel_ofs = sizeof(struct image_header); + kernel_size = get_be32(&hdr->ih_size); + kernel_la = get_be32(&hdr->ih_load); + + lzma_data = flash_base + flash_ofs + kernel_ofs; + lzma_datasize = kernel_size; +} +#endif /* (LZMA_WRAPPER) */ + +void loader_main(unsigned long reg_a0, unsigned long reg_a1, + unsigned long reg_a2, unsigned long reg_a3) +{ + void (*kernel_entry) (unsigned long, unsigned long, unsigned long, + unsigned long); + int res; + + board_init(); + + printf("\n\nOpenWrt kernel loader for Mips board\n"); + printf("Copyright (C) 2011 Gabor Juhos \n"); + + lzma_init_data(); + + res = lzma_init_props(); + if (res != LZMA_RESULT_OK) { + printf("Incorrect LZMA stream properties!\n"); + halt(); + } + + printf("Decompressing kernel... "); + + res = lzma_decompress((unsigned char *) kernel_la); + if (res != LZMA_RESULT_OK) { + printf("failed, "); + switch (res) { + case LZMA_RESULT_DATA_ERROR: + printf("data error!\n"); + break; + default: + printf("unknown error %d!\n", res); + } + halt(); + } else { + printf("done!\n"); + } + + flush_cache(kernel_la, lzma_outsize); + + printf("Starting kernel at %08x...\n\n", kernel_la); + +#ifdef CONFIG_KERNEL_CMDLINE + reg_a0 = kernel_argc; + reg_a1 = (unsigned long) kernel_argv; + reg_a2 = 0; + reg_a3 = 0; +#endif + + kernel_entry = (void *) kernel_la; + kernel_entry(reg_a0, reg_a1, reg_a2, reg_a3); +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader.lds b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader.lds new file mode 100755 index 000000000..80cc7ca3e --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader.lds @@ -0,0 +1,35 @@ +OUTPUT_ARCH(mips) +SECTIONS { + .text : { + _code_start = .; + *(.text) + *(.text.*) + *(.rodata) + *(.rodata.*) + *(.data.lzma) + } + + . = ALIGN(32); + .data : { + *(.data) + *(.data.*) + . = . + 524288; /* workaround for buggy bootloaders */ + } + + . = ALIGN(32); + _code_end = .; + + _bss_start = .; + .bss : { + *(.bss) + *(.bss.*) + } + + . = ALIGN(32); + _bss_end = .; + + . = . + 8192; + _stack = .; + + workspace = .; +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader2.lds b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader2.lds new file mode 100755 index 000000000..db0bb4642 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/loader2.lds @@ -0,0 +1,10 @@ +OUTPUT_ARCH(mips) +SECTIONS { + .text : { + startup = .; + *(.text) + *(.text.*) + *(.data) + *(.data.*) + } +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/lzma-data.lds b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/lzma-data.lds new file mode 100755 index 000000000..abf756ba1 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/lzma-data.lds @@ -0,0 +1,8 @@ +OUTPUT_ARCH(mips) +SECTIONS { + .data.lzma : { + _lzma_data_start = .; + *(.data) + _lzma_data_end = .; + } +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/printf.c b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/printf.c new file mode 100755 index 000000000..7bb5a86e1 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/printf.c @@ -0,0 +1,350 @@ +/* + * Copyright (C) 2001 MontaVista Software Inc. + * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ + +#include "printf.h" + +extern void board_putc(int ch); + +/* this is the maximum width for a variable */ +#define LP_MAX_BUF 256 + +/* macros */ +#define IsDigit(x) ( ((x) >= '0') && ((x) <= '9') ) +#define Ctod(x) ( (x) - '0') + +/* forward declaration */ +static int PrintChar(char *, char, int, int); +static int PrintString(char *, char *, int, int); +static int PrintNum(char *, unsigned long, int, int, int, int, char, int); + +/* private variable */ +static const char theFatalMsg[] = "fatal error in lp_Print!"; + +/* -*- + * A low level printf() function. + */ +static void +lp_Print(void (*output)(void *, char *, int), + void * arg, + char *fmt, + va_list ap) +{ + +#define OUTPUT(arg, s, l) \ + { if (((l) < 0) || ((l) > LP_MAX_BUF)) { \ + (*output)(arg, (char*)theFatalMsg, sizeof(theFatalMsg)-1); for(;;); \ + } else { \ + (*output)(arg, s, l); \ + } \ + } + + char buf[LP_MAX_BUF]; + + char c; + char *s; + long int num; + + int longFlag; + int negFlag; + int width; + int prec; + int ladjust; + char padc; + + int length; + + for(;;) { + { + /* scan for the next '%' */ + char *fmtStart = fmt; + while ( (*fmt != '\0') && (*fmt != '%')) { + fmt ++; + } + + /* flush the string found so far */ + OUTPUT(arg, fmtStart, fmt-fmtStart); + + /* are we hitting the end? */ + if (*fmt == '\0') break; + } + + /* we found a '%' */ + fmt ++; + + /* check for long */ + if (*fmt == 'l') { + longFlag = 1; + fmt ++; + } else { + longFlag = 0; + } + + /* check for other prefixes */ + width = 0; + prec = -1; + ladjust = 0; + padc = ' '; + + if (*fmt == '-') { + ladjust = 1; + fmt ++; + } + + if (*fmt == '0') { + padc = '0'; + fmt++; + } + + if (IsDigit(*fmt)) { + while (IsDigit(*fmt)) { + width = 10 * width + Ctod(*fmt++); + } + } + + if (*fmt == '.') { + fmt ++; + if (IsDigit(*fmt)) { + prec = 0; + while (IsDigit(*fmt)) { + prec = prec*10 + Ctod(*fmt++); + } + } + } + + + /* check format flag */ + negFlag = 0; + switch (*fmt) { + case 'b': + if (longFlag) { + num = va_arg(ap, long int); + } else { + num = va_arg(ap, int); + } + length = PrintNum(buf, num, 2, 0, width, ladjust, padc, 0); + OUTPUT(arg, buf, length); + break; + + case 'd': + case 'D': + if (longFlag) { + num = va_arg(ap, long int); + } else { + num = va_arg(ap, int); + } + if (num < 0) { + num = - num; + negFlag = 1; + } + length = PrintNum(buf, num, 10, negFlag, width, ladjust, padc, 0); + OUTPUT(arg, buf, length); + break; + + case 'o': + case 'O': + if (longFlag) { + num = va_arg(ap, long int); + } else { + num = va_arg(ap, int); + } + length = PrintNum(buf, num, 8, 0, width, ladjust, padc, 0); + OUTPUT(arg, buf, length); + break; + + case 'u': + case 'U': + if (longFlag) { + num = va_arg(ap, long int); + } else { + num = va_arg(ap, int); + } + length = PrintNum(buf, num, 10, 0, width, ladjust, padc, 0); + OUTPUT(arg, buf, length); + break; + + case 'x': + if (longFlag) { + num = va_arg(ap, long int); + } else { + num = va_arg(ap, int); + } + length = PrintNum(buf, num, 16, 0, width, ladjust, padc, 0); + OUTPUT(arg, buf, length); + break; + + case 'X': + if (longFlag) { + num = va_arg(ap, long int); + } else { + num = va_arg(ap, int); + } + length = PrintNum(buf, num, 16, 0, width, ladjust, padc, 1); + OUTPUT(arg, buf, length); + break; + + case 'c': + c = (char)va_arg(ap, int); + length = PrintChar(buf, c, width, ladjust); + OUTPUT(arg, buf, length); + break; + + case 's': + s = (char*)va_arg(ap, char *); + length = PrintString(buf, s, width, ladjust); + OUTPUT(arg, buf, length); + break; + + case '\0': + fmt --; + break; + + default: + /* output this char as it is */ + OUTPUT(arg, fmt, 1); + } /* switch (*fmt) */ + + fmt ++; + } /* for(;;) */ + + /* special termination call */ + OUTPUT(arg, "\0", 1); +} + + +/* --------------- local help functions --------------------- */ +static int +PrintChar(char * buf, char c, int length, int ladjust) +{ + int i; + + if (length < 1) length = 1; + if (ladjust) { + *buf = c; + for (i=1; i< length; i++) buf[i] = ' '; + } else { + for (i=0; i< length-1; i++) buf[i] = ' '; + buf[length - 1] = c; + } + return length; +} + +static int +PrintString(char * buf, char* s, int length, int ladjust) +{ + int i; + int len=0; + char* s1 = s; + while (*s1++) len++; + if (length < len) length = len; + + if (ladjust) { + for (i=0; i< len; i++) buf[i] = s[i]; + for (i=len; i< length; i++) buf[i] = ' '; + } else { + for (i=0; i< length-len; i++) buf[i] = ' '; + for (i=length-len; i < length; i++) buf[i] = s[i-length+len]; + } + return length; +} + +static int +PrintNum(char * buf, unsigned long u, int base, int negFlag, + int length, int ladjust, char padc, int upcase) +{ + /* algorithm : + * 1. prints the number from left to right in reverse form. + * 2. fill the remaining spaces with padc if length is longer than + * the actual length + * TRICKY : if left adjusted, no "0" padding. + * if negtive, insert "0" padding between "0" and number. + * 3. if (!ladjust) we reverse the whole string including paddings + * 4. otherwise we only reverse the actual string representing the num. + */ + + int actualLength =0; + char *p = buf; + int i; + + do { + int tmp = u %base; + if (tmp <= 9) { + *p++ = '0' + tmp; + } else if (upcase) { + *p++ = 'A' + tmp - 10; + } else { + *p++ = 'a' + tmp - 10; + } + u /= base; + } while (u != 0); + + if (negFlag) { + *p++ = '-'; + } + + /* figure out actual length and adjust the maximum length */ + actualLength = p - buf; + if (length < actualLength) length = actualLength; + + /* add padding */ + if (ladjust) { + padc = ' '; + } + if (negFlag && !ladjust && (padc == '0')) { + for (i = actualLength-1; i< length-1; i++) buf[i] = padc; + buf[length -1] = '-'; + } else { + for (i = actualLength; i< length; i++) buf[i] = padc; + } + + + /* prepare to reverse the string */ + { + int begin = 0; + int end; + if (ladjust) { + end = actualLength - 1; + } else { + end = length -1; + } + + while (end > begin) { + char tmp = buf[begin]; + buf[begin] = buf[end]; + buf[end] = tmp; + begin ++; + end --; + } + } + + /* adjust the string pointer */ + return length; +} + +static void printf_output(void *arg, char *s, int l) +{ + int i; + + // special termination call + if ((l==1) && (s[0] == '\0')) return; + + for (i=0; i< l; i++) { + board_putc(s[i]); + if (s[i] == '\n') board_putc('\r'); + } +} + +void printf(char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + lp_Print(printf_output, 0, fmt, ap); + va_end(ap); +} diff --git a/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/printf.h b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/printf.h new file mode 100755 index 000000000..9b1c1df23 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/image/lzma-loader/src/printf.h @@ -0,0 +1,18 @@ +/* + * Copyright (C) 2001 MontaVista Software Inc. + * Author: Jun Sun, jsun@mvista.com or jsun@junsun.net + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + */ + +#ifndef _printf_h_ +#define _printf_h_ + +#include +void printf(char *fmt, ...); + +#endif /* _printf_h_ */ diff --git a/feeds/rtkmipsel/rtkmipsel/modules.mk b/feeds/rtkmipsel/rtkmipsel/modules.mk new file mode 100644 index 000000000..a036c8fac --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/modules.mk @@ -0,0 +1,100 @@ +define KernelPackage/crypto-core + SUBMENU:=$(CRYPTO_MENU) + TITLE:=Core CryptoAPI modules + KCONFIG:= \ + CONFIG_CRYPTO=y \ + CONFIG_CRYPTO_HW=y \ + CONFIG_CRYPTO_BLKCIPHER \ + CONFIG_CRYPTO_ALGAPI \ + $(foreach mod,$(CRYPTO_MODULES),$(call crypto_confvar,$(mod))) + FILES:=$(foreach mod,$(CRYPTO_MODULES),$(call crypto_file,$(mod))) +endef + +$(eval $(call KernelPackage,crypto-core)) + + +define KernelPackage/bridge + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=Ethernet bridging support + DEPENDS:=+kmod-stp + KCONFIG:= \ + CONFIG_BRIDGE \ + CONFIG_BRIDGE_IGMP_SNOOPING=y + FILES:=$(LINUX_DIR)/net/bridge/bridge.ko + AUTOLOAD:=$(call AutoLoad,11,bridge) +endef + +define KernelPackage/bridge/description + Kernel module for Ethernet bridging. +endef + +$(eval $(call KernelPackage,bridge)) + +define KernelPackage/llc + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=ANSI/IEEE 802.2 LLC support + KCONFIG:=CONFIG_LLC + FILES:= \ + $(LINUX_DIR)/net/llc/llc.ko \ + $(LINUX_DIR)/net/802/p8022.ko \ + $(LINUX_DIR)/net/802/psnap.ko + AUTOLOAD:=$(call AutoLoad,09,llc p8022 psnap) +endef + +define KernelPackage/llc/description + Kernel module for ANSI/IEEE 802.2 LLC support. +endef + +$(eval $(call KernelPackage,llc)) + +define KernelPackage/stp + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=Ethernet Spanning Tree Protocol support + DEPENDS:=+kmod-llc + KCONFIG:=CONFIG_STP + FILES:=$(LINUX_DIR)/net/802/stp.ko + AUTOLOAD:=$(call AutoLoad,10,stp) +endef + +define KernelPackage/stp/description + Kernel module for Ethernet Spanning Tree Protocol support. +endef + +$(eval $(call KernelPackage,stp)) + +define KernelPackage/8021q + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=802.1Q VLAN support + KCONFIG:=CONFIG_VLAN_8021Q \ + CONFIG_VLAN_8021Q_GVRP=n + FILES:=$(LINUX_DIR)/net/8021q/8021q.ko + AUTOLOAD:=$(call AutoLoad,12,8021q) +endef + +define KernelPackage/8021q/description + Kernel module for 802.1Q VLAN support +endef + +$(eval $(call KernelPackage,8021q)) + +define KernelPackage/ipv6 + SUBMENU:=$(NETWORK_SUPPORT_MENU) + TITLE:=IPv6 support + KCONFIG:= \ + CONFIG_IPV6 \ + CONFIG_IPV6_PRIVACY=y \ + CONFIG_IPV6_MULTIPLE_TABLES=y \ + CONFIG_IPV6_MROUTE=y \ + CONFIG_IPV6_PIMSM_V2=n \ + CONFIG_IPV6_SUBTREES=y + FILES:=$(LINUX_DIR)/net/ipv6/ipv6.ko + AUTOLOAD:=$(call AutoLoad,20,ipv6) +endef + +define KernelPackage/ipv6/description + Kernel modules for IPv6 support +endef + +$(eval $(call KernelPackage,ipv6)) + + diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/config-3.18 b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config-3.18 new file mode 100755 index 000000000..6b87da160 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config-3.18 @@ -0,0 +1,444 @@ +# CONFIG_AIO is not set +# CONFIG_ANT_SWITCH is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +# CONFIG_ARCH_HAS_SG_CHAIN is not set +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +# CONFIG_AUTO_DHCP_CHECK is not set +CONFIG_AVERAGE=y +# CONFIG_BAND_2G_ON_WLAN0 is not set +CONFIG_BAND_5G_ON_WLAN0=y +CONFIG_BINARY_SYSFS_STATS=y +CONFIG_BRIDGE_EBT_802_3=m +CONFIG_BRIDGE_EBT_AMONG=m +CONFIG_BRIDGE_EBT_ARP=m +CONFIG_BRIDGE_EBT_ARPREPLY=m +CONFIG_BRIDGE_EBT_BROUTE=m +CONFIG_BRIDGE_EBT_DNAT=m +CONFIG_BRIDGE_EBT_IP=m +CONFIG_BRIDGE_EBT_LIMIT=m +CONFIG_BRIDGE_EBT_MARK=m +CONFIG_BRIDGE_EBT_MARK_T=m +CONFIG_BRIDGE_EBT_PKTTYPE=m +CONFIG_BRIDGE_EBT_REDIRECT=m +CONFIG_BRIDGE_EBT_SNAT=m +CONFIG_BRIDGE_EBT_STP=m +CONFIG_BRIDGE_EBT_T_FILTER=m +CONFIG_BRIDGE_EBT_T_NAT=m +CONFIG_BRIDGE_EBT_VLAN=m +CONFIG_BRIDGE_NETFILTER=y +CONFIG_BRIDGE_NF_EBTABLES=m +CONFIG_BT=y +CONFIG_BT_BNEP=y +CONFIG_BT_COEXIST=y +CONFIG_BT_COEXIST_SOCKET=y +CONFIG_BT_HCIUART=y +CONFIG_BT_HCIUART_3WIRE=y +# CONFIG_BT_HCIUART_BCSP is not set +# CONFIG_BT_HCIUART_H4 is not set +# CONFIG_BT_REPEATER_CONFIG is not set +CONFIG_BT_RFCOMM=y +# CONFIG_BT_RFCOMM_TTY is not set +CONFIG_CEVT_R4K=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_CMDLINE="board=AP console=ttyS0,38400 linuxpart=0x60000 hwpart=0x20000" +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_OVERRIDE=y +CONFIG_COMPAT_BRK=y +CONFIG_CPU_GENERIC_DUMP_TLB=y +CONFIG_CPU_HAS_PREFETCH=y +CONFIG_CPU_HAS_SYNC=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_CPU_MIPSR2=y +CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y +CONFIG_CPU_R4K_CACHE_TLB=y +CONFIG_CPU_R4K_FPU=y +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y +CONFIG_CPU_SUPPORTS_HIGHMEM=y +CONFIG_CPU_SUPPORTS_MSA=y +CONFIG_CRC16=y +# CONFIG_CRC32_SARWATE is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC_CCITT=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO_ARC4=m +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_CRC32C=m +# CONFIG_CRYPTO_DEV_REALTEK is not set +CONFIG_CRYPTO_ECB=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_HW=y +CONFIG_CRYPTO_MANAGER=y +CONFIG_CRYPTO_MANAGER2=y +CONFIG_CRYPTO_RNG2=y +CONFIG_CRYPTO_SHA256=y +CONFIG_CRYPTO_WORKQUEUE=y +CONFIG_CSRC_R4K=y +CONFIG_DEBUG_INFO=y +CONFIG_DEFAULTS_KERNEL_2_6=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_DEFAULT_NOOP=y +CONFIG_DEVKMEM=y +CONFIG_DMA_NONCOHERENT=y +CONFIG_EARLY_PRINTK=y +CONFIG_ENABLE_MUST_CHECK=y +# CONFIG_ETHERNET is not set +CONFIG_EXTRTL8212_PHYID_P1=18 +CONFIG_EXTRTL8212_PHYID_P3=20 +CONFIG_EXTRTL8212_PHYID_P5=22 +CONFIG_FREE_WBB_PIN=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_SYSFS=y +CONFIG_HARDWARE_WATCHPOINTS=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HZ_PERIODIC=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_INPUT=m +CONFIG_INPUT_KEYBOARD=y +CONFIG_INPUT_POLLDEV=m +# CONFIG_IOSCHED_DEADLINE is not set +CONFIG_IPV6=m +# CONFIG_IPV6_GRE is not set +CONFIG_IPV6_MROUTE=y +CONFIG_IPV6_MULTIPLE_TABLES=y +# CONFIG_IPV6_PIMSM_V2 is not set +CONFIG_IPV6_SUBTREES=y +CONFIG_IP_NF_FILTER=m +CONFIG_IP_NF_IPTABLES=m +CONFIG_IP_NF_MANGLE=m +CONFIG_IP_NF_NAT=m +CONFIG_IP_NF_RAW=m +CONFIG_IP_NF_TARGET_MASQUERADE=m +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_IP_NF_TARGET_REJECT=m +CONFIG_IRQ_CPU=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +CONFIG_KALLSYMS=y +# CONFIG_KEYBOARD_GPIO is not set +CONFIG_KEYBOARD_GPIO_POLLED=m +CONFIG_LEDS_GPIO=y +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LIBCRC32C=m +CONFIG_LOG_BUF_SHIFT=18 +# CONFIG_M25PXX_USE_AUTO_MODE is not set +# CONFIG_M25PXX_USE_FAST_READ is not set +# CONFIG_M25PXX_USE_MULTI_CHANNEL is not set +CONFIG_M25PXX_USE_USER_MODE=y +CONFIG_MAC_PHY_RF_Parameter_V702B_Skyworth=y +CONFIG_MAGIC_SYSRQ=y +CONFIG_MDIO_BOARDINFO=y +CONFIG_MIPS=y +# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set +CONFIG_MIPS_L1_CACHE_SHIFT=5 +# CONFIG_MIPS_MACHINE is not set +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MP_PSD_SUPPORT is not set +CONFIG_MRP=y +CONFIG_MTD_BLOCK2MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_M25P80=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPLIT_FIRMWARE=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +CONFIG_NETFILTER_XTABLES=m +CONFIG_NETFILTER_XT_MARK=m +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +CONFIG_NETFILTER_XT_MATCH_ID=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=m +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +CONFIG_NETFILTER_XT_MATCH_STATE=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +CONFIG_NETFILTER_XT_NAT=m +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +CONFIG_NETFILTER_XT_TARGET_TCPMSS=m +CONFIG_NET_IPGRE=m +CONFIG_NET_IPGRE_DEMUX=m +CONFIG_NET_IP_TUNNEL=m +CONFIG_NET_UDP_TUNNEL=m +CONFIG_NF_CONNTRACK=m +CONFIG_NF_CONNTRACK_FTP=m +CONFIG_NF_CONNTRACK_IPV4=m +CONFIG_NF_CONNTRACK_RTCACHE=m +CONFIG_NF_DEFRAG_IPV4=m +# CONFIG_NF_DEFRAG_IPV6 is not set +CONFIG_NF_LOG_COMMON=m +CONFIG_NF_LOG_IPV4=m +CONFIG_NF_LOG_IPV6=m +CONFIG_NF_NAT=m +CONFIG_NF_NAT_FTP=m +CONFIG_NF_NAT_IPV4=m +CONFIG_NF_NAT_MASQUERADE_IPV4=m +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_REJECT_IPV4=m +# CONFIG_NF_REJECT_IPV6 is not set +# CONFIG_NO_IOPORT_MAP is not set +CONFIG_OPENWRT_SDK=y +# CONFIG_PACP_SUPPORT is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PCI_HCI=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHYLIB=y +CONFIG_PHY_EAT_40MHZ=y +CONFIG_PHY_WLAN_EAT_40MHZ=y +CONFIG_PPP=m +CONFIG_PPPOE=m +CONFIG_PPP_ASYNC=m +# CONFIG_PREEMPT_RCU is not set +CONFIG_PRINTK_TIME=y +# CONFIG_PROC_STRIPPED is not set +CONFIG_PSTORE=y +CONFIG_PSTORE_CONSOLE=y +CONFIG_PSTORE_RAM=y +# CONFIG_RCU_STALL_COMMON is not set +# CONFIG_REALTEK is not set +CONFIG_REALTEK_97F=y +# CONFIG_RECORD_CLIENT_HOST is not set +CONFIG_REED_SOLOMON=y +CONFIG_REED_SOLOMON_DEC8=y +CONFIG_REED_SOLOMON_ENC8=y +CONFIG_RFKILL=y +CONFIG_RFKILL_GPIO=y +CONFIG_RFKILL_LEDS=y +# CONFIG_RF_DPK_SETTING_SUPPORT is not set +CONFIG_RTK_BOOTINFO_DUALIMAGE=y +CONFIG_RTK_DUALIMAGE_FLASH_OFFSET=0x7F0000 +CONFIG_RTK_READ_ETH_ADDR_FROM_FLASH=y +# CONFIG_RTK_SMART_ROAMING is not set +# CONFIG_RTK_WLAN_EVENT_INDICATE is not set +# CONFIG_RTL8190_PRIV_SKB is not set +CONFIG_RTL8192CD=m +CONFIG_RTL819X_DW_SPI=y +# CONFIG_RTL819X_DW_SPI0 is not set +# CONFIG_RTL819X_DW_SPI1 is not set +# CONFIG_RTL819X_SPI_FLASH is not set +CONFIG_RTL819X_WDT=y +# CONFIG_RTL865X_KERNEL_MIPS16 is not set +CONFIG_RTL865X_MBUF_HEADROOM=128 +# CONFIG_RTL_11R_SUPPORT is not set +# CONFIG_RTL_11W_SUPPORT is not set +CONFIG_RTL_5G_SLOT_0=y +# CONFIG_RTL_802_1X_CLIENT_SUPPORT is not set +CONFIG_RTL_8197F=y +# CONFIG_RTL_8197F_ANT_SWITCH is not set +CONFIG_RTL_8197F_GW=y +CONFIG_RTL_8197F_SP_W2M_AC1200=y +# CONFIG_RTL_8197F_SP_W2M_AC1200_POE is not set +# CONFIG_RTL_8197F_WRT is not set +CONFIG_RTL_819X=y +# CONFIG_RTL_819X_SWCORE is not set +# CONFIG_RTL_8211F_SUPPORT is not set +# CONFIG_RTL_8363NB_SUPPORT is not set +# CONFIG_RTL_8366SC_SUPPORT is not set +# CONFIG_RTL_8367R_SUPPORT is not set +# CONFIG_RTL_A4_STA_SUPPORT is not set +# CONFIG_RTL_ATM_SUPPORT is not set +CONFIG_RTL_AWDS_SUPPORT=y +CONFIG_RTL_CLIENT_MODE_SUPPORT=y +# CONFIG_RTL_COMAPI_CFGFILE is not set +# CONFIG_RTL_COMAPI_WLTOOLS is not set +CONFIG_RTL_DEBUG_TOOL=y +CONFIG_RTL_DFS_SUPPORT=y +# CONFIG_RTL_DOT11K_SUPPORT is not set +CONFIG_RTL_EEE_DISABLED=y +# CONFIG_RTL_ETH_802DOT1X_SUPPORT is not set +# CONFIG_RTL_ETH_PRIV_SKB is not set +# CONFIG_RTL_EXCHANGE_PORTMASK is not set +CONFIG_RTL_EXTPORT_VLANID=9 +CONFIG_RTL_FLASH_SIZE=0x800000 +CONFIG_RTL_GSO=y +# CONFIG_RTL_HARDWARE_NAT is not set +# CONFIG_RTL_HOSTAPD_SUPPORT is not set +# CONFIG_RTL_HS2_SUPPORT is not set +CONFIG_RTL_HW_L2_ONLY=y +# CONFIG_RTL_HW_MULTICAST_ONLY is not set +# CONFIG_RTL_HW_NAPT is not set +# CONFIG_RTL_HW_QOS_SUPPORT is not set +CONFIG_RTL_IGMP_PROXY=y +# CONFIG_RTL_IPTABLES_RULE_2_ACL is not set +CONFIG_RTL_IVL_SUPPORT=y +CONFIG_RTL_LAYERED_ASIC_DRIVER=y +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L4 is not set +CONFIG_RTL_LAYERED_DRIVER=y +CONFIG_RTL_LAYERED_DRIVER_ACL=y +CONFIG_RTL_LAYERED_DRIVER_L2=y +# CONFIG_RTL_LAYERED_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_DRIVER_L4 is not set +CONFIG_RTL_LINKCHG_PROCESS=y +# CONFIG_RTL_MESH_SUPPORT is not set +CONFIG_RTL_MLD_PROXY=y +# CONFIG_RTL_MULTI_CLONE_SUPPORT is not set +CONFIG_RTL_NO_BR_SHORTCUT=y +CONFIG_RTL_ODM_WLAN_DRIVER=y +# CONFIG_RTL_P2P_SUPPORT is not set +# CONFIG_RTL_PMKCACHE_SUPPORT is not set +CONFIG_RTL_PROC_DEBUG=y +CONFIG_RTL_READ_CALDATA_FROM_FLASH=y +CONFIG_RTL_READ_MAC_FROM_FLASH=y +# CONFIG_RTL_REPEATER_MODE_SUPPORT is not set +# CONFIG_RTL_ROMEPERF_24K is not set +# CONFIG_RTL_SENDFILE_PATCH is not set +# CONFIG_RTL_SIMPLE_CONFIG is not set +CONFIG_RTL_STA_CONTROL_SUPPORT=y +# CONFIG_RTL_SUPPORT_MULTI_PROFILE is not set +CONFIG_RTL_TDLS_SUPPORT=y +# CONFIG_RTL_TPT_THREAD is not set +CONFIG_RTL_TSO=y +# CONFIG_RTL_UNKOWN_UNICAST_CONTROL is not set +# CONFIG_RTL_USB_IP_HOST_SPEEDUP is not set +CONFIG_RTL_VAP_SUPPORT=y +# CONFIG_RTL_WAPI_SUPPORT is not set +# CONFIG_RTL_WDS_SUPPORT is not set +# CONFIG_RTL_WLAN_DIAGNOSTIC is not set +# CONFIG_RTL_WLAN_DOS_FILTER is not set +CONFIG_RTL_WPS2_SUPPORT=y +# CONFIG_SCSI_DMA is not set +CONFIG_SERIAL_RTL_UART1=y +# CONFIG_SERIAL_RTL_UART1_PINMUX1 is not set +CONFIG_SERIAL_RTL_UART1_PINMUX2=y +# CONFIG_SERIAL_RTL_UART2 is not set +# CONFIG_SHARE_XCAP_SUPPORT is not set +# CONFIG_SLAB is not set +CONFIG_SLHC=m +# CONFIG_SLOT_0_8192EE is not set +# CONFIG_SLOT_0_8194AE is not set +# CONFIG_SLOT_0_8723B is not set +# CONFIG_SLOT_0_8812 is not set +# CONFIG_SLOT_0_8812AR_VN is not set +# CONFIG_SLOT_0_8814AE is not set +CONFIG_SLOT_0_8822BE=y +# CONFIG_SLOT_0_88E is not set +# CONFIG_SLOT_0_92C is not set +# CONFIG_SLOT_0_92D is not set +# CONFIG_SLOT_0_ENABLE_EFUSE is not set +# CONFIG_SLOT_0_RFE_TYPE_0 is not set +# CONFIG_SLOT_0_RFE_TYPE_1 is not set +CONFIG_SLOT_0_RFE_TYPE_10=y +# CONFIG_SLOT_0_RFE_TYPE_11 is not set +# CONFIG_SLOT_0_RFE_TYPE_13 is not set +# CONFIG_SLOT_0_RFE_TYPE_14 is not set +# CONFIG_SLOT_0_RFE_TYPE_6 is not set +# CONFIG_SLOT_0_RFE_TYPE_7 is not set +# CONFIG_SLOT_0_RFE_TYPE_8 is not set +# CONFIG_SLOT_0_RFE_TYPE_9 is not set +CONFIG_SLOT_0_TX_BEAMFORMING=y +CONFIG_SLUB=y +# CONFIG_SOC_ENABLE_EFUSE is not set +CONFIG_SOC_RFE_TYPE_0=y +# CONFIG_SOC_RFE_TYPE_1 is not set +# CONFIG_SOC_RFE_TYPE_2 is not set +# CONFIG_SOC_RFE_TYPE_3 is not set +# CONFIG_SOC_RFE_TYPE_4 is not set +# CONFIG_SOC_RFE_TYPE_5 is not set +# CONFIG_SOC_RFE_TYPE_6 is not set +CONFIG_SOC_RTL8197F=y +# CONFIG_SOC_TX_BEAMFORMING is not set +CONFIG_SOC_WIFI=y +CONFIG_SPI=y +CONFIG_SPI_DESIGNWARE=y +CONFIG_SPI_DW_MMIO=y +CONFIG_SPI_MASTER=y +CONFIG_SPI_SHEIPA=y +CONFIG_SQUASHFS_EMBEDDED=y +# CONFIG_STA_ROAMING_CHECK is not set +# CONFIG_SWAP is not set +CONFIG_SWCONFIG=y +CONFIG_SYS_HAS_CPU_MIPS32_R2=y +CONFIG_SYS_HAS_EARLY_PRINTK=y +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TUN=m +CONFIG_TXPWR_LMT=y +CONFIG_USE_PCIE_SLOT_0=y +CONFIG_VETH=m +CONFIG_VLAN_8021Q_MVRP=y +CONFIG_VXLAN=m +CONFIG_WATCHDOG_CORE=y +CONFIG_WIRELESS_LAN_MODULE=y +CONFIG_WLAN_HAL=y +CONFIG_WLAN_HAL_8197F=y +CONFIG_WLAN_HAL_8822BE=y +CONFIG_WLAN_HAL_88XX=y +CONFIG_WLAN_MACHAL_API=y +# CONFIG_WL_TI is not set +CONFIG_WRT_BARRIER_BREAKER=y +CONFIG_XZ_DEC_ARM=y +CONFIG_XZ_DEC_ARMTHUMB=y +CONFIG_XZ_DEC_BCJ=y +CONFIG_XZ_DEC_IA64=y +CONFIG_XZ_DEC_POWERPC=y +CONFIG_XZ_DEC_SPARC=y +CONFIG_XZ_DEC_X86=y +CONFIG_ZLIB_DEFLATE=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA_FLAG=0 +# CONFIG_RTL_83XX_SUPPORT is not set +# CONFIG_RTL_8363NB_SUPPORT is not set +CONFIG_BRIDGE_EBT_IP6=m diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/config-3.18_nand b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config-3.18_nand new file mode 100755 index 000000000..054031a48 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config-3.18_nand @@ -0,0 +1,290 @@ +# CONFIG_98C_NAND_FLASH is not set +# CONFIG_ANT_SWITCH is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +# CONFIG_ARCH_HAS_SG_CHAIN is not set +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +# CONFIG_AUTO_DHCP_CHECK is not set +# CONFIG_BAND_2G_ON_WLAN0 is not set +CONFIG_BAND_5G_ON_WLAN0=y +CONFIG_CEVT_R4K=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_CMDLINE="board=AP console=ttyS0,38400 linuxpart=0x60000 hwpart=0x20000" +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_OVERRIDE=y +CONFIG_COMPAT_BRK=y +CONFIG_CPU_GENERIC_DUMP_TLB=y +CONFIG_CPU_HAS_PREFETCH=y +CONFIG_CPU_HAS_SYNC=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_CPU_MIPSR2=y +CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y +CONFIG_CPU_R4K_CACHE_TLB=y +CONFIG_CPU_R4K_FPU=y +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y +CONFIG_CPU_SUPPORTS_HIGHMEM=y +CONFIG_CPU_SUPPORTS_MSA=y +# CONFIG_CRC32_SARWATE is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC_CCITT=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO_HW=y +CONFIG_CSRC_R4K=y +CONFIG_DEFAULTS_KERNEL_2_6=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_DEFAULT_NOOP=y +CONFIG_DMA_NONCOHERENT=y +CONFIG_EARLY_PRINTK=y +CONFIG_ENABLE_MUST_CHECK=y +# CONFIG_ETHERNET is not set +CONFIG_EXTRTL8212_PHYID_P1=18 +CONFIG_EXTRTL8212_PHYID_P3=20 +CONFIG_EXTRTL8212_PHYID_P5=22 +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_SYSFS=y +CONFIG_HARDWARE_WATCHPOINTS=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HZ_PERIODIC=y +# CONFIG_IMAGE_HEADER_CHECK is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_IRQ_CPU=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +CONFIG_LEDS_GPIO=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LOG_BUF_SHIFT=12 +CONFIG_MAC_PHY_RF_Parameter_V702B_Skyworth=y +CONFIG_MDIO_BOARDINFO=y +CONFIG_MIPS=y +# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set +CONFIG_MIPS_L1_CACHE_SHIFT=5 +# CONFIG_MIPS_MACHINE is not set +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MP_PSD_SUPPORT is not set +CONFIG_MTD_BLOCK2MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_NAND=y +CONFIG_MTD_NAND_ECC=y +CONFIG_MTD_NAND_RTK=y +CONFIG_MTD_NAND_RTK_BLOCK_SIZE=0x20000 +CONFIG_MTD_NAND_RTK_PAGE_SIZE=0x800 +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPLIT_FIRMWARE=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_KM=y +# CONFIG_NO_IOPORT_MAP is not set +CONFIG_OPENWRT_SDK=y +# CONFIG_PACP_SUPPORT is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PARALLEL_NAND_FLASH=y +CONFIG_PCI_HCI=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHYLIB=y +CONFIG_PHY_EAT_40MHZ=y +# CONFIG_PREEMPT_RCU is not set +# CONFIG_RCU_STALL_COMMON is not set +# CONFIG_REALTEK is not set +CONFIG_REALTEK_97F=y +# CONFIG_RTK_BOOTINFO_DUALIMAGE is not set +# CONFIG_RTK_NAND_FLASH_STORAGE is not set +# CONFIG_RTK_NORMAL_BBT is not set +CONFIG_RTK_REMAP_BBT=y +# CONFIG_RTK_WLAN_EVENT_INDICATE is not set +CONFIG_RTK_XHCI_USB=y +# CONFIG_RTL8190_PRIV_SKB is not set +CONFIG_RTL8192CD=m +# CONFIG_RTL819X_SPI_FLASH is not set +CONFIG_RTL819X_WDT=y +# CONFIG_RTL865X_KERNEL_MIPS16 is not set +CONFIG_RTL865X_MBUF_HEADROOM=128 +# CONFIG_RTL_11R_SUPPORT is not set +CONFIG_RTL_11W_SUPPORT=y +CONFIG_RTL_5G_SLOT_0=y +# CONFIG_RTL_802_1X_CLIENT_SUPPORT is not set +CONFIG_RTL_8197F=y +CONFIG_RTL_8197F_GW=y +CONFIG_RTL_8197F_WRT=y +CONFIG_RTL_819X=y +CONFIG_RTL_819X_SWCORE=y +# CONFIG_RTL_8211F_SUPPORT is not set +CONFIG_RTL_8367R_SUPPORT=y +# CONFIG_RTL_A4_STA_SUPPORT is not set +# CONFIG_RTL_ATM_SUPPORT is not set +CONFIG_RTL_CLIENT_MODE_SUPPORT=y +# CONFIG_RTL_COMAPI_CFGFILE is not set +# CONFIG_RTL_COMAPI_WLTOOLS is not set +CONFIG_RTL_DEBUG_TOOL=y +CONFIG_RTL_DFS_SUPPORT=y +CONFIG_RTL_DISABLE_ETH_MIPS16=y +CONFIG_RTL_DISABLE_WLAN_MIPS16=y +# CONFIG_RTL_DOT11K_SUPPORT is not set +CONFIG_RTL_EEE_DISABLED=y +# CONFIG_RTL_ETH_802DOT1X_SUPPORT is not set +# CONFIG_RTL_ETH_PRIV_SKB is not set +CONFIG_RTL_EXTPORT_VLANID=9 +# CONFIG_RTL_GSO is not set +# CONFIG_RTL_HARDWARE_NAT is not set +# CONFIG_RTL_HOSTAPD_SUPPORT is not set +# CONFIG_RTL_HS2_SUPPORT is not set +CONFIG_RTL_HW_L2_ONLY=y +# CONFIG_RTL_HW_MULTICAST_ONLY is not set +# CONFIG_RTL_HW_NAPT is not set +# CONFIG_RTL_HW_QOS_SUPPORT is not set +CONFIG_RTL_IGMP_PROXY=y +# CONFIG_RTL_IPTABLES_RULE_2_ACL is not set +CONFIG_RTL_IVL_SUPPORT=y +CONFIG_RTL_LAYERED_ASIC_DRIVER=y +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L4 is not set +CONFIG_RTL_LAYERED_DRIVER=y +CONFIG_RTL_LAYERED_DRIVER_ACL=y +CONFIG_RTL_LAYERED_DRIVER_L2=y +# CONFIG_RTL_LAYERED_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_DRIVER_L4 is not set +CONFIG_RTL_LINKCHG_PROCESS=y +# CONFIG_RTL_MESH_SUPPORT is not set +CONFIG_RTL_MLD_PROXY=y +CONFIG_RTL_ODM_WLAN_DRIVER=y +# CONFIG_RTL_P2P_SUPPORT is not set +# CONFIG_RTL_PMKCACHE_SUPPORT is not set +CONFIG_RTL_PROC_DEBUG=y +CONFIG_RTL_REPEATER_MODE_SUPPORT=y +# CONFIG_RTL_ROMEPERF_24K is not set +# CONFIG_RTL_SENDFILE_PATCH is not set +# CONFIG_RTL_SIMPLE_CONFIG is not set +# CONFIG_RTL_STA_CONTROL_SUPPORT is not set +CONFIG_RTL_SUPPORT_MULTI_PROFILE=y +CONFIG_RTL_TDLS_SUPPORT=y +# CONFIG_RTL_TPT_THREAD is not set +# CONFIG_RTL_TSO is not set +# CONFIG_RTL_UNKOWN_UNICAST_CONTROL is not set +# CONFIG_RTL_USB_IP_HOST_SPEEDUP is not set +CONFIG_RTL_VAP_SUPPORT=y +# CONFIG_RTL_WAPI_SUPPORT is not set +CONFIG_RTL_WDS_SUPPORT=y +# CONFIG_RTL_WLAN_DIAGNOSTIC is not set +# CONFIG_RTL_WLAN_DOS_FILTER is not set +CONFIG_RTL_WPS2_SUPPORT=y +# CONFIG_SCSI_DMA is not set +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +CONFIG_SERIAL_8250_SYSRQ=y +# CONFIG_SLAB is not set +# CONFIG_SLOT_0_8192EE is not set +# CONFIG_SLOT_0_8194AE is not set +# CONFIG_SLOT_0_8723B is not set +# CONFIG_SLOT_0_8812 is not set +# CONFIG_SLOT_0_8812AR_VN is not set +# CONFIG_SLOT_0_8814AE is not set +CONFIG_SLOT_0_8822BE=y +# CONFIG_SLOT_0_88E is not set +# CONFIG_SLOT_0_92C is not set +# CONFIG_SLOT_0_92D is not set +# CONFIG_SLOT_0_ENABLE_EFUSE is not set +CONFIG_SLOT_0_EXT_LNA=y +CONFIG_SLOT_0_EXT_PA=y +# CONFIG_SLOT_0_RFE_TYPE_0 is not set +CONFIG_SLOT_0_RFE_TYPE_1=y +# CONFIG_SLOT_0_RFE_TYPE_6 is not set +# CONFIG_SLOT_0_RFE_TYPE_7 is not set +CONFIG_SLOT_0_TX_BEAMFORMING=y +CONFIG_SLUB=y +# CONFIG_SOC_ENABLE_EFUSE is not set +CONFIG_SOC_EXT_LNA=y +CONFIG_SOC_EXT_PA=y +# CONFIG_SOC_RFE_TYPE_0 is not set +CONFIG_SOC_RFE_TYPE_1=y +CONFIG_SOC_RTL8197F=y +# CONFIG_SOC_TX_BEAMFORMING is not set +CONFIG_SOC_WIFI=y +# CONFIG_SPI_NAND_FLASH is not set +CONFIG_SQUASHFS_EMBEDDED=y +# CONFIG_SQUASHFS_XZ is not set +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SWCONFIG=y +CONFIG_SYS_HAS_CPU_MIPS32_R2=y +CONFIG_SYS_HAS_EARLY_PRINTK=y +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TXPWR_LMT=y +CONFIG_USB_XHCI_PLATFORM=y +CONFIG_USE_PCIE_SLOT_0=y +CONFIG_WATCHDOG_CORE=y +CONFIG_WIRELESS_LAN_MODULE=y +CONFIG_WLAN_HAL=y +CONFIG_WLAN_HAL_8197F=y +CONFIG_WLAN_HAL_8822BE=y +CONFIG_WLAN_HAL_88XX=y +CONFIG_WLAN_MACHAL_API=y +# CONFIG_WL_TI is not set +CONFIG_WRT_BARRIER_BREAKER=y +# CONFIG_XZ_DEC is not set +# CONFIG_YAFFS_9BYTE_TAGS is not set +# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set +CONFIG_YAFFS_AUTO_YAFFS2=y +# CONFIG_YAFFS_DISABLE_BACKGROUND is not set +# CONFIG_YAFFS_DISABLE_BLOCK_REFRESHING is not set +# CONFIG_YAFFS_DISABLE_TAGS_ECC is not set +# CONFIG_YAFFS_DOES_ECC is not set +# CONFIG_YAFFS_EMPTY_LOST_AND_FOUND is not set +CONFIG_YAFFS_FS=y +CONFIG_YAFFS_XATTR=y +CONFIG_YAFFS_YAFFS1=y +CONFIG_YAFFS_YAFFS2=y +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA_FLAG=0 +# CONFIG_PROC_STRIPPED is not set diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/config.bkup b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config.bkup new file mode 100755 index 000000000..ae96dc6f1 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config.bkup @@ -0,0 +1,1492 @@ +# +# Automatically generated file; DO NOT EDIT. +# Linux/mips 3.10.49 Kernel Configuration +# +CONFIG_MIPS=y + +# +# Machine selection +# +# CONFIG_MIPS_ALCHEMY is not set +# CONFIG_AR7 is not set +# CONFIG_ATH79 is not set +# CONFIG_BCM47XX is not set +# CONFIG_BCM63XX is not set +# CONFIG_MIPS_COBALT is not set +# CONFIG_MACH_DECSTATION is not set +# CONFIG_MACH_JAZZ is not set +# CONFIG_MACH_JZ4740 is not set +# CONFIG_LANTIQ is not set +# CONFIG_LASAT is not set +# CONFIG_MACH_LOONGSON is not set +# CONFIG_MACH_LOONGSON1 is not set +# CONFIG_MIPS_MALTA is not set +# CONFIG_MIPS_SEAD3 is not set +# CONFIG_NEC_MARKEINS is not set +# CONFIG_MACH_VR41XX is not set +# CONFIG_NXP_STB220 is not set +# CONFIG_NXP_STB225 is not set +# CONFIG_PMC_MSP is not set +# CONFIG_POWERTV is not set +# CONFIG_RALINK is not set +CONFIG_REALTEK=y +# CONFIG_SGI_IP22 is not set +# CONFIG_SGI_IP27 is not set +# CONFIG_SGI_IP28 is not set +# CONFIG_SGI_IP32 is not set +# CONFIG_SIBYTE_CRHINE is not set +# CONFIG_SIBYTE_CARMEL is not set +# CONFIG_SIBYTE_CRHONE is not set +# CONFIG_SIBYTE_RHONE is not set +# CONFIG_SIBYTE_SWARM is not set +# CONFIG_SIBYTE_LITTLESUR is not set +# CONFIG_SIBYTE_SENTOSA is not set +# CONFIG_SIBYTE_BIGSUR is not set +# CONFIG_SNI_RM is not set +# CONFIG_MACH_TX39XX is not set +# CONFIG_MACH_TX49XX is not set +# CONFIG_MIKROTIK_RB532 is not set +# CONFIG_WR_PPMC is not set +# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set +# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set +# CONFIG_NLM_XLR_BOARD is not set +# CONFIG_NLM_XLP_BOARD is not set +# CONFIG_ALCHEMY_GPIO_INDIRECT is not set +# CONFIG_RTL_8197F_GW is not set +CONFIG_RTL_8197F=y +CONFIG_RTL_819X=y +# CONFIG_OPENWRT_SDK is not set +# CONFIG_WRT_BARRIER_BREAKER is not set +CONFIG_SOC_RTL8197F=y +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_SCHED_OMIT_FRAME_POINTER=y +CONFIG_CEVT_R4K=y +CONFIG_CSRC_R4K=y +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set +CONFIG_DMA_NONCOHERENT=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_SYS_HAS_EARLY_PRINTK=y +# CONFIG_MIPS_FPU_EMU is not set +# CONFIG_MIPS_MACHINE is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set +# CONFIG_NO_IOPORT is not set +# CONFIG_CPU_BIG_ENDIAN is not set +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y +# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set +CONFIG_IRQ_CPU=y +CONFIG_MIPS_L1_CACHE_SHIFT=5 + +# +# CPU selection +# +CONFIG_CPU_MIPS32_R2=y +CONFIG_SYS_HAS_CPU_MIPS32_R2=y +CONFIG_CPU_MIPS32=y +CONFIG_CPU_MIPSR2=y +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y +CONFIG_HARDWARE_WATCHPOINTS=y + +# +# Kernel type +# +CONFIG_32BIT=y +# CONFIG_KVM_GUEST is not set +# CONFIG_PAGE_SIZE_4KB is not set +CONFIG_PAGE_SIZE_16KB=y +# CONFIG_PAGE_SIZE_64KB is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +CONFIG_CPU_HAS_PREFETCH=y +CONFIG_CPU_GENERIC_DUMP_TLB=y +CONFIG_CPU_R4K_FPU=y +CONFIG_CPU_R4K_CACHE_TLB=y +CONFIG_MIPS_MT_DISABLED=y +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +CONFIG_CPU_HAS_SYNC=y +CONFIG_CPU_SUPPORTS_HIGHMEM=y +CONFIG_ARCH_FLATMEM_ENABLE=y +CONFIG_FLATMEM=y +CONFIG_FLAT_NODE_MEM_MAP=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_SPLIT_PTLOCK_CPUS=4 +# CONFIG_COMPACTION is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +CONFIG_ZONE_DMA_FLAG=0 +CONFIG_VIRT_TO_BUS=y +# CONFIG_KSM is not set +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_NEED_PER_CPU_KM=y +# CONFIG_CLEANCACHE is not set +# CONFIG_FRONTSWAP is not set +# CONFIG_HZ_48 is not set +CONFIG_HZ_100=y +# CONFIG_HZ_128 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_256 is not set +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_1024 is not set +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y +CONFIG_HZ=100 +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_VOLUNTARY is not set +# CONFIG_PREEMPT is not set +# CONFIG_KEXEC is not set +# CONFIG_CRASH_DUMP is not set +# CONFIG_SECCOMP is not set +CONFIG_BOOT_RAW=y +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_STACKTRACE_SUPPORT=y +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +CONFIG_IRQ_WORK=y +CONFIG_BUILDTIME_EXTABLE_SORT=y + +# +# General setup +# +CONFIG_BROKEN_ON_SMP=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +CONFIG_CROSS_COMPILE="mips-linux-" +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +CONFIG_DEFAULT_HOSTNAME="rlxlinux" +CONFIG_SWAP=y +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_FHANDLE is not set +# CONFIG_AUDIT is not set +CONFIG_HAVE_GENERIC_HARDIRQS=y + +# +# IRQ subsystem +# +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y + +# +# Timers subsystem +# +CONFIG_HZ_PERIODIC=y +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_HZ is not set +# CONFIG_HIGH_RES_TIMERS is not set + +# +# CPU/Task time and stats accounting +# +CONFIG_TICK_CPU_ACCOUNTING=y +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_TASKSTATS is not set + +# +# RCU Subsystem +# +CONFIG_TINY_RCU=y +# CONFIG_PREEMPT_RCU is not set +# CONFIG_RCU_STALL_COMMON is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_IKCONFIG is not set +CONFIG_LOG_BUF_SHIFT=12 +# CONFIG_CGROUPS is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_NAMESPACES is not set +CONFIG_UIDGID_CONVERTED=y +# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set +# CONFIG_SCHED_AUTOGROUP is not set +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_RELAY is not set +CONFIG_CRASHLOG=y +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +CONFIG_SYSCTL=y +CONFIG_ANON_INODES=y +CONFIG_HOTPLUG=y +CONFIG_EXPERT=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_KALLSYMS is not set +CONFIG_PRINTK=y +CONFIG_BUG=y +CONFIG_ELF_CORE=y +CONFIG_BASE_FULL=y +CONFIG_FUTEX=y +CONFIG_EPOLL=y +CONFIG_SIGNALFD=y +CONFIG_TIMERFD=y +CONFIG_EVENTFD=y +# CONFIG_SHMEM is not set +# CONFIG_AIO is not set +CONFIG_EMBEDDED=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_PERF_USE_VMALLOC=y + +# +# Kernel Performance Events And Counters +# +# CONFIG_PERF_EVENTS is not set +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_SLUB_DEBUG is not set +CONFIG_COMPAT_BRK=y +# CONFIG_SLAB is not set +CONFIG_SLUB=y +# CONFIG_SLOB is not set +# CONFIG_PROFILING is not set +CONFIG_HAVE_OPROFILE=y +# CONFIG_KPROBES is not set +# CONFIG_JUMP_LABEL is not set +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_MODULES_USE_ELF_REL=y +CONFIG_CLONE_BACKWARDS=y + +# +# GCOV-based kernel profiling +# +# CONFIG_GCOV_KERNEL is not set +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_RT_MUTEXES=y +CONFIG_BASE_SMALL=0 +CONFIG_MODULES=y +# CONFIG_MODULE_FORCE_LOAD is not set +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODVERSIONS is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +# CONFIG_MODULE_SIG is not set +CONFIG_MODULE_STRIPPED=y +CONFIG_BLOCK=y +CONFIG_LBDAF=y +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_INTEGRITY is not set + +# +# Partition Types +# +# CONFIG_PARTITION_ADVANCED is not set +CONFIG_MSDOS_PARTITION=y +CONFIG_EFI_PARTITION=y + +# +# IO Schedulers +# +CONFIG_IOSCHED_NOOP=y +# CONFIG_IOSCHED_DEADLINE is not set +# CONFIG_IOSCHED_CFQ is not set +CONFIG_DEFAULT_NOOP=y +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +CONFIG_INLINE_READ_UNLOCK=y +CONFIG_INLINE_READ_UNLOCK_IRQ=y +CONFIG_INLINE_WRITE_UNLOCK=y +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# CONFIG_FREEZER is not set + +# +# Bus options (PCI, PCMCIA, EISA, ISA, TC) +# +CONFIG_MMU=y +# CONFIG_PCCARD is not set + +# +# Executable file formats +# +CONFIG_BINFMT_ELF=y +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +CONFIG_BINFMT_SCRIPT=y +# CONFIG_HAVE_AOUT is not set +# CONFIG_BINFMT_MISC is not set +CONFIG_COREDUMP=y +CONFIG_TRAD_SIGNALS=y + +# +# Power management options +# +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_SUSPEND is not set +# CONFIG_HIBERNATION is not set +# CONFIG_PM_RUNTIME is not set +CONFIG_NET=y + +# +# Networking options +# +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_UNIX=y +# CONFIG_UNIX_DIAG is not set +# CONFIG_XFRM_USER is not set +# CONFIG_NET_KEY is not set +CONFIG_INET=y +CONFIG_IP_MULTICAST=y +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_PNP is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPGRE_DEMUX is not set +# CONFIG_NET_IP_TUNNEL is not set +CONFIG_IP_MROUTE=y +# CONFIG_IP_PIMSM_V1 is not set +# CONFIG_IP_PIMSM_V2 is not set +# CONFIG_ARPD is not set +# CONFIG_SYN_COOKIES is not set +# CONFIG_INET_AH is not set +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_LRO is not set +CONFIG_INET_DIAG=y +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_TCP_CONG_ADVANCED is not set +CONFIG_TCP_CONG_CUBIC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +# CONFIG_TCP_MD5SIG is not set +CONFIG_IPV6=m +CONFIG_IPV6_PRIVACY=y +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET6_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET6_XFRM_MODE_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_BEET is not set +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPV6_GRE is not set +CONFIG_IPV6_MULTIPLE_TABLES=y +CONFIG_IPV6_SUBTREES=y +CONFIG_IPV6_MROUTE=y +# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set +# CONFIG_IPV6_PIMSM_V2 is not set +CONFIG_SOCK_DIAG=y +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +CONFIG_NETFILTER=y +# CONFIG_NETFILTER_DEBUG is not set +CONFIG_NETFILTER_ADVANCED=y +# CONFIG_BRIDGE_NETFILTER is not set + +# +# Core Netfilter Configuration +# +# CONFIG_NETFILTER_NETLINK is not set +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +CONFIG_NF_CONNTRACK=y +CONFIG_NF_CONNTRACK_MARK=y +# CONFIG_NF_CONNTRACK_ZONES is not set +CONFIG_NF_CONNTRACK_PROCFS=y +# CONFIG_NF_CONNTRACK_EVENTS is not set +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +CONFIG_NF_CT_PROTO_GRE=y +# CONFIG_NF_CT_PROTO_SCTP is not set +# CONFIG_NF_CT_PROTO_UDPLITE is not set +# CONFIG_NF_CONNTRACK_AMANDA is not set +CONFIG_NF_CONNTRACK_FTP=y +# CONFIG_NF_CONNTRACK_H323 is not set +CONFIG_NF_CONNTRACK_IRC=m +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +# CONFIG_NF_CONNTRACK_SNMP is not set +CONFIG_NF_CONNTRACK_PPTP=y +# CONFIG_NF_CONNTRACK_SANE is not set +CONFIG_NF_CONNTRACK_SIP=y +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CT_NETLINK is not set +# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +CONFIG_NF_NAT=y +CONFIG_NF_NAT_NEEDED=y +# CONFIG_NF_NAT_AMANDA is not set +CONFIG_NF_NAT_FTP=y +CONFIG_NF_NAT_IRC=m +CONFIG_NF_NAT_SIP=y +# CONFIG_NF_NAT_TFTP is not set +# CONFIG_NETFILTER_TPROXY is not set +CONFIG_NETFILTER_XTABLES=y + +# +# Xtables combined modules +# +CONFIG_NETFILTER_XT_MARK=y +CONFIG_NETFILTER_XT_CONNMARK=m + +# +# Xtables targets +# +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +CONFIG_NETFILTER_XT_TARGET_CT=m +CONFIG_NETFILTER_XT_TARGET_DSCP=m +CONFIG_NETFILTER_XT_TARGET_HL=m +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +CONFIG_NETFILTER_XT_TARGET_LOG=m +CONFIG_NETFILTER_XT_TARGET_MARK=y +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +CONFIG_NETFILTER_XT_TARGET_NOTRACK=m +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +CONFIG_NETFILTER_XT_TARGET_REDIRECT=m +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TRACE is not set +CONFIG_NETFILTER_XT_TARGET_TCPMSS=y +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set + +# +# Xtables matches +# +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +CONFIG_NETFILTER_XT_MATCH_COMMENT=m +CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set +CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +CONFIG_NETFILTER_XT_MATCH_DSCP=m +CONFIG_NETFILTER_XT_MATCH_ECN=m +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +CONFIG_NETFILTER_XT_MATCH_HELPER=m +CONFIG_NETFILTER_XT_MATCH_HL=m +CONFIG_NETFILTER_XT_MATCH_ID=m +CONFIG_NETFILTER_XT_MATCH_IPRANGE=y +CONFIG_NETFILTER_XT_MATCH_LENGTH=m +CONFIG_NETFILTER_XT_MATCH_LIMIT=m +CONFIG_NETFILTER_XT_MATCH_MAC=y +CONFIG_NETFILTER_XT_MATCH_MARK=y +CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +CONFIG_NETFILTER_XT_MATCH_RECENT=m +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +CONFIG_NETFILTER_XT_MATCH_STATE=y +CONFIG_NETFILTER_XT_MATCH_STATISTIC=m +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +CONFIG_NETFILTER_XT_MATCH_TCPMSS=m +CONFIG_NETFILTER_XT_MATCH_TIME=m +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# CONFIG_IP_VS is not set + +# +# IP: Netfilter Configuration +# +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_CONNTRACK_IPV4=y +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +CONFIG_IP_NF_IPTABLES=y +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_RPFILTER is not set +# CONFIG_IP_NF_MATCH_TTL is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_TARGET_REJECT=m +# CONFIG_IP_NF_TARGET_ULOG is not set +CONFIG_NF_NAT_IPV4=y +CONFIG_IP_NF_TARGET_MASQUERADE=y +# CONFIG_IP_NF_TARGET_NETMAP is not set +CONFIG_IP_NF_TARGET_REDIRECT=m +CONFIG_NF_NAT_PROTO_GRE=y +CONFIG_NF_NAT_PPTP=y +# CONFIG_NF_NAT_H323 is not set +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +CONFIG_IP_NF_TARGET_ECN=m +# CONFIG_IP_NF_TARGET_TTL is not set +CONFIG_IP_NF_RAW=m +# CONFIG_IP_NF_ARPTABLES is not set + +# +# IPv6: Netfilter Configuration +# +# CONFIG_NF_DEFRAG_IPV6 is not set +# CONFIG_NF_CONNTRACK_IPV6 is not set +# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_BRIDGE_NF_EBTABLES is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_SCTP is not set +# CONFIG_RDS is not set +# CONFIG_TIPC is not set +# CONFIG_ATM is not set +CONFIG_L2TP=m +# CONFIG_L2TP_DEBUGFS is not set +# CONFIG_L2TP_V3 is not set +CONFIG_STP=y +CONFIG_BRIDGE=y +CONFIG_BRIDGE_IGMP_SNOOPING=y +# CONFIG_BRIDGE_VLAN_FILTERING is not set +CONFIG_HAVE_NET_DSA=y +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +# CONFIG_DECNET is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +# CONFIG_IPX is not set +# CONFIG_ATALK is not set +# CONFIG_X25 is not set +# CONFIG_LAPB is not set +# CONFIG_PHONET is not set +# CONFIG_IEEE802154 is not set +CONFIG_NET_SCHED=y + +# +# Queueing/Scheduling +# +# CONFIG_NET_SCH_CBQ is not set +CONFIG_NET_SCH_HTB=y +# CONFIG_NET_SCH_HFSC is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +CONFIG_NET_SCH_SFQ=y +# CONFIG_NET_SCH_ESFQ is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_CODEL is not set +CONFIG_NET_SCH_FQ_CODEL=y +# CONFIG_NET_SCH_PLUG is not set + +# +# Classification +# +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_TCINDEX is not set +# CONFIG_NET_CLS_ROUTE4 is not set +CONFIG_NET_CLS_FW=y +CONFIG_NET_CLS_U32=y +# CONFIG_CLS_U32_PERF is not set +# CONFIG_CLS_U32_MARK is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_FLOW is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_CLS_ACT is not set +# CONFIG_NET_CLS_IND is not set +CONFIG_NET_SCH_FIFO=y +# CONFIG_DCB is not set +# CONFIG_BATMAN_ADV is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_VSOCKETS is not set +# CONFIG_NETLINK_MMAP is not set +# CONFIG_NETLINK_DIAG is not set +CONFIG_BQL=y + +# +# Network testing +# +# CONFIG_NET_PKTGEN is not set +# CONFIG_HAMRADIO is not set +# CONFIG_CAN is not set +# CONFIG_IRDA is not set +# CONFIG_BT is not set +# CONFIG_AF_RXRPC is not set +CONFIG_FIB_RULES=y +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +CONFIG_WEXT_PRIV=y +# CONFIG_CFG80211 is not set +# CONFIG_LIB80211 is not set +# CONFIG_LIB80211_CRYPT_WEP is not set +# CONFIG_LIB80211_CRYPT_CCMP is not set +# CONFIG_LIB80211_CRYPT_TKIP is not set + +# +# CFG80211 needs to be enabled for MAC80211 +# +# CONFIG_WIMAX is not set +# CONFIG_RFKILL is not set +# CONFIG_NET_9P is not set +# CONFIG_CAIF is not set +# CONFIG_CEPH_LIB is not set +# CONFIG_NFC is not set + +# +# Device Drivers +# + +# +# Generic Driver Options +# +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_DEVTMPFS is not set +CONFIG_STANDALONE=y +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_FW_LOADER=y +CONFIG_FIRMWARE_IN_KERNEL=y +CONFIG_EXTRA_FIRMWARE="" +CONFIG_FW_LOADER_USER_HELPER=y +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_SYS_HYPERVISOR is not set +# CONFIG_GENERIC_CPU_DEVICES is not set +# CONFIG_REGMAP is not set +# CONFIG_REGMAP_I2C is not set +# CONFIG_REGMAP_SPI is not set +# CONFIG_DMA_SHARED_BUFFER is not set + +# +# Bus devices +# +# CONFIG_CONNECTOR is not set +CONFIG_MTD=y + +# +# OpenWrt specific MTD options +# +CONFIG_MTD_ROOTFS_ROOT_DEV=y +CONFIG_MTD_ROOTFS_SPLIT=y +# CONFIG_MTD_SPLIT_FIRMWARE is not set + +# +# Rootfs partition parsers +# +# CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set + +# +# Firmware partition parsers +# +# CONFIG_MTD_SPLIT_SEAMA_FW is not set +# CONFIG_MTD_SPLIT_UIMAGE_FW is not set +# CONFIG_MTD_SPLIT_LZMA_FW is not set +CONFIG_MTD_SPLIT=y +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_REDBOOT_PARTS is not set +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_AR7_PARTS is not set + +# +# User Modules And Translation Layers +# +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +# CONFIG_FTL is not set +# CONFIG_NFTL is not set +# CONFIG_INFTL is not set +# CONFIG_RFD_FTL is not set +# CONFIG_SSFDC is not set +# CONFIG_SM_FTL is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_SWAP is not set + +# +# RAM/ROM/Flash chip drivers +# +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_JEDECPROBE is not set +CONFIG_MTD_MAP_BANK_WIDTH_1=y +CONFIG_MTD_MAP_BANK_WIDTH_2=y +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +# CONFIG_MTD_RAM is not set +# CONFIG_MTD_ROM is not set +# CONFIG_MTD_ABSENT is not set +# CONFIG_RTL819X_SPI_FLASH is not set + +# +# Mapping drivers for chip access +# +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_PLATRAM is not set + +# +# Self-contained MTD device drivers +# +# CONFIG_MTD_DATAFLASH is not set +CONFIG_MTD_M25P80=y +CONFIG_M25PXX_USE_USER_MODE=y +# CONFIG_M25PXX_USE_FAST_READ is not set +# CONFIG_M25PXX_USE_MULTI_CHANNEL is not set +# CONFIG_M25PXX_USE_AUTO_MODE is not set +# CONFIG_M25PXX_PREFER_SMALL_SECTOR_ERASE is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SLRAM is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_MTDRAM is not set +CONFIG_MTD_BLOCK2MTD=y + +# +# Disk-On-Chip Device Drivers +# +# CONFIG_MTD_DOCG3 is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_ONENAND is not set + +# +# LPDDR flash memory drivers +# +# CONFIG_MTD_LPDDR is not set +# CONFIG_MTD_UBI is not set +# CONFIG_PARPORT is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_COW_COMMON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_RBD is not set + +# +# Misc devices +# +# CONFIG_AD525X_DPOT is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_ATMEL_SSC is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_TI_DAC7512 is not set +# CONFIG_BMP085_SPI is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +# CONFIG_SRAM is not set +# CONFIG_C2PORT is not set + +# +# EEPROM support +# +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set + +# +# Texas Instruments shared transport line discipline +# + +# +# Altera FPGA firmware download module +# +CONFIG_HAVE_IDE=y +# CONFIG_IDE is not set + +# +# SCSI device support +# +CONFIG_SCSI_MOD=y +# CONFIG_RAID_ATTRS is not set +# CONFIG_SCSI is not set +# CONFIG_SCSI_DMA is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_ATA is not set +# CONFIG_MD is not set +CONFIG_NETDEVICES=y +CONFIG_NET_CORE=y +# CONFIG_BONDING is not set +# CONFIG_DUMMY is not set +# CONFIG_EQUALIZER is not set +# CONFIG_MII is not set +# CONFIG_NET_TEAM is not set +CONFIG_MACVLAN=m +# CONFIG_MACVTAP is not set +# CONFIG_VXLAN is not set +# CONFIG_NETCONSOLE is not set +# CONFIG_NETPOLL is not set +# CONFIG_NET_POLL_CONTROLLER is not set +CONFIG_TUN=m +# CONFIG_VETH is not set + +# +# CAIF transport drivers +# + +# +# Distributed Switch Architecture drivers +# +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6060 is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +# CONFIG_NET_DSA_MV88E6131 is not set +# CONFIG_NET_DSA_MV88E6123_61_65 is not set +# CONFIG_ETHERNET is not set +# CONFIG_PHYLIB is not set +# CONFIG_MICREL_KS8995MA is not set +# CONFIG_PSB6970_PHY is not set +CONFIG_PPP=y +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_MPPE is not set +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPPOE=y +# CONFIG_PPPOL2TP is not set +CONFIG_PPP_ASYNC=y +CONFIG_PPP_SYNC_TTY=y +# CONFIG_SLIP is not set +CONFIG_SLHC=y +# CONFIG_WLAN is not set + +# +# Enable WiMAX (Networking options) to see the WiMAX drivers +# +# CONFIG_WAN is not set +# CONFIG_RTL_819X_SWCORE is not set +# CONFIG_ISDN is not set + +# +# Input device support +# +# CONFIG_INPUT is not set + +# +# Hardware I/O ports +# +# CONFIG_SERIO is not set +# CONFIG_GAMEPORT is not set + +# +# Character devices +# +CONFIG_TTY=y +# CONFIG_VT is not set +# CONFIG_UNIX98_PTYS is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_N_GSM is not set +# CONFIG_TRACE_SINK is not set +# CONFIG_DEVKMEM is not set + +# +# Serial drivers +# +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +CONFIG_SERIAL_8250_CONSOLE=y +CONFIG_SERIAL_8250_SYSRQ=y +CONFIG_SERIAL_8250_NR_UARTS=2 +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +# CONFIG_SERIAL_8250_EXTENDED is not set +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_RTL_UART2 is not set + +# +# Non-8250 serial port support +# +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX310X is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +# CONFIG_TTY_PRINTK is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_HW_RANDOM is not set +# CONFIG_R3964 is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_TCG_TPM is not set +# CONFIG_I2C is not set +CONFIG_SPI=y +# CONFIG_SPI_DEBUG is not set +CONFIG_SPI_MASTER=y + +# +# SPI Master Controller Drivers +# +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_PXA2XX_PCI is not set +CONFIG_SPI_SHEIPA=y +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_DESIGNWARE is not set + +# +# SPI Protocol Masters +# +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set + +# +# Qualcomm MSM SSBI bus support +# +# CONFIG_SSBI is not set +# CONFIG_HSI is not set + +# +# PPS support +# +# CONFIG_PPS is not set + +# +# PPS generators support +# + +# +# PTP clock support +# +# CONFIG_PTP_1588_CLOCK is not set + +# +# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks. +# +# CONFIG_PTP_1588_CLOCK_PCH is not set +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_GPIO_DEVRES=y +# CONFIG_W1 is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_POWER_AVS is not set +# CONFIG_HWMON is not set +# CONFIG_THERMAL is not set +# CONFIG_WATCHDOG is not set +CONFIG_SSB_POSSIBLE=y + +# +# Sonics Silicon Backplane +# +# CONFIG_SSB is not set +CONFIG_BCMA_POSSIBLE=y + +# +# Broadcom specific AMBA +# +# CONFIG_BCMA is not set + +# +# Multifunction device drivers +# +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_MFD_STMPE is not set +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_REGULATOR is not set +# CONFIG_MEDIA_SUPPORT is not set + +# +# Graphics support +# +# CONFIG_DRM is not set +# CONFIG_VGASTATE is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +# CONFIG_FB is not set +# CONFIG_EXYNOS_VIDEO is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_SOUND is not set +# CONFIG_USB_ARCH_HAS_OHCI is not set +# CONFIG_USB_ARCH_HAS_EHCI is not set +# CONFIG_USB_ARCH_HAS_XHCI is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_MMC is not set +# CONFIG_MEMSTICK is not set +# CONFIG_NEW_LEDS is not set +# CONFIG_ACCESSIBILITY is not set +CONFIG_RTC_LIB=y +# CONFIG_RTC_CLASS is not set +# CONFIG_DMADEVICES is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_UIO is not set +# CONFIG_VIRT_DRIVERS is not set + +# +# Virtio drivers +# +# CONFIG_VIRTIO_MMIO is not set + +# +# Microsoft Hyper-V guest support +# +# CONFIG_STAGING is not set + +# +# Hardware Spinlock drivers +# +# CONFIG_MAILBOX is not set +# CONFIG_IOMMU_SUPPORT is not set + +# +# Remoteproc drivers +# +# CONFIG_STE_MODEM_RPROC is not set + +# +# Rpmsg drivers +# +# CONFIG_PM_DEVFREQ is not set +# CONFIG_EXTCON is not set +# CONFIG_MEMORY is not set +# CONFIG_IIO is not set +# CONFIG_PWM is not set +# CONFIG_IPACK_BUS is not set +# CONFIG_RESET_CONTROLLER is not set + +# +# Firmware Drivers +# +# CONFIG_FIRMWARE_MEMMAP is not set + +# +# File systems +# +# CONFIG_EXT2_FS is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT4_FS is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_JFS_FS is not set +# CONFIG_XFS_FS is not set +# CONFIG_GFS2_FS is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_YAFFS_FS is not set +# CONFIG_FS_POSIX_ACL is not set +CONFIG_FILE_LOCKING=y +# CONFIG_DIRECT_IO is not set +# CONFIG_FSNOTIFY is not set +# CONFIG_DNOTIFY is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_FANOTIFY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_FUSE_FS is not set +CONFIG_OVERLAYFS_FS=y + +# +# Caches +# +# CONFIG_FSCACHE is not set + +# +# CD-ROM/DVD Filesystems +# +# CONFIG_ISO9660_FS is not set +# CONFIG_UDF_FS is not set + +# +# DOS/FAT/NT Filesystems +# +CONFIG_FAT_FS=y +CONFIG_MSDOS_FS=y +CONFIG_VFAT_FS=y +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +# CONFIG_NTFS_FS is not set + +# +# Pseudo filesystems +# +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_SYSCTL=y +# CONFIG_PROC_PAGE_MONITOR is not set +CONFIG_PROC_STRIPPED=y +CONFIG_SYSFS=y +# CONFIG_HUGETLB_PAGE is not set +CONFIG_CONFIGFS_FS=y +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_ADFS_FS is not set +# CONFIG_AFFS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_EFS_FS is not set +# CONFIG_JFFS2_FS is not set +# CONFIG_LOGFS is not set +# CONFIG_CRAMFS is not set +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_XATTR is not set +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XZ is not set +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +CONFIG_SQUASHFS_EMBEDDED=y +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_VXFS_FS is not set +# CONFIG_MINIX_FS is not set +# CONFIG_MINIX_FS_NATIVE_ENDIAN is not set +# CONFIG_OMFS_FS is not set +# CONFIG_HPFS_FS is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_PSTORE is not set +# CONFIG_SYSV_FS is not set +# CONFIG_UFS_FS is not set +# CONFIG_F2FS_FS is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NFS_FS is not set +# CONFIG_NFSD is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CIFS is not set +# CONFIG_NCP_FS is not set +# CONFIG_CODA_FS is not set +# CONFIG_AFS_FS is not set +CONFIG_NLS=y +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +# CONFIG_NLS_ASCII is not set +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_DLM is not set + +# +# Kernel hacking +# +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +CONFIG_PRINTK_TIME=y +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 +CONFIG_ENABLE_WARN_DEPRECATED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_FRAME_WARN=1024 +CONFIG_MAGIC_SYSRQ=y +CONFIG_STRIP_ASM_SYMS=y +# CONFIG_READABLE_ASM is not set +# CONFIG_UNUSED_SYMBOLS is not set +CONFIG_DEBUG_FS=y +# CONFIG_HEADERS_CHECK is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_LOCKUP_DETECTOR is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +# CONFIG_DETECT_HUNG_TASK is not set +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHEDSTATS is not set +# CONFIG_TIMER_STATS is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_SLUB_STATS is not set +CONFIG_HAVE_DEBUG_KMEMLEAK=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_INFO is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_BOOT_PRINTK_DELAY is not set + +# +# RCU Debugging +# +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_LKDTM is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_FAULT_INJECTION is not set +# CONFIG_DEBUG_PAGEALLOC is not set +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_TRACING_SUPPORT=y +# CONFIG_FTRACE is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_SAMPLES is not set +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_KGDB is not set +# CONFIG_TEST_STRING_HELPERS is not set +# CONFIG_TEST_KSTRTOX is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_CMDLINE_BOOL is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_RUNTIME_DEBUG is not set +# CONFIG_SPINLOCK_TEST is not set + +# +# Security options +# +# CONFIG_KEYS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_SECURITY="" +CONFIG_CRYPTO=y + +# +# Crypto core or helper +# +# CONFIG_CRYPTO_FIPS is not set +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +# CONFIG_CRYPTO_AEAD is not set +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +# CONFIG_CRYPTO_MANAGER is not set +# CONFIG_CRYPTO_MANAGER2 is not set +# CONFIG_CRYPTO_USER is not set +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_NULL is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_AUTHENC is not set +# CONFIG_CRYPTO_TEST is not set + +# +# Authenticated Encryption with Associated Data +# +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_SEQIV is not set + +# +# Block modes +# +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_XTS is not set + +# +# Hash modes +# +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_HMAC is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_VMAC is not set + +# +# Digest +# +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_SHA1=y +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_WP512 is not set + +# +# Ciphers +# +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SERPENT is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TWOFISH is not set + +# +# Compression +# +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_XZ is not set + +# +# Random Number Generation +# +CONFIG_CRYPTO_ANSI_CPRNG=y +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +CONFIG_CRYPTO_HW=y + +# +# OCF Configuration +# +# CONFIG_OCF_OCF is not set +# CONFIG_BINARY_PRINTF is not set + +# +# Library routines +# +CONFIG_BITREVERSE=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_IO=y +CONFIG_CRC_CCITT=y +# CONFIG_CRC16 is not set +# CONFIG_CRC_T10DIF is not set +# CONFIG_CRC_ITU_T is not set +CONFIG_CRC32=y +# CONFIG_CRC32_SELFTEST is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC32_SLICEBY4 is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC7 is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_CRC8 is not set +CONFIG_ZLIB_INFLATE=y +# CONFIG_ZLIB_DEFLATE is not set +# CONFIG_LZO_COMPRESS is not set +# CONFIG_LZO_DECOMPRESS is not set +# CONFIG_XZ_DEC is not set +# CONFIG_XZ_DEC_BCJ is not set +CONFIG_TEXTSEARCH=y +# CONFIG_TEXTSEARCH_KMP is not set +# CONFIG_TEXTSEARCH_BM is not set +# CONFIG_TEXTSEARCH_FSM is not set +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +CONFIG_HAS_DMA=y +CONFIG_DQL=y +CONFIG_NLATTR=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +CONFIG_AVERAGE=y +# CONFIG_CORDIC is not set +# CONFIG_DDR is not set +CONFIG_HAVE_KVM=y +# CONFIG_VIRTUALIZATION is not set diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/config.bkup.kernel_cmdline_can_run b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config.bkup.kernel_cmdline_can_run new file mode 100755 index 000000000..fe7d24c28 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/config.bkup.kernel_cmdline_can_run @@ -0,0 +1,4141 @@ +CONFIG_32BIT=y +# CONFIG_6PACK is not set +# CONFIG_8139CP is not set +# CONFIG_8139TOO is not set +# CONFIG_9P_FS is not set +# CONFIG_AB3100_CORE is not set +# CONFIG_AB8500_CORE is not set +# CONFIG_ABX500_CORE is not set +# CONFIG_ACCESSIBILITY is not set +# CONFIG_ACENIC is not set +# CONFIG_ACERHDF is not set +# CONFIG_ACORN_PARTITION is not set +# CONFIG_ACPI_APEI is not set +# CONFIG_ACPI_CUSTOM_METHOD is not set +# CONFIG_ACPI_HED is not set +# CONFIG_ACPI_POWER_METER is not set +# CONFIG_ACPI_QUICKSTART is not set +# CONFIG_AD2S1200 is not set +# CONFIG_AD2S1210 is not set +# CONFIG_AD2S90 is not set +# CONFIG_AD5064 is not set +# CONFIG_AD525X_DPOT is not set +# CONFIG_AD5360 is not set +# CONFIG_AD5380 is not set +# CONFIG_AD5421 is not set +# CONFIG_AD5446 is not set +# CONFIG_AD5449 is not set +# CONFIG_AD5504 is not set +# CONFIG_AD5624R_SPI is not set +# CONFIG_AD5686 is not set +# CONFIG_AD5755 is not set +# CONFIG_AD5764 is not set +# CONFIG_AD5791 is not set +# CONFIG_AD5930 is not set +# CONFIG_AD5933 is not set +# CONFIG_AD7150 is not set +# CONFIG_AD7152 is not set +# CONFIG_AD7192 is not set +# CONFIG_AD7266 is not set +# CONFIG_AD7280 is not set +# CONFIG_AD7291 is not set +# CONFIG_AD7298 is not set +# CONFIG_AD7476 is not set +# CONFIG_AD7606 is not set +# CONFIG_AD7746 is not set +# CONFIG_AD7780 is not set +# CONFIG_AD7791 is not set +# CONFIG_AD7793 is not set +# CONFIG_AD7816 is not set +# CONFIG_AD7887 is not set +# CONFIG_AD7923 is not set +# CONFIG_AD799X is not set +# CONFIG_AD8366 is not set +# CONFIG_AD9523 is not set +# CONFIG_AD9832 is not set +# CONFIG_AD9834 is not set +# CONFIG_AD9850 is not set +# CONFIG_AD9852 is not set +# CONFIG_AD9910 is not set +# CONFIG_AD9951 is not set +# CONFIG_ADAPTEC_STARFIRE is not set +# CONFIG_ADE7753 is not set +# CONFIG_ADE7754 is not set +# CONFIG_ADE7758 is not set +# CONFIG_ADE7759 is not set +# CONFIG_ADE7854 is not set +# CONFIG_ADF4350 is not set +# CONFIG_ADFS_FS is not set +# CONFIG_ADIS16060 is not set +# CONFIG_ADIS16080 is not set +# CONFIG_ADIS16130 is not set +# CONFIG_ADIS16136 is not set +# CONFIG_ADIS16201 is not set +# CONFIG_ADIS16203 is not set +# CONFIG_ADIS16204 is not set +# CONFIG_ADIS16209 is not set +# CONFIG_ADIS16220 is not set +# CONFIG_ADIS16240 is not set +# CONFIG_ADIS16255 is not set +# CONFIG_ADIS16260 is not set +# CONFIG_ADIS16400 is not set +# CONFIG_ADIS16480 is not set +# CONFIG_ADJD_S311 is not set +# CONFIG_ADM6996_PHY is not set +# CONFIG_ADM8211 is not set +# CONFIG_ADT7316 is not set +# CONFIG_ADXRS450 is not set +CONFIG_AEABI=y +# CONFIG_AFFS_FS is not set +# CONFIG_AFS_FS is not set +# CONFIG_AF_RXRPC is not set +# CONFIG_AGP is not set +CONFIG_AIO=y +# CONFIG_AIRO is not set +# CONFIG_AIRO_CS is not set +# CONFIG_AK8975 is not set +# CONFIG_ALCHEMY_GPIO_INDIRECT is not set +# CONFIG_ALIM7101_WDT is not set +# CONFIG_ALTERA_STAPL is not set +# CONFIG_ALX is not set +# CONFIG_AMD8111_ETH is not set +# CONFIG_AMD_PHY is not set +# CONFIG_AMIGA_PARTITION is not set +# CONFIG_AMILO_RFKILL is not set +# CONFIG_ANDROID is not set +CONFIG_ANON_INODES=y +# CONFIG_APDS9802ALS is not set +# CONFIG_APM8018X is not set +# CONFIG_APPLICOM is not set +# CONFIG_AR7 is not set +# CONFIG_AR8216_PHY is not set +# CONFIG_AR8216_PHY_LEDS is not set +# CONFIG_ARCH_AT91 is not set +# CONFIG_ARCH_BCM2835 is not set +# CONFIG_ARCH_BCMRING is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +# CONFIG_ARCH_CLPS711X is not set +# CONFIG_ARCH_CNS3XXX is not set +# CONFIG_ARCH_DAVINCI is not set +CONFIG_ARCH_DISCARD_MEMBLOCK=y +# CONFIG_ARCH_DMA_ADDR_T_64BIT is not set +# CONFIG_ARCH_DOVE is not set +# CONFIG_ARCH_EBSA110 is not set +# CONFIG_ARCH_EP93XX is not set +# CONFIG_ARCH_EXYNOS is not set +CONFIG_ARCH_FLATMEM_ENABLE=y +# CONFIG_ARCH_FOOTBRIDGE is not set +# CONFIG_ARCH_GEMINI is not set +# CONFIG_ARCH_H720X is not set +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +# CONFIG_ARCH_HAS_ILOG2_U32 is not set +# CONFIG_ARCH_HAS_ILOG2_U64 is not set +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +# CONFIG_ARCH_HIGHBANK is not set +# CONFIG_ARCH_INTEGRATOR is not set +# CONFIG_ARCH_IOP13XX is not set +# CONFIG_ARCH_IOP32X is not set +# CONFIG_ARCH_IOP33X is not set +# CONFIG_ARCH_IXP2000 is not set +# CONFIG_ARCH_IXP23XX is not set +# CONFIG_ARCH_IXP4XX is not set +# CONFIG_ARCH_KIRKWOOD is not set +# CONFIG_ARCH_KS8695 is not set +# CONFIG_ARCH_LPC32XX is not set +# CONFIG_ARCH_MMP is not set +# CONFIG_ARCH_MSM is not set +# CONFIG_ARCH_MULTIPLATFORM is not set +# CONFIG_ARCH_MV78XX0 is not set +# CONFIG_ARCH_MVEBU is not set +# CONFIG_ARCH_MXC is not set +# CONFIG_ARCH_MXS is not set +# CONFIG_ARCH_NETX is not set +# CONFIG_ARCH_NOMADIK is not set +# CONFIG_ARCH_NUC93X is not set +# CONFIG_ARCH_OMAP is not set +# CONFIG_ARCH_OMAP1 is not set +# CONFIG_ARCH_OMAP2PLUS is not set +# CONFIG_ARCH_OMAP3 is not set +# CONFIG_ARCH_OMAP4 is not set +# CONFIG_ARCH_ORION5X is not set +# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set +# CONFIG_ARCH_PICOXCELL is not set +# CONFIG_ARCH_PNX4008 is not set +# CONFIG_ARCH_PRIMA2 is not set +# CONFIG_ARCH_PXA is not set +# CONFIG_ARCH_REALVIEW is not set +# CONFIG_ARCH_RPC is not set +# CONFIG_ARCH_S3C24XX is not set +# CONFIG_ARCH_S3C64XX is not set +# CONFIG_ARCH_S5P64X0 is not set +# CONFIG_ARCH_S5PC100 is not set +# CONFIG_ARCH_S5PV210 is not set +# CONFIG_ARCH_SA1100 is not set +# CONFIG_ARCH_SHARK is not set +# CONFIG_ARCH_SHMOBILE is not set +# CONFIG_ARCH_SIRF is not set +# CONFIG_ARCH_SOCFPGA is not set +# CONFIG_ARCH_SUPPORTS_MSI is not set +CONFIG_ARCH_SUSPEND_POSSIBLE=y +# CONFIG_ARCH_TCC_926 is not set +# CONFIG_ARCH_TEGRA is not set +# CONFIG_ARCH_U300 is not set +# CONFIG_ARCH_U8500 is not set +# CONFIG_ARCH_VERSATILE is not set +# CONFIG_ARCH_VEXPRESS is not set +# CONFIG_ARCH_VT8500 is not set +# CONFIG_ARCH_W90X900 is not set +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +# CONFIG_ARCH_ZYNQ is not set +# CONFIG_ARCNET is not set +# CONFIG_ARM_ARCH_TIMER is not set +# CONFIG_ARM_AT91_ETHER is not set +CONFIG_ARM_CPU_TOPOLOGY=y +CONFIG_ARM_DMA_MEM_BUFFERABLE=y +# CONFIG_ARM_ERRATA_326103 is not set +# CONFIG_ARM_ERRATA_364296 is not set +# CONFIG_ARM_ERRATA_411920 is not set +# CONFIG_ARM_ERRATA_430973 is not set +# CONFIG_ARM_ERRATA_458693 is not set +# CONFIG_ARM_ERRATA_460075 is not set +# CONFIG_ARM_ERRATA_643719 is not set +# CONFIG_ARM_ERRATA_720789 is not set +# CONFIG_ARM_ERRATA_742230 is not set +# CONFIG_ARM_ERRATA_742231 is not set +# CONFIG_ARM_ERRATA_743622 is not set +# CONFIG_ARM_ERRATA_751472 is not set +# CONFIG_ARM_ERRATA_754322 is not set +# CONFIG_ARM_ERRATA_754327 is not set +# CONFIG_ARM_ERRATA_764369 is not set +# CONFIG_ARM_ERRATA_775420 is not set +# CONFIG_ARM_ERRATA_798181 is not set +# CONFIG_ARM_PATCH_PHYS_VIRT is not set +# CONFIG_ARM_PSCI is not set +# CONFIG_ARM_UNWIND is not set +# CONFIG_ARM_VIRT_EXT is not set +# CONFIG_ARPD is not set +# CONFIG_ARTHUR is not set +# CONFIG_ASUS_OLED is not set +# CONFIG_ASYMMETRIC_KEY_TYPE is not set +# CONFIG_ASYNC_RAID6_TEST is not set +# CONFIG_ASYNC_TX_DMA is not set +# CONFIG_AT76C50X_USB is not set +# CONFIG_AT803X_PHY is not set +# CONFIG_ATA is not set +CONFIG_ATAGS_PROC=y +# CONFIG_ATALK is not set +# CONFIG_ATARI_PARTITION is not set +# CONFIG_ATA_ACPI is not set +CONFIG_ATA_BMDMA=y +# CONFIG_ATA_GENERIC is not set +# CONFIG_ATA_NONSTANDARD is not set +# CONFIG_ATA_OVER_ETH is not set +# CONFIG_ATA_PIIX is not set +CONFIG_ATA_SFF=y +# CONFIG_ATA_VERBOSE_ERROR is not set +# CONFIG_ATH5K is not set +# CONFIG_ATH6K_LEGACY is not set +# CONFIG_ATH79 is not set +# CONFIG_ATH9K is not set +# CONFIG_ATL1 is not set +# CONFIG_ATL1C is not set +# CONFIG_ATL1E is not set +# CONFIG_ATL2 is not set +# CONFIG_ATM is not set +# CONFIG_ATMEL is not set +# CONFIG_ATMEL_PWM is not set +# CONFIG_ATMEL_SSC is not set +# CONFIG_ATM_AMBASSADOR is not set +# CONFIG_ATM_BR2684 is not set +CONFIG_ATM_BR2684_IPFILTER=y +# CONFIG_ATM_CLIP is not set +CONFIG_ATM_CLIP_NO_ICMP=y +# CONFIG_ATM_DRIVERS is not set +# CONFIG_ATM_DUMMY is not set +# CONFIG_ATM_ENI is not set +# CONFIG_ATM_FIRESTREAM is not set +# CONFIG_ATM_FORE200E is not set +# CONFIG_ATM_HE is not set +# CONFIG_ATM_HORIZON is not set +# CONFIG_ATM_IA is not set +# CONFIG_ATM_IDT77252 is not set +# CONFIG_ATM_LANAI is not set +# CONFIG_ATM_LANE is not set +# CONFIG_ATM_MPOA is not set +# CONFIG_ATM_NICSTAR is not set +# CONFIG_ATM_SOLOS is not set +# CONFIG_ATM_TCP is not set +# CONFIG_ATM_ZATM is not set +# CONFIG_ATOMIC64_SELFTEST is not set +# CONFIG_ATP is not set +# CONFIG_AUDIT is not set +# CONFIG_AUDIT_LOGINUID_IMMUTABLE is not set +# CONFIG_AUTOFS4_FS is not set +# CONFIG_AUTO_ZRELADDR is not set +# CONFIG_AUXDISPLAY is not set +# CONFIG_AVERAGE is not set +# CONFIG_AX25 is not set +# CONFIG_AX25_DAMA_SLAVE is not set +# CONFIG_AX88796 is not set +# CONFIG_B43 is not set +# CONFIG_B43LEGACY is not set +# CONFIG_B44 is not set +# CONFIG_B53 is not set +# CONFIG_B53_SPI_DRIVER is not set +# CONFIG_BACKLIGHT_LCD_SUPPORT is not set +# CONFIG_BACKLIGHT_LM3630 is not set +# CONFIG_BACKLIGHT_LM3639 is not set +# CONFIG_BACKLIGHT_LP855X is not set +# CONFIG_BACKTRACE_SELF_TEST is not set +CONFIG_BASE_FULL=y +CONFIG_BASE_SMALL=0 +# CONFIG_BATMAN_ADV is not set +# CONFIG_BATTERY_BQ27x00 is not set +# CONFIG_BATTERY_DS2760 is not set +# CONFIG_BATTERY_DS2780 is not set +# CONFIG_BATTERY_DS2781 is not set +# CONFIG_BATTERY_DS2782 is not set +# CONFIG_BATTERY_GOLDFISH is not set +# CONFIG_BATTERY_MAX17040 is not set +# CONFIG_BATTERY_MAX17042 is not set +# CONFIG_BATTERY_SBS is not set +# CONFIG_BAYCOM_EPP is not set +# CONFIG_BAYCOM_PAR is not set +# CONFIG_BAYCOM_SER_FDX is not set +# CONFIG_BAYCOM_SER_HDX is not set +# CONFIG_BCACHE is not set +# CONFIG_BCM47XX is not set +# CONFIG_BCM63XX is not set +# CONFIG_BCM63XX_PHY is not set +# CONFIG_BCM87XX_PHY is not set +# CONFIG_BCMA is not set +# CONFIG_BCMA_DRIVER_GPIO is not set +CONFIG_BCMA_POSSIBLE=y +# CONFIG_BCM_WIMAX is not set +# CONFIG_BDI_SWITCH is not set +# CONFIG_BE2ISCSI is not set +# CONFIG_BE2NET is not set +# CONFIG_BEFS_FS is not set +# CONFIG_BFS_FS is not set +# CONFIG_BGMAC is not set +# CONFIG_BINARY_PRINTF is not set +# CONFIG_BINFMT_AOUT is not set +CONFIG_BINFMT_ELF=y +# CONFIG_BINFMT_MISC is not set +CONFIG_BINFMT_SCRIPT=y +CONFIG_BITREVERSE=y +# CONFIG_BLK_CPQ_CISS_DA is not set +# CONFIG_BLK_CPQ_DA is not set +CONFIG_BLK_DEV=y +# CONFIG_BLK_DEV_3W_XXXX_RAID is not set +# CONFIG_BLK_DEV_4DRIVES is not set +# CONFIG_BLK_DEV_AEC62XX is not set +# CONFIG_BLK_DEV_ALI14XX is not set +# CONFIG_BLK_DEV_ALI15X3 is not set +# CONFIG_BLK_DEV_AMD74XX is not set +# CONFIG_BLK_DEV_ATIIXP is not set +CONFIG_BLK_DEV_BSG=y +# CONFIG_BLK_DEV_BSGLIB is not set +# CONFIG_BLK_DEV_CMD640 is not set +# CONFIG_BLK_DEV_CMD64X is not set +# CONFIG_BLK_DEV_COW_COMMON is not set +# CONFIG_BLK_DEV_CRYPTOLOOP is not set +# CONFIG_BLK_DEV_CS5520 is not set +# CONFIG_BLK_DEV_CS5530 is not set +# CONFIG_BLK_DEV_CS5535 is not set +# CONFIG_BLK_DEV_CS5536 is not set +# CONFIG_BLK_DEV_CY82C693 is not set +# CONFIG_BLK_DEV_DAC960 is not set +# CONFIG_BLK_DEV_DELKIN is not set +# CONFIG_BLK_DEV_DRBD is not set +# CONFIG_BLK_DEV_DTC2278 is not set +# CONFIG_BLK_DEV_FD is not set +# CONFIG_BLK_DEV_GENERIC is not set +# CONFIG_BLK_DEV_HD is not set +# CONFIG_BLK_DEV_HPT366 is not set +# CONFIG_BLK_DEV_HT6560B is not set +# CONFIG_BLK_DEV_IDEACPI is not set +# CONFIG_BLK_DEV_IDECD is not set +# CONFIG_BLK_DEV_IDECS is not set +# CONFIG_BLK_DEV_IDEPCI is not set +# CONFIG_BLK_DEV_IDEPNP is not set +# CONFIG_BLK_DEV_IDETAPE is not set +# CONFIG_BLK_DEV_IDE_AU1XXX is not set +# CONFIG_BLK_DEV_IDE_SATA is not set +# CONFIG_BLK_DEV_INITRD is not set +# CONFIG_BLK_DEV_INTEGRITY is not set +# CONFIG_BLK_DEV_IO_TRACE is not set +# CONFIG_BLK_DEV_IT8172 is not set +# CONFIG_BLK_DEV_IT8213 is not set +# CONFIG_BLK_DEV_IT821X is not set +# CONFIG_BLK_DEV_JMICRON is not set +CONFIG_BLK_DEV_LOOP=y +CONFIG_BLK_DEV_LOOP_MIN_COUNT=8 +# CONFIG_BLK_DEV_NBD is not set +# CONFIG_BLK_DEV_NS87415 is not set +# CONFIG_BLK_DEV_NVME is not set +# CONFIG_BLK_DEV_OFFBOARD is not set +# CONFIG_BLK_DEV_OPTI621 is not set +# CONFIG_BLK_DEV_PCIESSD_MTIP32XX is not set +# CONFIG_BLK_DEV_PDC202XX_NEW is not set +# CONFIG_BLK_DEV_PDC202XX_OLD is not set +# CONFIG_BLK_DEV_PIIX is not set +# CONFIG_BLK_DEV_PLATFORM is not set +# CONFIG_BLK_DEV_QD65XX is not set +# CONFIG_BLK_DEV_RAM is not set +# CONFIG_BLK_DEV_RBD is not set +# CONFIG_BLK_DEV_RSXX is not set +# CONFIG_BLK_DEV_RZ1000 is not set +# CONFIG_BLK_DEV_SC1200 is not set +# CONFIG_BLK_DEV_SD is not set +# CONFIG_BLK_DEV_SIIMAGE is not set +# CONFIG_BLK_DEV_SIS5513 is not set +# CONFIG_BLK_DEV_SL82C105 is not set +# CONFIG_BLK_DEV_SLC90E66 is not set +# CONFIG_BLK_DEV_SR is not set +# CONFIG_BLK_DEV_SVWKS is not set +# CONFIG_BLK_DEV_SX8 is not set +# CONFIG_BLK_DEV_TC86C001 is not set +# CONFIG_BLK_DEV_THROTTLING is not set +# CONFIG_BLK_DEV_TRIFLEX is not set +# CONFIG_BLK_DEV_TRM290 is not set +# CONFIG_BLK_DEV_UB is not set +# CONFIG_BLK_DEV_UMC8672 is not set +# CONFIG_BLK_DEV_UMEM is not set +# CONFIG_BLK_DEV_VIA82CXXX is not set +# CONFIG_BLK_DEV_XIP is not set +CONFIG_BLOCK=y +# CONFIG_BMP085 is not set +# CONFIG_BMP085_I2C is not set +# CONFIG_BMP085_SPI is not set +# CONFIG_BNA is not set +# CONFIG_BNX2 is not set +# CONFIG_BNX2X is not set +# CONFIG_BONDING is not set +# CONFIG_BOOKE_WDT is not set +CONFIG_BOOKE_WDT_DEFAULT_TIMEOUT=3 +# CONFIG_BOOT_PRINTK_DELAY is not set +CONFIG_BOOT_RAW=y +# CONFIG_BPCTL is not set +# CONFIG_BPF_JIT is not set +# CONFIG_BPQETHER is not set +CONFIG_BQL=y +CONFIG_BRANCH_PROFILE_NONE=y +# CONFIG_BRCMFMAC is not set +CONFIG_BRIDGE=y +# CONFIG_BRIDGE_EBT_802_3 is not set +# CONFIG_BRIDGE_EBT_AMONG is not set +# CONFIG_BRIDGE_EBT_ARP is not set +# CONFIG_BRIDGE_EBT_ARPREPLY is not set +# CONFIG_BRIDGE_EBT_BROUTE is not set +# CONFIG_BRIDGE_EBT_DNAT is not set +# CONFIG_BRIDGE_EBT_IP is not set +# CONFIG_BRIDGE_EBT_IP6 is not set +# CONFIG_BRIDGE_EBT_LIMIT is not set +# CONFIG_BRIDGE_EBT_LOG is not set +# CONFIG_BRIDGE_EBT_MARK is not set +# CONFIG_BRIDGE_EBT_MARK_T is not set +# CONFIG_BRIDGE_EBT_NFLOG is not set +# CONFIG_BRIDGE_EBT_PKTTYPE is not set +# CONFIG_BRIDGE_EBT_REDIRECT is not set +# CONFIG_BRIDGE_EBT_SNAT is not set +# CONFIG_BRIDGE_EBT_STP is not set +# CONFIG_BRIDGE_EBT_T_FILTER is not set +# CONFIG_BRIDGE_EBT_T_NAT is not set +# CONFIG_BRIDGE_EBT_ULOG is not set +# CONFIG_BRIDGE_EBT_VLAN is not set +# CONFIG_BRIDGE_IGMP_SNOOPING is not set +# CONFIG_BRIDGE_NETFILTER is not set +# CONFIG_BRIDGE_NF_EBTABLES is not set +# CONFIG_BRIDGE_VLAN_FILTERING is not set +# CONFIG_BROADCOM_PHY is not set +CONFIG_BROKEN_ON_SMP=y +# CONFIG_BSD_DISKLABEL is not set +# CONFIG_BSD_PROCESS_ACCT is not set +# CONFIG_BSD_PROCESS_ACCT_V3 is not set +# CONFIG_BT is not set +# CONFIG_BTRFS_DEBUG is not set +# CONFIG_BTRFS_FS is not set +# CONFIG_BTRFS_FS_RUN_SANITY_TESTS is not set +# CONFIG_BT_ATH3K is not set +# CONFIG_BT_BNEP is not set +CONFIG_BT_BNEP_MC_FILTER=y +CONFIG_BT_BNEP_PROTO_FILTER=y +# CONFIG_BT_CMTP is not set +# CONFIG_BT_HCIBCM203X is not set +# CONFIG_BT_HCIBFUSB is not set +# CONFIG_BT_HCIBLUECARD is not set +# CONFIG_BT_HCIBPA10X is not set +# CONFIG_BT_HCIBT3C is not set +# CONFIG_BT_HCIBTSDIO is not set +# CONFIG_BT_HCIBTUART is not set +# CONFIG_BT_HCIBTUSB is not set +# CONFIG_BT_HCIDTL1 is not set +# CONFIG_BT_HCIUART is not set +# CONFIG_BT_HCIUART_3WIRE is not set +# CONFIG_BT_HCIUART_ATH3K is not set +CONFIG_BT_HCIUART_BCSP=y +CONFIG_BT_HCIUART_H4=y +# CONFIG_BT_HCIUART_LL is not set +# CONFIG_BT_HCIVHCI is not set +# CONFIG_BT_HIDP is not set +CONFIG_BT_L2CAP=y +# CONFIG_BT_MRVL is not set +# CONFIG_BT_RFCOMM is not set +CONFIG_BT_RFCOMM_TTY=y +CONFIG_BT_SCO=y +CONFIG_BUG=y +CONFIG_BUILDTIME_EXTABLE_SORT=y +# CONFIG_C2PORT is not set +# CONFIG_CAIF is not set +# CONFIG_CAN is not set +# CONFIG_CAPI_AVM is not set +# CONFIG_CAPI_EICON is not set +# CONFIG_CAPI_TRACE is not set +CONFIG_CARDBUS=y +# CONFIG_CARDMAN_4000 is not set +# CONFIG_CARDMAN_4040 is not set +# CONFIG_CARMA_FPGA is not set +# CONFIG_CARMA_FPGA_PROGRAM is not set +# CONFIG_CASSINI is not set +CONFIG_CAVIUM_OCTEON_HELPER=y +# CONFIG_CAVIUM_OCTEON_REFERENCE_BOARD is not set +# CONFIG_CAVIUM_OCTEON_SIMULATOR is not set +# CONFIG_CB710_CORE is not set +# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set +# CONFIG_CC_STACKPROTECTOR is not set +# CONFIG_CDROM_PKTCDVD is not set +# CONFIG_CED1401 is not set +# CONFIG_CEPH_FS is not set +# CONFIG_CEPH_LIB is not set +CONFIG_CEVT_R4K=y +# CONFIG_CFG80211 is not set +# CONFIG_CGROUPS is not set +# CONFIG_CGROUP_DEBUG is not set +# CONFIG_CHARGER_BQ2415X is not set +# CONFIG_CHARGER_GPIO is not set +# CONFIG_CHARGER_LP8727 is not set +# CONFIG_CHARGER_MAX8903 is not set +# CONFIG_CHARGER_SMB347 is not set +# CONFIG_CHECKPOINT_RESTORE is not set +# CONFIG_CHELSIO_T1 is not set +# CONFIG_CHELSIO_T3 is not set +# CONFIG_CHELSIO_T4 is not set +# CONFIG_CHELSIO_T4VF is not set +# CONFIG_CHR_DEV_OSST is not set +# CONFIG_CHR_DEV_SCH is not set +# CONFIG_CHR_DEV_SG is not set +# CONFIG_CHR_DEV_ST is not set +# CONFIG_CICADA_PHY is not set +# CONFIG_CIFS is not set +# CONFIG_CIFS_ACL is not set +# CONFIG_CIFS_DEBUG is not set +# CONFIG_CIFS_DEBUG2 is not set +# CONFIG_CIFS_FSCACHE is not set +# CONFIG_CIFS_NFSD_EXPORT is not set +CONFIG_CIFS_POSIX=y +# CONFIG_CIFS_SMB2 is not set +CONFIG_CIFS_STATS=y +# CONFIG_CIFS_STATS2 is not set +# CONFIG_CIFS_WEAK_PW_HASH is not set +# CONFIG_CIFS_XATTR is not set +# CONFIG_CLEANCACHE is not set +CONFIG_CLONE_BACKWARDS=y +# CONFIG_CLS_U32_MARK is not set +# CONFIG_CLS_U32_PERF is not set +# CONFIG_CMA is not set +CONFIG_CMDLINE="console=ttyS0,38400 root=/dev/mtdblock1" +CONFIG_CMDLINE_BOOL=y +# CONFIG_CMDLINE_EXTEND is not set +# CONFIG_CMDLINE_FORCE is not set +# CONFIG_CMDLINE_FROM_BOOTLOADER is not set +CONFIG_CMDLINE_OVERRIDE=y +# CONFIG_CNIC is not set +# CONFIG_CODA_FS is not set +# CONFIG_CODE_PATCHING_SELFTEST is not set +# CONFIG_COMEDI is not set +# CONFIG_COMMON_CLK_DEBUG is not set +# CONFIG_COMMON_CLK_SI5351 is not set +# CONFIG_COMPACTION is not set +# CONFIG_COMPAL_LAPTOP is not set +CONFIG_COMPAT_BRK=y +CONFIG_CONFIGFS_FS=y +# CONFIG_CONNECTOR is not set +CONFIG_CONSTRUCTORS=y +# CONFIG_CONTEXT_SWITCH_TRACER is not set +# CONFIG_COPS is not set +# CONFIG_CORDIC is not set +# CONFIG_COREDUMP is not set +# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set +# CONFIG_CPA_DEBUG is not set +# CONFIG_CPU_BIG_ENDIAN is not set +# CONFIG_CPU_DCACHE_DISABLE is not set +# CONFIG_CPU_FREQ is not set +CONFIG_CPU_GENERIC_DUMP_TLB=y +CONFIG_CPU_HAS_PREFETCH=y +CONFIG_CPU_HAS_SYNC=y +# CONFIG_CPU_IDLE is not set +# CONFIG_CPU_IDLE_MULTIPLE_DRIVERS is not set +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_CPU_MIPSR2=y +CONFIG_CPU_R4K_CACHE_TLB=y +CONFIG_CPU_R4K_FPU=y +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y +CONFIG_CPU_SUPPORTS_HIGHMEM=y +# CONFIG_CRAMFS is not set +CONFIG_CRASHLOG=y +# CONFIG_CRASH_DUMP is not set +# CONFIG_CRC16 is not set +CONFIG_CRC32=y +# CONFIG_CRC32_BIT is not set +# CONFIG_CRC32_SARWATE is not set +# CONFIG_CRC32_SELFTEST is not set +# CONFIG_CRC32_SLICEBY4 is not set +CONFIG_CRC32_SLICEBY8=y +# CONFIG_CRC7 is not set +# CONFIG_CRC8 is not set +CONFIG_CRC_CCITT=y +# CONFIG_CRC_ITU_T is not set +# CONFIG_CRC_T10DIF is not set +CONFIG_CROSS_COMPILE="mips-linux-" +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO=y +# CONFIG_CRYPTO_AEAD is not set +CONFIG_CRYPTO_AES=y +# CONFIG_CRYPTO_AES_586 is not set +# CONFIG_CRYPTO_AES_ARM is not set +# CONFIG_CRYPTO_AES_NI_INTEL is not set +CONFIG_CRYPTO_ALGAPI=y +CONFIG_CRYPTO_ALGAPI2=y +CONFIG_CRYPTO_ANSI_CPRNG=y +# CONFIG_CRYPTO_ANUBIS is not set +CONFIG_CRYPTO_ARC4=y +# CONFIG_CRYPTO_AUTHENC is not set +CONFIG_CRYPTO_BLKCIPHER=y +CONFIG_CRYPTO_BLKCIPHER2=y +# CONFIG_CRYPTO_BLOWFISH is not set +# CONFIG_CRYPTO_CAMELLIA is not set +# CONFIG_CRYPTO_CAST5 is not set +# CONFIG_CRYPTO_CAST6 is not set +# CONFIG_CRYPTO_CBC is not set +# CONFIG_CRYPTO_CCM is not set +# CONFIG_CRYPTO_CMAC is not set +# CONFIG_CRYPTO_CRC32 is not set +# CONFIG_CRYPTO_CRC32C is not set +# CONFIG_CRYPTO_CRC32C_INTEL is not set +# CONFIG_CRYPTO_CRYPTD is not set +# CONFIG_CRYPTO_CTR is not set +# CONFIG_CRYPTO_CTS is not set +# CONFIG_CRYPTO_DEFLATE is not set +# CONFIG_CRYPTO_DES is not set +# CONFIG_CRYPTO_DEV_ATMEL_AES is not set +# CONFIG_CRYPTO_DEV_ATMEL_SHA is not set +# CONFIG_CRYPTO_DEV_ATMEL_TDES is not set +# CONFIG_CRYPTO_DEV_FSL_CAAM is not set +# CONFIG_CRYPTO_DEV_HIFN_795X is not set +# CONFIG_CRYPTO_DEV_MV_CESA is not set +# CONFIG_CRYPTO_DEV_TALITOS is not set +# CONFIG_CRYPTO_ECB is not set +# CONFIG_CRYPTO_FCRYPT is not set +# CONFIG_CRYPTO_FIPS is not set +# CONFIG_CRYPTO_GCM is not set +# CONFIG_CRYPTO_GF128MUL is not set +# CONFIG_CRYPTO_GHASH is not set +# CONFIG_CRYPTO_GHASH_CLMUL_NI_INTEL is not set +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +# CONFIG_CRYPTO_HMAC is not set +CONFIG_CRYPTO_HW=y +# CONFIG_CRYPTO_KHAZAD is not set +# CONFIG_CRYPTO_LRW is not set +# CONFIG_CRYPTO_LZO is not set +# CONFIG_CRYPTO_MANAGER is not set +# CONFIG_CRYPTO_MANAGER2 is not set +CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y +# CONFIG_CRYPTO_MD4 is not set +# CONFIG_CRYPTO_MD5 is not set +# CONFIG_CRYPTO_MICHAEL_MIC is not set +# CONFIG_CRYPTO_NULL is not set +# CONFIG_CRYPTO_PCBC is not set +# CONFIG_CRYPTO_PCOMP is not set +# CONFIG_CRYPTO_PCOMP2 is not set +# CONFIG_CRYPTO_PCRYPT is not set +# CONFIG_CRYPTO_RMD128 is not set +# CONFIG_CRYPTO_RMD160 is not set +# CONFIG_CRYPTO_RMD256 is not set +# CONFIG_CRYPTO_RMD320 is not set +CONFIG_CRYPTO_RNG=y +CONFIG_CRYPTO_RNG2=y +# CONFIG_CRYPTO_SALSA20 is not set +# CONFIG_CRYPTO_SALSA20_586 is not set +# CONFIG_CRYPTO_SEED is not set +# CONFIG_CRYPTO_SEQIV is not set +# CONFIG_CRYPTO_SERPENT is not set +CONFIG_CRYPTO_SHA1=y +# CONFIG_CRYPTO_SHA1_ARM is not set +# CONFIG_CRYPTO_SHA256 is not set +# CONFIG_CRYPTO_SHA512 is not set +# CONFIG_CRYPTO_TEA is not set +# CONFIG_CRYPTO_TEST is not set +# CONFIG_CRYPTO_TGR192 is not set +# CONFIG_CRYPTO_TWOFISH is not set +# CONFIG_CRYPTO_TWOFISH_586 is not set +# CONFIG_CRYPTO_TWOFISH_COMMON is not set +# CONFIG_CRYPTO_USER is not set +# CONFIG_CRYPTO_USER_API_HASH is not set +# CONFIG_CRYPTO_USER_API_SKCIPHER is not set +# CONFIG_CRYPTO_VMAC is not set +CONFIG_CRYPTO_WORKQUEUE=y +# CONFIG_CRYPTO_WP512 is not set +# CONFIG_CRYPTO_XCBC is not set +# CONFIG_CRYPTO_XTS is not set +# CONFIG_CRYPTO_XZ is not set +# CONFIG_CRYPTO_ZLIB is not set +# CONFIG_CRYSTALHD is not set +# CONFIG_CS5535_MFGPT is not set +# CONFIG_CS89x0 is not set +CONFIG_CSRC_R4K=y +# CONFIG_CUSE is not set +# CONFIG_CXT1E1 is not set +# CONFIG_CYPRESS_FIRMWARE is not set +# CONFIG_DAVICOM_PHY is not set +# CONFIG_DCB is not set +# CONFIG_DDR is not set +# CONFIG_DE600 is not set +# CONFIG_DE620 is not set +# CONFIG_DEBUG_ATOMIC_SLEEP is not set +# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set +# CONFIG_DEBUG_BUGVERBOSE is not set +# CONFIG_DEBUG_CREDENTIALS is not set +# CONFIG_DEBUG_DEVRES is not set +# CONFIG_DEBUG_DRIVER is not set +# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set +# CONFIG_DEBUG_FS is not set +# CONFIG_DEBUG_GPIO is not set +# CONFIG_DEBUG_HIGHMEM is not set +# CONFIG_DEBUG_ICEDCC is not set +# CONFIG_DEBUG_INFO is not set +CONFIG_DEBUG_INFO_REDUCED=y +CONFIG_DEBUG_KERNEL=y +# CONFIG_DEBUG_KMEMLEAK is not set +# CONFIG_DEBUG_KOBJECT is not set +# CONFIG_DEBUG_LIST is not set +# CONFIG_DEBUG_LL is not set +# CONFIG_DEBUG_LOCKDEP is not set +# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set +# CONFIG_DEBUG_LOCK_ALLOC is not set +# CONFIG_DEBUG_MEMORY_INIT is not set +# CONFIG_DEBUG_MUTEXES is not set +# CONFIG_DEBUG_NOTIFIERS is not set +# CONFIG_DEBUG_NX_TEST is not set +# CONFIG_DEBUG_OBJECTS is not set +# CONFIG_DEBUG_PAGEALLOC is not set +# CONFIG_DEBUG_PERF_USE_VMALLOC is not set +# CONFIG_DEBUG_PER_CPU_MAPS is not set +# CONFIG_DEBUG_PREEMPT is not set +# CONFIG_DEBUG_RODATA is not set +# CONFIG_DEBUG_RT_MUTEXES is not set +# CONFIG_DEBUG_SECTION_MISMATCH is not set +# CONFIG_DEBUG_SEMIHOSTING is not set +# CONFIG_DEBUG_SET_MODULE_RONX is not set +# CONFIG_DEBUG_SG is not set +# CONFIG_DEBUG_SHIRQ is not set +# CONFIG_DEBUG_SLAB is not set +# CONFIG_DEBUG_SPINLOCK is not set +# CONFIG_DEBUG_STACKOVERFLOW is not set +# CONFIG_DEBUG_STACK_USAGE is not set +# CONFIG_DEBUG_STRICT_USER_COPY_CHECKS is not set +# CONFIG_DEBUG_VM is not set +# CONFIG_DEBUG_WRITECOUNT is not set +# CONFIG_DEBUG_ZBOOT is not set +# CONFIG_DECNET is not set +CONFIG_DEFAULT_CUBIC=y +CONFIG_DEFAULT_DEADLINE=y +CONFIG_DEFAULT_HOSTNAME="rlxlinux" +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4 +CONFIG_DEFAULT_MMAP_MIN_ADDR=4096 +CONFIG_DEFAULT_NOOP=y +# CONFIG_DEFAULT_RENO is not set +CONFIG_DEFAULT_SECURITY="" +CONFIG_DEFAULT_SECURITY_DAC=y +CONFIG_DEFAULT_TCP_CONG="cubic" +CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config" +# CONFIG_DEPRECATED_PARAM_STRUCT is not set +# CONFIG_DETECT_HUNG_TASK is not set +# CONFIG_DEVKMEM is not set +CONFIG_DEVPORT=y +# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set +# CONFIG_DEVTMPFS is not set +# CONFIG_DEVTMPFS_MOUNT is not set +# CONFIG_DGRP is not set +# CONFIG_DIRECT_IO is not set +# CONFIG_DISCONTIGMEM_MANUAL is not set +# CONFIG_DISPLAY_SUPPORT is not set +# CONFIG_DL2K is not set +# CONFIG_DLM is not set +# CONFIG_DM9000 is not set +# CONFIG_DMADEVICES is not set +# CONFIG_DMADEVICES_DEBUG is not set +# CONFIG_DMASCC is not set +# CONFIG_DMATEST is not set +# CONFIG_DMA_API_DEBUG is not set +# CONFIG_DMA_ENGINE is not set +CONFIG_DMA_NONCOHERENT=y +# CONFIG_DMA_SHARED_BUFFER is not set +# CONFIG_DM_CACHE is not set +# CONFIG_DM_DEBUG is not set +# CONFIG_DM_DELAY is not set +# CONFIG_DM_FLAKEY is not set +# CONFIG_DM_LOG_USERSPACE is not set +# CONFIG_DM_MULTIPATH is not set +# CONFIG_DM_RAID is not set +# CONFIG_DM_THIN_PROVISIONING is not set +# CONFIG_DM_UEVENT is not set +# CONFIG_DM_VERITY is not set +# CONFIG_DM_ZERO is not set +# CONFIG_DNET is not set +# CONFIG_DNOTIFY is not set +# CONFIG_DNS_RESOLVER is not set +CONFIG_DQL=y +# CONFIG_DRAGONRISE_FF is not set +# CONFIG_DRM is not set +# CONFIG_DS1682 is not set +# CONFIG_DTLK is not set +# CONFIG_DUMMY is not set +# CONFIG_DUMMY_IRQ is not set +# CONFIG_DVB_AU8522_V4L is not set +# CONFIG_DVB_CORE is not set +# CONFIG_DVB_DUMMY_FE is not set +# CONFIG_DVB_TUNER_DIB0070 is not set +# CONFIG_DVB_TUNER_DIB0090 is not set +# CONFIG_DW_DMAC is not set +# CONFIG_DW_WATCHDOG is not set +# CONFIG_DX_SEP is not set +# CONFIG_DYNAMIC_DEBUG is not set +# CONFIG_E100 is not set +# CONFIG_E1000 is not set +# CONFIG_E1000E is not set +# CONFIG_E2100 is not set +CONFIG_EARLY_PRINTK=y +# CONFIG_EASYCAP is not set +# CONFIG_ECHO is not set +# CONFIG_ECONET is not set +# CONFIG_ECRYPT_FS is not set +# CONFIG_EDAC is not set +# CONFIG_EEPROM_93CX6 is not set +# CONFIG_EEPROM_93XX46 is not set +# CONFIG_EEPROM_AT24 is not set +# CONFIG_EEPROM_AT25 is not set +# CONFIG_EEPROM_DIGSY_MTC_CFG is not set +# CONFIG_EEPROM_LEGACY is not set +# CONFIG_EEPROM_MAX6875 is not set +# CONFIG_EEXPRESS is not set +# CONFIG_EEXPRESS_PRO is not set +CONFIG_EFI_PARTITION=y +# CONFIG_EFS_FS is not set +# CONFIG_ELF_CORE is not set +CONFIG_EMBEDDED=y +CONFIG_ENABLE_MUST_CHECK=y +CONFIG_ENABLE_WARN_DEPRECATED=y +# CONFIG_ENC28J60 is not set +# CONFIG_ENCLOSURE_SERVICES is not set +# CONFIG_ENCRYPTED_KEYS is not set +# CONFIG_ENIC is not set +# CONFIG_EPAPR_PARAVIRT is not set +# CONFIG_EPIC100 is not set +CONFIG_EPOLL=y +# CONFIG_EQUALIZER is not set +# CONFIG_ET131X is not set +# CONFIG_ETH16I is not set +# CONFIG_ETHERNET is not set +# CONFIG_ETHOC is not set +CONFIG_EVENTFD=y +# CONFIG_EVENT_POWER_TRACING_DEPRECATED is not set +# CONFIG_EWRK3 is not set +CONFIG_EXPERIMENTAL=y +CONFIG_EXPERT=y +# CONFIG_EXPORTFS is not set +# CONFIG_EXT2_FS is not set +# CONFIG_EXT2_FS_XATTR is not set +# CONFIG_EXT2_FS_XIP is not set +# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set +# CONFIG_EXT3_FS is not set +# CONFIG_EXT3_FS_XATTR is not set +# CONFIG_EXT4_DEBUG is not set +# CONFIG_EXT4_FS is not set +# CONFIG_EXT4_FS_POSIX_ACL is not set +# CONFIG_EXT4_FS_SECURITY is not set +CONFIG_EXT4_FS_XATTR=y +CONFIG_EXT4_USE_FOR_EXT23=y +# CONFIG_EXTCON is not set +CONFIG_EXTRA_FIRMWARE="" +CONFIG_EXTRA_TARGETS="" +# CONFIG_EXYNOS_ADC is not set +# CONFIG_EXYNOS_VIDEO is not set +# CONFIG_EZX_PCAP is not set +# CONFIG_F2FS_FS is not set +# CONFIG_FAIR_GROUP_SCHED is not set +# CONFIG_FANOTIFY is not set +CONFIG_FAT_DEFAULT_CODEPAGE=437 +CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1" +CONFIG_FAT_FS=y +# CONFIG_FAULT_INJECTION is not set +# CONFIG_FB is not set +# CONFIG_FB_3DFX is not set +# CONFIG_FB_ARC is not set +# CONFIG_FB_ARK is not set +# CONFIG_FB_ARMCLCD is not set +# CONFIG_FB_ASILIANT is not set +# CONFIG_FB_ATY is not set +# CONFIG_FB_ATY128 is not set +# CONFIG_FB_AUO_K190X is not set +# CONFIG_FB_BACKLIGHT is not set +# CONFIG_FB_BOOT_VESA_SUPPORT is not set +# CONFIG_FB_BROADSHEET is not set +# CONFIG_FB_CARMINE is not set +# CONFIG_FB_CFB_COPYAREA is not set +# CONFIG_FB_CFB_FILLRECT is not set +# CONFIG_FB_CFB_IMAGEBLIT is not set +# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set +# CONFIG_FB_CIRRUS is not set +# CONFIG_FB_CYBER2000 is not set +# CONFIG_FB_DDC is not set +# CONFIG_FB_FOREIGN_ENDIAN is not set +# CONFIG_FB_GEODE is not set +# CONFIG_FB_GOLDFISH is not set +# CONFIG_FB_HGA is not set +# CONFIG_FB_I740 is not set +# CONFIG_FB_IBM_GXT4500 is not set +# CONFIG_FB_IMSTT is not set +# CONFIG_FB_KYRO is not set +# CONFIG_FB_LE80578 is not set +# CONFIG_FB_MACMODES is not set +# CONFIG_FB_MATROX is not set +# CONFIG_FB_MB862XX is not set +# CONFIG_FB_METRONOME is not set +# CONFIG_FB_MODE_HELPERS is not set +# CONFIG_FB_N411 is not set +# CONFIG_FB_NEOMAGIC is not set +# CONFIG_FB_NVIDIA is not set +# CONFIG_FB_OF is not set +# CONFIG_FB_PM2 is not set +# CONFIG_FB_PM3 is not set +# CONFIG_FB_PS3 is not set +# CONFIG_FB_PXA is not set +# CONFIG_FB_RADEON is not set +# CONFIG_FB_RIVA is not set +# CONFIG_FB_S1D13XXX is not set +# CONFIG_FB_S3 is not set +# CONFIG_FB_SAVAGE is not set +# CONFIG_FB_SIMPLE is not set +# CONFIG_FB_SIS is not set +# CONFIG_FB_SM7XX is not set +# CONFIG_FB_SMSCUFX is not set +# CONFIG_FB_SSD1307 is not set +# CONFIG_FB_SVGALIB is not set +# CONFIG_FB_SYS_COPYAREA is not set +# CONFIG_FB_SYS_FILLRECT is not set +# CONFIG_FB_SYS_FOPS is not set +# CONFIG_FB_SYS_IMAGEBLIT is not set +# CONFIG_FB_TILEBLITTING is not set +# CONFIG_FB_TMIO is not set +# CONFIG_FB_TRIDENT is not set +# CONFIG_FB_UDL is not set +# CONFIG_FB_VGA16 is not set +# CONFIG_FB_VIA is not set +# CONFIG_FB_VIRTUAL is not set +# CONFIG_FB_VOODOO1 is not set +# CONFIG_FB_VT8623 is not set +# CONFIG_FB_XGI is not set +# CONFIG_FCOE is not set +# CONFIG_FCOE_FNIC is not set +# CONFIG_FDDI is not set +# CONFIG_FEALNX is not set +# CONFIG_FHANDLE is not set +CONFIG_FIB_RULES=y +CONFIG_FILE_LOCKING=y +# CONFIG_FIREWIRE is not set +# CONFIG_FIREWIRE_NOSY is not set +# CONFIG_FIREWIRE_SERIAL is not set +# CONFIG_FIRMWARE_EDID is not set +CONFIG_FIRMWARE_IN_KERNEL=y +# CONFIG_FIRMWARE_MEMMAP is not set +# CONFIG_FIXED_PHY is not set +CONFIG_FLATMEM=y +CONFIG_FLATMEM_MANUAL=y +CONFIG_FLAT_NODE_MEM_MAP=y +# CONFIG_FORCEDETH is not set +CONFIG_FORCE_MAX_ZONEORDER=11 +# CONFIG_FRAMEBUFFER_CONSOLE is not set +# CONFIG_FRAME_POINTER is not set +CONFIG_FRAME_WARN=1024 +# CONFIG_FREEZER is not set +# CONFIG_FRONTSWAP is not set +# CONFIG_FSCACHE is not set +# CONFIG_FSL_XGMAC_MDIO is not set +# CONFIG_FSNOTIFY is not set +# CONFIG_FS_POSIX_ACL is not set +# CONFIG_FT1000 is not set +# CONFIG_FTGMAC100 is not set +# CONFIG_FTL is not set +# CONFIG_FTMAC100 is not set +# CONFIG_FTRACE is not set +# CONFIG_FTRACE_STARTUP_TEST is not set +# CONFIG_FTR_FIXUP_SELFTEST is not set +# CONFIG_FUJITSU_TABLET is not set +# CONFIG_FUNCTION_TRACER is not set +# CONFIG_FUSE_FS is not set +# CONFIG_FUSION is not set +# CONFIG_FUSION_FC is not set +# CONFIG_FUSION_SAS is not set +# CONFIG_FUSION_SPI is not set +CONFIG_FUTEX=y +CONFIG_FW_LOADER=y +CONFIG_FW_LOADER_USER_HELPER=y +CONFIG_GACT_PROB=y +# CONFIG_GADGET_UAC1 is not set +# CONFIG_GAMEPORT is not set +# CONFIG_GCOV is not set +# CONFIG_GCOV_KERNEL is not set +# CONFIG_GENERIC_ADC_BATTERY is not set +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_CALIBRATE_DELAY=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +# CONFIG_GENERIC_CPU_DEVICES is not set +CONFIG_GENERIC_HARDIRQS=y +CONFIG_GENERIC_HWEIGHT=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_PROBE=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GENERIC_TIME=y +# CONFIG_GFS2_FS is not set +# CONFIG_GIGASET_CAPI is not set +# CONFIG_GIGASET_DEBUG is not set +# CONFIG_GPIOLIB is not set +# CONFIG_GPIO_74X164 is not set +# CONFIG_GPIO_ADNP is not set +# CONFIG_GPIO_ADP5588 is not set +# CONFIG_GPIO_AMD8111 is not set +# CONFIG_GPIO_BT8XX is not set +# CONFIG_GPIO_CS5535 is not set +CONFIG_GPIO_DEVRES=y +# CONFIG_GPIO_EM is not set +# CONFIG_GPIO_GENERIC_PLATFORM is not set +# CONFIG_GPIO_GRGPIO is not set +# CONFIG_GPIO_ICH is not set +# CONFIG_GPIO_IT8761E is not set +# CONFIG_GPIO_LANGWELL is not set +# CONFIG_GPIO_MAX7300 is not set +# CONFIG_GPIO_MAX7301 is not set +# CONFIG_GPIO_MAX732X is not set +# CONFIG_GPIO_MC33880 is not set +# CONFIG_GPIO_MCP23S08 is not set +# CONFIG_GPIO_ML_IOH is not set +# CONFIG_GPIO_PCA953X is not set +# CONFIG_GPIO_PCF857X is not set +# CONFIG_GPIO_PCH is not set +# CONFIG_GPIO_PL061 is not set +# CONFIG_GPIO_RCAR is not set +# CONFIG_GPIO_RDC321X is not set +# CONFIG_GPIO_SCH is not set +# CONFIG_GPIO_SX150X is not set +# CONFIG_GPIO_SYSFS is not set +# CONFIG_GPIO_TS5500 is not set +# CONFIG_GPIO_VX855 is not set +# CONFIG_GPIO_WDT is not set +# CONFIG_GPIO_XILINX is not set +# CONFIG_GREENASIA_FF is not set +# CONFIG_HAMACHI is not set +# CONFIG_HAMRADIO is not set +# CONFIG_HAPPYMEAL is not set +# CONFIG_HARDLOCKUP_DETECTOR is not set +CONFIG_HARDWARE_WATCHPOINTS=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +# CONFIG_HAVE_AOUT is not set +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +# CONFIG_HAVE_ARM_ARCH_TIMER is not set +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_FUNCTION_TRACE_MCOUNT_TEST=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_GENERIC_HARDIRQS=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_KPROBES=y +CONFIG_HAVE_KRETPROBES=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_PERF_EVENTS=y +# CONFIG_HCALL_STATS is not set +# CONFIG_HDLC is not set +# CONFIG_HDLC_CISCO is not set +# CONFIG_HDLC_FR is not set +# CONFIG_HDLC_PPP is not set +# CONFIG_HDLC_RAW is not set +# CONFIG_HDLC_RAW_ETH is not set +# CONFIG_HDQ_MASTER_OMAP is not set +# CONFIG_HEADERS_CHECK is not set +# CONFIG_HERMES is not set +# CONFIG_HFSPLUS_FS is not set +# CONFIG_HFS_FS is not set +# CONFIG_HIBERNATION is not set +# CONFIG_HID is not set +# CONFIG_HIDRAW is not set +# CONFIG_HID_A4TECH is not set +# CONFIG_HID_ACRUX is not set +# CONFIG_HID_ACRUX_FF is not set +# CONFIG_HID_APPLE is not set +# CONFIG_HID_APPLEIR is not set +# CONFIG_HID_AUREAL is not set +# CONFIG_HID_BELKIN is not set +# CONFIG_HID_CHERRY is not set +# CONFIG_HID_CHICONY is not set +# CONFIG_HID_CYPRESS is not set +# CONFIG_HID_DRAGONRISE is not set +# CONFIG_HID_ELECOM is not set +# CONFIG_HID_EMS_FF is not set +# CONFIG_HID_EZKEY is not set +# CONFIG_HID_GENERIC is not set +# CONFIG_HID_GREENASIA is not set +# CONFIG_HID_GYRATION is not set +# CONFIG_HID_HOLTEK is not set +# CONFIG_HID_ICADE is not set +# CONFIG_HID_KENSINGTON is not set +# CONFIG_HID_KEYTOUCH is not set +# CONFIG_HID_KYE is not set +# CONFIG_HID_LCPOWER is not set +# CONFIG_HID_LENOVO_TPKBD is not set +# CONFIG_HID_LOGITECH is not set +# CONFIG_HID_MAGICMOUSE is not set +# CONFIG_HID_MICROSOFT is not set +# CONFIG_HID_MONTEREY is not set +# CONFIG_HID_MULTITOUCH is not set +# CONFIG_HID_NTRIG is not set +# CONFIG_HID_ORTEK is not set +# CONFIG_HID_PANTHERLORD is not set +# CONFIG_HID_PETALYNX is not set +# CONFIG_HID_PICOLCD is not set +# CONFIG_HID_PID is not set +# CONFIG_HID_PRIMAX is not set +# CONFIG_HID_PRODIKEYS is not set +# CONFIG_HID_PS3REMOTE is not set +# CONFIG_HID_QUANTA is not set +# CONFIG_HID_ROCCAT is not set +# CONFIG_HID_ROCCAT_ARVO is not set +# CONFIG_HID_ROCCAT_KONE is not set +# CONFIG_HID_ROCCAT_KONEPLUS is not set +# CONFIG_HID_ROCCAT_KOVAPLUS is not set +# CONFIG_HID_ROCCAT_PYRA is not set +# CONFIG_HID_SAITEK is not set +# CONFIG_HID_SAMSUNG is not set +# CONFIG_HID_SENSOR_HUB is not set +# CONFIG_HID_SMARTJOYPLUS is not set +# CONFIG_HID_SONY is not set +# CONFIG_HID_SPEEDLINK is not set +# CONFIG_HID_STEELSERIES is not set +# CONFIG_HID_SUNPLUS is not set +# CONFIG_HID_SUPPORT is not set +# CONFIG_HID_THINGM is not set +# CONFIG_HID_THRUSTMASTER is not set +# CONFIG_HID_TIVO is not set +# CONFIG_HID_TOPSEED is not set +# CONFIG_HID_TWINHAN is not set +# CONFIG_HID_UCLOGIC is not set +# CONFIG_HID_WACOM is not set +# CONFIG_HID_WALTOP is not set +# CONFIG_HID_WIIMOTE is not set +# CONFIG_HID_ZEROPLUS is not set +# CONFIG_HID_ZYDACRON is not set +# CONFIG_HIGHMEM is not set +# CONFIG_HIGH_RES_TIMERS is not set +# CONFIG_HIPPI is not set +# CONFIG_HMC6352 is not set +# CONFIG_HOSTAP is not set +# CONFIG_HOSTAP_CS is not set +# CONFIG_HOSTAP_PCI is not set +# CONFIG_HOSTAP_PLX is not set +CONFIG_HOTPLUG=y +# CONFIG_HOTPLUG_CPU is not set +# CONFIG_HOTPLUG_PCI is not set +# CONFIG_HP100 is not set +# CONFIG_HPFS_FS is not set +# CONFIG_HPLAN is not set +# CONFIG_HPLAN_PLUS is not set +# CONFIG_HP_ILO is not set +# CONFIG_HSI is not set +# CONFIG_HTC_EGPIO is not set +# CONFIG_HTC_I2CPLD is not set +# CONFIG_HTC_PASIC3 is not set +# CONFIG_HUGETLB_PAGE is not set +# CONFIG_HVC_DCC is not set +# CONFIG_HVC_UDBG is not set +# CONFIG_HWMON is not set +# CONFIG_HWMON_DEBUG_CHIP is not set +# CONFIG_HWMON_VID is not set +# CONFIG_HWSPINLOCK_OMAP is not set +CONFIG_HW_PERF_EVENTS=y +# CONFIG_HW_RANDOM is not set +# CONFIG_HW_RANDOM_AMD is not set +# CONFIG_HW_RANDOM_ATMEL is not set +# CONFIG_HW_RANDOM_EXYNOS is not set +# CONFIG_HW_RANDOM_GEODE is not set +# CONFIG_HW_RANDOM_INTEL is not set +# CONFIG_HW_RANDOM_PPC4XX is not set +# CONFIG_HW_RANDOM_TIMERIOMEM is not set +# CONFIG_HW_RANDOM_VIA is not set +# CONFIG_HYPERV is not set +# CONFIG_HYSDN is not set +CONFIG_HZ=100 +CONFIG_HZ_100=y +# CONFIG_HZ_1000 is not set +# CONFIG_HZ_1024 is not set +# CONFIG_HZ_128 is not set +# CONFIG_HZ_250 is not set +# CONFIG_HZ_256 is not set +# CONFIG_HZ_300 is not set +# CONFIG_HZ_48 is not set +CONFIG_HZ_PERIODIC=y +# CONFIG_I2C is not set +# CONFIG_I2C_ALGOBIT is not set +# CONFIG_I2C_ALGOPCA is not set +# CONFIG_I2C_ALGOPCF is not set +# CONFIG_I2C_ALI1535 is not set +# CONFIG_I2C_ALI1563 is not set +# CONFIG_I2C_ALI15X3 is not set +# CONFIG_I2C_AMD756 is not set +# CONFIG_I2C_AMD8111 is not set +# CONFIG_I2C_ARB_GPIO_CHALLENGE is not set +# CONFIG_I2C_AU1550 is not set +# CONFIG_I2C_CBUS_GPIO is not set +# CONFIG_I2C_CHARDEV is not set +# CONFIG_I2C_COMPAT is not set +# CONFIG_I2C_DEBUG_ALGO is not set +# CONFIG_I2C_DEBUG_BUS is not set +# CONFIG_I2C_DEBUG_CORE is not set +# CONFIG_I2C_DESIGNWARE is not set +# CONFIG_I2C_DESIGNWARE_PCI is not set +# CONFIG_I2C_DESIGNWARE_PLATFORM is not set +# CONFIG_I2C_DIOLAN_U2C is not set +# CONFIG_I2C_EG20T is not set +# CONFIG_I2C_ELEKTOR is not set +# CONFIG_I2C_GPIO is not set +# CONFIG_I2C_HELPER_AUTO is not set +# CONFIG_I2C_HID is not set +# CONFIG_I2C_I801 is not set +# CONFIG_I2C_IBM_IIC is not set +# CONFIG_I2C_INTEL_MID is not set +# CONFIG_I2C_ISCH is not set +# CONFIG_I2C_ISMT is not set +# CONFIG_I2C_MPC is not set +# CONFIG_I2C_MUX is not set +# CONFIG_I2C_MUX_PINCTRL is not set +# CONFIG_I2C_MV64XXX is not set +# CONFIG_I2C_NFORCE2 is not set +# CONFIG_I2C_NOMADIK is not set +# CONFIG_I2C_OCORES is not set +# CONFIG_I2C_PARPORT is not set +# CONFIG_I2C_PARPORT_LIGHT is not set +# CONFIG_I2C_PCA_ISA is not set +# CONFIG_I2C_PCA_PLATFORM is not set +# CONFIG_I2C_PIIX4 is not set +# CONFIG_I2C_PXA_PCI is not set +# CONFIG_I2C_SCMI is not set +# CONFIG_I2C_SIMTEC is not set +# CONFIG_I2C_SIS5595 is not set +# CONFIG_I2C_SIS630 is not set +# CONFIG_I2C_SIS96X is not set +# CONFIG_I2C_SMBUS is not set +# CONFIG_I2C_STUB is not set +# CONFIG_I2C_TAOS_EVM is not set +# CONFIG_I2C_TINY_USB is not set +# CONFIG_I2C_VERSATILE is not set +# CONFIG_I2C_VIA is not set +# CONFIG_I2C_VIAPRO is not set +# CONFIG_I2C_XILINX is not set +# CONFIG_I2O is not set +# CONFIG_I6300ESB_WDT is not set +# CONFIG_I82092 is not set +# CONFIG_I82365 is not set +# CONFIG_IBM_ASM is not set +# CONFIG_IBM_EMAC_DEBUG is not set +# CONFIG_IBM_EMAC_EMAC4 is not set +# CONFIG_IBM_EMAC_MAL_CLR_ICINTSTAT is not set +# CONFIG_IBM_EMAC_MAL_COMMON_ERR is not set +# CONFIG_IBM_EMAC_NO_FLOW_CTRL is not set +# CONFIG_IBM_EMAC_RGMII is not set +# CONFIG_IBM_EMAC_TAH is not set +# CONFIG_IBM_EMAC_ZMII is not set +# CONFIG_ICPLUS_PHY is not set +# CONFIG_ICS932S401 is not set +# CONFIG_IDE is not set +# CONFIG_IDEAPAD_LAPTOP is not set +# CONFIG_IDE_GD is not set +# CONFIG_IDE_PHISON is not set +# CONFIG_IDE_PROC_FS is not set +# CONFIG_IDE_TASK_IOCTL is not set +# CONFIG_IEEE802154 is not set +# CONFIG_IFB is not set +# CONFIG_IGB is not set +# CONFIG_IGBVF is not set +# CONFIG_IIO is not set +# CONFIG_IIO_BUFFER_CB is not set +CONFIG_IIO_CONSUMERS_PER_TRIGGER=2 +# CONFIG_IIO_GPIO_TRIGGER is not set +# CONFIG_IIO_PERIODIC_RTC_TRIGGER is not set +# CONFIG_IIO_SIMPLE_DUMMY is not set +# CONFIG_IIO_ST_ACCEL_3AXIS is not set +# CONFIG_IIO_ST_GYRO_3AXIS is not set +# CONFIG_IIO_ST_MAGN_3AXIS is not set +# CONFIG_IIO_SYSFS_TRIGGER is not set +# CONFIG_IKCONFIG is not set +# CONFIG_IKCONFIG_PROC is not set +# CONFIG_IMAGE_CMDLINE_HACK is not set +CONFIG_INET=y +# CONFIG_INET6_AH is not set +# CONFIG_INET6_ESP is not set +# CONFIG_INET6_IPCOMP is not set +# CONFIG_INET6_TUNNEL is not set +# CONFIG_INET6_XFRM_MODE_BEET is not set +# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set +# CONFIG_INET6_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET6_XFRM_MODE_TUNNEL is not set +# CONFIG_INET6_XFRM_TUNNEL is not set +# CONFIG_INET_AH is not set +CONFIG_INET_DIAG=y +# CONFIG_INET_ESP is not set +# CONFIG_INET_IPCOMP is not set +# CONFIG_INET_LRO is not set +CONFIG_INET_TCP_DIAG=y +# CONFIG_INET_TUNNEL is not set +# CONFIG_INET_UDP_DIAG is not set +# CONFIG_INET_XFRM_MODE_BEET is not set +# CONFIG_INET_XFRM_MODE_TRANSPORT is not set +# CONFIG_INET_XFRM_MODE_TUNNEL is not set +# CONFIG_INET_XFRM_TUNNEL is not set +# CONFIG_INFINIBAND is not set +# CONFIG_INFTL is not set +# CONFIG_INITRAMFS_COMPRESSION_BZIP2 is not set +# CONFIG_INITRAMFS_COMPRESSION_GZIP is not set +# CONFIG_INITRAMFS_COMPRESSION_LZMA is not set +CONFIG_INITRAMFS_COMPRESSION_NONE=y +CONFIG_INIT_ENV_ARG_LIMIT=32 +# CONFIG_INLINE_READ_LOCK is not set +# CONFIG_INLINE_READ_LOCK_BH is not set +# CONFIG_INLINE_READ_LOCK_IRQ is not set +# CONFIG_INLINE_READ_LOCK_IRQSAVE is not set +# CONFIG_INLINE_READ_TRYLOCK is not set +CONFIG_INLINE_READ_UNLOCK=y +# CONFIG_INLINE_READ_UNLOCK_BH is not set +CONFIG_INLINE_READ_UNLOCK_IRQ=y +# CONFIG_INLINE_READ_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_SPIN_LOCK is not set +# CONFIG_INLINE_SPIN_LOCK_BH is not set +# CONFIG_INLINE_SPIN_LOCK_IRQ is not set +# CONFIG_INLINE_SPIN_LOCK_IRQSAVE is not set +# CONFIG_INLINE_SPIN_TRYLOCK is not set +# CONFIG_INLINE_SPIN_TRYLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK=y +# CONFIG_INLINE_SPIN_UNLOCK_BH is not set +CONFIG_INLINE_SPIN_UNLOCK_IRQ=y +# CONFIG_INLINE_SPIN_UNLOCK_IRQRESTORE is not set +# CONFIG_INLINE_WRITE_LOCK is not set +# CONFIG_INLINE_WRITE_LOCK_BH is not set +# CONFIG_INLINE_WRITE_LOCK_IRQ is not set +# CONFIG_INLINE_WRITE_LOCK_IRQSAVE is not set +# CONFIG_INLINE_WRITE_TRYLOCK is not set +CONFIG_INLINE_WRITE_UNLOCK=y +# CONFIG_INLINE_WRITE_UNLOCK_BH is not set +CONFIG_INLINE_WRITE_UNLOCK_IRQ=y +# CONFIG_INLINE_WRITE_UNLOCK_IRQRESTORE is not set +# CONFIG_INOTIFY_USER is not set +# CONFIG_INPUT is not set +# CONFIG_INPUT_AD714X is not set +# CONFIG_INPUT_ADXL34X is not set +# CONFIG_INPUT_APANEL is not set +# CONFIG_INPUT_ATI_REMOTE is not set +# CONFIG_INPUT_ATI_REMOTE2 is not set +# CONFIG_INPUT_ATLAS_BTNS is not set +# CONFIG_INPUT_BMA150 is not set +# CONFIG_INPUT_CM109 is not set +# CONFIG_INPUT_CMA3000 is not set +# CONFIG_INPUT_EVBUG is not set +# CONFIG_INPUT_EVDEV is not set +# CONFIG_INPUT_FF_MEMLESS is not set +# CONFIG_INPUT_GP2A is not set +# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set +# CONFIG_INPUT_GPIO_TILT_POLLED is not set +# CONFIG_INPUT_IMS_PCU is not set +# CONFIG_INPUT_JOYDEV is not set +# CONFIG_INPUT_JOYSTICK is not set +# CONFIG_INPUT_KEYBOARD is not set +# CONFIG_INPUT_KEYSPAN_REMOTE is not set +# CONFIG_INPUT_KXTJ9 is not set +# CONFIG_INPUT_MATRIXKMAP is not set +CONFIG_INPUT_MISC=y +# CONFIG_INPUT_MMA8450 is not set +# CONFIG_INPUT_MOUSE is not set +# CONFIG_INPUT_MOUSEDEV is not set +# CONFIG_INPUT_MPU3050 is not set +# CONFIG_INPUT_PCF8574 is not set +# CONFIG_INPUT_PCSPKR is not set +# CONFIG_INPUT_POLLDEV is not set +# CONFIG_INPUT_POWERMATE is not set +# CONFIG_INPUT_PWM_BEEPER is not set +# CONFIG_INPUT_SPARSEKMAP is not set +# CONFIG_INPUT_TABLET is not set +# CONFIG_INPUT_TOUCHSCREEN is not set +# CONFIG_INPUT_UINPUT is not set +# CONFIG_INPUT_WISTRON_BTNS is not set +# CONFIG_INPUT_YEALINK is not set +# CONFIG_INTEL_IDLE is not set +# CONFIG_INTEL_MEI is not set +# CONFIG_INTEL_MEI_ME is not set +# CONFIG_INTEL_MID_PTI is not set +# CONFIG_INTEL_OAKTRAIL is not set +# CONFIG_INTERVAL_TREE_TEST is not set +# CONFIG_INV_MPU6050_IIO is not set +# CONFIG_IOMMU_SUPPORT is not set +# CONFIG_IOSCHED_CFQ is not set +# CONFIG_IOSCHED_DEADLINE is not set +CONFIG_IOSCHED_NOOP=y +# CONFIG_IP1000 is not set +# CONFIG_IP17XX_PHY is not set +# CONFIG_IP6_NF_FILTER is not set +# CONFIG_IP6_NF_IPTABLES is not set +# CONFIG_IP6_NF_MANGLE is not set +# CONFIG_IP6_NF_MATCH_AH is not set +# CONFIG_IP6_NF_MATCH_EUI64 is not set +# CONFIG_IP6_NF_MATCH_FRAG is not set +# CONFIG_IP6_NF_MATCH_HL is not set +# CONFIG_IP6_NF_MATCH_IPV6HEADER is not set +# CONFIG_IP6_NF_MATCH_MH is not set +# CONFIG_IP6_NF_MATCH_OPTS is not set +# CONFIG_IP6_NF_MATCH_RPFILTER is not set +# CONFIG_IP6_NF_MATCH_RT is not set +# CONFIG_IP6_NF_QUEUE is not set +# CONFIG_IP6_NF_RAW is not set +# CONFIG_IP6_NF_TARGET_HL is not set +# CONFIG_IP6_NF_TARGET_LOG is not set +# CONFIG_IP6_NF_TARGET_REJECT is not set +# CONFIG_IPACK_BUS is not set +# CONFIG_IPC_NS is not set +# CONFIG_IPMI_HANDLER is not set +# CONFIG_IPV6 is not set +# CONFIG_IPV6_MIP6 is not set +# CONFIG_IPV6_MROUTE is not set +# CONFIG_IPV6_MROUTE_MULTIPLE_TABLES is not set +# CONFIG_IPV6_MULTIPLE_TABLES is not set +CONFIG_IPV6_NDISC_NODETYPE=y +# CONFIG_IPV6_OPTIMISTIC_DAD is not set +# CONFIG_IPV6_PRIVACY is not set +# CONFIG_IPV6_ROUTER_PREF is not set +# CONFIG_IPV6_ROUTE_INFO is not set +# CONFIG_IPV6_SIT is not set +# CONFIG_IPV6_SIT_6RD is not set +# CONFIG_IPV6_TUNNEL is not set +# CONFIG_IPW2100 is not set +# CONFIG_IPW2100_DEBUG is not set +CONFIG_IPW2100_MONITOR=y +# CONFIG_IPW2200 is not set +# CONFIG_IPW2200_DEBUG is not set +CONFIG_IPW2200_MONITOR=y +# CONFIG_IPW2200_PROMISCUOUS is not set +# CONFIG_IPW2200_QOS is not set +# CONFIG_IPW2200_RADIOTAP is not set +# CONFIG_IPWIRELESS is not set +# CONFIG_IPX is not set +# CONFIG_IP_ADVANCED_ROUTER is not set +# CONFIG_IP_DCCP is not set +# CONFIG_IP_FIB_TRIE_STATS is not set +CONFIG_IP_MROUTE=y +CONFIG_IP_MROUTE_MULTIPLE_TABLES=y +CONFIG_IP_MULTICAST=y +CONFIG_IP_MULTIPLE_TABLES=y +# CONFIG_IP_NF_ARPFILTER is not set +# CONFIG_IP_NF_ARPTABLES is not set +# CONFIG_IP_NF_ARP_MANGLE is not set +CONFIG_IP_NF_FILTER=y +CONFIG_IP_NF_IPTABLES=y +CONFIG_IP_NF_MANGLE=y +# CONFIG_IP_NF_MATCH_AH is not set +# CONFIG_IP_NF_MATCH_ECN is not set +# CONFIG_IP_NF_MATCH_RPFILTER is not set +# CONFIG_IP_NF_MATCH_TTL is not set +# CONFIG_IP_NF_QUEUE is not set +# CONFIG_IP_NF_RAW is not set +# CONFIG_IP_NF_SECURITY is not set +# CONFIG_IP_NF_TARGET_CLUSTERIP is not set +# CONFIG_IP_NF_TARGET_ECN is not set +# CONFIG_IP_NF_TARGET_LOG is not set +CONFIG_IP_NF_TARGET_MASQUERADE=y +# CONFIG_IP_NF_TARGET_NETMAP is not set +# CONFIG_IP_NF_TARGET_REDIRECT is not set +# CONFIG_IP_NF_TARGET_REJECT is not set +# CONFIG_IP_NF_TARGET_TTL is not set +# CONFIG_IP_NF_TARGET_ULOG is not set +# CONFIG_IP_PIMSM_V1 is not set +# CONFIG_IP_PIMSM_V2 is not set +# CONFIG_IP_PNP is not set +CONFIG_IP_ROUTE_MULTIPATH=y +CONFIG_IP_ROUTE_VERBOSE=y +# CONFIG_IP_SCTP is not set +# CONFIG_IP_SET is not set +# CONFIG_IP_VS is not set +# CONFIG_IRDA is not set +# CONFIG_IRQSOFF_TRACER is not set +# CONFIG_IRQ_ALL_CPUS is not set +CONFIG_IRQ_CPU=y +# CONFIG_IRQ_DOMAIN_DEBUG is not set +CONFIG_IRQ_FORCED_THREADING=y +# CONFIG_IRQ_TIME_ACCOUNTING is not set +CONFIG_IRQ_WORK=y +# CONFIG_IR_IMON is not set +# CONFIG_IR_JVC_DECODER is not set +# CONFIG_IR_LIRC_CODEC is not set +# CONFIG_IR_MCEUSB is not set +# CONFIG_IR_NEC_DECODER is not set +# CONFIG_IR_RC5_DECODER is not set +# CONFIG_IR_RC5_SZ_DECODER is not set +# CONFIG_IR_RC6_DECODER is not set +# CONFIG_IR_SONY_DECODER is not set +# CONFIG_IR_STREAMZAP is not set +# CONFIG_ISCSI_BOOT_SYSFS is not set +# CONFIG_ISCSI_TCP is not set +# CONFIG_ISDN is not set +# CONFIG_ISDN_AUDIO is not set +# CONFIG_ISDN_CAPI is not set +# CONFIG_ISDN_CAPI_CAPIDRV is not set +# CONFIG_ISDN_DIVERSION is not set +# CONFIG_ISDN_DRV_ACT2000 is not set +# CONFIG_ISDN_DRV_AVMB1_VERBOSE_REASON is not set +# CONFIG_ISDN_DRV_GIGASET is not set +# CONFIG_ISDN_DRV_HISAX is not set +# CONFIG_ISDN_DRV_ICN is not set +# CONFIG_ISDN_DRV_LOOP is not set +# CONFIG_ISDN_DRV_PCBIT is not set +# CONFIG_ISDN_DRV_SC is not set +# CONFIG_ISDN_I4L is not set +# CONFIG_ISL29003 is not set +# CONFIG_ISL29020 is not set +# CONFIG_ISO9660_FS is not set +# CONFIG_ISS4xx is not set +# CONFIG_ITG3200 is not set +# CONFIG_IWL3945 is not set +# CONFIG_IWLAGN is not set +# CONFIG_IWLWIFI is not set +# CONFIG_IWMC3200TOP is not set +# CONFIG_IXGB is not set +# CONFIG_IXGBE is not set +# CONFIG_IXGBEVF is not set +# CONFIG_JBD is not set +# CONFIG_JBD2_DEBUG is not set +# CONFIG_JBD_DEBUG is not set +# CONFIG_JFFS2_CMODE_FAVOURLZO is not set +# CONFIG_JFFS2_CMODE_NONE is not set +CONFIG_JFFS2_CMODE_PRIORITY=y +# CONFIG_JFFS2_CMODE_SIZE is not set +CONFIG_JFFS2_COMPRESSION_OPTIONS=y +# CONFIG_JFFS2_FS is not set +CONFIG_JFFS2_FS_DEBUG=0 +# CONFIG_JFFS2_FS_POSIX_ACL is not set +# CONFIG_JFFS2_FS_SECURITY is not set +# CONFIG_JFFS2_FS_WBUF_VERIFY is not set +CONFIG_JFFS2_FS_WRITEBUFFER=y +CONFIG_JFFS2_FS_XATTR=y +CONFIG_JFFS2_LZMA=y +# CONFIG_JFFS2_LZO is not set +CONFIG_JFFS2_RTIME=y +# CONFIG_JFFS2_RUBIN is not set +CONFIG_JFFS2_SUMMARY=y +# CONFIG_JFFS2_ZLIB is not set +# CONFIG_JFS_DEBUG is not set +# CONFIG_JFS_FS is not set +# CONFIG_JFS_POSIX_ACL is not set +# CONFIG_JFS_SECURITY is not set +# CONFIG_JFS_STATISTICS is not set +# CONFIG_JME is not set +CONFIG_JOLIET=y +# CONFIG_JUMP_LABEL is not set +CONFIG_KALLSYMS=y +CONFIG_KALLSYMS_ALL=y +# CONFIG_KALLSYMS_UNCOMPRESSED is not set +# CONFIG_KARMA_PARTITION is not set +# CONFIG_KERNEL_BZIP2 is not set +# CONFIG_KERNEL_GZIP is not set +# CONFIG_KERNEL_LZMA is not set +# CONFIG_KERNEL_LZO is not set +CONFIG_KERNEL_XZ=y +# CONFIG_KEXEC is not set +# CONFIG_KEYBOARD_ADP5588 is not set +# CONFIG_KEYBOARD_ADP5589 is not set +# CONFIG_KEYBOARD_ATKBD is not set +# CONFIG_KEYBOARD_GPIO_POLLED is not set +# CONFIG_KEYBOARD_LKKBD is not set +# CONFIG_KEYBOARD_LM8323 is not set +# CONFIG_KEYBOARD_LM8333 is not set +# CONFIG_KEYBOARD_MATRIX is not set +# CONFIG_KEYBOARD_MAX7359 is not set +# CONFIG_KEYBOARD_MCS is not set +# CONFIG_KEYBOARD_MPR121 is not set +# CONFIG_KEYBOARD_NEWTON is not set +# CONFIG_KEYBOARD_OMAP4 is not set +# CONFIG_KEYBOARD_OPENCORES is not set +# CONFIG_KEYBOARD_PXA27x is not set +# CONFIG_KEYBOARD_QT1070 is not set +# CONFIG_KEYBOARD_QT2160 is not set +# CONFIG_KEYBOARD_SAMSUNG is not set +# CONFIG_KEYBOARD_STOWAWAY is not set +# CONFIG_KEYBOARD_SUNKBD is not set +# CONFIG_KEYBOARD_TCA6416 is not set +# CONFIG_KEYBOARD_TCA8418 is not set +# CONFIG_KEYBOARD_XTKBD is not set +# CONFIG_KEYS is not set +# CONFIG_KEYS_DEBUG_PROC_KEYS is not set +# CONFIG_KGDB is not set +# CONFIG_KMEMCHECK is not set +# CONFIG_KPROBES is not set +# CONFIG_KS8842 is not set +# CONFIG_KS8851 is not set +# CONFIG_KS8851_MLL is not set +# CONFIG_KSM is not set +# CONFIG_KSZ884X_PCI is not set +CONFIG_KUSER_HELPERS=y +# CONFIG_KVM_GUEST is not set +# CONFIG_KXSD9 is not set +CONFIG_L2TP=y +# CONFIG_L2TP_ETH is not set +# CONFIG_L2TP_IP is not set +# CONFIG_L2TP_V3 is not set +# CONFIG_LANMEDIA is not set +# CONFIG_LANTIQ is not set +# CONFIG_LAPB is not set +# CONFIG_LASAT is not set +# CONFIG_LATENCYTOP is not set +# CONFIG_LATTICE_ECP3_CONFIG is not set +CONFIG_LBDAF=y +# CONFIG_LCD_HX8357 is not set +# CONFIG_LCD_ILI922X is not set +# CONFIG_LCD_ILI9320 is not set +# CONFIG_LCD_LMS501KF03 is not set +# CONFIG_LDM_PARTITION is not set +# CONFIG_LEDS_ATMEL_PWM is not set +# CONFIG_LEDS_BD2802 is not set +# CONFIG_LEDS_BLINKM is not set +CONFIG_LEDS_CLASS=y +# CONFIG_LEDS_DAC124S085 is not set +# CONFIG_LEDS_GPIO is not set +CONFIG_LEDS_GPIO_OF=y +CONFIG_LEDS_GPIO_PLATFORM=y +# CONFIG_LEDS_INTEL_SS4200 is not set +# CONFIG_LEDS_LM3530 is not set +# CONFIG_LEDS_LM3556 is not set +# CONFIG_LEDS_LM355x is not set +# CONFIG_LEDS_LM3642 is not set +# CONFIG_LEDS_LP3944 is not set +# CONFIG_LEDS_LP5521 is not set +# CONFIG_LEDS_LP5523 is not set +# CONFIG_LEDS_LP5562 is not set +# CONFIG_LEDS_LT3593 is not set +# CONFIG_LEDS_NET5501 is not set +# CONFIG_LEDS_OT200 is not set +# CONFIG_LEDS_PCA9532 is not set +# CONFIG_LEDS_PCA955X is not set +# CONFIG_LEDS_PCA9633 is not set +# CONFIG_LEDS_PWM is not set +# CONFIG_LEDS_RENESAS_TPU is not set +# CONFIG_LEDS_TCA6507 is not set +CONFIG_LEDS_TRIGGERS=y +# CONFIG_LEDS_TRIGGER_BACKLIGHT is not set +# CONFIG_LEDS_TRIGGER_CAMERA is not set +# CONFIG_LEDS_TRIGGER_CPU is not set +CONFIG_LEDS_TRIGGER_DEFAULT_ON=y +# CONFIG_LEDS_TRIGGER_GPIO is not set +# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set +# CONFIG_LEDS_TRIGGER_IDE_DISK is not set +# CONFIG_LEDS_TRIGGER_MORSE is not set +CONFIG_LEDS_TRIGGER_NETDEV=y +# CONFIG_LEDS_TRIGGER_ONESHOT is not set +CONFIG_LEDS_TRIGGER_TIMER=y +# CONFIG_LEDS_TRIGGER_TRANSIENT is not set +# CONFIG_LEDS_TRIGGER_USBDEV is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +# CONFIG_LIB80211 is not set +# CONFIG_LIB80211_CRYPT_CCMP is not set +# CONFIG_LIB80211_CRYPT_TKIP is not set +# CONFIG_LIB80211_CRYPT_WEP is not set +# CONFIG_LIB80211_DEBUG is not set +# CONFIG_LIBCRC32C is not set +# CONFIG_LIBERTAS is not set +# CONFIG_LIBERTAS_THINFIRM is not set +# CONFIG_LIBERTAS_USB is not set +# CONFIG_LIBFC is not set +# CONFIG_LIBFCOE is not set +# CONFIG_LIBIPW_DEBUG is not set +# CONFIG_LINE6_USB is not set +# CONFIG_LIRC_STAGING is not set +# CONFIG_LIS3L02DQ is not set +# CONFIG_LKDTM is not set +CONFIG_LLC=y +# CONFIG_LLC2 is not set +CONFIG_LOCALVERSION="" +CONFIG_LOCALVERSION_AUTO=y +# CONFIG_LOCKD is not set +CONFIG_LOCKDEP_SUPPORT=y +CONFIG_LOCKD_V4=y +# CONFIG_LOCKUP_DETECTOR is not set +# CONFIG_LOCK_STAT is not set +# CONFIG_LOGFS is not set +# CONFIG_LOGIRUMBLEPAD2_FF is not set +# CONFIG_LOGITECH_FF is not set +# CONFIG_LOGO is not set +CONFIG_LOG_BUF_SHIFT=12 +# CONFIG_LOONGSON_MC146818 is not set +# CONFIG_LP486E is not set +# CONFIG_LPC_ICH is not set +# CONFIG_LPC_SCH is not set +# CONFIG_LP_CONSOLE is not set +# CONFIG_LSI_ET1011C_PHY is not set +# CONFIG_LTPC is not set +# CONFIG_LXT_PHY is not set +CONFIG_LZMA_COMPRESS=y +CONFIG_LZMA_DECOMPRESS=y +# CONFIG_LZO_COMPRESS is not set +# CONFIG_LZO_DECOMPRESS is not set +# CONFIG_M25PXX_PREFER_SMALL_SECTOR_ERASE is not set +# CONFIG_M25PXX_USE_AUTO_MODE is not set +# CONFIG_M25PXX_USE_FAST_READ is not set +# CONFIG_M25PXX_USE_MULTI_CHANNEL is not set +CONFIG_M25PXX_USE_USER_MODE=y +# CONFIG_MAC80211 is not set +# CONFIG_MACB is not set +# CONFIG_MACH_DECSTATION is not set +# CONFIG_MACH_JAZZ is not set +# CONFIG_MACH_JZ4740 is not set +# CONFIG_MACH_LOONGSON is not set +# CONFIG_MACH_LOONGSON1 is not set +# CONFIG_MACH_NO_WESTBRIDGE is not set +# CONFIG_MACH_TX39XX is not set +# CONFIG_MACH_TX49XX is not set +# CONFIG_MACH_VR41XX is not set +# CONFIG_MACINTOSH_DRIVERS is not set +# CONFIG_MACVLAN is not set +# CONFIG_MACVTAP is not set +# CONFIG_MAC_EMUMOUSEBTN is not set +# CONFIG_MAC_PARTITION is not set +# CONFIG_MAGIC_SYSRQ is not set +# CONFIG_MAILBOX is not set +# CONFIG_MARVELL_PHY is not set +# CONFIG_MAX1363 is not set +# CONFIG_MAX517 is not set +# CONFIG_MAX63XX_WATCHDOG is not set +# CONFIG_MCP4725 is not set +# CONFIG_MCPM is not set +# CONFIG_MD is not set +# CONFIG_MDIO_BITBANG is not set +# CONFIG_MDIO_BUS_MUX_GPIO is not set +# CONFIG_MDIO_BUS_MUX_MMIOREG is not set +# CONFIG_MD_FAULTY is not set +# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set +# CONFIG_MEDIA_ATTACH is not set +# CONFIG_MEDIA_CAMERA_SUPPORT is not set +# CONFIG_MEDIA_CONTROLLER is not set +# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set +# CONFIG_MEDIA_PARPORT_SUPPORT is not set +# CONFIG_MEDIA_PCI_SUPPORT is not set +# CONFIG_MEDIA_RADIO_SUPPORT is not set +# CONFIG_MEDIA_RC_SUPPORT is not set +# CONFIG_MEDIA_SUBDRV_AUTOSELECT is not set +# CONFIG_MEDIA_SUPPORT is not set +# CONFIG_MEDIA_TUNER_CUSTOMISE is not set +# CONFIG_MEDIA_USB_SUPPORT is not set +# CONFIG_MEGARAID_LEGACY is not set +# CONFIG_MEGARAID_NEWGEN is not set +# CONFIG_MEGARAID_SAS is not set +# CONFIG_MEMORY is not set +# CONFIG_MEMORY_FAILURE is not set +# CONFIG_MEMSTICK is not set +# CONFIG_MFD_88PM800 is not set +# CONFIG_MFD_88PM805 is not set +# CONFIG_MFD_88PM860X is not set +# CONFIG_MFD_AAT2870_CORE is not set +# CONFIG_MFD_ARIZONA_I2C is not set +# CONFIG_MFD_ARIZONA_SPI is not set +# CONFIG_MFD_AS3711 is not set +# CONFIG_MFD_ASIC3 is not set +# CONFIG_MFD_CORE is not set +# CONFIG_MFD_CROS_EC is not set +# CONFIG_MFD_CS5535 is not set +# CONFIG_MFD_DA9052_I2C is not set +# CONFIG_MFD_DA9052_SPI is not set +# CONFIG_MFD_DA9055 is not set +# CONFIG_MFD_JANZ_CMODIO is not set +# CONFIG_MFD_LM3533 is not set +# CONFIG_MFD_LP8788 is not set +# CONFIG_MFD_MAX77686 is not set +# CONFIG_MFD_MAX77693 is not set +# CONFIG_MFD_MAX8907 is not set +# CONFIG_MFD_MAX8925 is not set +# CONFIG_MFD_MAX8997 is not set +# CONFIG_MFD_MAX8998 is not set +# CONFIG_MFD_MC13783 is not set +# CONFIG_MFD_MC13XXX is not set +# CONFIG_MFD_MC13XXX_I2C is not set +# CONFIG_MFD_MC13XXX_SPI is not set +# CONFIG_MFD_OMAP_USB_HOST is not set +# CONFIG_MFD_PALMAS is not set +# CONFIG_MFD_PCF50633 is not set +# CONFIG_MFD_RC5T583 is not set +# CONFIG_MFD_RDC321X is not set +# CONFIG_MFD_RETU is not set +# CONFIG_MFD_RTSX_PCI is not set +# CONFIG_MFD_S5M_CORE is not set +# CONFIG_MFD_SEC_CORE is not set +# CONFIG_MFD_SI476X_CORE is not set +# CONFIG_MFD_SM501 is not set +# CONFIG_MFD_SMSC is not set +# CONFIG_MFD_STMPE is not set +CONFIG_MFD_SUPPORT=y +# CONFIG_MFD_SYSCON is not set +# CONFIG_MFD_T7L66XB is not set +# CONFIG_MFD_TC3589X is not set +# CONFIG_MFD_TC6387XB is not set +# CONFIG_MFD_TC6393XB is not set +# CONFIG_MFD_TIMBERDALE is not set +# CONFIG_MFD_TI_AM335X_TSCADC is not set +# CONFIG_MFD_TMIO is not set +# CONFIG_MFD_TPS65090 is not set +# CONFIG_MFD_TPS65217 is not set +# CONFIG_MFD_TPS6586X is not set +# CONFIG_MFD_TPS65910 is not set +# CONFIG_MFD_TPS65912 is not set +# CONFIG_MFD_TPS65912_I2C is not set +# CONFIG_MFD_TPS65912_SPI is not set +# CONFIG_MFD_TPS80031 is not set +# CONFIG_MFD_VIPERBOARD is not set +# CONFIG_MFD_VX855 is not set +# CONFIG_MFD_WL1273_CORE is not set +# CONFIG_MFD_WM831X is not set +# CONFIG_MFD_WM831X_I2C is not set +# CONFIG_MFD_WM831X_SPI is not set +# CONFIG_MFD_WM8350_I2C is not set +# CONFIG_MFD_WM8400 is not set +# CONFIG_MFD_WM8994 is not set +# CONFIG_MG_DISK is not set +# CONFIG_MICREL_KS8995MA is not set +# CONFIG_MICREL_PHY is not set +# CONFIG_MIGRATION is not set +# CONFIG_MII is not set +# CONFIG_MIKROTIK_RB532 is not set +# CONFIG_MINIX_FS is not set +# CONFIG_MINIX_FS_NATIVE_ENDIAN is not set +# CONFIG_MINIX_SUBPARTITION is not set +CONFIG_MIPS=y +# CONFIG_MIPS_ALCHEMY is not set +# CONFIG_MIPS_COBALT is not set +# CONFIG_MIPS_FPU_EMU is not set +# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set +CONFIG_MIPS_L1_CACHE_SHIFT=5 +# CONFIG_MIPS_MACHINE is not set +# CONFIG_MIPS_MALTA is not set +CONFIG_MIPS_MT_DISABLED=y +# CONFIG_MIPS_SEAD3 is not set +# CONFIG_MIPS_SIM is not set +CONFIG_MISC_DEVICES=y +CONFIG_MISC_FILESYSTEMS=y +# CONFIG_MISDN is not set +# CONFIG_MISDN_AVMFRITZ is not set +# CONFIG_MISDN_HFCPCI is not set +# CONFIG_MISDN_HFCUSB is not set +# CONFIG_MISDN_INFINEON is not set +# CONFIG_MISDN_NETJET is not set +# CONFIG_MISDN_SPEEDFAX is not set +# CONFIG_MISDN_W6692 is not set +# CONFIG_MKISS is not set +# CONFIG_MLX4_CORE is not set +# CONFIG_MLX4_EN is not set +# CONFIG_MMC is not set +# CONFIG_MMC_ARMMMCI is not set +# CONFIG_MMC_AU1X is not set +# CONFIG_MMC_BLOCK is not set +CONFIG_MMC_BLOCK_BOUNCE=y +CONFIG_MMC_BLOCK_MINORS=8 +# CONFIG_MMC_CB710 is not set +# CONFIG_MMC_CLKGATE is not set +# CONFIG_MMC_DEBUG is not set +# CONFIG_MMC_DW is not set +# CONFIG_MMC_MVSDIO is not set +# CONFIG_MMC_S3C is not set +# CONFIG_MMC_SDHCI is not set +# CONFIG_MMC_SDHCI_ACPI is not set +# CONFIG_MMC_SDHCI_OF_ESDHC is not set +# CONFIG_MMC_SDHCI_OF_HLWD is not set +# CONFIG_MMC_SDHCI_PXAV2 is not set +# CONFIG_MMC_SDHCI_PXAV3 is not set +# CONFIG_MMC_SDRICOH_CS is not set +# CONFIG_MMC_SPI is not set +# CONFIG_MMC_TEST is not set +# CONFIG_MMC_UNSAFE_RESUME is not set +# CONFIG_MMC_USHC is not set +# CONFIG_MMC_VIA_SDMMC is not set +# CONFIG_MMC_VUB300 is not set +CONFIG_MMU=y +CONFIG_MODULES=y +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MODULE_FORCE_LOAD is not set +# CONFIG_MODULE_FORCE_UNLOAD is not set +# CONFIG_MODULE_SIG is not set +# CONFIG_MODULE_SRCVERSION_ALL is not set +CONFIG_MODULE_STRIPPED=y +CONFIG_MODULE_UNLOAD=y +# CONFIG_MODVERSIONS is not set +# CONFIG_MOUSE_APPLETOUCH is not set +# CONFIG_MOUSE_GPIO is not set +# CONFIG_MOUSE_INPORT is not set +# CONFIG_MOUSE_LOGIBM is not set +# CONFIG_MOUSE_PC110PAD is not set +# CONFIG_MOUSE_PS2_SENTELIC is not set +# CONFIG_MOUSE_SYNAPTICS_I2C is not set +# CONFIG_MOUSE_SYNAPTICS_USB is not set +CONFIG_MSDOS_FS=y +CONFIG_MSDOS_PARTITION=y +# CONFIG_MSI_BITMAP_SELFTEST is not set +# CONFIG_MSI_LAPTOP is not set +CONFIG_MTD=y +# CONFIG_MTD_ABSENT is not set +# CONFIG_MTD_AFS_PARTS is not set +# CONFIG_MTD_ALAUDA is not set +# CONFIG_MTD_AR7_PARTS is not set +# CONFIG_MTD_ARM_INTEGRATOR is not set +CONFIG_MTD_BLKDEVS=y +CONFIG_MTD_BLOCK=y +CONFIG_MTD_BLOCK2MTD=y +# CONFIG_MTD_CFI is not set +# CONFIG_MTD_CFI_ADV_OPTIONS is not set +CONFIG_MTD_CFI_AMDSTD=y +# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set +CONFIG_MTD_CFI_I1=y +CONFIG_MTD_CFI_I2=y +# CONFIG_MTD_CFI_I4 is not set +# CONFIG_MTD_CFI_I8 is not set +CONFIG_MTD_CFI_INTELEXT=y +# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set +CONFIG_MTD_CFI_NOSWAP=y +# CONFIG_MTD_CFI_STAA is not set +CONFIG_MTD_CFI_UTIL=y +CONFIG_MTD_CHAR=y +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +# CONFIG_MTD_DATAFLASH is not set +# CONFIG_MTD_DEBUG is not set +# CONFIG_MTD_DOC2000 is not set +# CONFIG_MTD_DOC2001 is not set +# CONFIG_MTD_DOC2001PLUS is not set +# CONFIG_MTD_DOCG3 is not set +CONFIG_MTD_GEN_PROBE=y +# CONFIG_MTD_GPIO_ADDR is not set +# CONFIG_MTD_INTEL_VR_NOR is not set +# CONFIG_MTD_JEDECPROBE is not set +# CONFIG_MTD_LATCH_ADDR is not set +# CONFIG_MTD_LPDDR is not set +CONFIG_MTD_M25P80=y +CONFIG_MTD_MAP_BANK_WIDTH_1=y +# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set +CONFIG_MTD_MAP_BANK_WIDTH_2=y +# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set +CONFIG_MTD_MAP_BANK_WIDTH_4=y +# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set +# CONFIG_MTD_MTDRAM is not set +# CONFIG_MTD_MYLOADER_PARTS is not set +# CONFIG_MTD_NAND is not set +# CONFIG_MTD_NAND_AMS_DELTA is not set +# CONFIG_MTD_NAND_AR934X is not set +# CONFIG_MTD_NAND_AR934X_HW_ECC is not set +# CONFIG_MTD_NAND_ATMEL is not set +# CONFIG_MTD_NAND_AU1550 is not set +# CONFIG_MTD_NAND_AUTCPU12 is not set +# CONFIG_MTD_NAND_BCH is not set +# CONFIG_MTD_NAND_BCM_UMI is not set +# CONFIG_MTD_NAND_BF5XX is not set +# CONFIG_MTD_NAND_CAFE is not set +# CONFIG_MTD_NAND_CM_X270 is not set +# CONFIG_MTD_NAND_CS553X is not set +# CONFIG_MTD_NAND_DAVINCI is not set +# CONFIG_MTD_NAND_DENALI is not set +CONFIG_MTD_NAND_DENALI_SCRATCH_REG_ADDR=0xff108018 +# CONFIG_MTD_NAND_DISKONCHIP is not set +# CONFIG_MTD_NAND_DOCG4 is not set +# CONFIG_MTD_NAND_ECC is not set +# CONFIG_MTD_NAND_ECC_BCH is not set +# CONFIG_MTD_NAND_ECC_SMC is not set +# CONFIG_MTD_NAND_FSL_ELBC is not set +# CONFIG_MTD_NAND_FSL_IFC is not set +# CONFIG_MTD_NAND_FSL_UPM is not set +# CONFIG_MTD_NAND_FSMC is not set +# CONFIG_MTD_NAND_GPIO is not set +# CONFIG_MTD_NAND_GPMI_NAND is not set +# CONFIG_MTD_NAND_H1900 is not set +CONFIG_MTD_NAND_IDS=y +# CONFIG_MTD_NAND_JZ4740 is not set +# CONFIG_MTD_NAND_MPC5121_NFC is not set +# CONFIG_MTD_NAND_MUSEUM_IDS is not set +# CONFIG_MTD_NAND_MXC is not set +# CONFIG_MTD_NAND_NANDSIM is not set +# CONFIG_MTD_NAND_NDFC is not set +# CONFIG_MTD_NAND_NOMADIK is not set +# CONFIG_MTD_NAND_NUC900 is not set +# CONFIG_MTD_NAND_OMAP2 is not set +# CONFIG_MTD_NAND_ORION is not set +# CONFIG_MTD_NAND_PASEMI is not set +# CONFIG_MTD_NAND_PLATFORM is not set +# CONFIG_MTD_NAND_PPCHAMELEONEVB is not set +# CONFIG_MTD_NAND_PXA3xx is not set +# CONFIG_MTD_NAND_RB4XX is not set +# CONFIG_MTD_NAND_RB750 is not set +# CONFIG_MTD_NAND_RICOH is not set +# CONFIG_MTD_NAND_RTC_FROM4 is not set +# CONFIG_MTD_NAND_S3C2410 is not set +# CONFIG_MTD_NAND_SHARPSL is not set +# CONFIG_MTD_NAND_SH_FLCTL is not set +# CONFIG_MTD_NAND_SOCRATES is not set +# CONFIG_MTD_NAND_SPIA is not set +# CONFIG_MTD_NAND_TMIO is not set +# CONFIG_MTD_NAND_TXX9NDFMC is not set +# CONFIG_MTD_NAND_VERIFY_WRITE is not set +# CONFIG_MTD_ONENAND is not set +# CONFIG_MTD_OOPS is not set +# CONFIG_MTD_OTP is not set +# CONFIG_MTD_PCI is not set +# CONFIG_MTD_PCMCIA is not set +# CONFIG_MTD_PHRAM is not set +# CONFIG_MTD_PHYSMAP is not set +# CONFIG_MTD_PHYSMAP_COMPAT is not set +# CONFIG_MTD_PLATRAM is not set +# CONFIG_MTD_PMC551 is not set +# CONFIG_MTD_RAM is not set +CONFIG_MTD_REDBOOT_DIRECTORY_BLOCK=-1 +# CONFIG_MTD_REDBOOT_PARTS is not set +# CONFIG_MTD_REDBOOT_PARTS_READONLY is not set +# CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED is not set +# CONFIG_MTD_ROM is not set +CONFIG_MTD_ROOTFS_ROOT_DEV=y +CONFIG_MTD_ROOTFS_SPLIT=y +# CONFIG_MTD_SLRAM is not set +CONFIG_MTD_SPLIT=y +# CONFIG_MTD_SPLIT_FIRMWARE is not set +CONFIG_MTD_SPLIT_FIRMWARE_NAME="firmware" +# CONFIG_MTD_SPLIT_LZMA_FW is not set +# CONFIG_MTD_SPLIT_SEAMA_FW is not set +# CONFIG_MTD_SPLIT_SQUASHFS_ROOT is not set +# CONFIG_MTD_SPLIT_UIMAGE_FW is not set +# CONFIG_MTD_SST25L is not set +# CONFIG_MTD_SWAP is not set +# CONFIG_MTD_TESTS is not set +# CONFIG_MTD_UBI is not set +# CONFIG_MTD_UIMAGE_SPLIT is not set +# CONFIG_MUTEX_SPIN_ON_OWNER is not set +# CONFIG_MV643XX_ETH is not set +# CONFIG_MVMDIO is not set +# CONFIG_MVSWITCH_PHY is not set +# CONFIG_MWAVE is not set +# CONFIG_MWL8K is not set +# CONFIG_MYRI10GE is not set +# CONFIG_NAMESPACES is not set +# CONFIG_NATIONAL_PHY is not set +# CONFIG_NATSEMI is not set +# CONFIG_NCP_FS is not set +# CONFIG_NE2000 is not set +# CONFIG_NE2K_PCI is not set +# CONFIG_NEC_MARKEINS is not set +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NET=y +# CONFIG_NETCONSOLE is not set +CONFIG_NETDEVICES=y +CONFIG_NETDEV_1000=y +# CONFIG_NETDEV_10000 is not set +CONFIG_NETFILTER=y +CONFIG_NETFILTER_ADVANCED=y +# CONFIG_NETFILTER_DEBUG is not set +# CONFIG_NETFILTER_NETLINK is not set +# CONFIG_NETFILTER_NETLINK_ACCT is not set +# CONFIG_NETFILTER_NETLINK_LOG is not set +# CONFIG_NETFILTER_NETLINK_QUEUE is not set +# CONFIG_NETFILTER_NETLINK_QUEUE_CT is not set +# CONFIG_NETFILTER_TPROXY is not set +CONFIG_NETFILTER_XTABLES=y +# CONFIG_NETFILTER_XT_CONNMARK is not set +CONFIG_NETFILTER_XT_MARK=y +# CONFIG_NETFILTER_XT_MATCH_ADDRTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_BPF is not set +# CONFIG_NETFILTER_XT_MATCH_CLUSTER is not set +# CONFIG_NETFILTER_XT_MATCH_COMMENT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNBYTES is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLABEL is not set +# CONFIG_NETFILTER_XT_MATCH_CONNLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_CONNMARK is not set +# CONFIG_NETFILTER_XT_MATCH_CONNTRACK is not set +# CONFIG_NETFILTER_XT_MATCH_CPU is not set +# CONFIG_NETFILTER_XT_MATCH_DCCP is not set +# CONFIG_NETFILTER_XT_MATCH_DEVGROUP is not set +# CONFIG_NETFILTER_XT_MATCH_DSCP is not set +# CONFIG_NETFILTER_XT_MATCH_ECN is not set +# CONFIG_NETFILTER_XT_MATCH_ESP is not set +# CONFIG_NETFILTER_XT_MATCH_HASHLIMIT is not set +# CONFIG_NETFILTER_XT_MATCH_HELPER is not set +# CONFIG_NETFILTER_XT_MATCH_HL is not set +# CONFIG_NETFILTER_XT_MATCH_ID is not set +CONFIG_NETFILTER_XT_MATCH_IPRANGE=y +# CONFIG_NETFILTER_XT_MATCH_LAYER7 is not set +# CONFIG_NETFILTER_XT_MATCH_LAYER7_DEBUG is not set +# CONFIG_NETFILTER_XT_MATCH_LENGTH is not set +# CONFIG_NETFILTER_XT_MATCH_LIMIT is not set +CONFIG_NETFILTER_XT_MATCH_MAC=y +CONFIG_NETFILTER_XT_MATCH_MARK=y +# CONFIG_NETFILTER_XT_MATCH_MULTIPORT is not set +# CONFIG_NETFILTER_XT_MATCH_NFACCT is not set +# CONFIG_NETFILTER_XT_MATCH_OSF is not set +# CONFIG_NETFILTER_XT_MATCH_OWNER is not set +# CONFIG_NETFILTER_XT_MATCH_PHYSDEV is not set +# CONFIG_NETFILTER_XT_MATCH_PKTTYPE is not set +# CONFIG_NETFILTER_XT_MATCH_POLICY is not set +# CONFIG_NETFILTER_XT_MATCH_QUOTA is not set +# CONFIG_NETFILTER_XT_MATCH_RATEEST is not set +# CONFIG_NETFILTER_XT_MATCH_REALM is not set +# CONFIG_NETFILTER_XT_MATCH_RECENT is not set +# CONFIG_NETFILTER_XT_MATCH_SCTP is not set +# CONFIG_NETFILTER_XT_MATCH_SOCKET is not set +CONFIG_NETFILTER_XT_MATCH_STATE=y +# CONFIG_NETFILTER_XT_MATCH_STATISTIC is not set +# CONFIG_NETFILTER_XT_MATCH_STRING is not set +# CONFIG_NETFILTER_XT_MATCH_TCPMSS is not set +# CONFIG_NETFILTER_XT_MATCH_TIME is not set +# CONFIG_NETFILTER_XT_MATCH_U32 is not set +# CONFIG_NETFILTER_XT_TARGET_AUDIT is not set +# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set +# CONFIG_NETFILTER_XT_TARGET_CLASSIFY is not set +# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set +# CONFIG_NETFILTER_XT_TARGET_CT is not set +# CONFIG_NETFILTER_XT_TARGET_DSCP is not set +# CONFIG_NETFILTER_XT_TARGET_HL is not set +# CONFIG_NETFILTER_XT_TARGET_HMARK is not set +# CONFIG_NETFILTER_XT_TARGET_IDLETIMER is not set +# CONFIG_NETFILTER_XT_TARGET_LED is not set +# CONFIG_NETFILTER_XT_TARGET_LOG is not set +CONFIG_NETFILTER_XT_TARGET_MARK=y +# CONFIG_NETFILTER_XT_TARGET_NETMAP is not set +# CONFIG_NETFILTER_XT_TARGET_NFLOG is not set +# CONFIG_NETFILTER_XT_TARGET_NFQUEUE is not set +# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set +# CONFIG_NETFILTER_XT_TARGET_RATEEST is not set +# CONFIG_NETFILTER_XT_TARGET_REDIRECT is not set +CONFIG_NETFILTER_XT_TARGET_TCPMSS=y +# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set +# CONFIG_NETFILTER_XT_TARGET_TEE is not set +# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set +# CONFIG_NETFILTER_XT_TARGET_TRACE is not set +# CONFIG_NETLINK_DIAG is not set +# CONFIG_NETLINK_MMAP is not set +# CONFIG_NETPOLL is not set +# CONFIG_NETROM is not set +CONFIG_NETWORK_FILESYSTEMS=y +# CONFIG_NETWORK_PHY_TIMESTAMPING is not set +# CONFIG_NETWORK_SECMARK is not set +# CONFIG_NETXEN_NIC is not set +# CONFIG_NET_9P is not set +# CONFIG_NET_ACT_CSUM is not set +# CONFIG_NET_ACT_GACT is not set +# CONFIG_NET_ACT_IPT is not set +# CONFIG_NET_ACT_MIRRED is not set +# CONFIG_NET_ACT_NAT is not set +# CONFIG_NET_ACT_PEDIT is not set +# CONFIG_NET_ACT_POLICE is not set +# CONFIG_NET_ACT_SIMP is not set +# CONFIG_NET_ACT_SKBEDIT is not set +CONFIG_NET_CADENCE=y +# CONFIG_NET_CALXEDA_XGMAC is not set +CONFIG_NET_CLS=y +# CONFIG_NET_CLS_ACT is not set +# CONFIG_NET_CLS_BASIC is not set +# CONFIG_NET_CLS_FLOW is not set +CONFIG_NET_CLS_FW=y +# CONFIG_NET_CLS_IND is not set +# CONFIG_NET_CLS_ROUTE4 is not set +# CONFIG_NET_CLS_RSVP is not set +# CONFIG_NET_CLS_RSVP6 is not set +# CONFIG_NET_CLS_TCINDEX is not set +CONFIG_NET_CLS_U32=y +CONFIG_NET_CORE=y +# CONFIG_NET_DROP_MONITOR is not set +# CONFIG_NET_DSA is not set +# CONFIG_NET_DSA_MV88E6060 is not set +# CONFIG_NET_DSA_MV88E6123_61_65 is not set +# CONFIG_NET_DSA_MV88E6131 is not set +# CONFIG_NET_DSA_MV88E6XXX is not set +# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set +# CONFIG_NET_DSA_TAG_DSA is not set +# CONFIG_NET_DSA_TAG_EDSA is not set +# CONFIG_NET_EMATCH is not set +# CONFIG_NET_EMATCH_CMP is not set +# CONFIG_NET_EMATCH_META is not set +# CONFIG_NET_EMATCH_NBYTE is not set +CONFIG_NET_EMATCH_STACK=32 +# CONFIG_NET_EMATCH_TEXT is not set +# CONFIG_NET_EMATCH_U32 is not set +CONFIG_NET_ETHERNET=y +# CONFIG_NET_FC is not set +# CONFIG_NET_IPGRE is not set +CONFIG_NET_IPGRE_BROADCAST=y +# CONFIG_NET_IPGRE_DEMUX is not set +# CONFIG_NET_IPIP is not set +# CONFIG_NET_IPVTI is not set +# CONFIG_NET_IP_TUNNEL is not set +# CONFIG_NET_ISA is not set +# CONFIG_NET_KEY is not set +# CONFIG_NET_KEY_MIGRATE is not set +# CONFIG_NET_PACKET_ENGINE is not set +CONFIG_NET_PCI=y +# CONFIG_NET_PCMCIA is not set +# CONFIG_NET_PKTGEN is not set +# CONFIG_NET_POCKET is not set +# CONFIG_NET_POLL_CONTROLLER is not set +# CONFIG_NET_SB1000 is not set +CONFIG_NET_SCHED=y +# CONFIG_NET_SCH_ATM is not set +# CONFIG_NET_SCH_CBQ is not set +# CONFIG_NET_SCH_CHOKE is not set +# CONFIG_NET_SCH_CODEL is not set +# CONFIG_NET_SCH_DRR is not set +# CONFIG_NET_SCH_DSMARK is not set +# CONFIG_NET_SCH_ESFQ is not set +CONFIG_NET_SCH_ESFQ_NFCT=y +CONFIG_NET_SCH_FIFO=y +CONFIG_NET_SCH_FQ_CODEL=y +# CONFIG_NET_SCH_GRED is not set +# CONFIG_NET_SCH_HFSC is not set +CONFIG_NET_SCH_HTB=y +# CONFIG_NET_SCH_INGRESS is not set +# CONFIG_NET_SCH_MQPRIO is not set +# CONFIG_NET_SCH_MULTIQ is not set +# CONFIG_NET_SCH_NETEM is not set +# CONFIG_NET_SCH_PLUG is not set +# CONFIG_NET_SCH_PRIO is not set +# CONFIG_NET_SCH_QFQ is not set +# CONFIG_NET_SCH_RED is not set +# CONFIG_NET_SCH_SFB is not set +CONFIG_NET_SCH_SFQ=y +# CONFIG_NET_SCH_TBF is not set +# CONFIG_NET_SCH_TEQL is not set +# CONFIG_NET_TEAM is not set +# CONFIG_NET_TULIP is not set +CONFIG_NET_VENDOR_3COM=y +CONFIG_NET_VENDOR_8390=y +CONFIG_NET_VENDOR_ADAPTEC=y +CONFIG_NET_VENDOR_ALTEON=y +CONFIG_NET_VENDOR_AMD=y +CONFIG_NET_VENDOR_ATHEROS=y +CONFIG_NET_VENDOR_BROADCOM=y +CONFIG_NET_VENDOR_BROCADE=y +CONFIG_NET_VENDOR_CHELSIO=y +CONFIG_NET_VENDOR_CIRRUS=y +CONFIG_NET_VENDOR_CISCO=y +CONFIG_NET_VENDOR_DEC=y +CONFIG_NET_VENDOR_DLINK=y +CONFIG_NET_VENDOR_EMULEX=y +CONFIG_NET_VENDOR_EXAR=y +CONFIG_NET_VENDOR_FARADAY=y +CONFIG_NET_VENDOR_FREESCALE=y +CONFIG_NET_VENDOR_FUJITSU=y +CONFIG_NET_VENDOR_HP=y +CONFIG_NET_VENDOR_I825XX=y +CONFIG_NET_VENDOR_IBM=y +CONFIG_NET_VENDOR_INTEL=y +CONFIG_NET_VENDOR_MARVELL=y +CONFIG_NET_VENDOR_MELLANOX=y +CONFIG_NET_VENDOR_MICREL=y +CONFIG_NET_VENDOR_MICROCHIP=y +CONFIG_NET_VENDOR_MYRI=y +CONFIG_NET_VENDOR_NATSEMI=y +CONFIG_NET_VENDOR_NVIDIA=y +CONFIG_NET_VENDOR_OKI=y +CONFIG_NET_VENDOR_QLOGIC=y +CONFIG_NET_VENDOR_RDC=y +CONFIG_NET_VENDOR_REALTEK=y +CONFIG_NET_VENDOR_SEEQ=y +CONFIG_NET_VENDOR_SILAN=y +CONFIG_NET_VENDOR_SILICOM=y +CONFIG_NET_VENDOR_SIS=y +CONFIG_NET_VENDOR_SMSC=y +CONFIG_NET_VENDOR_STMICRO=y +CONFIG_NET_VENDOR_SUN=y +CONFIG_NET_VENDOR_TEHUTI=y +CONFIG_NET_VENDOR_TI=y +CONFIG_NET_VENDOR_TOSHIBA=y +CONFIG_NET_VENDOR_VIA=y +# CONFIG_NET_VENDOR_WIZNET is not set +CONFIG_NET_VENDOR_XILINX=y +CONFIG_NET_VENDOR_XIRCOM=y +# CONFIG_NEW_LEDS is not set +# CONFIG_NFC is not set +# CONFIG_NFC_DEVICES is not set +# CONFIG_NFSD is not set +# CONFIG_NFSD_DEPRECATED is not set +# CONFIG_NFSD_V2_ACL is not set +CONFIG_NFSD_V3=y +# CONFIG_NFSD_V3_ACL is not set +# CONFIG_NFSD_V4 is not set +# CONFIG_NFS_ACL_SUPPORT is not set +CONFIG_NFS_COMMON=y +# CONFIG_NFS_FS is not set +# CONFIG_NFS_FSCACHE is not set +# CONFIG_NFS_SWAP is not set +# CONFIG_NFS_V2 is not set +CONFIG_NFS_V3=y +# CONFIG_NFS_V3_ACL is not set +# CONFIG_NFS_V4 is not set +# CONFIG_NFS_V4_1 is not set +# CONFIG_NFTL is not set +CONFIG_NF_CONNTRACK=y +# CONFIG_NF_CONNTRACK_AMANDA is not set +# CONFIG_NF_CONNTRACK_EVENTS is not set +CONFIG_NF_CONNTRACK_FTP=y +# CONFIG_NF_CONNTRACK_H323 is not set +CONFIG_NF_CONNTRACK_IPV4=y +# CONFIG_NF_CONNTRACK_IPV6 is not set +# CONFIG_NF_CONNTRACK_IRC is not set +# CONFIG_NF_CONNTRACK_MARK is not set +# CONFIG_NF_CONNTRACK_NETBIOS_NS is not set +CONFIG_NF_CONNTRACK_PPTP=y +CONFIG_NF_CONNTRACK_PROCFS=y +CONFIG_NF_CONNTRACK_PROC_COMPAT=y +# CONFIG_NF_CONNTRACK_RTSP is not set +# CONFIG_NF_CONNTRACK_SANE is not set +CONFIG_NF_CONNTRACK_SIP=y +# CONFIG_NF_CONNTRACK_SNMP is not set +# CONFIG_NF_CONNTRACK_TFTP is not set +# CONFIG_NF_CONNTRACK_TIMEOUT is not set +# CONFIG_NF_CONNTRACK_TIMESTAMP is not set +# CONFIG_NF_CONNTRACK_ZONES is not set +# CONFIG_NF_CT_NETLINK is not set +# CONFIG_NF_CT_NETLINK_TIMEOUT is not set +# CONFIG_NF_CT_PROTO_DCCP is not set +CONFIG_NF_CT_PROTO_GRE=y +# CONFIG_NF_CT_PROTO_SCTP is not set +# CONFIG_NF_CT_PROTO_UDPLITE is not set +CONFIG_NF_DEFRAG_IPV4=y +CONFIG_NF_NAT=y +# CONFIG_NF_NAT_AMANDA is not set +CONFIG_NF_NAT_FTP=y +# CONFIG_NF_NAT_H323 is not set +CONFIG_NF_NAT_IPV4=y +# CONFIG_NF_NAT_IPV6 is not set +# CONFIG_NF_NAT_IRC is not set +CONFIG_NF_NAT_NEEDED=y +CONFIG_NF_NAT_PPTP=y +CONFIG_NF_NAT_PROTO_GRE=y +# CONFIG_NF_NAT_RTSP is not set +CONFIG_NF_NAT_SIP=y +# CONFIG_NF_NAT_SNMP_BASIC is not set +# CONFIG_NF_NAT_TFTP is not set +# CONFIG_NI52 is not set +# CONFIG_NI65 is not set +# CONFIG_NILFS2_FS is not set +# CONFIG_NIU is not set +CONFIG_NLATTR=y +# CONFIG_NLM_XLP_BOARD is not set +# CONFIG_NLM_XLR_BOARD is not set +CONFIG_NLS=y +# CONFIG_NLS_ASCII is not set +# CONFIG_NLS_CODEPAGE_1250 is not set +# CONFIG_NLS_CODEPAGE_1251 is not set +CONFIG_NLS_CODEPAGE_437=y +# CONFIG_NLS_CODEPAGE_737 is not set +# CONFIG_NLS_CODEPAGE_775 is not set +# CONFIG_NLS_CODEPAGE_850 is not set +# CONFIG_NLS_CODEPAGE_852 is not set +# CONFIG_NLS_CODEPAGE_855 is not set +# CONFIG_NLS_CODEPAGE_857 is not set +# CONFIG_NLS_CODEPAGE_860 is not set +# CONFIG_NLS_CODEPAGE_861 is not set +# CONFIG_NLS_CODEPAGE_862 is not set +# CONFIG_NLS_CODEPAGE_863 is not set +# CONFIG_NLS_CODEPAGE_864 is not set +# CONFIG_NLS_CODEPAGE_865 is not set +# CONFIG_NLS_CODEPAGE_866 is not set +# CONFIG_NLS_CODEPAGE_869 is not set +# CONFIG_NLS_CODEPAGE_874 is not set +# CONFIG_NLS_CODEPAGE_932 is not set +# CONFIG_NLS_CODEPAGE_936 is not set +# CONFIG_NLS_CODEPAGE_949 is not set +# CONFIG_NLS_CODEPAGE_950 is not set +CONFIG_NLS_DEFAULT="iso8859-1" +CONFIG_NLS_ISO8859_1=y +# CONFIG_NLS_ISO8859_13 is not set +# CONFIG_NLS_ISO8859_14 is not set +# CONFIG_NLS_ISO8859_15 is not set +# CONFIG_NLS_ISO8859_2 is not set +# CONFIG_NLS_ISO8859_3 is not set +# CONFIG_NLS_ISO8859_4 is not set +# CONFIG_NLS_ISO8859_5 is not set +# CONFIG_NLS_ISO8859_6 is not set +# CONFIG_NLS_ISO8859_7 is not set +# CONFIG_NLS_ISO8859_8 is not set +# CONFIG_NLS_ISO8859_9 is not set +# CONFIG_NLS_KOI8_R is not set +# CONFIG_NLS_KOI8_U is not set +# CONFIG_NLS_MAC_CELTIC is not set +# CONFIG_NLS_MAC_CENTEURO is not set +# CONFIG_NLS_MAC_CROATIAN is not set +# CONFIG_NLS_MAC_CYRILLIC is not set +# CONFIG_NLS_MAC_GAELIC is not set +# CONFIG_NLS_MAC_GREEK is not set +# CONFIG_NLS_MAC_ICELAND is not set +# CONFIG_NLS_MAC_INUIT is not set +# CONFIG_NLS_MAC_ROMAN is not set +# CONFIG_NLS_MAC_ROMANIAN is not set +# CONFIG_NLS_MAC_TURKISH is not set +# CONFIG_NLS_UTF8 is not set +# CONFIG_NOP_USB_XCEIV is not set +# CONFIG_NORTEL_HERMES is not set +# CONFIG_NOTIFIER_ERROR_INJECTION is not set +# CONFIG_NOZOMI is not set +# CONFIG_NO_BOOTMEM is not set +# CONFIG_NO_HZ is not set +# CONFIG_NO_HZ_IDLE is not set +# CONFIG_NO_IOPORT is not set +# CONFIG_NS83820 is not set +# CONFIG_NTFS_DEBUG is not set +# CONFIG_NTFS_FS is not set +# CONFIG_NTFS_RW is not set +# CONFIG_NTP_PPS is not set +# CONFIG_NVRAM is not set +# CONFIG_NV_TCO is not set +# CONFIG_NXP_STB220 is not set +# CONFIG_NXP_STB225 is not set +# CONFIG_N_GSM is not set +# CONFIG_OABI_COMPAT is not set +# CONFIG_OBS600 is not set +# CONFIG_OCFS2_FS is not set +# CONFIG_OCF_BENCH is not set +# CONFIG_OCF_C7108 is not set +# CONFIG_OCF_CRYPTOCTEON is not set +# CONFIG_OCF_EP80579 is not set +# CONFIG_OCF_HIFN is not set +# CONFIG_OCF_HIFNHIPP is not set +# CONFIG_OCF_IXP4XX is not set +# CONFIG_OCF_KIRKWOOD is not set +# CONFIG_OCF_OCF is not set +# CONFIG_OCF_OCFNULL is not set +# CONFIG_OCF_SAFE is not set +# CONFIG_OCF_TALITOS is not set +# CONFIG_OCF_UBSEC_SSB is not set +# CONFIG_OC_ETM is not set +# CONFIG_OF_SELFTEST is not set +# CONFIG_OMAP_CONTROL_USB is not set +# CONFIG_OMAP_OCP2SCP is not set +# CONFIG_OMAP_USB2 is not set +# CONFIG_OMAP_USB3 is not set +# CONFIG_OMFS_FS is not set +# CONFIG_OPENVSWITCH is not set +# CONFIG_OPENWRT_SDK is not set +# CONFIG_ORION_WATCHDOG is not set +# CONFIG_OSF_PARTITION is not set +CONFIG_OVERLAYFS_FS=y +# CONFIG_P54_COMMON is not set +CONFIG_PACKET=y +# CONFIG_PACKET_DIAG is not set +CONFIG_PAGEFLAGS_EXTENDED=y +# CONFIG_PAGE_POISONING is not set +CONFIG_PAGE_SIZE_16KB=y +# CONFIG_PAGE_SIZE_32KB is not set +# CONFIG_PAGE_SIZE_4KB is not set +# CONFIG_PAGE_SIZE_64KB is not set +# CONFIG_PAGE_SIZE_8KB is not set +# CONFIG_PANEL is not set +# CONFIG_PANIC_ON_OOPS is not set +CONFIG_PANIC_ON_OOPS_VALUE=0 +# CONFIG_PANTHERLORD_FF is not set +# CONFIG_PARPORT is not set +# CONFIG_PARPORT_1284 is not set +# CONFIG_PARPORT_AX88796 is not set +# CONFIG_PARPORT_PC is not set +# CONFIG_PARTITION_ADVANCED is not set +# CONFIG_PATA_ALI is not set +# CONFIG_PATA_AMD is not set +# CONFIG_PATA_ARASAN_CF is not set +# CONFIG_PATA_ARTOP is not set +# CONFIG_PATA_ATIIXP is not set +# CONFIG_PATA_ATP867X is not set +# CONFIG_PATA_CMD640_PCI is not set +# CONFIG_PATA_CMD64X is not set +# CONFIG_PATA_CS5520 is not set +# CONFIG_PATA_CS5530 is not set +# CONFIG_PATA_CS5535 is not set +# CONFIG_PATA_CS5536 is not set +# CONFIG_PATA_CYPRESS is not set +# CONFIG_PATA_EFAR is not set +# CONFIG_PATA_HPT366 is not set +# CONFIG_PATA_HPT37X is not set +# CONFIG_PATA_HPT3X2N is not set +# CONFIG_PATA_HPT3X3 is not set +# CONFIG_PATA_ISAPNP is not set +# CONFIG_PATA_IT8213 is not set +# CONFIG_PATA_IT821X is not set +# CONFIG_PATA_JMICRON is not set +# CONFIG_PATA_LEGACY is not set +# CONFIG_PATA_MARVELL is not set +# CONFIG_PATA_MPIIX is not set +# CONFIG_PATA_NETCELL is not set +# CONFIG_PATA_NINJA32 is not set +# CONFIG_PATA_NS87410 is not set +# CONFIG_PATA_NS87415 is not set +# CONFIG_PATA_OF_PLATFORM is not set +# CONFIG_PATA_OLDPIIX is not set +# CONFIG_PATA_OPTI is not set +# CONFIG_PATA_OPTIDMA is not set +# CONFIG_PATA_PCMCIA is not set +# CONFIG_PATA_PDC2027X is not set +# CONFIG_PATA_PDC_OLD is not set +# CONFIG_PATA_PLATFORM is not set +# CONFIG_PATA_QDI is not set +# CONFIG_PATA_RADISYS is not set +# CONFIG_PATA_RDC is not set +# CONFIG_PATA_RZ1000 is not set +# CONFIG_PATA_SC1200 is not set +# CONFIG_PATA_SCH is not set +# CONFIG_PATA_SERVERWORKS is not set +# CONFIG_PATA_SIL680 is not set +# CONFIG_PATA_SIS is not set +# CONFIG_PATA_TOSHIBA is not set +# CONFIG_PATA_TRIFLEX is not set +# CONFIG_PATA_VIA is not set +# CONFIG_PATA_WINBOND is not set +# CONFIG_PATA_WINBOND_VLB is not set +# CONFIG_PC300TOO is not set +# CONFIG_PCCARD is not set +# CONFIG_PCH_GBE is not set +# CONFIG_PCH_PHUB is not set +# CONFIG_PCI200SYN is not set +# CONFIG_PCIEAER_INJECT is not set +# CONFIG_PCIEASPM is not set +# CONFIG_PCIEPORTBUS is not set +# CONFIG_PCIE_ECRC is not set +# CONFIG_PCIPCWATCHDOG is not set +# CONFIG_PCI_ATMEL is not set +# CONFIG_PCI_CNB20LE_QUIRK is not set +# CONFIG_PCI_DEBUG is not set +# CONFIG_PCI_DISABLE_COMMON_QUIRKS is not set +# CONFIG_PCI_HERMES is not set +# CONFIG_PCI_IOV is not set +# CONFIG_PCI_MSI is not set +# CONFIG_PCI_PASID is not set +# CONFIG_PCI_PRI is not set +CONFIG_PCI_QUIRKS=y +# CONFIG_PCI_REALLOC_ENABLE_AUTO is not set +# CONFIG_PCI_STUB is not set +CONFIG_PCI_SYSCALL=y +# CONFIG_PCMCIA is not set +# CONFIG_PCMCIA_3C574 is not set +# CONFIG_PCMCIA_3C589 is not set +# CONFIG_PCMCIA_AHA152X is not set +# CONFIG_PCMCIA_ATMEL is not set +# CONFIG_PCMCIA_AXNET is not set +# CONFIG_PCMCIA_DEBUG is not set +# CONFIG_PCMCIA_FDOMAIN is not set +# CONFIG_PCMCIA_FMVJ18X is not set +# CONFIG_PCMCIA_HERMES is not set +# CONFIG_PCMCIA_LOAD_CIS is not set +# CONFIG_PCMCIA_NINJA_SCSI is not set +# CONFIG_PCMCIA_NMCLAN is not set +# CONFIG_PCMCIA_PCNET is not set +# CONFIG_PCMCIA_QLOGIC is not set +# CONFIG_PCMCIA_RAYCS is not set +# CONFIG_PCMCIA_SMC91C92 is not set +# CONFIG_PCMCIA_SPECTRUM is not set +# CONFIG_PCMCIA_SYM53C500 is not set +# CONFIG_PCMCIA_WL3501 is not set +# CONFIG_PCMCIA_XIRC2PS is not set +# CONFIG_PCMCIA_XIRCOM is not set +# CONFIG_PCNET32 is not set +# CONFIG_PCSPKR_PLATFORM is not set +# CONFIG_PD6729 is not set +# CONFIG_PDA_POWER is not set +# CONFIG_PDC_ADMA is not set +# CONFIG_PERF_COUNTERS is not set +# CONFIG_PERF_EVENTS is not set +CONFIG_PERF_USE_VMALLOC=y +# CONFIG_PHANTOM is not set +# CONFIG_PHONE is not set +# CONFIG_PHONET is not set +# CONFIG_PHYLIB is not set +# CONFIG_PHYS_ADDR_T_64BIT is not set +# CONFIG_PID_IN_CONTEXTIDR is not set +# CONFIG_PID_NS is not set +# CONFIG_PINCTRL is not set +# CONFIG_PINCTRL_EXYNOS is not set +# CONFIG_PINCTRL_EXYNOS5440 is not set +# CONFIG_PLAT_SPEAR is not set +# CONFIG_PLIP is not set +# CONFIG_PLX_HERMES is not set +# CONFIG_PM is not set +# CONFIG_PMBUS is not set +# CONFIG_PMC_MSP is not set +# CONFIG_PMC_YOSEMITE is not set +# CONFIG_PMIC_ADP5520 is not set +# CONFIG_PMIC_DA903X is not set +# CONFIG_PM_AUTOSLEEP is not set +# CONFIG_PM_DEVFREQ is not set +# CONFIG_PM_RUNTIME is not set +# CONFIG_PM_WAKELOCKS is not set +# CONFIG_PNX8550_JBS is not set +# CONFIG_PNX8550_STB810 is not set +# CONFIG_POHMELFS is not set +# CONFIG_POSIX_MQUEUE is not set +# CONFIG_POWERTV is not set +# CONFIG_POWER_AVS is not set +# CONFIG_POWER_RESET is not set +# CONFIG_POWER_RESET_RESTART is not set +# CONFIG_POWER_SUPPLY is not set +# CONFIG_POWER_SUPPLY_DEBUG is not set +# CONFIG_PPC4xx_GPIO is not set +# CONFIG_PPC_16K_PAGES is not set +# CONFIG_PPC_256K_PAGES is not set +CONFIG_PPC_4K_PAGES=y +# CONFIG_PPC_64K_PAGES is not set +# CONFIG_PPC_DISABLE_WERROR is not set +# CONFIG_PPC_EMULATED_STATS is not set +# CONFIG_PPC_EPAPR_HV_BYTECHAN is not set +CONFIG_PPP=y +# CONFIG_PPPOATM is not set +CONFIG_PPPOE=y +# CONFIG_PPPOL2TP is not set +CONFIG_PPP_ASYNC=y +# CONFIG_PPP_BSDCOMP is not set +# CONFIG_PPP_DEFLATE is not set +# CONFIG_PPP_FILTER is not set +# CONFIG_PPP_MPPE is not set +# CONFIG_PPP_MULTILINK is not set +CONFIG_PPP_SYNC_TTY=y +# CONFIG_PPS is not set +# CONFIG_PPS_CLIENT_GPIO is not set +# CONFIG_PPS_CLIENT_KTIMER is not set +# CONFIG_PPS_CLIENT_LDISC is not set +# CONFIG_PPS_CLIENT_PARPORT is not set +# CONFIG_PPS_DEBUG is not set +# CONFIG_PPTP is not set +# CONFIG_PREEMPT is not set +CONFIG_PREEMPT_NONE=y +# CONFIG_PREEMPT_RCU is not set +# CONFIG_PREEMPT_VOLUNTARY is not set +CONFIG_PREVENT_FIRMWARE_BUILD=y +CONFIG_PRINTK=y +# CONFIG_PRINTK_TIME is not set +CONFIG_PRINT_STACK_DEPTH=64 +# CONFIG_PRISM2_USB is not set +# CONFIG_PRISM54 is not set +# CONFIG_PROBE_INITRD_HEADER is not set +# CONFIG_PROC_DEVICETREE is not set +CONFIG_PROC_FS=y +# CONFIG_PROC_KCORE is not set +CONFIG_PROC_PAGE_MONITOR=y +CONFIG_PROC_STRIPPED=y +CONFIG_PROC_SYSCTL=y +# CONFIG_PROFILE_ALL_BRANCHES is not set +# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set +# CONFIG_PROFILING is not set +# CONFIG_PROVE_LOCKING is not set +# CONFIG_PROVE_RCU is not set +# CONFIG_PROVE_RCU_DELAY is not set +# CONFIG_PSB6970_PHY is not set +# CONFIG_PSTORE is not set +# CONFIG_PTP_1588_CLOCK is not set +# CONFIG_PTP_1588_CLOCK_IXP46X is not set +# CONFIG_PTP_1588_CLOCK_PCH is not set +# CONFIG_PWM is not set +# CONFIG_QLA3XXX is not set +# CONFIG_QLCNIC is not set +# CONFIG_QLGE is not set +# CONFIG_QNX4FS_FS is not set +# CONFIG_QNX6FS_FS is not set +# CONFIG_QSEMI_PHY is not set +# CONFIG_QUOTA is not set +# CONFIG_QUOTACTL is not set +# CONFIG_QUOTA_DEBUG is not set +# CONFIG_R3964 is not set +# CONFIG_R6040 is not set +# CONFIG_R8169 is not set +# CONFIG_R8187SE is not set +# CONFIG_R8712U is not set +# CONFIG_RADIO_ADAPTERS is not set +# CONFIG_RADIO_AZTECH is not set +# CONFIG_RADIO_CADET is not set +# CONFIG_RADIO_GEMTEK is not set +# CONFIG_RADIO_MAXIRADIO is not set +# CONFIG_RADIO_RTRACK is not set +# CONFIG_RADIO_RTRACK2 is not set +# CONFIG_RADIO_SF16FMI is not set +# CONFIG_RADIO_SF16FMR2 is not set +# CONFIG_RADIO_TERRATEC is not set +# CONFIG_RADIO_TRUST is not set +# CONFIG_RADIO_TYPHOON is not set +# CONFIG_RADIO_ZOLTRIX is not set +# CONFIG_RAID_ATTRS is not set +# CONFIG_RALINK is not set +# CONFIG_RAMOOPS is not set +# CONFIG_RAPIDIO is not set +# CONFIG_RAR_REGISTER is not set +# CONFIG_RAW_DRIVER is not set +# CONFIG_RBTREE_TEST is not set +# CONFIG_RCU_CPU_STALL_INFO is not set +CONFIG_RCU_CPU_STALL_TIMEOUT=60 +CONFIG_RCU_FANOUT=32 +# CONFIG_RCU_FANOUT_EXACT is not set +CONFIG_RCU_FANOUT_LEAF=16 +# CONFIG_RCU_FAST_NO_HZ is not set +# CONFIG_RCU_NOCB_CPU is not set +# CONFIG_RCU_STALL_COMMON is not set +# CONFIG_RCU_TORTURE_TEST is not set +# CONFIG_RCU_TRACE is not set +# CONFIG_RCU_USER_QS is not set +# CONFIG_RC_CORE is not set +# CONFIG_RC_MAP is not set +# CONFIG_RDS is not set +# CONFIG_RD_BZIP2 is not set +# CONFIG_RD_GZIP is not set +# CONFIG_RD_LZMA is not set +# CONFIG_RD_LZO is not set +# CONFIG_RD_XZ is not set +# CONFIG_READABLE_ASM is not set +CONFIG_REALTEK=y +# CONFIG_REALTEK_PHY is not set +# CONFIG_REDWOOD is not set +# CONFIG_REGMAP is not set +# CONFIG_REGMAP_I2C is not set +# CONFIG_REGMAP_SPI is not set +# CONFIG_REGULATOR is not set +# CONFIG_REGULATOR_AD5398 is not set +# CONFIG_REGULATOR_BQ24022 is not set +# CONFIG_REGULATOR_FAN53555 is not set +# CONFIG_REGULATOR_FIXED_VOLTAGE is not set +# CONFIG_REGULATOR_GPIO is not set +# CONFIG_REGULATOR_ISL6271A is not set +# CONFIG_REGULATOR_LP3971 is not set +# CONFIG_REGULATOR_LP3972 is not set +# CONFIG_REGULATOR_LP872X is not set +# CONFIG_REGULATOR_LP8755 is not set +# CONFIG_REGULATOR_MAX1586 is not set +# CONFIG_REGULATOR_MAX8649 is not set +# CONFIG_REGULATOR_MAX8660 is not set +# CONFIG_REGULATOR_MAX8952 is not set +# CONFIG_REGULATOR_MAX8973 is not set +# CONFIG_REGULATOR_TPS51632 is not set +# CONFIG_REGULATOR_TPS62360 is not set +# CONFIG_REGULATOR_TPS65023 is not set +# CONFIG_REGULATOR_TPS6507X is not set +# CONFIG_REGULATOR_TPS6524X is not set +# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set +# CONFIG_REISERFS_CHECK is not set +# CONFIG_REISERFS_FS is not set +# CONFIG_REISERFS_FS_POSIX_ACL is not set +# CONFIG_REISERFS_FS_SECURITY is not set +# CONFIG_REISERFS_FS_XATTR is not set +# CONFIG_REISERFS_PROC_INFO is not set +# CONFIG_RELAY is not set +# CONFIG_RESET_CONTROLLER is not set +# CONFIG_RFD_FTL is not set +# CONFIG_RFKILL is not set +# CONFIG_RFKILL_INPUT is not set +# CONFIG_RING_BUFFER_BENCHMARK is not set +# CONFIG_RING_BUFFER_STARTUP_TEST is not set +# CONFIG_ROMFS_FS is not set +# CONFIG_ROSE is not set +# CONFIG_RPCSEC_GSS_KRB5 is not set +# CONFIG_RT2X00 is not set +# CONFIG_RTC_CLASS is not set +# CONFIG_RTC_DEBUG is not set +# CONFIG_RTC_DRV_AU1XXX is not set +# CONFIG_RTC_DRV_BQ32K is not set +# CONFIG_RTC_DRV_BQ4802 is not set +CONFIG_RTC_DRV_CMOS=y +# CONFIG_RTC_DRV_DS1286 is not set +# CONFIG_RTC_DRV_DS1305 is not set +# CONFIG_RTC_DRV_DS1307 is not set +# CONFIG_RTC_DRV_DS1374 is not set +# CONFIG_RTC_DRV_DS1390 is not set +# CONFIG_RTC_DRV_DS1511 is not set +# CONFIG_RTC_DRV_DS1553 is not set +# CONFIG_RTC_DRV_DS1672 is not set +# CONFIG_RTC_DRV_DS1742 is not set +# CONFIG_RTC_DRV_DS2404 is not set +# CONFIG_RTC_DRV_DS3232 is not set +# CONFIG_RTC_DRV_DS3234 is not set +# CONFIG_RTC_DRV_EM3027 is not set +# CONFIG_RTC_DRV_EP93XX is not set +# CONFIG_RTC_DRV_FM3130 is not set +# CONFIG_RTC_DRV_GENERIC is not set +# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set +# CONFIG_RTC_DRV_ISL12022 is not set +# CONFIG_RTC_DRV_ISL1208 is not set +# CONFIG_RTC_DRV_M41T80 is not set +# CONFIG_RTC_DRV_M41T93 is not set +# CONFIG_RTC_DRV_M41T94 is not set +# CONFIG_RTC_DRV_M48T35 is not set +# CONFIG_RTC_DRV_M48T59 is not set +# CONFIG_RTC_DRV_M48T86 is not set +# CONFIG_RTC_DRV_MAX6900 is not set +# CONFIG_RTC_DRV_MAX6902 is not set +# CONFIG_RTC_DRV_MPC5121 is not set +# CONFIG_RTC_DRV_MSM6242 is not set +# CONFIG_RTC_DRV_PCF2123 is not set +# CONFIG_RTC_DRV_PCF8523 is not set +# CONFIG_RTC_DRV_PCF8563 is not set +# CONFIG_RTC_DRV_PCF8583 is not set +# CONFIG_RTC_DRV_PL030 is not set +# CONFIG_RTC_DRV_PL031 is not set +# CONFIG_RTC_DRV_PS3 is not set +# CONFIG_RTC_DRV_PT7C4338 is not set +# CONFIG_RTC_DRV_R9701 is not set +# CONFIG_RTC_DRV_RP5C01 is not set +# CONFIG_RTC_DRV_RS5C348 is not set +# CONFIG_RTC_DRV_RS5C372 is not set +# CONFIG_RTC_DRV_RTC7301 is not set +# CONFIG_RTC_DRV_RV3029C2 is not set +# CONFIG_RTC_DRV_RX4581 is not set +# CONFIG_RTC_DRV_RX8025 is not set +# CONFIG_RTC_DRV_RX8581 is not set +# CONFIG_RTC_DRV_S35390A is not set +# CONFIG_RTC_DRV_SNVS is not set +# CONFIG_RTC_DRV_STK17TA8 is not set +# CONFIG_RTC_DRV_TEST is not set +# CONFIG_RTC_DRV_V3020 is not set +# CONFIG_RTC_DRV_X1205 is not set +CONFIG_RTC_HCTOSYS=y +CONFIG_RTC_HCTOSYS_DEVICE="rtc0" +CONFIG_RTC_INTF_DEV=y +# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set +CONFIG_RTC_INTF_PROC=y +CONFIG_RTC_INTF_SYSFS=y +CONFIG_RTC_LIB=y +CONFIG_RTC_SYSTOHC=y +# CONFIG_RTL8180 is not set +# CONFIG_RTL8187 is not set +# CONFIG_RTL8192E is not set +# CONFIG_RTL8192U is not set +# CONFIG_RTL819X_SPI_FLASH is not set +# CONFIG_RTL8306_PHY is not set +# CONFIG_RTL8366RB_PHY is not set +# CONFIG_RTL8366S_PHY is not set +# CONFIG_RTL8366_SMI is not set +# CONFIG_RTL8366_SMI_DEBUG_FS is not set +# CONFIG_RTL8367B_PHY is not set +# CONFIG_RTL8367_PHY is not set +# CONFIG_RTLLIB is not set +CONFIG_RTL_8197F=y +# CONFIG_RTL_8197F_GW is not set +CONFIG_RTL_819X=y +# CONFIG_RTL_819X_SWCORE is not set +# CONFIG_RTS5139 is not set +# CONFIG_RTS_PSTOR is not set +CONFIG_RT_MUTEXES=y +# CONFIG_RT_MUTEX_TESTER is not set +# CONFIG_RUNTIME_DEBUG is not set +CONFIG_RWSEM_GENERIC_SPINLOCK=y +# CONFIG_S2IO is not set +# CONFIG_SAMPLES is not set +# CONFIG_SAMSUNG_LAPTOP is not set +# CONFIG_SATA_ACARD_AHCI is not set +# CONFIG_SATA_AHCI is not set +# CONFIG_SATA_AHCI_PLATFORM is not set +# CONFIG_SATA_DWC is not set +# CONFIG_SATA_FSL is not set +# CONFIG_SATA_HIGHBANK is not set +# CONFIG_SATA_INIC162X is not set +# CONFIG_SATA_MV is not set +# CONFIG_SATA_NV is not set +# CONFIG_SATA_PMP is not set +# CONFIG_SATA_PROMISE is not set +# CONFIG_SATA_QSTOR is not set +# CONFIG_SATA_SIL is not set +# CONFIG_SATA_SIL24 is not set +# CONFIG_SATA_SIS is not set +# CONFIG_SATA_SVW is not set +# CONFIG_SATA_SX4 is not set +# CONFIG_SATA_ULI is not set +# CONFIG_SATA_VIA is not set +# CONFIG_SATA_VITESSE is not set +# CONFIG_SBC_FITPC2_WATCHDOG is not set +# CONFIG_SBE_2T3E3 is not set +# CONFIG_SBYPASS is not set +# CONFIG_SC92031 is not set +# CONFIG_SCA3000 is not set +# CONFIG_SCC is not set +# CONFIG_SCHEDSTATS is not set +# CONFIG_SCHED_AUTOGROUP is not set +CONFIG_SCHED_DEBUG=y +# CONFIG_SCHED_MC is not set +CONFIG_SCHED_OMIT_FRAME_POINTER=y +# CONFIG_SCHED_SMT is not set +# CONFIG_SCHED_TRACER is not set +# CONFIG_SCSI is not set +# CONFIG_SCSI_3W_9XXX is not set +# CONFIG_SCSI_3W_SAS is not set +# CONFIG_SCSI_7000FASST is not set +# CONFIG_SCSI_AACRAID is not set +# CONFIG_SCSI_ACARD is not set +# CONFIG_SCSI_ADVANSYS is not set +# CONFIG_SCSI_AHA152X is not set +# CONFIG_SCSI_AHA1542 is not set +# CONFIG_SCSI_AIC79XX is not set +# CONFIG_SCSI_AIC7XXX is not set +# CONFIG_SCSI_AIC7XXX_OLD is not set +# CONFIG_SCSI_AIC94XX is not set +# CONFIG_SCSI_ARCMSR is not set +# CONFIG_SCSI_BFA_FC is not set +# CONFIG_SCSI_BNX2X_FCOE is not set +# CONFIG_SCSI_BNX2_ISCSI is not set +# CONFIG_SCSI_BUSLOGIC is not set +# CONFIG_SCSI_CHELSIO_FCOE is not set +# CONFIG_SCSI_CONSTANTS is not set +# CONFIG_SCSI_CXGB3_ISCSI is not set +# CONFIG_SCSI_CXGB4_ISCSI is not set +# CONFIG_SCSI_DC390T is not set +# CONFIG_SCSI_DC395x is not set +# CONFIG_SCSI_DEBUG is not set +# CONFIG_SCSI_DH is not set +# CONFIG_SCSI_DMA is not set +# CONFIG_SCSI_DMX3191D is not set +# CONFIG_SCSI_DPT_I2O is not set +# CONFIG_SCSI_DTC3280 is not set +# CONFIG_SCSI_EATA is not set +# CONFIG_SCSI_FC_ATTRS is not set +# CONFIG_SCSI_FUTURE_DOMAIN is not set +# CONFIG_SCSI_GDTH is not set +# CONFIG_SCSI_GENERIC_NCR5380 is not set +# CONFIG_SCSI_GENERIC_NCR5380_MMIO is not set +# CONFIG_SCSI_HPSA is not set +# CONFIG_SCSI_HPTIOP is not set +# CONFIG_SCSI_IN2000 is not set +# CONFIG_SCSI_INIA100 is not set +# CONFIG_SCSI_INITIO is not set +# CONFIG_SCSI_IPR is not set +# CONFIG_SCSI_IPS is not set +# CONFIG_SCSI_ISCI is not set +# CONFIG_SCSI_ISCSI_ATTRS is not set +# CONFIG_SCSI_LOGGING is not set +CONFIG_SCSI_LOWLEVEL=y +# CONFIG_SCSI_LOWLEVEL_PCMCIA is not set +# CONFIG_SCSI_LPFC is not set +CONFIG_SCSI_MOD=y +# CONFIG_SCSI_MPT2SAS is not set +# CONFIG_SCSI_MPT3SAS is not set +CONFIG_SCSI_MULTI_LUN=y +# CONFIG_SCSI_MVSAS is not set +# CONFIG_SCSI_MVSAS_DEBUG is not set +# CONFIG_SCSI_MVUMI is not set +# CONFIG_SCSI_NCR53C406A is not set +# CONFIG_SCSI_NETLINK is not set +# CONFIG_SCSI_NSP32 is not set +# CONFIG_SCSI_OSD_INITIATOR is not set +# CONFIG_SCSI_PAS16 is not set +# CONFIG_SCSI_PM8001 is not set +# CONFIG_SCSI_PMCRAID is not set +CONFIG_SCSI_PROC_FS=y +# CONFIG_SCSI_QLA_FC is not set +# CONFIG_SCSI_QLA_ISCSI is not set +# CONFIG_SCSI_QLOGIC_1280 is not set +# CONFIG_SCSI_QLOGIC_FAS is not set +# CONFIG_SCSI_SAS_ATTRS is not set +# CONFIG_SCSI_SAS_LIBSAS is not set +# CONFIG_SCSI_SCAN_ASYNC is not set +# CONFIG_SCSI_SPI_ATTRS is not set +# CONFIG_SCSI_SRP is not set +# CONFIG_SCSI_SRP_ATTRS is not set +# CONFIG_SCSI_STEX is not set +# CONFIG_SCSI_SYM53C416 is not set +# CONFIG_SCSI_SYM53C8XX_2 is not set +# CONFIG_SCSI_T128 is not set +# CONFIG_SCSI_TGT is not set +# CONFIG_SCSI_U14_34F is not set +# CONFIG_SCSI_UFSHCD is not set +# CONFIG_SCSI_ULTRASTOR is not set +CONFIG_SCSI_WAIT_SCAN=m +# CONFIG_SDIO_UART is not set +# CONFIG_SECCOMP is not set +# CONFIG_SECURITY is not set +# CONFIG_SECURITYFS is not set +# CONFIG_SECURITY_DMESG_RESTRICT is not set +# CONFIG_SEEQ8005 is not set +CONFIG_SELECT_MEMORY_MODEL=y +# CONFIG_SENSORS_ABITUGURU is not set +# CONFIG_SENSORS_ABITUGURU3 is not set +# CONFIG_SENSORS_ACPI_POWER is not set +# CONFIG_SENSORS_AD7314 is not set +# CONFIG_SENSORS_AD7414 is not set +# CONFIG_SENSORS_AD7418 is not set +# CONFIG_SENSORS_ADCXX is not set +# CONFIG_SENSORS_ADM1021 is not set +# CONFIG_SENSORS_ADM1025 is not set +# CONFIG_SENSORS_ADM1026 is not set +# CONFIG_SENSORS_ADM1029 is not set +# CONFIG_SENSORS_ADM1031 is not set +# CONFIG_SENSORS_ADM9240 is not set +# CONFIG_SENSORS_ADS1015 is not set +# CONFIG_SENSORS_ADS7828 is not set +# CONFIG_SENSORS_ADS7871 is not set +# CONFIG_SENSORS_ADT7310 is not set +# CONFIG_SENSORS_ADT7410 is not set +# CONFIG_SENSORS_ADT7411 is not set +# CONFIG_SENSORS_ADT7462 is not set +# CONFIG_SENSORS_ADT7470 is not set +# CONFIG_SENSORS_ADT7475 is not set +# CONFIG_SENSORS_AMC6821 is not set +# CONFIG_SENSORS_APDS990X is not set +# CONFIG_SENSORS_APPLESMC is not set +# CONFIG_SENSORS_ASB100 is not set +# CONFIG_SENSORS_ASC7621 is not set +# CONFIG_SENSORS_ATK0110 is not set +# CONFIG_SENSORS_ATXP1 is not set +# CONFIG_SENSORS_BH1770 is not set +# CONFIG_SENSORS_BH1780 is not set +# CONFIG_SENSORS_CORETEMP is not set +# CONFIG_SENSORS_DME1737 is not set +# CONFIG_SENSORS_DS1621 is not set +# CONFIG_SENSORS_DS620 is not set +# CONFIG_SENSORS_EMC1403 is not set +# CONFIG_SENSORS_EMC2103 is not set +# CONFIG_SENSORS_EMC6W201 is not set +# CONFIG_SENSORS_F71805F is not set +# CONFIG_SENSORS_F71882FG is not set +# CONFIG_SENSORS_F75375S is not set +# CONFIG_SENSORS_FAM15H_POWER is not set +# CONFIG_SENSORS_FSCHMD is not set +# CONFIG_SENSORS_G760A is not set +# CONFIG_SENSORS_GL518SM is not set +# CONFIG_SENSORS_GL520SM is not set +# CONFIG_SENSORS_GPIO_FAN is not set +# CONFIG_SENSORS_GSC is not set +# CONFIG_SENSORS_HDAPS is not set +# CONFIG_SENSORS_HIH6130 is not set +# CONFIG_SENSORS_HMC5843 is not set +# CONFIG_SENSORS_I5K_AMB is not set +# CONFIG_SENSORS_IIO_HWMON is not set +# CONFIG_SENSORS_INA209 is not set +# CONFIG_SENSORS_INA2XX is not set +# CONFIG_SENSORS_ISL29018 is not set +# CONFIG_SENSORS_ISL29028 is not set +# CONFIG_SENSORS_IT87 is not set +# CONFIG_SENSORS_JC42 is not set +# CONFIG_SENSORS_K10TEMP is not set +# CONFIG_SENSORS_K8TEMP is not set +# CONFIG_SENSORS_LINEAGE is not set +# CONFIG_SENSORS_LIS3LV02D is not set +# CONFIG_SENSORS_LIS3_I2C is not set +# CONFIG_SENSORS_LIS3_SPI is not set +# CONFIG_SENSORS_LM63 is not set +# CONFIG_SENSORS_LM70 is not set +# CONFIG_SENSORS_LM73 is not set +# CONFIG_SENSORS_LM75 is not set +# CONFIG_SENSORS_LM77 is not set +# CONFIG_SENSORS_LM78 is not set +# CONFIG_SENSORS_LM80 is not set +# CONFIG_SENSORS_LM83 is not set +# CONFIG_SENSORS_LM85 is not set +# CONFIG_SENSORS_LM87 is not set +# CONFIG_SENSORS_LM90 is not set +# CONFIG_SENSORS_LM92 is not set +# CONFIG_SENSORS_LM93 is not set +# CONFIG_SENSORS_LM95234 is not set +# CONFIG_SENSORS_LM95241 is not set +# CONFIG_SENSORS_LM95245 is not set +# CONFIG_SENSORS_LTC4151 is not set +# CONFIG_SENSORS_LTC4215 is not set +# CONFIG_SENSORS_LTC4245 is not set +# CONFIG_SENSORS_LTC4261 is not set +# CONFIG_SENSORS_MAX1111 is not set +# CONFIG_SENSORS_MAX16065 is not set +# CONFIG_SENSORS_MAX1619 is not set +# CONFIG_SENSORS_MAX1668 is not set +# CONFIG_SENSORS_MAX197 is not set +# CONFIG_SENSORS_MAX6639 is not set +# CONFIG_SENSORS_MAX6642 is not set +# CONFIG_SENSORS_MAX6650 is not set +# CONFIG_SENSORS_MAX6697 is not set +# CONFIG_SENSORS_MCP3021 is not set +# CONFIG_SENSORS_NCT6775 is not set +# CONFIG_SENSORS_NTC_THERMISTOR is not set +# CONFIG_SENSORS_PC87360 is not set +# CONFIG_SENSORS_PC87427 is not set +# CONFIG_SENSORS_PCF8591 is not set +# CONFIG_SENSORS_SCH5627 is not set +# CONFIG_SENSORS_SCH5636 is not set +# CONFIG_SENSORS_SCH56XX_COMMON is not set +# CONFIG_SENSORS_SHT15 is not set +# CONFIG_SENSORS_SHT21 is not set +# CONFIG_SENSORS_SIS5595 is not set +# CONFIG_SENSORS_SMM665 is not set +# CONFIG_SENSORS_SMSC47B397 is not set +# CONFIG_SENSORS_SMSC47M1 is not set +# CONFIG_SENSORS_SMSC47M192 is not set +# CONFIG_SENSORS_THMC50 is not set +# CONFIG_SENSORS_TMP102 is not set +# CONFIG_SENSORS_TMP401 is not set +# CONFIG_SENSORS_TMP421 is not set +# CONFIG_SENSORS_TSL2550 is not set +# CONFIG_SENSORS_TSL2563 is not set +# CONFIG_SENSORS_VIA686A is not set +# CONFIG_SENSORS_VIA_CPUTEMP is not set +# CONFIG_SENSORS_VT1211 is not set +# CONFIG_SENSORS_VT8231 is not set +# CONFIG_SENSORS_W83627EHF is not set +# CONFIG_SENSORS_W83627HF is not set +# CONFIG_SENSORS_W83781D is not set +# CONFIG_SENSORS_W83791D is not set +# CONFIG_SENSORS_W83792D is not set +# CONFIG_SENSORS_W83793 is not set +# CONFIG_SENSORS_W83795 is not set +# CONFIG_SENSORS_W83L785TS is not set +# CONFIG_SENSORS_W83L786NG is not set +CONFIG_SERIAL_8250=y +# CONFIG_SERIAL_8250_ACCENT is not set +# CONFIG_SERIAL_8250_BOCA is not set +CONFIG_SERIAL_8250_CONSOLE=y +# CONFIG_SERIAL_8250_CS is not set +# CONFIG_SERIAL_8250_DEPRECATED_OPTIONS is not set +# CONFIG_SERIAL_8250_DETECT_IRQ is not set +CONFIG_SERIAL_8250_DMA=y +CONFIG_SERIAL_8250_DW=y +# CONFIG_SERIAL_8250_EM is not set +# CONFIG_SERIAL_8250_EXAR_ST16C554 is not set +# CONFIG_SERIAL_8250_EXTENDED is not set +# CONFIG_SERIAL_8250_FOURPORT is not set +# CONFIG_SERIAL_8250_HUB6 is not set +# CONFIG_SERIAL_8250_MANY_PORTS is not set +CONFIG_SERIAL_8250_NR_UARTS=2 +# CONFIG_SERIAL_8250_PCI is not set +# CONFIG_SERIAL_8250_RSA is not set +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +CONFIG_SERIAL_8250_SYSRQ=y +# CONFIG_SERIAL_ALTERA_JTAGUART is not set +# CONFIG_SERIAL_ALTERA_UART is not set +# CONFIG_SERIAL_ARC is not set +CONFIG_SERIAL_CORE=y +CONFIG_SERIAL_CORE_CONSOLE=y +# CONFIG_SERIAL_GRLIB_GAISLER_APBUART is not set +# CONFIG_SERIAL_IFX6X60 is not set +# CONFIG_SERIAL_JSM is not set +# CONFIG_SERIAL_MAX3100 is not set +# CONFIG_SERIAL_MAX3107 is not set +# CONFIG_SERIAL_MAX310X is not set +# CONFIG_SERIAL_MFD_HSU is not set +# CONFIG_SERIAL_NONSTANDARD is not set +# CONFIG_SERIAL_OF_PLATFORM is not set +# CONFIG_SERIAL_OF_PLATFORM_NWPSERIAL is not set +# CONFIG_SERIAL_PCH_UART is not set +# CONFIG_SERIAL_RP2 is not set +# CONFIG_SERIAL_RTL_UART2 is not set +# CONFIG_SERIAL_SCCNXP is not set +# CONFIG_SERIAL_TIMBERDALE is not set +# CONFIG_SERIAL_UARTLITE is not set +# CONFIG_SERIAL_XILINX_PS_UART is not set +# CONFIG_SERIO is not set +# CONFIG_SERIO_ALTERA_PS2 is not set +# CONFIG_SERIO_AMBAKMI is not set +# CONFIG_SERIO_ARC_PS2 is not set +# CONFIG_SERIO_I8042 is not set +# CONFIG_SERIO_LIBPS2 is not set +# CONFIG_SERIO_PARKBD is not set +# CONFIG_SERIO_PCIPS2 is not set +# CONFIG_SERIO_PS2MULT is not set +# CONFIG_SERIO_RAW is not set +# CONFIG_SERIO_SERPORT is not set +# CONFIG_SFC is not set +# CONFIG_SFI is not set +# CONFIG_SGI_IOC4 is not set +# CONFIG_SGI_IP22 is not set +# CONFIG_SGI_IP27 is not set +# CONFIG_SGI_IP28 is not set +# CONFIG_SGI_IP32 is not set +# CONFIG_SGI_PARTITION is not set +# CONFIG_SHMEM is not set +# CONFIG_SIBYTE_BIGSUR is not set +# CONFIG_SIBYTE_CARMEL is not set +# CONFIG_SIBYTE_CRHINE is not set +# CONFIG_SIBYTE_CRHONE is not set +# CONFIG_SIBYTE_LITTLESUR is not set +# CONFIG_SIBYTE_RHONE is not set +# CONFIG_SIBYTE_SENTOSA is not set +# CONFIG_SIBYTE_SWARM is not set +# CONFIG_SIGMA is not set +CONFIG_SIGNALFD=y +# CONFIG_SIMPLE_GPIO is not set +# CONFIG_SIS190 is not set +# CONFIG_SIS900 is not set +# CONFIG_SKGE is not set +# CONFIG_SKY2 is not set +# CONFIG_SKY2_DEBUG is not set +# CONFIG_SLAB is not set +CONFIG_SLABINFO=y +CONFIG_SLHC=y +# CONFIG_SLICOSS is not set +# CONFIG_SLIP is not set +# CONFIG_SLOB is not set +CONFIG_SLUB=y +# CONFIG_SLUB_DEBUG is not set +# CONFIG_SLUB_STATS is not set +# CONFIG_SMARTJOYPLUS_FF is not set +# CONFIG_SMC911X is not set +# CONFIG_SMC9194 is not set +# CONFIG_SMC91X is not set +# CONFIG_SMP is not set +# CONFIG_SMSC911X is not set +# CONFIG_SMSC9420 is not set +# CONFIG_SMSC_PHY is not set +# CONFIG_SM_FTL is not set +# CONFIG_SND is not set +# CONFIG_SND_AC97_POWER_SAVE is not set +# CONFIG_SND_AD1816A is not set +# CONFIG_SND_AD1848 is not set +# CONFIG_SND_AD1889 is not set +# CONFIG_SND_ADLIB is not set +# CONFIG_SND_ALI5451 is not set +# CONFIG_SND_ALOOP is not set +# CONFIG_SND_ALS100 is not set +# CONFIG_SND_ALS300 is not set +# CONFIG_SND_ALS4000 is not set +# CONFIG_SND_ARM is not set +# CONFIG_SND_ASIHPI is not set +# CONFIG_SND_ATIIXP is not set +# CONFIG_SND_ATIIXP_MODEM is not set +# CONFIG_SND_ATMEL_AC97C is not set +# CONFIG_SND_ATMEL_SOC is not set +# CONFIG_SND_AU8810 is not set +# CONFIG_SND_AU8820 is not set +# CONFIG_SND_AU8830 is not set +# CONFIG_SND_AW2 is not set +# CONFIG_SND_AZT2320 is not set +# CONFIG_SND_AZT3328 is not set +# CONFIG_SND_BT87X is not set +# CONFIG_SND_CA0106 is not set +# CONFIG_SND_CMI8330 is not set +# CONFIG_SND_CMIPCI is not set +# CONFIG_SND_CS4231 is not set +# CONFIG_SND_CS4236 is not set +# CONFIG_SND_CS4281 is not set +# CONFIG_SND_CS46XX is not set +# CONFIG_SND_CS5530 is not set +# CONFIG_SND_CS5535AUDIO is not set +# CONFIG_SND_CTXFI is not set +# CONFIG_SND_DARLA20 is not set +# CONFIG_SND_DARLA24 is not set +# CONFIG_SND_DEBUG is not set +# CONFIG_SND_DESIGNWARE_I2S is not set +CONFIG_SND_DRIVERS=y +# CONFIG_SND_DUMMY is not set +# CONFIG_SND_DYNAMIC_MINORS is not set +# CONFIG_SND_ECHO3G is not set +# CONFIG_SND_EMU10K1 is not set +# CONFIG_SND_EMU10K1X is not set +# CONFIG_SND_ENS1370 is not set +# CONFIG_SND_ENS1371 is not set +# CONFIG_SND_ES1688 is not set +# CONFIG_SND_ES18XX is not set +# CONFIG_SND_ES1938 is not set +# CONFIG_SND_ES1968 is not set +# CONFIG_SND_FIREWIRE is not set +# CONFIG_SND_FM801 is not set +# CONFIG_SND_GINA20 is not set +# CONFIG_SND_GINA24 is not set +# CONFIG_SND_GUSCLASSIC is not set +# CONFIG_SND_GUSEXTREME is not set +# CONFIG_SND_GUSMAX is not set +# CONFIG_SND_HDA_INTEL is not set +# CONFIG_SND_HDSP is not set +# CONFIG_SND_HDSPM is not set +# CONFIG_SND_HRTIMER is not set +# CONFIG_SND_HWDEP is not set +# CONFIG_SND_ICE1712 is not set +# CONFIG_SND_ICE1724 is not set +# CONFIG_SND_INDIGO is not set +# CONFIG_SND_INDIGODJ is not set +# CONFIG_SND_INDIGODJX is not set +# CONFIG_SND_INDIGOIO is not set +# CONFIG_SND_INDIGOIOX is not set +# CONFIG_SND_INTEL8X0 is not set +# CONFIG_SND_INTEL8X0M is not set +# CONFIG_SND_INTERWAVE is not set +# CONFIG_SND_INTERWAVE_STB is not set +# CONFIG_SND_ISA is not set +# CONFIG_SND_KIRKWOOD_SOC is not set +# CONFIG_SND_KORG1212 is not set +# CONFIG_SND_LAYLA20 is not set +# CONFIG_SND_LAYLA24 is not set +# CONFIG_SND_LOLA is not set +# CONFIG_SND_LX6464ES is not set +# CONFIG_SND_MAESTRO3 is not set +# CONFIG_SND_MIA is not set +# CONFIG_SND_MIPS is not set +# CONFIG_SND_MIRO is not set +# CONFIG_SND_MIXART is not set +# CONFIG_SND_MIXER_OSS is not set +# CONFIG_SND_MONA is not set +# CONFIG_SND_MPC52xx_SOC_EFIKA is not set +# CONFIG_SND_MPU401 is not set +# CONFIG_SND_MTPAV is not set +# CONFIG_SND_MTS64 is not set +# CONFIG_SND_MXS_SOC is not set +# CONFIG_SND_NM256 is not set +# CONFIG_SND_OPL3SA2 is not set +# CONFIG_SND_OPTI92X_AD1848 is not set +# CONFIG_SND_OPTI92X_CS4231 is not set +# CONFIG_SND_OPTI93X is not set +CONFIG_SND_OSSEMUL=y +# CONFIG_SND_OXYGEN is not set +CONFIG_SND_PCI=y +# CONFIG_SND_PCM is not set +# CONFIG_SND_PCMCIA is not set +# CONFIG_SND_PCM_OSS is not set +CONFIG_SND_PCM_OSS_PLUGINS=y +# CONFIG_SND_PCXHR is not set +# CONFIG_SND_PDAUDIOCF is not set +# CONFIG_SND_PORTMAN2X4 is not set +# CONFIG_SND_POWERPC_SOC is not set +# CONFIG_SND_PPC is not set +# CONFIG_SND_RAWMIDI is not set +# CONFIG_SND_RIPTIDE is not set +# CONFIG_SND_RME32 is not set +# CONFIG_SND_RME96 is not set +# CONFIG_SND_RME9652 is not set +# CONFIG_SND_RTCTIMER is not set +# CONFIG_SND_SB16 is not set +# CONFIG_SND_SB8 is not set +# CONFIG_SND_SBAWE is not set +# CONFIG_SND_SEQUENCER is not set +# CONFIG_SND_SERIAL_U16550 is not set +# CONFIG_SND_SIMPLE_CARD is not set +# CONFIG_SND_SIS7019 is not set +# CONFIG_SND_SOC is not set +# CONFIG_SND_SOC_AU1XAUDIO is not set +# CONFIG_SND_SOC_AU1XPSC is not set +# CONFIG_SND_SOC_CACHE_LZO is not set +# CONFIG_SND_SOC_MPC5200_AC97 is not set +# CONFIG_SND_SOC_MPC5200_I2S is not set +# CONFIG_SND_SONICVIBES is not set +# CONFIG_SND_SPI is not set +# CONFIG_SND_SSCAPE is not set +# CONFIG_SND_SUPPORT_OLD_API is not set +# CONFIG_SND_TIMER is not set +# CONFIG_SND_TRIDENT is not set +CONFIG_SND_USB=y +# CONFIG_SND_USB_6FIRE is not set +# CONFIG_SND_USB_AUDIO is not set +# CONFIG_SND_USB_CAIAQ is not set +# CONFIG_SND_USB_UA101 is not set +# CONFIG_SND_USB_US122L is not set +# CONFIG_SND_USB_USX2Y is not set +# CONFIG_SND_VERBOSE_PRINTK is not set +CONFIG_SND_VERBOSE_PROCFS=y +# CONFIG_SND_VIA82XX is not set +# CONFIG_SND_VIA82XX_MODEM is not set +# CONFIG_SND_VIRTUOSO is not set +# CONFIG_SND_VX222 is not set +# CONFIG_SND_VXPOCKET is not set +# CONFIG_SND_WAVEFRONT is not set +# CONFIG_SND_YMFPCI is not set +# CONFIG_SNI_RM is not set +CONFIG_SOCK_DIAG=y +# CONFIG_SOC_CAMERA is not set +CONFIG_SOC_RTL8197F=y +# CONFIG_SOFT_WATCHDOG is not set +# CONFIG_SOLARIS_X86_PARTITION is not set +# CONFIG_SOLO6X10 is not set +# CONFIG_SONYPI is not set +# CONFIG_SONY_LAPTOP is not set +# CONFIG_SOUND is not set +# CONFIG_SOUND_PRIME is not set +# CONFIG_SP5100_TCO is not set +# CONFIG_SPARSEMEM_MANUAL is not set +# CONFIG_SPARSEMEM_STATIC is not set +# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set +# CONFIG_SPARSE_IRQ is not set +# CONFIG_SPARSE_RCU_POINTER is not set +# CONFIG_SPEAKUP is not set +CONFIG_SPI=y +# CONFIG_SPINLOCK_TEST is not set +# CONFIG_SPI_ALTERA is not set +# CONFIG_SPI_AU1550 is not set +# CONFIG_SPI_BITBANG is not set +# CONFIG_SPI_BUTTERFLY is not set +# CONFIG_SPI_DEBUG is not set +# CONFIG_SPI_DESIGNWARE is not set +# CONFIG_SPI_FSL_ESPI is not set +# CONFIG_SPI_FSL_SPI is not set +# CONFIG_SPI_GPIO is not set +# CONFIG_SPI_GPIO_OLD is not set +# CONFIG_SPI_LM70_LLP is not set +CONFIG_SPI_MASTER=y +# CONFIG_SPI_MPC52xx is not set +# CONFIG_SPI_MPC52xx_PSC is not set +# CONFIG_SPI_OC_TINY is not set +# CONFIG_SPI_ORION is not set +# CONFIG_SPI_PL022 is not set +# CONFIG_SPI_PPC4xx is not set +# CONFIG_SPI_PXA2XX is not set +# CONFIG_SPI_PXA2XX_PCI is not set +# CONFIG_SPI_RAMIPS is not set +# CONFIG_SPI_SC18IS602 is not set +CONFIG_SPI_SHEIPA=y +# CONFIG_SPI_SPIDEV is not set +# CONFIG_SPI_TLE62X0 is not set +# CONFIG_SPI_TOPCLIFF_PCH is not set +# CONFIG_SPI_XCOMM is not set +# CONFIG_SPI_XILINX is not set +# CONFIG_SPI_XWAY is not set +CONFIG_SPLIT_PTLOCK_CPUS=4 +CONFIG_SQUASHFS=y +# CONFIG_SQUASHFS_4K_DEVBLK_SIZE is not set +CONFIG_SQUASHFS_EMBEDDED=y +CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3 +# CONFIG_SQUASHFS_LZO is not set +# CONFIG_SQUASHFS_XATTR is not set +# CONFIG_SQUASHFS_XZ is not set +CONFIG_SQUASHFS_ZLIB=y +# CONFIG_SRAM is not set +# CONFIG_SSB is not set +# CONFIG_SSBI is not set +# CONFIG_SSB_DEBUG is not set +# CONFIG_SSB_DRIVER_GPIO is not set +# CONFIG_SSB_PCMCIAHOST is not set +CONFIG_SSB_POSSIBLE=y +# CONFIG_SSB_SDIOHOST is not set +# CONFIG_SSB_SILENT is not set +# CONFIG_SSFDC is not set +CONFIG_STACKTRACE_SUPPORT=y +# CONFIG_STACK_TRACER is not set +# CONFIG_STAGING is not set +# CONFIG_STAGING_MEDIA is not set +CONFIG_STANDALONE=y +CONFIG_STDBINUTILS=y +# CONFIG_STE10XP is not set +# CONFIG_STE_MODEM_RPROC is not set +# CONFIG_STMMAC_ETH is not set +CONFIG_STP=y +# CONFIG_STRICT_DEVMEM is not set +CONFIG_STRIP_ASM_SYMS=y +# CONFIG_STUB_POULSBO is not set +# CONFIG_SUNDANCE is not set +# CONFIG_SUNGEM is not set +# CONFIG_SUNRPC is not set +# CONFIG_SUNRPC_DEBUG is not set +# CONFIG_SUNRPC_GSS is not set +# CONFIG_SUN_PARTITION is not set +# CONFIG_SUSPEND is not set +# CONFIG_SWAP is not set +# CONFIG_SWCONFIG is not set +# CONFIG_SWCONFIG_LEDS is not set +# CONFIG_SYNCLINK_CS is not set +# CONFIG_SYN_COOKIES is not set +CONFIG_SYSCTL=y +CONFIG_SYSCTL_SYSCALL=y +# CONFIG_SYSCTL_SYSCALL_CHECK is not set +CONFIG_SYSFS=y +# CONFIG_SYSFS_DEPRECATED is not set +# CONFIG_SYSFS_DEPRECATED_V2 is not set +# CONFIG_SYSV68_PARTITION is not set +CONFIG_SYSVIPC=y +CONFIG_SYSVIPC_SYSCTL=y +# CONFIG_SYSV_FS is not set +CONFIG_SYS_HAS_CPU_MIPS32_R2=y +CONFIG_SYS_HAS_EARLY_PRINTK=y +# CONFIG_SYS_HYPERVISOR is not set +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y +CONFIG_SYS_SUPPORTS_BIG_ENDIAN=y +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y +# CONFIG_TARGET_CORE is not set +# CONFIG_TASKSTATS is not set +# CONFIG_TC35815 is not set +# CONFIG_TCG_TPM is not set +# CONFIG_TCIC is not set +# CONFIG_TCP_CONG_ADVANCED is not set +# CONFIG_TCP_CONG_BIC is not set +CONFIG_TCP_CONG_CUBIC=y +# CONFIG_TCP_CONG_HSTCP is not set +# CONFIG_TCP_CONG_HTCP is not set +# CONFIG_TCP_CONG_HYBLA is not set +# CONFIG_TCP_CONG_ILLINOIS is not set +# CONFIG_TCP_CONG_LP is not set +# CONFIG_TCP_CONG_SCALABLE is not set +# CONFIG_TCP_CONG_VEGAS is not set +# CONFIG_TCP_CONG_VENO is not set +# CONFIG_TCP_CONG_WESTWOOD is not set +# CONFIG_TCP_CONG_YEAH is not set +# CONFIG_TCP_MD5SIG is not set +# CONFIG_TEHUTI is not set +# CONFIG_TEST_KSTRTOX is not set +# CONFIG_TEST_LIST_SORT is not set +# CONFIG_TEST_POWER is not set +# CONFIG_TEST_STRING_HELPERS is not set +CONFIG_TEXTSEARCH=y +# CONFIG_TEXTSEARCH_BM is not set +# CONFIG_TEXTSEARCH_FSM is not set +# CONFIG_TEXTSEARCH_KMP is not set +# CONFIG_THERMAL is not set +# CONFIG_THERMAL_HWMON is not set +# CONFIG_THRUSTMASTER_FF is not set +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TICK_ONESHOT=y +# CONFIG_TIFM_CORE is not set +# CONFIG_TIGON3 is not set +# CONFIG_TIMB_DMA is not set +CONFIG_TIMERFD=y +# CONFIG_TIMER_STATS is not set +CONFIG_TINY_RCU=y +# CONFIG_TIPC is not set +# CONFIG_TI_ADC081C is not set +# CONFIG_TI_DAC7512 is not set +# CONFIG_TI_ST is not set +# CONFIG_TLAN is not set +# CONFIG_TMD_HERMES is not set +CONFIG_TMPFS=y +# CONFIG_TMPFS_POSIX_ACL is not set +CONFIG_TMPFS_XATTR=y +# CONFIG_TOUCHSCREEN_AD7877 is not set +# CONFIG_TOUCHSCREEN_AD7879 is not set +# CONFIG_TOUCHSCREEN_AD7879_I2C is not set +# CONFIG_TOUCHSCREEN_AD7879_SPI is not set +# CONFIG_TOUCHSCREEN_ADS7846 is not set +# CONFIG_TOUCHSCREEN_CLEARPAD_TM1217 is not set +# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set +# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set +# CONFIG_TOUCHSCREEN_EDT_FT5X06 is not set +# CONFIG_TOUCHSCREEN_EETI is not set +# CONFIG_TOUCHSCREEN_ELO is not set +# CONFIG_TOUCHSCREEN_FUJITSU is not set +# CONFIG_TOUCHSCREEN_GUNZE is not set +# CONFIG_TOUCHSCREEN_ILI210X is not set +# CONFIG_TOUCHSCREEN_INEXIO is not set +# CONFIG_TOUCHSCREEN_MCS5000 is not set +# CONFIG_TOUCHSCREEN_MK712 is not set +# CONFIG_TOUCHSCREEN_MMS114 is not set +# CONFIG_TOUCHSCREEN_MTOUCH is not set +# CONFIG_TOUCHSCREEN_PENMOUNT is not set +# CONFIG_TOUCHSCREEN_S3C2410 is not set +# CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4 is not set +# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set +# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set +# CONFIG_TOUCHSCREEN_TOUCHWIN is not set +# CONFIG_TOUCHSCREEN_TPS6507X is not set +# CONFIG_TOUCHSCREEN_TSC2007 is not set +# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set +# CONFIG_TOUCHSCREEN_W90X900 is not set +# CONFIG_TOUCHSCREEN_WACOM_I2C is not set +# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set +# CONFIG_TOUCHSCREEN_WM97XX is not set +# CONFIG_TPS6105X is not set +# CONFIG_TPS65010 is not set +# CONFIG_TPS6507X is not set +# CONFIG_TR is not set +# CONFIG_TRACER_SNAPSHOT is not set +# CONFIG_TRACER_SNAPSHOT_PER_CPU_SWAP is not set +# CONFIG_TRACE_BRANCH_PROFILING is not set +CONFIG_TRACE_IRQFLAGS_SUPPORT=y +# CONFIG_TRACE_SINK is not set +CONFIG_TRACING_SUPPORT=y +CONFIG_TRAD_SIGNALS=y +# CONFIG_TRANSPARENT_HUGEPAGE is not set +# CONFIG_TRANZPORT is not set +# CONFIG_TREE_PREEMPT_RCU is not set +# CONFIG_TREE_RCU is not set +# CONFIG_TREE_RCU_TRACE is not set +# CONFIG_TSL2583 is not set +# CONFIG_TSL2x7x is not set +CONFIG_TTY=y +# CONFIG_TTY_PRINTK is not set +# CONFIG_TUN is not set +# CONFIG_TWL4030_CORE is not set +# CONFIG_TWL6040_CORE is not set +# CONFIG_TYPHOON is not set +# CONFIG_UACCESS_WITH_MEMCPY is not set +# CONFIG_UCB1400_CORE is not set +# CONFIG_UDF_FS is not set +CONFIG_UDF_NLS=y +CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug" +# CONFIG_UFS_FS is not set +# CONFIG_UHID is not set +CONFIG_UIDGID_CONVERTED=y +# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set +# CONFIG_UIO is not set +# CONFIG_ULTRA is not set +# CONFIG_ULTRIX_PARTITION is not set +CONFIG_UNIX=y +# CONFIG_UNIX98_PTYS is not set +# CONFIG_UNIXWARE_DISKLABEL is not set +# CONFIG_UNIX_DIAG is not set +# CONFIG_UNUSED_SYMBOLS is not set +# CONFIG_USB is not set +# CONFIG_USBIP_CORE is not set +# CONFIG_USBPCWATCHDOG is not set +# CONFIG_USB_ACM is not set +# CONFIG_USB_ADUTUX is not set +CONFIG_USB_ALI_M5632=y +# CONFIG_USB_AMD5536UDC is not set +CONFIG_USB_AN2720=y +# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set +# CONFIG_USB_APPLEDISPLAY is not set +# CONFIG_USB_ARCH_HAS_EHCI is not set +CONFIG_USB_ARCH_HAS_HCD=y +# CONFIG_USB_ARCH_HAS_OHCI is not set +# CONFIG_USB_ARCH_HAS_XHCI is not set +CONFIG_USB_ARMLINUX=y +# CONFIG_USB_ATM is not set +CONFIG_USB_BELKIN=y +# CONFIG_USB_C67X00_HCD is not set +# CONFIG_USB_CATC is not set +# CONFIG_USB_CDC_COMPOSITE is not set +# CONFIG_USB_CHIPIDEA is not set +# CONFIG_USB_CXACRU is not set +# CONFIG_USB_CYPRESS_CY7C63 is not set +# CONFIG_USB_CYTHERM is not set +# CONFIG_USB_DEBUG is not set +CONFIG_USB_DEFAULT_PERSIST=y +CONFIG_USB_DEVICEFS=y +# CONFIG_USB_DEVICE_CLASS is not set +# CONFIG_USB_DSBR is not set +# CONFIG_USB_DUMMY_HCD is not set +# CONFIG_USB_DWC2 is not set +# CONFIG_USB_DWC3 is not set +# CONFIG_USB_DWC_OTG_LPM is not set +# CONFIG_USB_DYNAMIC_MINORS is not set +# CONFIG_USB_EG20T is not set +# CONFIG_USB_EHCI_HCD_AT91 is not set +# CONFIG_USB_EHCI_HCD_PPC_OF is not set +# CONFIG_USB_EHCI_MV is not set +CONFIG_USB_EHCI_ROOT_HUB_TT=y +CONFIG_USB_EHCI_TT_NEWSCHED=y +# CONFIG_USB_EMI26 is not set +# CONFIG_USB_EMI62 is not set +# CONFIG_USB_ENESTORAGE is not set +# CONFIG_USB_EPSON2888 is not set +# CONFIG_USB_ET61X251 is not set +CONFIG_USB_EZUSB=y +# CONFIG_USB_EZUSB_FX2 is not set +# CONFIG_USB_FILE_STORAGE is not set +# CONFIG_USB_FSL_USB2 is not set +# CONFIG_USB_FTDI_ELAN is not set +# CONFIG_USB_FUNCTIONFS is not set +# CONFIG_USB_FUSB300 is not set +# CONFIG_USB_GADGET is not set +# CONFIG_USB_GADGETFS is not set +# CONFIG_USB_GADGET_DEBUG is not set +# CONFIG_USB_GADGET_DEBUG_FILES is not set +# CONFIG_USB_GADGET_DEBUG_FS is not set +CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2 +CONFIG_USB_GADGET_VBUS_DRAW=2 +# CONFIG_USB_GL860 is not set +# CONFIG_USB_GOKU is not set +# CONFIG_USB_GPIO_VBUS is not set +# CONFIG_USB_GSPCA is not set +# CONFIG_USB_GSPCA_BENQ is not set +# CONFIG_USB_GSPCA_CONEX is not set +# CONFIG_USB_GSPCA_CPIA1 is not set +# CONFIG_USB_GSPCA_ETOMS is not set +# CONFIG_USB_GSPCA_FINEPIX is not set +# CONFIG_USB_GSPCA_JEILINJ is not set +# CONFIG_USB_GSPCA_JL2005BCD is not set +# CONFIG_USB_GSPCA_KINECT is not set +# CONFIG_USB_GSPCA_KONICA is not set +# CONFIG_USB_GSPCA_MARS is not set +# CONFIG_USB_GSPCA_MR97310A is not set +# CONFIG_USB_GSPCA_NW80X is not set +# CONFIG_USB_GSPCA_OV519 is not set +# CONFIG_USB_GSPCA_OV534 is not set +# CONFIG_USB_GSPCA_OV534_9 is not set +# CONFIG_USB_GSPCA_PAC207 is not set +# CONFIG_USB_GSPCA_PAC7302 is not set +# CONFIG_USB_GSPCA_PAC7311 is not set +# CONFIG_USB_GSPCA_SE401 is not set +# CONFIG_USB_GSPCA_SN9C2028 is not set +# CONFIG_USB_GSPCA_SN9C20X is not set +# CONFIG_USB_GSPCA_SONIXB is not set +# CONFIG_USB_GSPCA_SONIXJ is not set +# CONFIG_USB_GSPCA_SPCA1528 is not set +# CONFIG_USB_GSPCA_SPCA500 is not set +# CONFIG_USB_GSPCA_SPCA501 is not set +# CONFIG_USB_GSPCA_SPCA505 is not set +# CONFIG_USB_GSPCA_SPCA506 is not set +# CONFIG_USB_GSPCA_SPCA508 is not set +# CONFIG_USB_GSPCA_SPCA561 is not set +# CONFIG_USB_GSPCA_SQ905 is not set +# CONFIG_USB_GSPCA_SQ905C is not set +# CONFIG_USB_GSPCA_SQ930X is not set +# CONFIG_USB_GSPCA_STK014 is not set +# CONFIG_USB_GSPCA_STV0680 is not set +# CONFIG_USB_GSPCA_SUNPLUS is not set +# CONFIG_USB_GSPCA_T613 is not set +# CONFIG_USB_GSPCA_TOPRO is not set +# CONFIG_USB_GSPCA_TV8532 is not set +# CONFIG_USB_GSPCA_VC032X is not set +# CONFIG_USB_GSPCA_VICAM is not set +# CONFIG_USB_GSPCA_XIRLINK_CIT is not set +# CONFIG_USB_GSPCA_ZC3XX is not set +# CONFIG_USB_G_ACM_MS is not set +# CONFIG_USB_G_DBGP is not set +# CONFIG_USB_G_HID is not set +# CONFIG_USB_G_MULTI is not set +# CONFIG_USB_G_NCM is not set +# CONFIG_USB_G_NOKIA is not set +# CONFIG_USB_G_PRINTER is not set +# CONFIG_USB_G_SERIAL is not set +# CONFIG_USB_G_WEBCAM is not set +# CONFIG_USB_HID is not set +# CONFIG_USB_HIDDEV is not set +# CONFIG_USB_HSIC_USB3503 is not set +# CONFIG_USB_HSO is not set +# CONFIG_USB_HWA_HCD is not set +# CONFIG_USB_IBMCAM is not set +# CONFIG_USB_IDMOUSE is not set +# CONFIG_USB_INPUT_IMS_PCU is not set +# CONFIG_USB_IOWARRIOR is not set +# CONFIG_USB_IPHETH is not set +# CONFIG_USB_IP_COMMON is not set +# CONFIG_USB_ISIGHTFW is not set +# CONFIG_USB_ISP116X_HCD is not set +# CONFIG_USB_ISP1301 is not set +# CONFIG_USB_ISP1362_HCD is not set +# CONFIG_USB_ISP1760_HCD is not set +# CONFIG_USB_KAWETH is not set +# CONFIG_USB_KBD is not set +# CONFIG_USB_KC2190 is not set +# CONFIG_USB_KONICAWC is not set +# CONFIG_USB_LCD is not set +# CONFIG_USB_LD is not set +# CONFIG_USB_LED is not set +# CONFIG_USB_LEGOTOWER is not set +# CONFIG_USB_LIBUSUAL is not set +# CONFIG_USB_M5602 is not set +# CONFIG_USB_M66592 is not set +# CONFIG_USB_MASS_STORAGE is not set +# CONFIG_USB_MDC800 is not set +# CONFIG_USB_MICROTEK is not set +# CONFIG_USB_MIDI_GADGET is not set +# CONFIG_USB_MON is not set +# CONFIG_USB_MOUSE is not set +# CONFIG_USB_MUSB_HDRC is not set +# CONFIG_USB_MV_U3D is not set +# CONFIG_USB_MV_UDC is not set +# CONFIG_USB_NET2272 is not set +# CONFIG_USB_NET2280 is not set +# CONFIG_USB_NET_AX88179_178A is not set +# CONFIG_USB_NET_AX8817X is not set +# CONFIG_USB_NET_CDCETHER is not set +# CONFIG_USB_NET_CDC_EEM is not set +# CONFIG_USB_NET_CDC_MBIM is not set +# CONFIG_USB_NET_CDC_NCM is not set +# CONFIG_USB_NET_CDC_SUBSET is not set +# CONFIG_USB_NET_CX82310_ETH is not set +# CONFIG_USB_NET_DM9601 is not set +# CONFIG_USB_NET_GL620A is not set +# CONFIG_USB_NET_INT51X1 is not set +# CONFIG_USB_NET_KALMIA is not set +# CONFIG_USB_NET_MCS7830 is not set +# CONFIG_USB_NET_NET1080 is not set +# CONFIG_USB_NET_PLUSB is not set +# CONFIG_USB_NET_QMI_WWAN is not set +# CONFIG_USB_NET_RNDIS_HOST is not set +# CONFIG_USB_NET_RNDIS_WLAN is not set +# CONFIG_USB_NET_SMSC75XX is not set +# CONFIG_USB_NET_SMSC95XX is not set +# CONFIG_USB_NET_ZAURUS is not set +# CONFIG_USB_OHCI_HCD is not set +# CONFIG_USB_OHCI_HCD_PCI is not set +# CONFIG_USB_OHCI_HCD_PPC_OF is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_BE is not set +# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set +# CONFIG_USB_OHCI_HCD_PPC_SOC is not set +# CONFIG_USB_OHCI_HCD_SSB is not set +CONFIG_USB_OHCI_LITTLE_ENDIAN=y +# CONFIG_USB_OTG is not set +# CONFIG_USB_OTG_BLACKLIST_HUB is not set +# CONFIG_USB_OTG_WHITELIST is not set +# CONFIG_USB_OXU210HP_HCD is not set +# CONFIG_USB_PEGASUS is not set +# CONFIG_USB_PHY is not set +# CONFIG_USB_PRINTER is not set +# CONFIG_USB_PWC_INPUT_EVDEV is not set +# CONFIG_USB_PXA27X is not set +# CONFIG_USB_R8A66597 is not set +# CONFIG_USB_R8A66597_HCD is not set +# CONFIG_USB_RCAR_PHY is not set +# CONFIG_USB_RENESAS_USBHS is not set +# CONFIG_USB_RIO500 is not set +# CONFIG_USB_RTL8150 is not set +# CONFIG_USB_RTL8152 is not set +# CONFIG_USB_S2255 is not set +# CONFIG_USB_SE401 is not set +# CONFIG_USB_SERIAL is not set +# CONFIG_USB_SERIAL_AIRCABLE is not set +# CONFIG_USB_SERIAL_ARK3116 is not set +# CONFIG_USB_SERIAL_BELKIN is not set +# CONFIG_USB_SERIAL_CH341 is not set +# CONFIG_USB_SERIAL_CP210X is not set +# CONFIG_USB_SERIAL_CYBERJACK is not set +# CONFIG_USB_SERIAL_CYPRESS_M8 is not set +# CONFIG_USB_SERIAL_DEBUG is not set +# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT is not set +# CONFIG_USB_SERIAL_EDGEPORT_TI is not set +# CONFIG_USB_SERIAL_EMPEG is not set +# CONFIG_USB_SERIAL_F81232 is not set +# CONFIG_USB_SERIAL_FTDI_SIO is not set +# CONFIG_USB_SERIAL_FUNSOFT is not set +# CONFIG_USB_SERIAL_GARMIN is not set +CONFIG_USB_SERIAL_GENERIC=y +# CONFIG_USB_SERIAL_HP4X is not set +# CONFIG_USB_SERIAL_IPAQ is not set +# CONFIG_USB_SERIAL_IPW is not set +# CONFIG_USB_SERIAL_IR is not set +# CONFIG_USB_SERIAL_IUU is not set +# CONFIG_USB_SERIAL_KEYSPAN is not set +CONFIG_USB_SERIAL_KEYSPAN_MPR=y +# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set +CONFIG_USB_SERIAL_KEYSPAN_USA18X=y +CONFIG_USB_SERIAL_KEYSPAN_USA19=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y +CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y +CONFIG_USB_SERIAL_KEYSPAN_USA19W=y +CONFIG_USB_SERIAL_KEYSPAN_USA28=y +CONFIG_USB_SERIAL_KEYSPAN_USA28X=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y +CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y +CONFIG_USB_SERIAL_KEYSPAN_USA49W=y +CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y +# CONFIG_USB_SERIAL_KLSI is not set +# CONFIG_USB_SERIAL_KOBIL_SCT is not set +# CONFIG_USB_SERIAL_MCT_U232 is not set +# CONFIG_USB_SERIAL_METRO is not set +# CONFIG_USB_SERIAL_MOS7715_PARPORT is not set +# CONFIG_USB_SERIAL_MOS7720 is not set +# CONFIG_USB_SERIAL_MOS7840 is not set +# CONFIG_USB_SERIAL_MOTOROLA is not set +# CONFIG_USB_SERIAL_NAVMAN is not set +# CONFIG_USB_SERIAL_OMNINET is not set +# CONFIG_USB_SERIAL_OPTICON is not set +# CONFIG_USB_SERIAL_OPTION is not set +# CONFIG_USB_SERIAL_OTI6858 is not set +# CONFIG_USB_SERIAL_PL2303 is not set +# CONFIG_USB_SERIAL_QCAUX is not set +# CONFIG_USB_SERIAL_QT2 is not set +# CONFIG_USB_SERIAL_QUALCOMM is not set +# CONFIG_USB_SERIAL_QUATECH2 is not set +# CONFIG_USB_SERIAL_QUATECH_USB2 is not set +# CONFIG_USB_SERIAL_SAFE is not set +CONFIG_USB_SERIAL_SAFE_PADDED=y +# CONFIG_USB_SERIAL_SIEMENS_MPI is not set +# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set +# CONFIG_USB_SERIAL_SPCP8X5 is not set +# CONFIG_USB_SERIAL_SSU100 is not set +# CONFIG_USB_SERIAL_SYMBOL is not set +# CONFIG_USB_SERIAL_TI is not set +# CONFIG_USB_SERIAL_VISOR is not set +# CONFIG_USB_SERIAL_VIVOPAY_SERIAL is not set +# CONFIG_USB_SERIAL_WHITEHEAT is not set +# CONFIG_USB_SERIAL_WISHBONE is not set +# CONFIG_USB_SERIAL_XIRCOM is not set +# CONFIG_USB_SERIAL_XSENS_MT is not set +# CONFIG_USB_SERIAL_ZIO is not set +# CONFIG_USB_SERIAL_ZTE is not set +# CONFIG_USB_SEVSEG is not set +# CONFIG_USB_SIERRA_NET is not set +# CONFIG_USB_SISUSBVGA is not set +# CONFIG_USB_SL811_HCD is not set +# CONFIG_USB_SN9C102 is not set +# CONFIG_USB_SPEEDTOUCH is not set +# CONFIG_USB_STKWEBCAM is not set +# CONFIG_USB_STORAGE is not set +# CONFIG_USB_STORAGE_ALAUDA is not set +# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set +# CONFIG_USB_STORAGE_DATAFAB is not set +# CONFIG_USB_STORAGE_DEBUG is not set +# CONFIG_USB_STORAGE_ENE_UB6250 is not set +# CONFIG_USB_STORAGE_FREECOM is not set +# CONFIG_USB_STORAGE_ISD200 is not set +# CONFIG_USB_STORAGE_JUMPSHOT is not set +# CONFIG_USB_STORAGE_KARMA is not set +# CONFIG_USB_STORAGE_ONETOUCH is not set +# CONFIG_USB_STORAGE_REALTEK is not set +# CONFIG_USB_STORAGE_SDDR09 is not set +# CONFIG_USB_STORAGE_SDDR55 is not set +# CONFIG_USB_STORAGE_USBAT is not set +# CONFIG_USB_STV06XX is not set +# CONFIG_USB_SUPPORT is not set +# CONFIG_USB_SUSPEND is not set +# CONFIG_USB_SWITCH_FSA9480 is not set +# CONFIG_USB_TEST is not set +# CONFIG_USB_TMC is not set +# CONFIG_USB_TRANCEVIBRATOR is not set +# CONFIG_USB_UAS is not set +# CONFIG_USB_UEAGLEATM is not set +# CONFIG_USB_ULPI is not set +# CONFIG_USB_USBNET is not set +# CONFIG_USB_USS720 is not set +# CONFIG_USB_VIDEO_CLASS is not set +CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y +# CONFIG_USB_VL600 is not set +# CONFIG_USB_WDM is not set +# CONFIG_USB_WHCI_HCD is not set +# CONFIG_USB_WPAN_HCD is not set +# CONFIG_USB_WUSB is not set +# CONFIG_USB_WUSB_CBAF is not set +# CONFIG_USB_XHCI_HCD is not set +# CONFIG_USB_XUSBATM is not set +# CONFIG_USB_YUREX is not set +# CONFIG_USB_ZD1201 is not set +# CONFIG_USB_ZERO is not set +# CONFIG_USB_ZR364XX is not set +# CONFIG_USE_GENERIC_SMP_HELPERS is not set +# CONFIG_USE_OF is not set +# CONFIG_UTS_NS is not set +# CONFIG_UWB is not set +# CONFIG_V4L_MEM2MEM_DRIVERS is not set +# CONFIG_V4L_TEST_DRIVERS is not set +# CONFIG_VCNL4000 is not set +# CONFIG_VETH is not set +CONFIG_VFAT_FS=y +# CONFIG_VGASTATE is not set +# CONFIG_VGA_ARB is not set +# CONFIG_VGA_SWITCHEROO is not set +# CONFIG_VIA_RHINE is not set +# CONFIG_VIA_VELOCITY is not set +# CONFIG_VIDEO_ADV7170 is not set +# CONFIG_VIDEO_ADV7175 is not set +# CONFIG_VIDEO_ADV7180 is not set +# CONFIG_VIDEO_ADV7183 is not set +# CONFIG_VIDEO_ADV7343 is not set +# CONFIG_VIDEO_ADV7393 is not set +# CONFIG_VIDEO_ADV_DEBUG is not set +# CONFIG_VIDEO_AK881X is not set +# CONFIG_VIDEO_BT819 is not set +# CONFIG_VIDEO_BT848 is not set +# CONFIG_VIDEO_BT856 is not set +# CONFIG_VIDEO_BT866 is not set +# CONFIG_VIDEO_BWQCAM is not set +# CONFIG_VIDEO_CAFE_CCIC is not set +# CONFIG_VIDEO_CAPTURE_DRIVERS is not set +# CONFIG_VIDEO_CPIA is not set +# CONFIG_VIDEO_CQCAM is not set +# CONFIG_VIDEO_CS5345 is not set +# CONFIG_VIDEO_CS53L32A is not set +# CONFIG_VIDEO_CX231XX is not set +# CONFIG_VIDEO_CX2341X is not set +# CONFIG_VIDEO_CX25840 is not set +# CONFIG_VIDEO_CX88 is not set +# CONFIG_VIDEO_DEV is not set +# CONFIG_VIDEO_DT3155 is not set +# CONFIG_VIDEO_EM28XX is not set +# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set +# CONFIG_VIDEO_GO7007 is not set +# CONFIG_VIDEO_HDPVR is not set +# CONFIG_VIDEO_HELPER_CHIPS_AUTO is not set +# CONFIG_VIDEO_HEXIUM_GEMINI is not set +# CONFIG_VIDEO_HEXIUM_ORION is not set +# CONFIG_VIDEO_IR_I2C is not set +# CONFIG_VIDEO_IVTV is not set +# CONFIG_VIDEO_KS0127 is not set +# CONFIG_VIDEO_M52790 is not set +# CONFIG_VIDEO_MEDIA is not set +# CONFIG_VIDEO_MEM2MEM_TESTDEV is not set +# CONFIG_VIDEO_MSP3400 is not set +# CONFIG_VIDEO_MT9V011 is not set +# CONFIG_VIDEO_MXB is not set +# CONFIG_VIDEO_NOON010PC30 is not set +# CONFIG_VIDEO_OUTPUT_CONTROL is not set +# CONFIG_VIDEO_OV7640 is not set +# CONFIG_VIDEO_OV7670 is not set +# CONFIG_VIDEO_PMS is not set +# CONFIG_VIDEO_PVRUSB2 is not set +# CONFIG_VIDEO_SAA6588 is not set +# CONFIG_VIDEO_SAA7110 is not set +# CONFIG_VIDEO_SAA711X is not set +# CONFIG_VIDEO_SAA7127 is not set +# CONFIG_VIDEO_SAA7134 is not set +# CONFIG_VIDEO_SAA717X is not set +# CONFIG_VIDEO_SAA7185 is not set +# CONFIG_VIDEO_SAA7191 is not set +# CONFIG_VIDEO_SH_MOBILE_CEU is not set +# CONFIG_VIDEO_SONY_BTF_MPX is not set +# CONFIG_VIDEO_SR030PC30 is not set +# CONFIG_VIDEO_TCM825X is not set +# CONFIG_VIDEO_TDA7432 is not set +# CONFIG_VIDEO_TDA9840 is not set +# CONFIG_VIDEO_TEA6415C is not set +# CONFIG_VIDEO_TEA6420 is not set +# CONFIG_VIDEO_THS7303 is not set +# CONFIG_VIDEO_TIMBERDALE is not set +# CONFIG_VIDEO_TLV320AIC23B is not set +# CONFIG_VIDEO_TM6000 is not set +# CONFIG_VIDEO_TVAUDIO is not set +# CONFIG_VIDEO_TVP514X is not set +# CONFIG_VIDEO_TVP5150 is not set +# CONFIG_VIDEO_TVP7002 is not set +# CONFIG_VIDEO_TW2804 is not set +# CONFIG_VIDEO_TW9903 is not set +# CONFIG_VIDEO_TW9906 is not set +# CONFIG_VIDEO_UDA1342 is not set +# CONFIG_VIDEO_UPD64031A is not set +# CONFIG_VIDEO_UPD64083 is not set +# CONFIG_VIDEO_USBVISION is not set +# CONFIG_VIDEO_V4L2 is not set +# CONFIG_VIDEO_V4L2_COMMON is not set +# CONFIG_VIDEO_V4L2_INT_DEVICE is not set +# CONFIG_VIDEO_VIVI is not set +# CONFIG_VIDEO_VP27SMPX is not set +# CONFIG_VIDEO_VPX3220 is not set +# CONFIG_VIDEO_VS6624 is not set +# CONFIG_VIDEO_WM8739 is not set +# CONFIG_VIDEO_WM8775 is not set +# CONFIG_VIDEO_ZORAN is not set +# CONFIG_VIRQ_DEBUG is not set +# CONFIG_VIRTIO_BALLOON is not set +# CONFIG_VIRTIO_MMIO is not set +# CONFIG_VIRTIO_PCI is not set +# CONFIG_VIRTUALIZATION is not set +# CONFIG_VIRT_DRIVERS is not set +CONFIG_VIRT_TO_BUS=y +# CONFIG_VITESSE_PHY is not set +CONFIG_VLAN_8021Q=y +# CONFIG_VLAN_8021Q_GVRP is not set +# CONFIG_VLAN_8021Q_MVRP is not set +# CONFIG_VME_BUS is not set +# CONFIG_VMSPLIT_1G is not set +# CONFIG_VMSPLIT_2G is not set +# CONFIG_VMSPLIT_2G_OPT is not set +CONFIG_VMSPLIT_3G=y +# CONFIG_VMSPLIT_3G_OPT is not set +# CONFIG_VMWARE_PVSCSI is not set +# CONFIG_VMXNET3 is not set +# CONFIG_VM_EVENT_COUNTERS is not set +# CONFIG_VORTEX is not set +# CONFIG_VSOCKETS is not set +# CONFIG_VT is not set +# CONFIG_VT6655 is not set +# CONFIG_VT6656 is not set +# CONFIG_VXFS_FS is not set +# CONFIG_VXGE is not set +# CONFIG_VXLAN is not set +# CONFIG_W1 is not set +# CONFIG_W1_CON is not set +# CONFIG_W1_MASTER_DS1WM is not set +# CONFIG_W1_MASTER_DS2482 is not set +# CONFIG_W1_MASTER_DS2490 is not set +# CONFIG_W1_MASTER_GPIO is not set +# CONFIG_W1_MASTER_MATROX is not set +# CONFIG_W1_SLAVE_BQ27000 is not set +# CONFIG_W1_SLAVE_DS2408 is not set +# CONFIG_W1_SLAVE_DS2413 is not set +# CONFIG_W1_SLAVE_DS2423 is not set +# CONFIG_W1_SLAVE_DS2431 is not set +# CONFIG_W1_SLAVE_DS2433 is not set +# CONFIG_W1_SLAVE_DS2760 is not set +# CONFIG_W1_SLAVE_DS2780 is not set +# CONFIG_W1_SLAVE_DS2781 is not set +# CONFIG_W1_SLAVE_DS28E04 is not set +# CONFIG_W1_SLAVE_SMEM is not set +# CONFIG_W1_SLAVE_THERM is not set +# CONFIG_W35UND is not set +# CONFIG_W83627HF_WDT is not set +# CONFIG_W83697HF_WDT is not set +# CONFIG_W83877F_WDT is not set +# CONFIG_W83977F_WDT is not set +# CONFIG_WAN is not set +# CONFIG_WANXL is not set +# CONFIG_WAN_ROUTER is not set +# CONFIG_WATCHDOG is not set +# CONFIG_WATCHDOG_CORE is not set +# CONFIG_WATCHDOG_NOWAYOUT is not set +# CONFIG_WD80x3 is not set +# CONFIG_WDTPCI is not set +CONFIG_WEXT_CORE=y +CONFIG_WEXT_PRIV=y +CONFIG_WEXT_PROC=y +CONFIG_WEXT_SPY=y +# CONFIG_WIMAX is not set +# CONFIG_WIMAX_GDM72XX is not set +CONFIG_WIRELESS=y +CONFIG_WIRELESS_EXT=y +# CONFIG_WIRELESS_EXT_SYSFS is not set +# CONFIG_WLAGS49_H2 is not set +# CONFIG_WLAGS49_H25 is not set +# CONFIG_WLAN is not set +# CONFIG_WL_TI is not set +# CONFIG_WRT_BARRIER_BREAKER is not set +# CONFIG_WR_PPMC is not set +# CONFIG_X25 is not set +CONFIG_XFRM=y +# CONFIG_XFRM_IPCOMP is not set +# CONFIG_XFRM_MIGRATE is not set +# CONFIG_XFRM_STATISTICS is not set +# CONFIG_XFRM_SUB_POLICY is not set +# CONFIG_XFRM_USER is not set +# CONFIG_XFS_DEBUG is not set +# CONFIG_XFS_FS is not set +# CONFIG_XFS_POSIX_ACL is not set +# CONFIG_XFS_QUOTA is not set +# CONFIG_XFS_RT is not set +# CONFIG_XFS_WARN is not set +# CONFIG_XILINX_AXI_EMAC is not set +# CONFIG_XILINX_EMACLITE is not set +# CONFIG_XILINX_LL_TEMAC is not set +# CONFIG_XIP_KERNEL is not set +# CONFIG_XMON is not set +# CONFIG_XVMALLOC is not set +# CONFIG_XZ_DEC is not set +# CONFIG_XZ_DEC_ARM is not set +# CONFIG_XZ_DEC_ARMTHUMB is not set +# CONFIG_XZ_DEC_BCJ is not set +# CONFIG_XZ_DEC_IA64 is not set +# CONFIG_XZ_DEC_POWERPC is not set +# CONFIG_XZ_DEC_SPARC is not set +# CONFIG_XZ_DEC_TEST is not set +# CONFIG_XZ_DEC_X86 is not set +# CONFIG_YAFFS_DISABLE_BAD_BLOCK_MARKING is not set +# CONFIG_YAFFS_FS is not set +# CONFIG_YAM is not set +# CONFIG_YELLOWFIN is not set +# CONFIG_YENTA is not set +# CONFIG_YENTA_O2 is not set +# CONFIG_YENTA_RICOH is not set +# CONFIG_YENTA_TI is not set +# CONFIG_YENTA_TOSHIBA is not set +# CONFIG_ZD1211RW is not set +# CONFIG_ZD1211RW_DEBUG is not set +# CONFIG_ZEROPLUS_FF is not set +# CONFIG_ZISOFS is not set +# CONFIG_ZLIB_DEFLATE is not set +CONFIG_ZLIB_INFLATE=y +# CONFIG_ZNET is not set +CONFIG_ZONE_DMA=y +CONFIG_ZONE_DMA_FLAG=0 +# CONFIG_ZRAM is not set +# CONFIG_ZSMALLOC is not set diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/kconfig/97FN_IOT_config-3.18 b/feeds/rtkmipsel/rtkmipsel/rtl8197f/kconfig/97FN_IOT_config-3.18 new file mode 100755 index 000000000..936fc1061 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/kconfig/97FN_IOT_config-3.18 @@ -0,0 +1,377 @@ +# CONFIG_ANT_SWITCH is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +# CONFIG_ARCH_HAS_SG_CHAIN is not set +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +# CONFIG_AUTO_DHCP_CHECK is not set +# CONFIG_BACKLIGHT_ADP8860 is not set +# CONFIG_BACKLIGHT_ADP8870 is not set +CONFIG_BACKLIGHT_CLASS_DEVICE=y +CONFIG_BACKLIGHT_GENERIC=y +CONFIG_BACKLIGHT_LCD_SUPPORT=y +# CONFIG_BACKLIGHT_PWM is not set +# CONFIG_BAND_2G_ON_WLAN0 is not set +CONFIG_BAND_5G_ON_WLAN0=y +CONFIG_BLK_DEV_SD=y +CONFIG_CEVT_R4K=y +CONFIG_CLKDEV_LOOKUP=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_CMDLINE="board=AP console=ttyS0,38400 linuxpart=0x60000 hwpart=0x20000" +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_OVERRIDE=y +CONFIG_COMPAT_BRK=y +CONFIG_CPU_GENERIC_DUMP_TLB=y +CONFIG_CPU_HAS_PREFETCH=y +CONFIG_CPU_HAS_SYNC=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_CPU_MIPSR2=y +CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y +CONFIG_CPU_R4K_CACHE_TLB=y +CONFIG_CPU_R4K_FPU=y +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y +CONFIG_CPU_SUPPORTS_HIGHMEM=y +CONFIG_CPU_SUPPORTS_MSA=y +CONFIG_CRC16=y +# CONFIG_CRC32_SARWATE is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC_CCITT=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO_CRC32C=y +# CONFIG_CRYPTO_DEV_REALTEK is not set +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_HW=y +CONFIG_CSRC_R4K=y +CONFIG_DEFAULTS_KERNEL_2_6=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_DEFAULT_NOOP=y +CONFIG_DMA_NONCOHERENT=y +CONFIG_EARLY_PRINTK=y +CONFIG_ENABLE_MUST_CHECK=y +# CONFIG_ETHERNET is not set +CONFIG_EXT4_FS=y +CONFIG_EXTRTL8212_PHYID_P1=18 +CONFIG_EXTRTL8212_PHYID_P3=20 +CONFIG_EXTRTL8212_PHYID_P5=22 +CONFIG_FAT_FS=y +CONFIG_FB=y +CONFIG_FB_BACKLIGHT=y +CONFIG_FB_CMDLINE=y +CONFIG_FB_DEFERRED_IO=y +CONFIG_FB_FLEX=y +CONFIG_FB_SYS_COPYAREA=y +CONFIG_FB_SYS_FILLRECT=y +CONFIG_FB_SYS_FOPS=y +CONFIG_FB_SYS_IMAGEBLIT=y +CONFIG_FB_TFT=y +# CONFIG_FB_TFT_AGM1264K_FL is not set +# CONFIG_FB_TFT_BD663474 is not set +CONFIG_FB_TFT_FBTFT_DEVICE=y +# CONFIG_FB_TFT_HX8340BN is not set +# CONFIG_FB_TFT_HX8347D is not set +# CONFIG_FB_TFT_HX8353D is not set +# CONFIG_FB_TFT_ILI9320 is not set +# CONFIG_FB_TFT_ILI9325 is not set +# CONFIG_FB_TFT_ILI9340 is not set +CONFIG_FB_TFT_ILI9341=y +# CONFIG_FB_TFT_ILI9481 is not set +# CONFIG_FB_TFT_ILI9486 is not set +# CONFIG_FB_TFT_PCD8544 is not set +# CONFIG_FB_TFT_RA8875 is not set +# CONFIG_FB_TFT_S6D02A1 is not set +# CONFIG_FB_TFT_S6D1121 is not set +# CONFIG_FB_TFT_SSD1289 is not set +# CONFIG_FB_TFT_SSD1306 is not set +# CONFIG_FB_TFT_SSD1331 is not set +# CONFIG_FB_TFT_SSD1351 is not set +# CONFIG_FB_TFT_ST7735R is not set +# CONFIG_FB_TFT_TINYLCD is not set +# CONFIG_FB_TFT_TLS8204 is not set +# CONFIG_FB_TFT_UC1701 is not set +# CONFIG_FB_TFT_UPD161704 is not set +# CONFIG_FB_TFT_WATTEROTT is not set +CONFIG_FS_MBCACHE=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_SYSFS=y +CONFIG_HARDWARE_WATCHPOINTS=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_HAVE_CLK=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HZ_PERIODIC=y +CONFIG_I2C=y +CONFIG_I2C_BOARDINFO=y +CONFIG_I2C_CHARDEV=y +CONFIG_I2C_COMPAT=y +CONFIG_I2C_DEFAULT_PINMUX=y +CONFIG_I2C_DESIGNWARE_CORE=y +CONFIG_I2C_DESIGNWARE_PLATFORM=y +CONFIG_I2C_HELPER_AUTO=y +# CONFIG_I2C_PINMUX_2 is not set +CONFIG_INITRAMFS_SOURCE="" +CONFIG_IRQ_CPU=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +CONFIG_JBD2=y +# CONFIG_LCD_AMS369FG06 is not set +CONFIG_LCD_CLASS_DEVICE=y +# CONFIG_LCD_L4F00242T03 is not set +# CONFIG_LCD_LD9040 is not set +# CONFIG_LCD_LMS283GF05 is not set +# CONFIG_LCD_LTV350QV is not set +# CONFIG_LCD_PLATFORM is not set +# CONFIG_LCD_S6E63M0 is not set +# CONFIG_LCD_TDO24M is not set +# CONFIG_LCD_VGG2432A4 is not set +CONFIG_LEDS_PWM=y +# CONFIG_LEDS_TRIGGER_DEFAULT_ON is not set +CONFIG_LEDS_TRIGGER_HEARTBEAT=y +# CONFIG_LEDS_TRIGGER_NETDEV is not set +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LOG_BUF_SHIFT=12 +# CONFIG_M25PXX_USE_AUTO_MODE is not set +# CONFIG_M25PXX_USE_FAST_READ is not set +# CONFIG_M25PXX_USE_MULTI_CHANNEL is not set +CONFIG_M25PXX_USE_USER_MODE=y +CONFIG_MAC_PHY_RF_Parameter_V702B_Skyworth=y +CONFIG_MDIO_BOARDINFO=y +CONFIG_MIPS=y +# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set +CONFIG_MIPS_L1_CACHE_SHIFT=5 +# CONFIG_MIPS_MACHINE is not set +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MP_PSD_SUPPORT is not set +CONFIG_MSDOS_FS=y +CONFIG_MTD_BLOCK2MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_M25P80=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPLIT_FIRMWARE=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NLS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NO_IOPORT_MAP is not set +CONFIG_NTFS_FS=y +CONFIG_OPENWRT_SDK=y +# CONFIG_PACP_SUPPORT is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PCI_HCI=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHYLIB=y +# CONFIG_PHY_EAT_40MHZ is not set +# CONFIG_PREEMPT_RCU is not set +CONFIG_PWM=y +CONFIG_PWM_RTK=y +CONFIG_PWM_SYSFS=y +# CONFIG_RCU_STALL_COMMON is not set +# CONFIG_REALTEK is not set +CONFIG_REALTEK_97F=y +# CONFIG_RTK_BOOTINFO_DUALIMAGE is not set +# CONFIG_RTK_WLAN_EVENT_INDICATE is not set +# CONFIG_RTL8190_PRIV_SKB is not set +CONFIG_RTL8192CD=m +CONFIG_RTL819X_DW_SPI=y +CONFIG_RTL819X_DW_SPI0=y +CONFIG_RTL819X_DW_SPI1=y +# CONFIG_RTL819X_SPI_FLASH is not set +CONFIG_RTL819X_WDT=y +# CONFIG_RTL865X_KERNEL_MIPS16 is not set +CONFIG_RTL865X_MBUF_HEADROOM=128 +# CONFIG_RTL_11R_SUPPORT is not set +CONFIG_RTL_11W_SUPPORT=y +CONFIG_RTL_5G_SLOT_0=y +# CONFIG_RTL_802_1X_CLIENT_SUPPORT is not set +CONFIG_RTL_8197F=y +CONFIG_RTL_8197F_GW=y +CONFIG_RTL_8197F_WRT=y +CONFIG_RTL_819X=y +CONFIG_RTL_819X_SWCORE=y +# CONFIG_RTL_8211F_SUPPORT is not set +# CONFIG_RTL_8367R_SUPPORT is not set +# CONFIG_RTL_A4_STA_SUPPORT is not set +# CONFIG_RTL_ATM_SUPPORT is not set +CONFIG_RTL_CLIENT_MODE_SUPPORT=y +# CONFIG_RTL_COMAPI_CFGFILE is not set +# CONFIG_RTL_COMAPI_WLTOOLS is not set +CONFIG_RTL_DEBUG_TOOL=y +CONFIG_RTL_DFS_SUPPORT=y +CONFIG_RTL_DISABLE_ETH_MIPS16=y +CONFIG_RTL_DISABLE_WLAN_MIPS16=y +# CONFIG_RTL_DOT11K_SUPPORT is not set +CONFIG_RTL_EEE_DISABLED=y +# CONFIG_RTL_ETH_802DOT1X_SUPPORT is not set +# CONFIG_RTL_ETH_PRIV_SKB is not set +CONFIG_RTL_EXTPORT_VLANID=9 +CONFIG_RTL_FLASH_SIZE=0x800000 +# CONFIG_RTL_GSO is not set +# CONFIG_RTL_HARDWARE_NAT is not set +# CONFIG_RTL_HOSTAPD_SUPPORT is not set +# CONFIG_RTL_HS2_SUPPORT is not set +CONFIG_RTL_HW_L2_ONLY=y +# CONFIG_RTL_HW_MULTICAST_ONLY is not set +# CONFIG_RTL_HW_NAPT is not set +# CONFIG_RTL_HW_QOS_SUPPORT is not set +CONFIG_RTL_IGMP_PROXY=y +# CONFIG_RTL_IPTABLES_RULE_2_ACL is not set +CONFIG_RTL_IVL_SUPPORT=y +CONFIG_RTL_LAYERED_ASIC_DRIVER=y +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L4 is not set +CONFIG_RTL_LAYERED_DRIVER=y +CONFIG_RTL_LAYERED_DRIVER_ACL=y +CONFIG_RTL_LAYERED_DRIVER_L2=y +# CONFIG_RTL_LAYERED_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_DRIVER_L4 is not set +CONFIG_RTL_LINKCHG_PROCESS=y +# CONFIG_RTL_MESH_SUPPORT is not set +CONFIG_RTL_MLD_PROXY=y +# CONFIG_RTL_MULTI_CLONE_SUPPORT is not set +CONFIG_RTL_ODM_WLAN_DRIVER=y +# CONFIG_RTL_P2P_SUPPORT is not set +# CONFIG_RTL_PMKCACHE_SUPPORT is not set +CONFIG_RTL_PROC_DEBUG=y +CONFIG_RTL_REPEATER_MODE_SUPPORT=y +# CONFIG_RTL_ROMEPERF_24K is not set +# CONFIG_RTL_SENDFILE_PATCH is not set +# CONFIG_RTL_SIMPLE_CONFIG is not set +# CONFIG_RTL_STA_CONTROL_SUPPORT is not set +CONFIG_RTL_SUPPORT_MULTI_PROFILE=y +CONFIG_RTL_TDLS_SUPPORT=y +# CONFIG_RTL_TPT_THREAD is not set +# CONFIG_RTL_TSO is not set +# CONFIG_RTL_UNKOWN_UNICAST_CONTROL is not set +# CONFIG_RTL_USB_IP_HOST_SPEEDUP is not set +CONFIG_RTL_VAP_SUPPORT=y +# CONFIG_RTL_WAPI_SUPPORT is not set +CONFIG_RTL_WDS_SUPPORT=y +# CONFIG_RTL_WLAN_DIAGNOSTIC is not set +# CONFIG_RTL_WLAN_DOS_FILTER is not set +CONFIG_RTL_WPS2_SUPPORT=y +CONFIG_SCSI=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_8250_NR_UARTS=3 +CONFIG_SERIAL_8250_RUNTIME_UARTS=3 +CONFIG_SERIAL_8250_SYSRQ=y +CONFIG_SERIAL_RTL_UART1=y +CONFIG_SERIAL_RTL_UART1_PINMUX1=y +# CONFIG_SERIAL_RTL_UART1_PINMUX2 is not set +CONFIG_SERIAL_RTL_UART2=y +CONFIG_SERIAL_RTL_UART2_PINMUX1=y +# CONFIG_SERIAL_RTL_UART2_PINMUX2 is not set +# CONFIG_SLAB is not set +# CONFIG_SLOT_0_8192EE is not set +# CONFIG_SLOT_0_8194AE is not set +# CONFIG_SLOT_0_8723B is not set +# CONFIG_SLOT_0_8812 is not set +# CONFIG_SLOT_0_8812AR_VN is not set +# CONFIG_SLOT_0_8814AE is not set +CONFIG_SLOT_0_8822BE=y +# CONFIG_SLOT_0_88E is not set +# CONFIG_SLOT_0_92C is not set +# CONFIG_SLOT_0_92D is not set +# CONFIG_SLOT_0_ENABLE_EFUSE is not set +CONFIG_SLOT_0_EXT_LNA=y +CONFIG_SLOT_0_EXT_PA=y +# CONFIG_SLOT_0_RFE_TYPE_0 is not set +CONFIG_SLOT_0_RFE_TYPE_1=y +# CONFIG_SLOT_0_RFE_TYPE_6 is not set +# CONFIG_SLOT_0_RFE_TYPE_7 is not set +CONFIG_SLOT_0_TX_BEAMFORMING=y +CONFIG_SLUB=y +# CONFIG_SOC_ENABLE_EFUSE is not set +CONFIG_SOC_EXT_LNA=y +CONFIG_SOC_EXT_PA=y +# CONFIG_SOC_RFE_TYPE_0 is not set +CONFIG_SOC_RFE_TYPE_1=y +# CONFIG_SOC_RFE_TYPE_2 is not set +CONFIG_SOC_RTL8197F=y +# CONFIG_SOC_TX_BEAMFORMING is not set +CONFIG_SOC_WIFI=y +CONFIG_SPI=y +CONFIG_SPI_DESIGNWARE=y +CONFIG_SPI_DW_MMIO=y +CONFIG_SPI_MASTER=y +CONFIG_SPI_SHEIPA=y +CONFIG_SQUASHFS_EMBEDDED=y +# CONFIG_SQUASHFS_XZ is not set +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SWCONFIG=y +CONFIG_SYS_HAS_CPU_MIPS32_R2=y +CONFIG_SYS_HAS_EARLY_PRINTK=y +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TXPWR_LMT=y +CONFIG_USB=y +CONFIG_USB_COMMON=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_STORAGE=y +CONFIG_USB_SUPPORT=y +CONFIG_USE_PCIE_SLOT_0=y +CONFIG_VFAT_FS=y +CONFIG_WATCHDOG_CORE=y +CONFIG_WIRELESS_LAN_MODULE=y +CONFIG_WLAN_HAL=y +CONFIG_WLAN_HAL_8197F=y +CONFIG_WLAN_HAL_8822BE=y +CONFIG_WLAN_HAL_88XX=y +CONFIG_WLAN_MACHAL_API=y +# CONFIG_WL_TI is not set +CONFIG_WRT_BARRIER_BREAKER=y +# CONFIG_XZ_DEC is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA_FLAG=0 diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/kconfig/97FS_USB_config-3.18 b/feeds/rtkmipsel/rtkmipsel/rtl8197f/kconfig/97FS_USB_config-3.18 new file mode 100755 index 000000000..d5bf63980 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/kconfig/97FS_USB_config-3.18 @@ -0,0 +1,292 @@ +# CONFIG_ANT_SWITCH is not set +CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y +CONFIG_ARCH_DISCARD_MEMBLOCK=y +CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y +# CONFIG_ARCH_HAS_SG_CHAIN is not set +CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y +CONFIG_ARCH_HIBERNATION_POSSIBLE=y +CONFIG_ARCH_MIGHT_HAVE_PC_PARPORT=y +CONFIG_ARCH_MIGHT_HAVE_PC_SERIO=y +CONFIG_ARCH_REQUIRE_GPIOLIB=y +CONFIG_ARCH_SUSPEND_POSSIBLE=y +CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y +# CONFIG_AUTO_DHCP_CHECK is not set +# CONFIG_BAND_2G_ON_WLAN0 is not set +CONFIG_BAND_5G_ON_WLAN0=y +CONFIG_BLK_DEV_SD=y +CONFIG_CEVT_R4K=y +CONFIG_CLONE_BACKWARDS=y +CONFIG_CMDLINE="board=AP console=ttyS0,38400 linuxpart=0x60000 hwpart=0x20000" +CONFIG_CMDLINE_BOOL=y +CONFIG_CMDLINE_OVERRIDE=y +CONFIG_COMPAT_BRK=y +CONFIG_CPU_GENERIC_DUMP_TLB=y +CONFIG_CPU_HAS_PREFETCH=y +CONFIG_CPU_HAS_SYNC=y +CONFIG_CPU_LITTLE_ENDIAN=y +CONFIG_CPU_MIPS32=y +CONFIG_CPU_MIPS32_R2=y +CONFIG_CPU_MIPSR2=y +CONFIG_CPU_NEEDS_NO_SMARTMIPS_OR_MICROMIPS=y +CONFIG_CPU_R4K_CACHE_TLB=y +CONFIG_CPU_R4K_FPU=y +CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y +CONFIG_CPU_SUPPORTS_HIGHMEM=y +CONFIG_CPU_SUPPORTS_MSA=y +CONFIG_CRC16=y +# CONFIG_CRC32_SARWATE is not set +CONFIG_CRC32_SLICEBY8=y +CONFIG_CRC_CCITT=y +CONFIG_CROSS_MEMORY_ATTACH=y +CONFIG_CRYPTO_CRC32C=y +CONFIG_CRYPTO_HASH=y +CONFIG_CRYPTO_HASH2=y +CONFIG_CRYPTO_HW=y +CONFIG_CSRC_R4K=y +CONFIG_DEFAULTS_KERNEL_2_6=y +# CONFIG_DEFAULT_DEADLINE is not set +CONFIG_DEFAULT_IOSCHED="noop" +CONFIG_DEFAULT_NOOP=y +CONFIG_DMA_NONCOHERENT=y +CONFIG_EARLY_PRINTK=y +CONFIG_ENABLE_MUST_CHECK=y +# CONFIG_ETHERNET is not set +CONFIG_EXT4_FS=y +CONFIG_EXTRTL8212_PHYID_P1=18 +CONFIG_EXTRTL8212_PHYID_P3=20 +CONFIG_EXTRTL8212_PHYID_P5=22 +CONFIG_FAT_FS=y +CONFIG_FS_MBCACHE=y +CONFIG_GENERIC_ATOMIC64=y +CONFIG_GENERIC_CLOCKEVENTS=y +CONFIG_GENERIC_CLOCKEVENTS_BUILD=y +CONFIG_GENERIC_CMOS_UPDATE=y +CONFIG_GENERIC_IO=y +CONFIG_GENERIC_IRQ_SHOW=y +CONFIG_GENERIC_PCI_IOMAP=y +CONFIG_GENERIC_SMP_IDLE_THREAD=y +CONFIG_GPIOLIB=y +CONFIG_GPIO_DEVRES=y +CONFIG_GPIO_SYSFS=y +CONFIG_HARDWARE_WATCHPOINTS=y +CONFIG_HAS_DMA=y +CONFIG_HAS_IOMEM=y +CONFIG_HAS_IOPORT_MAP=y +# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set +CONFIG_HAVE_ARCH_JUMP_LABEL=y +CONFIG_HAVE_ARCH_KGDB=y +CONFIG_HAVE_ARCH_SECCOMP_FILTER=y +CONFIG_HAVE_ARCH_TRACEHOOK=y +# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set +CONFIG_HAVE_BPF_JIT=y +CONFIG_HAVE_CC_STACKPROTECTOR=y +CONFIG_HAVE_CONTEXT_TRACKING=y +CONFIG_HAVE_C_RECORDMCOUNT=y +CONFIG_HAVE_DEBUG_KMEMLEAK=y +CONFIG_HAVE_DEBUG_STACKOVERFLOW=y +CONFIG_HAVE_DMA_API_DEBUG=y +CONFIG_HAVE_DMA_ATTRS=y +CONFIG_HAVE_DMA_CONTIGUOUS=y +CONFIG_HAVE_DYNAMIC_FTRACE=y +CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y +CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y +CONFIG_HAVE_FUNCTION_TRACER=y +CONFIG_HAVE_GENERIC_DMA_COHERENT=y +CONFIG_HAVE_IDE=y +CONFIG_HAVE_KVM=y +CONFIG_HAVE_MEMBLOCK=y +CONFIG_HAVE_MEMBLOCK_NODE_MAP=y +CONFIG_HAVE_MOD_ARCH_SPECIFIC=y +CONFIG_HAVE_NET_DSA=y +CONFIG_HAVE_OPROFILE=y +CONFIG_HAVE_PERF_EVENTS=y +CONFIG_HAVE_SYSCALL_TRACEPOINTS=y +CONFIG_HZ_PERIODIC=y +CONFIG_INITRAMFS_SOURCE="" +CONFIG_IRQ_CPU=y +CONFIG_IRQ_FORCED_THREADING=y +CONFIG_IRQ_WORK=y +CONFIG_JBD2=y +CONFIG_LEDS_GPIO=y +CONFIG_LEGACY_PTYS=y +CONFIG_LEGACY_PTY_COUNT=256 +CONFIG_LOG_BUF_SHIFT=12 +# CONFIG_M25PXX_USE_AUTO_MODE is not set +# CONFIG_M25PXX_USE_FAST_READ is not set +# CONFIG_M25PXX_USE_MULTI_CHANNEL is not set +CONFIG_M25PXX_USE_USER_MODE=y +CONFIG_MAC_PHY_RF_Parameter_V702B_Skyworth=y +CONFIG_MDIO_BOARDINFO=y +CONFIG_MIPS=y +# CONFIG_MIPS_HUGE_TLB_SUPPORT is not set +CONFIG_MIPS_L1_CACHE_SHIFT=5 +# CONFIG_MIPS_MACHINE is not set +CONFIG_MODULES_USE_ELF_REL=y +# CONFIG_MP_PSD_SUPPORT is not set +CONFIG_MSDOS_FS=y +CONFIG_MTD_BLOCK2MTD=y +CONFIG_MTD_CMDLINE_PARTS=y +# CONFIG_MTD_COMPLEX_MAPPINGS is not set +CONFIG_MTD_M25P80=y +CONFIG_MTD_SPI_NOR=y +CONFIG_MTD_SPLIT_FIRMWARE=y +CONFIG_NEED_DMA_MAP_STATE=y +CONFIG_NEED_PER_CPU_KM=y +CONFIG_NLS=y +CONFIG_NLS_CODEPAGE_437=y +CONFIG_NLS_ISO8859_1=y +# CONFIG_NO_IOPORT_MAP is not set +CONFIG_NTFS_FS=y +CONFIG_OPENWRT_SDK=y +# CONFIG_PACP_SUPPORT is not set +CONFIG_PAGEFLAGS_EXTENDED=y +CONFIG_PCI_HCI=y +CONFIG_PERF_USE_VMALLOC=y +CONFIG_PHYLIB=y +# CONFIG_PHY_EAT_40MHZ is not set +# CONFIG_PREEMPT_RCU is not set +# CONFIG_RCU_STALL_COMMON is not set +# CONFIG_REALTEK is not set +CONFIG_REALTEK_97F=y +# CONFIG_RTK_BOOTINFO_DUALIMAGE is not set +# CONFIG_RTK_WLAN_EVENT_INDICATE is not set +# CONFIG_RTL8190_PRIV_SKB is not set +CONFIG_RTL8192CD=m +# CONFIG_RTL819X_SPI_FLASH is not set +CONFIG_RTL819X_WDT=y +# CONFIG_RTL865X_KERNEL_MIPS16 is not set +CONFIG_RTL865X_MBUF_HEADROOM=128 +# CONFIG_RTL_11R_SUPPORT is not set +CONFIG_RTL_11W_SUPPORT=y +CONFIG_RTL_5G_SLOT_0=y +# CONFIG_RTL_802_1X_CLIENT_SUPPORT is not set +CONFIG_RTL_8197F=y +CONFIG_RTL_8197F_GW=y +CONFIG_RTL_8197F_WRT=y +CONFIG_RTL_819X=y +CONFIG_RTL_819X_SWCORE=y +# CONFIG_RTL_8211F_SUPPORT is not set +CONFIG_RTL_8367R_SUPPORT=y +# CONFIG_RTL_A4_STA_SUPPORT is not set +# CONFIG_RTL_ATM_SUPPORT is not set +CONFIG_RTL_CLIENT_MODE_SUPPORT=y +# CONFIG_RTL_COMAPI_CFGFILE is not set +# CONFIG_RTL_COMAPI_WLTOOLS is not set +CONFIG_RTL_DEBUG_TOOL=y +CONFIG_RTL_DFS_SUPPORT=y +CONFIG_RTL_DISABLE_ETH_MIPS16=y +CONFIG_RTL_DISABLE_WLAN_MIPS16=y +# CONFIG_RTL_DOT11K_SUPPORT is not set +CONFIG_RTL_EEE_DISABLED=y +# CONFIG_RTL_ETH_802DOT1X_SUPPORT is not set +# CONFIG_RTL_ETH_PRIV_SKB is not set +CONFIG_RTL_EXTPORT_VLANID=9 +# CONFIG_RTL_GSO is not set +# CONFIG_RTL_HARDWARE_NAT is not set +# CONFIG_RTL_HOSTAPD_SUPPORT is not set +# CONFIG_RTL_HS2_SUPPORT is not set +CONFIG_RTL_HW_L2_ONLY=y +# CONFIG_RTL_HW_MULTICAST_ONLY is not set +# CONFIG_RTL_HW_NAPT is not set +# CONFIG_RTL_HW_QOS_SUPPORT is not set +CONFIG_RTL_IGMP_PROXY=y +# CONFIG_RTL_IPTABLES_RULE_2_ACL is not set +CONFIG_RTL_IVL_SUPPORT=y +CONFIG_RTL_LAYERED_ASIC_DRIVER=y +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_ASIC_DRIVER_L4 is not set +CONFIG_RTL_LAYERED_DRIVER=y +CONFIG_RTL_LAYERED_DRIVER_ACL=y +CONFIG_RTL_LAYERED_DRIVER_L2=y +# CONFIG_RTL_LAYERED_DRIVER_L3 is not set +# CONFIG_RTL_LAYERED_DRIVER_L4 is not set +CONFIG_RTL_LINKCHG_PROCESS=y +# CONFIG_RTL_MESH_SUPPORT is not set +CONFIG_RTL_MLD_PROXY=y +CONFIG_RTL_ODM_WLAN_DRIVER=y +# CONFIG_RTL_P2P_SUPPORT is not set +# CONFIG_RTL_PMKCACHE_SUPPORT is not set +CONFIG_RTL_PROC_DEBUG=y +CONFIG_RTL_REPEATER_MODE_SUPPORT=y +# CONFIG_RTL_ROMEPERF_24K is not set +# CONFIG_RTL_SENDFILE_PATCH is not set +# CONFIG_RTL_SIMPLE_CONFIG is not set +# CONFIG_RTL_STA_CONTROL_SUPPORT is not set +CONFIG_RTL_SUPPORT_MULTI_PROFILE=y +CONFIG_RTL_TDLS_SUPPORT=y +# CONFIG_RTL_TPT_THREAD is not set +# CONFIG_RTL_TSO is not set +# CONFIG_RTL_UNKOWN_UNICAST_CONTROL is not set +# CONFIG_RTL_USB_IP_HOST_SPEEDUP is not set +CONFIG_RTL_VAP_SUPPORT=y +# CONFIG_RTL_WAPI_SUPPORT is not set +CONFIG_RTL_WDS_SUPPORT=y +# CONFIG_RTL_WLAN_DIAGNOSTIC is not set +# CONFIG_RTL_WLAN_DOS_FILTER is not set +CONFIG_RTL_WPS2_SUPPORT=y +CONFIG_SCSI=y +CONFIG_SERIAL_8250_DW=y +CONFIG_SERIAL_8250_RUNTIME_UARTS=1 +CONFIG_SERIAL_8250_SYSRQ=y +# CONFIG_SLAB is not set +# CONFIG_SLOT_0_8192EE is not set +# CONFIG_SLOT_0_8194AE is not set +# CONFIG_SLOT_0_8723B is not set +# CONFIG_SLOT_0_8812 is not set +# CONFIG_SLOT_0_8812AR_VN is not set +# CONFIG_SLOT_0_8814AE is not set +CONFIG_SLOT_0_8822BE=y +# CONFIG_SLOT_0_88E is not set +# CONFIG_SLOT_0_92C is not set +# CONFIG_SLOT_0_92D is not set +# CONFIG_SLOT_0_ENABLE_EFUSE is not set +CONFIG_SLOT_0_EXT_LNA=y +CONFIG_SLOT_0_EXT_PA=y +# CONFIG_SLOT_0_RFE_TYPE_0 is not set +CONFIG_SLOT_0_RFE_TYPE_1=y +# CONFIG_SLOT_0_RFE_TYPE_6 is not set +# CONFIG_SLOT_0_RFE_TYPE_7 is not set +CONFIG_SLOT_0_TX_BEAMFORMING=y +CONFIG_SLUB=y +# CONFIG_SOC_ENABLE_EFUSE is not set +CONFIG_SOC_EXT_LNA=y +CONFIG_SOC_EXT_PA=y +# CONFIG_SOC_RFE_TYPE_0 is not set +CONFIG_SOC_RFE_TYPE_1=y +CONFIG_SOC_RTL8197F=y +# CONFIG_SOC_TX_BEAMFORMING is not set +CONFIG_SOC_WIFI=y +CONFIG_SPI=y +CONFIG_SPI_MASTER=y +CONFIG_SPI_SHEIPA=y +CONFIG_SQUASHFS_EMBEDDED=y +# CONFIG_SQUASHFS_XZ is not set +CONFIG_SQUASHFS_ZLIB=y +CONFIG_SWCONFIG=y +CONFIG_SYS_HAS_CPU_MIPS32_R2=y +CONFIG_SYS_HAS_EARLY_PRINTK=y +CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y +CONFIG_SYS_SUPPORTS_ARBIT_HZ=y +CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y +CONFIG_TICK_CPU_ACCOUNTING=y +CONFIG_TXPWR_LMT=y +CONFIG_USB=y +CONFIG_USB_COMMON=y +CONFIG_USB_EHCI_HCD=y +# CONFIG_USB_EHCI_HCD_PLATFORM is not set +CONFIG_USB_STORAGE=y +CONFIG_USB_SUPPORT=y +CONFIG_USE_PCIE_SLOT_0=y +CONFIG_VFAT_FS=y +CONFIG_WATCHDOG_CORE=y +CONFIG_WIRELESS_LAN_MODULE=y +CONFIG_WLAN_HAL=y +CONFIG_WLAN_HAL_8197F=y +CONFIG_WLAN_HAL_8822BE=y +CONFIG_WLAN_HAL_88XX=y +CONFIG_WLAN_MACHAL_API=y +# CONFIG_WL_TI is not set +CONFIG_WRT_BARRIER_BREAKER=y +# CONFIG_XZ_DEC is not set +CONFIG_ZLIB_INFLATE=y +CONFIG_ZONE_DMA_FLAG=0 diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/models.txt b/feeds/rtkmipsel/rtkmipsel/rtl8197f/models.txt new file mode 100644 index 000000000..53494e6bd --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/models.txt @@ -0,0 +1,5 @@ +Spark Wave 2 Mini PoE: SP-W2M-AC1200-PoE +Spark Wave 2 Mini PoE: SP-W2M-AC1200-POE +Spark Wave 2 Mini: SP-W2M-AC1200 +Spark Wave 2 Mini: C4W-W2M-AC1200 +Spark Wave 2 Mini: FON-W2M-AC1200 diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/120-AP.mk b/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/120-AP.mk new file mode 100755 index 000000000..32a571531 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/120-AP.mk @@ -0,0 +1,17 @@ +# +# Copyright (C) 2006-2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/AP + NAME:=AP package + PACKAGES:=-wpad-mini +endef + +define Profile/AP/Description + Realtek SOC,Package AP mode support +endef + +$(eval $(call Profile,AP)) diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/121-rtk_IOT.mk b/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/121-rtk_IOT.mk new file mode 100644 index 000000000..3bdb28459 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/121-rtk_IOT.mk @@ -0,0 +1,17 @@ +# +# Copyright (C) 2015 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/rtk_IOT + NAME:=rtk_IOT + PACKAGES:=\ + kmod-usb-core kmod-usb2 kmod-usb-ohci +endef + +define Profile/rtk_IOT/Description + Default package set compatible with most boards. +endef +$(eval $(call Profile,rtk_IOT)) diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/130-SP-W2M-AC1200.mk b/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/130-SP-W2M-AC1200.mk new file mode 100755 index 000000000..75e706a92 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/profiles/130-SP-W2M-AC1200.mk @@ -0,0 +1,24 @@ +# +# Copyright (C) 2006-2008 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +define Profile/SP-W2M-AC1200 + NAME:=SparkWave2 mini + PACKAGES:=-wpad-mini +endef + +define Profile/SP-W2M-AC1200/Description + SparkWave2 mini 8197F, both microusb and POE models +endef + +define Profile/SP-W2M-AC1200/Config +config KERNEL_RTL_8197F_SP_W2M_AC1200 + bool + default y + depends on TARGET_rtkmipsel_rtl8197f_SP-W2M-AC1200 +endef + +$(eval $(call Profile,SP-W2M-AC1200)) diff --git a/feeds/rtkmipsel/rtkmipsel/rtl8197f/target.mk b/feeds/rtkmipsel/rtkmipsel/rtl8197f/target.mk new file mode 100755 index 000000000..ddd76e434 --- /dev/null +++ b/feeds/rtkmipsel/rtkmipsel/rtl8197f/target.mk @@ -0,0 +1,9 @@ +SUBTARGET:=rtl8197f +BOARDNAME:=RTL8197f based boards +#CPU_TYPE:=mips32r2 +CPU_TYPE:=24kec +DEFAULT_PACKAGES += + +define Target/Description + RTL8197f based boards +endef diff --git a/feeds/rtkmipsel/rtl819x_8211F/Makefile b/feeds/rtkmipsel/rtl819x_8211F/Makefile new file mode 100644 index 000000000..34d37fc40 --- /dev/null +++ b/feeds/rtkmipsel/rtl819x_8211F/Makefile @@ -0,0 +1,62 @@ +# +# Copyright (C) 2012 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=rtl819x_8211F +PKG_VERSION:=0.1 +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/.config + +define KernelPackage/rtl819x_8211F + SUBMENU:=Network Support + TITLE:=rtl819x nic driver for SPW2M 8211F ethernet + FILES:=$(PKG_BUILD_DIR)/rtl819x_8211f.ko + DEFAULT:=y + KCONFIG:= \ + CONFIG_RTL_819X_SWCORE=m +endef + +define KernelPackage/rtl819x_8211F/description + Kernel module rtl819x_8211F +endef + +include $(INCLUDE_DIR)/kernel-defaults.mk + +define Build/Prepare + $(INSTALL_DIR) $(PKG_BUILD_DIR) + $(CP) -a $(LINUX_DIR)/drivers/net/rtl819x/* $(PKG_BUILD_DIR)/ +endef + + EXTRA_KCONFIG:= \ + CONFIG_RTL_819X_SWCORE=m \ + CONFIG_RTL_8211F_SUPPORT=y + + EXTRA_KFLAGS:= \ + $(patsubst CONFIG_%, -DCONFIG_%, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \ + $(patsubst CONFIG_%, -DCONFIG_%, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) + + MAKE_OPTS:= \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + EXTRA_KFLAGS="$(EXTRA_KFLAGS)" \ + $(EXTRA_KCONFIG) + +define Build/Compile + $(MAKE) -C $(LINUX_DIR) $(MAKE_OPTS) modules + $(CP) $(PKG_BUILD_DIR)/rtl819x.ko $(PKG_BUILD_DIR)/rtl819x_8211f.ko +endef + +define Package/kmod-rtl819x_8211F/extra_provides + echo "rtl819x.ko"; +endef + +$(eval $(call KernelPackage,rtl819x_8211F)) diff --git a/feeds/rtkmipsel/rtl819x_83XX/Makefile b/feeds/rtkmipsel/rtl819x_83XX/Makefile new file mode 100644 index 000000000..d62ba2891 --- /dev/null +++ b/feeds/rtkmipsel/rtl819x_83XX/Makefile @@ -0,0 +1,63 @@ +# +# Copyright (C) 2012 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk +include $(INCLUDE_DIR)/kernel.mk + +PKG_NAME:=rtl819x_83XX +PKG_VERSION:=0.1 +PKG_RELEASE:=1 + +include $(INCLUDE_DIR)/package.mk +include $(TOPDIR)/.config + +define KernelPackage/rtl819x_83XX + SUBMENU:=Network Support + TITLE:=rtl819x nic driver for SPW2M 83XX ethernet switch + FILES:=$(PKG_BUILD_DIR)/rtl819x_83xx.ko + DEFAULT:=y + KCONFIG:= \ + CONFIG_RTL_819X_SWCORE=m +endef + +define KernelPackage/rtl819x_83XX/description + Kernel module rtl819x_83XX +endef + +include $(INCLUDE_DIR)/kernel-defaults.mk + +define Build/Prepare + $(INSTALL_DIR) $(PKG_BUILD_DIR) + $(CP) -a $(LINUX_DIR)/drivers/net/rtl819x/* $(PKG_BUILD_DIR)/ +endef + + EXTRA_KCONFIG:= \ + CONFIG_RTL_819X_SWCORE=m \ + CONFIG_RTL_83XX_SUPPORT=y \ + CONFIG_RTL_8363NB_SUPPORT=y + + EXTRA_KFLAGS:= \ + $(patsubst CONFIG_%, -DCONFIG_%, $(patsubst %=m,%,$(filter %=m,$(EXTRA_KCONFIG)))) \ + $(patsubst CONFIG_%, -DCONFIG_%, $(patsubst %=y,%,$(filter %=y,$(EXTRA_KCONFIG)))) + + MAKE_OPTS:= \ + ARCH="$(LINUX_KARCH)" \ + CROSS_COMPILE="$(TARGET_CROSS)" \ + SUBDIRS="$(PKG_BUILD_DIR)" \ + EXTRA_KFLAGS="$(EXTRA_KFLAGS)" \ + $(EXTRA_KCONFIG) + +define Build/Compile + $(MAKE) -C $(LINUX_DIR) $(MAKE_OPTS) modules + $(CP) $(PKG_BUILD_DIR)/rtl819x.ko $(PKG_BUILD_DIR)/rtl819x_83xx.ko +endef + +define Package/kmod-rtl819x_83XX/extra_provides + echo "rtl819x.ko"; +endef + +$(eval $(call KernelPackage,rtl819x_83XX)) diff --git a/feeds/rtkmipsel/swconfig/Makefile b/feeds/rtkmipsel/swconfig/Makefile new file mode 100644 index 000000000..7d0f30e7b --- /dev/null +++ b/feeds/rtkmipsel/swconfig/Makefile @@ -0,0 +1,51 @@ +# +# Copyright (C) 2008-2010 OpenWrt.org +# +# This is free software, licensed under the GNU General Public License v2. +# See /LICENSE for more information. +# + +include $(TOPDIR)/rules.mk + +PKG_NAME:=swconfig +PKG_RELEASE:=10 + +PKG_MAINTAINER:=Felix Fietkau +PKG_LICENSE:=GPL-2.0 + +include $(INCLUDE_DIR)/package.mk +include $(INCLUDE_DIR)/kernel.mk + +define Package/swconfig + SECTION:=base + CATEGORY:=Base system + DEPENDS:=+libuci +libnl-tiny + TITLE:=Switch configuration utility +endef + +TARGET_CPPFLAGS := \ + -D_GNU_SOURCE \ + -I$(STAGING_DIR)/usr/include/libnl-tiny \ + -I$(PKG_BUILD_DIR) \ + $(TARGET_CPPFLAGS) \ + -I$(LINUX_DIR)/user_headers/include + +define Build/Prepare + mkdir -p $(PKG_BUILD_DIR) + $(CP) ./src/* $(PKG_BUILD_DIR)/ +endef + +define Build/Compile + CFLAGS="$(TARGET_CPPFLAGS) $(TARGET_CFLAGS)" \ + $(MAKE) -C $(PKG_BUILD_DIR) \ + $(TARGET_CONFIGURE_OPTS) \ + LIBS="$(TARGET_LDFLAGS) -lnl-tiny -lm -luci" +endef + +define Package/swconfig/install + $(INSTALL_DIR) $(1)/sbin $(1)/lib/network + $(INSTALL_BIN) $(PKG_BUILD_DIR)/swconfig $(1)/sbin/swconfig + $(INSTALL_DATA) ./files/switch.sh $(1)/lib/network/ +endef + +$(eval $(call BuildPackage,swconfig)) diff --git a/feeds/rtkmipsel/swconfig/files/switch.sh b/feeds/rtkmipsel/swconfig/files/switch.sh new file mode 100644 index 000000000..ba6924d9d --- /dev/null +++ b/feeds/rtkmipsel/swconfig/files/switch.sh @@ -0,0 +1,15 @@ +#!/bin/sh +# Copyright (C) 2009 OpenWrt.org + +setup_switch_dev() { + local name + config_get name "$1" name + name="${name:-$1}" + [ -d "/sys/class/net/$name" ] && ifconfig "$name" up + swconfig dev "$name" load network +} + +setup_switch() { + config_load network + config_foreach setup_switch_dev switch +} diff --git a/feeds/rtkmipsel/swconfig/src/Makefile b/feeds/rtkmipsel/swconfig/src/Makefile new file mode 100644 index 000000000..0d56f4315 --- /dev/null +++ b/feeds/rtkmipsel/swconfig/src/Makefile @@ -0,0 +1,12 @@ +ifndef CFLAGS +CFLAGS = -O2 -g -I ../src +endif +LIBS=-lnl -lnl-genl + +all: swconfig + +%.o: %.c + $(CC) $(CFLAGS) -c -o $@ $^ + +swconfig: cli.o swlib.o uci.o + $(CC) $(LDFLAGS) -o $@ $^ $(LIBS) diff --git a/feeds/rtkmipsel/swconfig/src/cli.c b/feeds/rtkmipsel/swconfig/src/cli.c new file mode 100644 index 000000000..d47208678 --- /dev/null +++ b/feeds/rtkmipsel/swconfig/src/cli.c @@ -0,0 +1,354 @@ +/* + * swconfig.c: Switch configuration utility + * + * Copyright (C) 2008 Felix Fietkau + * Copyright (C) 2010 Martin Mares + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundatio. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include "swlib.h" + +enum { + CMD_NONE, + CMD_GET, + CMD_SET, + CMD_LOAD, + CMD_HELP, + CMD_SHOW, + CMD_PORTMAP, +}; + +static void +print_attrs(const struct switch_attr *attr) +{ + int i = 0; + while (attr) { + const char *type; + switch(attr->type) { + case SWITCH_TYPE_INT: + type = "int"; + break; + case SWITCH_TYPE_STRING: + type = "string"; + break; + case SWITCH_TYPE_PORTS: + type = "ports"; + break; + case SWITCH_TYPE_NOVAL: + type = "none"; + break; + default: + type = "unknown"; + break; + } + printf("\tAttribute %d (%s): %s (%s)\n", ++i, type, attr->name, attr->description); + attr = attr->next; + } +} + +static void +list_attributes(struct switch_dev *dev) +{ + printf("%s: %s(%s), ports: %d (cpu @ %d), vlans: %d\n", dev->dev_name, dev->alias, dev->name, dev->ports, dev->cpu_port, dev->vlans); + printf(" --switch\n"); + print_attrs(dev->ops); + printf(" --vlan\n"); + print_attrs(dev->vlan_ops); + printf(" --port\n"); + print_attrs(dev->port_ops); +} + +static void +print_attr_val(const struct switch_attr *attr, const struct switch_val *val) +{ + int i; + + switch (attr->type) { + case SWITCH_TYPE_INT: + printf("%d", val->value.i); + break; + case SWITCH_TYPE_STRING: + printf("%s", val->value.s); + break; + case SWITCH_TYPE_PORTS: + for(i = 0; i < val->len; i++) { + printf("%d%s ", + val->value.ports[i].id, + (val->value.ports[i].flags & + SWLIB_PORT_FLAG_TAGGED) ? "t" : ""); + } + break; + default: + printf("?unknown-type?"); + } +} + +static void +show_attrs(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) +{ + while (attr) { + if (attr->type != SWITCH_TYPE_NOVAL) { + printf("\t%s: ", attr->name); + if (swlib_get_attr(dev, attr, val) < 0) + printf("???"); + else + print_attr_val(attr, val); + putchar('\n'); + } + attr = attr->next; + } +} + +static void +show_global(struct switch_dev *dev) +{ + struct switch_val val; + + printf("Global attributes:\n"); + show_attrs(dev, dev->ops, &val); +} + +static void +show_port(struct switch_dev *dev, int port) +{ + struct switch_val val; + + printf("Port %d:\n", port); + val.port_vlan = port; + show_attrs(dev, dev->port_ops, &val); +} + +static void +show_vlan(struct switch_dev *dev, int vlan, bool all) +{ + struct switch_val val; + struct switch_attr *attr; + + val.port_vlan = vlan; + + if (all) { + attr = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_VLAN, "ports"); + if (swlib_get_attr(dev, attr, &val) < 0) + return; + + if (!val.len) + return; + } + + printf("VLAN %d:\n", vlan); + show_attrs(dev, dev->vlan_ops, &val); +} + +static void +print_usage(void) +{ + printf("swconfig list\n"); + printf("swconfig dev [port |vlan ] (help|set |get |load |show)\n"); + exit(1); +} + +static void +swconfig_load_uci(struct switch_dev *dev, const char *name) +{ + struct uci_context *ctx; + struct uci_package *p = NULL; + int ret = -1; + + ctx = uci_alloc_context(); + if (!ctx) + return; + + uci_load(ctx, name, &p); + if (!p) { + uci_perror(ctx, "Failed to load config file: "); + goto out; + } + + ret = swlib_apply_from_uci(dev, p); + if (ret < 0) + fprintf(stderr, "Failed to apply configuration for switch '%s'\n", dev->dev_name); + +out: + uci_free_context(ctx); + exit(ret); +} + +int main(int argc, char **argv) +{ + int retval = 0; + struct switch_dev *dev; + struct switch_attr *a; + struct switch_val val; + int i; + + int cmd = CMD_NONE; + char *cdev = NULL; + int cport = -1; + int cvlan = -1; + char *ckey = NULL; + char *cvalue = NULL; + char *csegment = NULL; + + if((argc == 2) && !strcmp(argv[1], "list")) { + swlib_list(); + return 0; + } + + if(argc < 4) + print_usage(); + + if(strcmp(argv[1], "dev")) + print_usage(); + + cdev = argv[2]; + + for(i = 3; i < argc; i++) + { + char *arg = argv[i]; + if (cmd != CMD_NONE) { + print_usage(); + } else if (!strcmp(arg, "port") && i+1 < argc) { + cport = atoi(argv[++i]); + } else if (!strcmp(arg, "vlan") && i+1 < argc) { + cvlan = atoi(argv[++i]); + } else if (!strcmp(arg, "help")) { + cmd = CMD_HELP; + } else if (!strcmp(arg, "set") && i+1 < argc) { + cmd = CMD_SET; + ckey = argv[++i]; + if (i+1 < argc) + cvalue = argv[++i]; + } else if (!strcmp(arg, "get") && i+1 < argc) { + cmd = CMD_GET; + ckey = argv[++i]; + } else if (!strcmp(arg, "load") && i+1 < argc) { + if ((cport >= 0) || (cvlan >= 0)) + print_usage(); + cmd = CMD_LOAD; + ckey = argv[++i]; + } else if (!strcmp(arg, "portmap")) { + if (i + 1 < argc) + csegment = argv[++i]; + cmd = CMD_PORTMAP; + } else if (!strcmp(arg, "show")) { + cmd = CMD_SHOW; + } else { + print_usage(); + } + } + + if (cmd == CMD_NONE) + print_usage(); + if (cport > -1 && cvlan > -1) + print_usage(); + + dev = swlib_connect(cdev); + if (!dev) { + fprintf(stderr, "Failed to connect to the switch. Use the \"list\" command to see which switches are available.\n"); + return 1; + } + + swlib_scan(dev); + + if (cmd == CMD_GET || cmd == CMD_SET) { + if(cport > -1) + a = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_PORT, ckey); + else if(cvlan > -1) + a = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_VLAN, ckey); + else + a = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_GLOBAL, ckey); + + if(!a) + { + fprintf(stderr, "Unknown attribute \"%s\"\n", ckey); + retval = -1; + goto out; + } + } + + switch(cmd) + { + case CMD_SET: + if ((a->type != SWITCH_TYPE_NOVAL) && + (cvalue == NULL)) + print_usage(); + + if(cvlan > -1) + cport = cvlan; + + if(swlib_set_attr_string(dev, a, cport, cvalue) < 0) + { + fprintf(stderr, "failed\n"); + retval = -1; + goto out; + } + break; + case CMD_GET: + if(cvlan > -1) + val.port_vlan = cvlan; + if(cport > -1) + val.port_vlan = cport; + if(swlib_get_attr(dev, a, &val) < 0) + { + fprintf(stderr, "failed\n"); + retval = -1; + goto out; + } + print_attr_val(a, &val); + putchar('\n'); + break; + case CMD_LOAD: + swconfig_load_uci(dev, ckey); + break; + case CMD_HELP: + list_attributes(dev); + break; + case CMD_PORTMAP: + swlib_print_portmap(dev, csegment); + break; + case CMD_SHOW: + if (cport >= 0 || cvlan >= 0) { + if (cport >= 0) + show_port(dev, cport); + else + show_vlan(dev, cvlan, false); + } else { + show_global(dev); + for (i=0; i < dev->ports; i++) + show_port(dev, i); + for (i=0; i < dev->vlans; i++) + show_vlan(dev, i, true); + } + break; + } + +out: + swlib_free_all(dev); + return retval; +} diff --git a/feeds/rtkmipsel/swconfig/src/swlib.c b/feeds/rtkmipsel/swconfig/src/swlib.c new file mode 100644 index 000000000..122250256 --- /dev/null +++ b/feeds/rtkmipsel/swconfig/src/swlib.c @@ -0,0 +1,780 @@ +/* + * swlib.c: Switch configuration API (user space part) + * + * Copyright (C) 2008 Felix Fietkau + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "swlib.h" +#include +#include +#include + +//#define DEBUG 1 +#ifdef DEBUG +#define DPRINTF(fmt, ...) fprintf(stderr, "%s(%d): " fmt, __func__, __LINE__, ##__VA_ARGS__) +#else +#define DPRINTF(fmt, ...) do {} while (0) +#endif + +static struct nl_sock *handle; +static struct nl_cache *cache; +static struct genl_family *family; +static struct nlattr *tb[SWITCH_ATTR_MAX + 1]; +static int refcount = 0; + +static struct nla_policy port_policy[SWITCH_ATTR_MAX] = { + [SWITCH_PORT_ID] = { .type = NLA_U32 }, + [SWITCH_PORT_FLAG_TAGGED] = { .type = NLA_FLAG }, +}; + +static struct nla_policy portmap_policy[SWITCH_PORTMAP_MAX] = { + [SWITCH_PORTMAP_SEGMENT] = { .type = NLA_STRING }, + [SWITCH_PORTMAP_VIRT] = { .type = NLA_U32 }, +}; + +static inline void * +swlib_alloc(size_t size) +{ + void *ptr; + + ptr = malloc(size); + if (!ptr) + goto done; + memset(ptr, 0, size); + +done: + return ptr; +} + +static int +wait_handler(struct nl_msg *msg, void *arg) +{ + int *finished = arg; + + *finished = 1; + return NL_STOP; +} + +/* helper function for performing netlink requests */ +static int +swlib_call(int cmd, int (*call)(struct nl_msg *, void *), + int (*data)(struct nl_msg *, void *), void *arg) +{ + struct nl_msg *msg; + struct nl_cb *cb = NULL; + int finished; + int flags = 0; + int err; + + msg = nlmsg_alloc(); + if (!msg) { + fprintf(stderr, "Out of memory!\n"); + exit(1); + } + + if (!data) + flags |= NLM_F_DUMP; + + genlmsg_put(msg, NL_AUTO_PID, NL_AUTO_SEQ, genl_family_get_id(family), 0, flags, cmd, 0); + if (data) { + if (data(msg, arg) < 0) + goto nla_put_failure; + } + + cb = nl_cb_alloc(NL_CB_CUSTOM); + if (!cb) { + fprintf(stderr, "nl_cb_alloc failed.\n"); + exit(1); + } + + err = nl_send_auto_complete(handle, msg); + if (err < 0) { + fprintf(stderr, "nl_send_auto_complete failed: %d\n", err); + goto out; + } + + finished = 0; + + if (call) + nl_cb_set(cb, NL_CB_VALID, NL_CB_CUSTOM, call, arg); + + if (data) + nl_cb_set(cb, NL_CB_ACK, NL_CB_CUSTOM, wait_handler, &finished); + else + nl_cb_set(cb, NL_CB_FINISH, NL_CB_CUSTOM, wait_handler, &finished); + + err = nl_recvmsgs(handle, cb); + if (err < 0) { + goto out; + } + + if (!finished) + err = nl_wait_for_ack(handle); + +out: + if (cb) + nl_cb_put(cb); +nla_put_failure: + nlmsg_free(msg); + return err; +} + +static int +send_attr(struct nl_msg *msg, void *arg) +{ + struct switch_val *val = arg; + struct switch_attr *attr = val->attr; + + NLA_PUT_U32(msg, SWITCH_ATTR_ID, attr->dev->id); + NLA_PUT_U32(msg, SWITCH_ATTR_OP_ID, attr->id); + switch(attr->atype) { + case SWLIB_ATTR_GROUP_PORT: + NLA_PUT_U32(msg, SWITCH_ATTR_OP_PORT, val->port_vlan); + break; + case SWLIB_ATTR_GROUP_VLAN: + NLA_PUT_U32(msg, SWITCH_ATTR_OP_VLAN, val->port_vlan); + break; + default: + break; + } + + return 0; + +nla_put_failure: + return -1; +} + +static int +store_port_val(struct nl_msg *msg, struct nlattr *nla, struct switch_val *val) +{ + struct nlattr *p; + int ports = val->attr->dev->ports; + int err = 0; + int remaining; + + if (!val->value.ports) + val->value.ports = malloc(sizeof(struct switch_port) * ports); + + nla_for_each_nested(p, nla, remaining) { + struct nlattr *tb[SWITCH_PORT_ATTR_MAX+1]; + struct switch_port *port; + + if (val->len >= ports) + break; + + err = nla_parse_nested(tb, SWITCH_PORT_ATTR_MAX, p, port_policy); + if (err < 0) + goto out; + + if (!tb[SWITCH_PORT_ID]) + continue; + + port = &val->value.ports[val->len]; + port->id = nla_get_u32(tb[SWITCH_PORT_ID]); + port->flags = 0; + if (tb[SWITCH_PORT_FLAG_TAGGED]) + port->flags |= SWLIB_PORT_FLAG_TAGGED; + + val->len++; + } + +out: + return err; +} + +static int +store_val(struct nl_msg *msg, void *arg) +{ + struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); + struct switch_val *val = arg; + + if (!val) + goto error; + + if (nla_parse(tb, SWITCH_ATTR_MAX - 1, genlmsg_attrdata(gnlh, 0), + genlmsg_attrlen(gnlh, 0), NULL) < 0) { + goto error; + } + + if (tb[SWITCH_ATTR_OP_VALUE_INT]) + val->value.i = nla_get_u32(tb[SWITCH_ATTR_OP_VALUE_INT]); + else if (tb[SWITCH_ATTR_OP_VALUE_STR]) + val->value.s = strdup(nla_get_string(tb[SWITCH_ATTR_OP_VALUE_STR])); + else if (tb[SWITCH_ATTR_OP_VALUE_PORTS]) + val->err = store_port_val(msg, tb[SWITCH_ATTR_OP_VALUE_PORTS], val); + + val->err = 0; + return 0; + +error: + return NL_SKIP; +} + +int +swlib_get_attr(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) +{ + int cmd; + int err; + + switch(attr->atype) { + case SWLIB_ATTR_GROUP_GLOBAL: + cmd = SWITCH_CMD_GET_GLOBAL; + break; + case SWLIB_ATTR_GROUP_PORT: + cmd = SWITCH_CMD_GET_PORT; + break; + case SWLIB_ATTR_GROUP_VLAN: + cmd = SWITCH_CMD_GET_VLAN; + break; + default: + return -EINVAL; + } + + memset(&val->value, 0, sizeof(val->value)); + val->len = 0; + val->attr = attr; + val->err = -EINVAL; + err = swlib_call(cmd, store_val, send_attr, val); + if (!err) + err = val->err; + + return err; +} + +static int +send_attr_ports(struct nl_msg *msg, struct switch_val *val) +{ + struct nlattr *n; + int i; + + /* TODO implement multipart? */ + if (val->len == 0) + goto done; + n = nla_nest_start(msg, SWITCH_ATTR_OP_VALUE_PORTS); + if (!n) + goto nla_put_failure; + for (i = 0; i < val->len; i++) { + struct switch_port *port = &val->value.ports[i]; + struct nlattr *np; + + np = nla_nest_start(msg, SWITCH_ATTR_PORT); + if (!np) + goto nla_put_failure; + + NLA_PUT_U32(msg, SWITCH_PORT_ID, port->id); + if (port->flags & SWLIB_PORT_FLAG_TAGGED) + NLA_PUT_FLAG(msg, SWITCH_PORT_FLAG_TAGGED); + + nla_nest_end(msg, np); + } + nla_nest_end(msg, n); +done: + return 0; + +nla_put_failure: + return -1; +} + +static int +send_attr_val(struct nl_msg *msg, void *arg) +{ + struct switch_val *val = arg; + struct switch_attr *attr = val->attr; + + if (send_attr(msg, arg)) + goto nla_put_failure; + + switch(attr->type) { + case SWITCH_TYPE_NOVAL: + break; + case SWITCH_TYPE_INT: + NLA_PUT_U32(msg, SWITCH_ATTR_OP_VALUE_INT, val->value.i); + break; + case SWITCH_TYPE_STRING: + if (!val->value.s) + goto nla_put_failure; + NLA_PUT_STRING(msg, SWITCH_ATTR_OP_VALUE_STR, val->value.s); + break; + case SWITCH_TYPE_PORTS: + if (send_attr_ports(msg, val) < 0) + goto nla_put_failure; + break; + default: + goto nla_put_failure; + } + return 0; + +nla_put_failure: + return -1; +} + +int +swlib_set_attr(struct switch_dev *dev, struct switch_attr *attr, struct switch_val *val) +{ + int cmd; + + switch(attr->atype) { + case SWLIB_ATTR_GROUP_GLOBAL: + cmd = SWITCH_CMD_SET_GLOBAL; + break; + case SWLIB_ATTR_GROUP_PORT: + cmd = SWITCH_CMD_SET_PORT; + break; + case SWLIB_ATTR_GROUP_VLAN: + cmd = SWITCH_CMD_SET_VLAN; + break; + default: + return -EINVAL; + } + + val->attr = attr; + return swlib_call(cmd, NULL, send_attr_val, val); +} + +int swlib_set_attr_string(struct switch_dev *dev, struct switch_attr *a, int port_vlan, const char *str) +{ + struct switch_port *ports; + struct switch_val val; + char *ptr; + + memset(&val, 0, sizeof(val)); + val.port_vlan = port_vlan; + switch(a->type) { + case SWITCH_TYPE_INT: + val.value.i = atoi(str); + break; + case SWITCH_TYPE_STRING: + val.value.s = str; + break; + case SWITCH_TYPE_PORTS: + ports = alloca(sizeof(struct switch_port) * dev->ports); + memset(ports, 0, sizeof(struct switch_port) * dev->ports); + val.len = 0; + ptr = (char *)str; + while(ptr && *ptr) + { + while(*ptr && isspace(*ptr)) + ptr++; + + if (!*ptr) + break; + + if (!isdigit(*ptr)) + return -1; + + if (val.len >= dev->ports) + return -1; + + ports[val.len].flags = 0; + ports[val.len].id = strtoul(ptr, &ptr, 10); + while(*ptr && !isspace(*ptr)) { + if (*ptr == 't') + ports[val.len].flags |= SWLIB_PORT_FLAG_TAGGED; + else + return -1; + + ptr++; + } + if (*ptr) + ptr++; + val.len++; + } + val.value.ports = ports; + break; + case SWITCH_TYPE_NOVAL: + if (str && !strcmp(str, "0")) + return 0; + + break; + default: + return -1; + } + return swlib_set_attr(dev, a, &val); +} + + +struct attrlist_arg { + int id; + int atype; + struct switch_dev *dev; + struct switch_attr *prev; + struct switch_attr **head; +}; + +static int +add_id(struct nl_msg *msg, void *arg) +{ + struct attrlist_arg *l = arg; + + NLA_PUT_U32(msg, SWITCH_ATTR_ID, l->id); + + return 0; +nla_put_failure: + return -1; +} + +static int +add_attr(struct nl_msg *msg, void *ptr) +{ + struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); + struct attrlist_arg *arg = ptr; + struct switch_attr *new; + + if (nla_parse(tb, SWITCH_ATTR_MAX - 1, genlmsg_attrdata(gnlh, 0), + genlmsg_attrlen(gnlh, 0), NULL) < 0) + goto done; + + new = swlib_alloc(sizeof(struct switch_attr)); + if (!new) + goto done; + + new->dev = arg->dev; + new->atype = arg->atype; + if (arg->prev) { + arg->prev->next = new; + } else { + arg->prev = *arg->head; + } + *arg->head = new; + arg->head = &new->next; + + if (tb[SWITCH_ATTR_OP_ID]) + new->id = nla_get_u32(tb[SWITCH_ATTR_OP_ID]); + if (tb[SWITCH_ATTR_OP_TYPE]) + new->type = nla_get_u32(tb[SWITCH_ATTR_OP_TYPE]); + if (tb[SWITCH_ATTR_OP_NAME]) + new->name = strdup(nla_get_string(tb[SWITCH_ATTR_OP_NAME])); + if (tb[SWITCH_ATTR_OP_DESCRIPTION]) + new->description = strdup(nla_get_string(tb[SWITCH_ATTR_OP_DESCRIPTION])); + +done: + return NL_SKIP; +} + +int +swlib_scan(struct switch_dev *dev) +{ + struct attrlist_arg arg; + + if (dev->ops || dev->port_ops || dev->vlan_ops) + return 0; + + arg.atype = SWLIB_ATTR_GROUP_GLOBAL; + arg.dev = dev; + arg.id = dev->id; + arg.prev = NULL; + arg.head = &dev->ops; + swlib_call(SWITCH_CMD_LIST_GLOBAL, add_attr, add_id, &arg); + + arg.atype = SWLIB_ATTR_GROUP_PORT; + arg.prev = NULL; + arg.head = &dev->port_ops; + swlib_call(SWITCH_CMD_LIST_PORT, add_attr, add_id, &arg); + + arg.atype = SWLIB_ATTR_GROUP_VLAN; + arg.prev = NULL; + arg.head = &dev->vlan_ops; + swlib_call(SWITCH_CMD_LIST_VLAN, add_attr, add_id, &arg); + + return 0; +} + +struct switch_attr *swlib_lookup_attr(struct switch_dev *dev, + enum swlib_attr_group atype, const char *name) +{ + struct switch_attr *head; + + if (!name || !dev) + return NULL; + + switch(atype) { + case SWLIB_ATTR_GROUP_GLOBAL: + head = dev->ops; + break; + case SWLIB_ATTR_GROUP_PORT: + head = dev->port_ops; + break; + case SWLIB_ATTR_GROUP_VLAN: + head = dev->vlan_ops; + break; + } + while(head) { + if (!strcmp(name, head->name)) + return head; + head = head->next; + } + + return NULL; +} + +static void +swlib_priv_free(void) +{ + if (cache) + nl_cache_free(cache); + if (handle) + nl_socket_free(handle); + handle = NULL; + cache = NULL; +} + +static int +swlib_priv_init(void) +{ + int ret; + + handle = nl_socket_alloc(); + if (!handle) { + DPRINTF("Failed to create handle\n"); + goto err; + } + + if (genl_connect(handle)) { + DPRINTF("Failed to connect to generic netlink\n"); + goto err; + } + + ret = genl_ctrl_alloc_cache(handle, &cache); + if (ret < 0) { + DPRINTF("Failed to allocate netlink cache\n"); + goto err; + } + + family = genl_ctrl_search_by_name(cache, "switch"); + if (!family) { + DPRINTF("Switch API not present\n"); + goto err; + } + return 0; + +err: + swlib_priv_free(); + return -EINVAL; +} + +struct swlib_scan_arg { + const char *name; + struct switch_dev *head; + struct switch_dev *ptr; +}; + +static int +add_port_map(struct switch_dev *dev, struct nlattr *nla) +{ + struct nlattr *p; + int err = 0, idx = 0; + int remaining; + + dev->maps = malloc(sizeof(struct switch_portmap) * dev->ports); + if (!dev->maps) + return -1; + memset(dev->maps, 0, sizeof(struct switch_portmap) * dev->ports); + + nla_for_each_nested(p, nla, remaining) { + struct nlattr *tb[SWITCH_PORTMAP_MAX+1]; + + if (idx >= dev->ports) + continue; + + err = nla_parse_nested(tb, SWITCH_PORTMAP_MAX, p, portmap_policy); + if (err < 0) + continue; + + + if (tb[SWITCH_PORTMAP_SEGMENT] && tb[SWITCH_PORTMAP_VIRT]) { + dev->maps[idx].segment = strdup(nla_get_string(tb[SWITCH_PORTMAP_SEGMENT])); + dev->maps[idx].virt = nla_get_u32(tb[SWITCH_PORTMAP_VIRT]); + } + idx++; + } + +out: + return err; +} + + +static int +add_switch(struct nl_msg *msg, void *arg) +{ + struct swlib_scan_arg *sa = arg; + struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); + struct switch_dev *dev; + const char *name; + const char *alias; + + if (nla_parse(tb, SWITCH_ATTR_MAX, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), NULL) < 0) + goto done; + + if (!tb[SWITCH_ATTR_DEV_NAME]) + goto done; + + name = nla_get_string(tb[SWITCH_ATTR_DEV_NAME]); + alias = nla_get_string(tb[SWITCH_ATTR_ALIAS]); + + if (sa->name && (strcmp(name, sa->name) != 0) && (strcmp(alias, sa->name) != 0)) + goto done; + + dev = swlib_alloc(sizeof(struct switch_dev)); + if (!dev) + goto done; + + strncpy(dev->dev_name, name, IFNAMSIZ - 1); + dev->alias = strdup(alias); + if (tb[SWITCH_ATTR_ID]) + dev->id = nla_get_u32(tb[SWITCH_ATTR_ID]); + if (tb[SWITCH_ATTR_NAME]) + dev->name = strdup(nla_get_string(tb[SWITCH_ATTR_NAME])); + if (tb[SWITCH_ATTR_PORTS]) + dev->ports = nla_get_u32(tb[SWITCH_ATTR_PORTS]); + if (tb[SWITCH_ATTR_VLANS]) + dev->vlans = nla_get_u32(tb[SWITCH_ATTR_VLANS]); + if (tb[SWITCH_ATTR_CPU_PORT]) + dev->cpu_port = nla_get_u32(tb[SWITCH_ATTR_CPU_PORT]); + if (tb[SWITCH_ATTR_PORTMAP]) + add_port_map(dev, tb[SWITCH_ATTR_PORTMAP]); + + if (!sa->head) { + sa->head = dev; + sa->ptr = dev; + } else { + sa->ptr->next = dev; + sa->ptr = dev; + } + + refcount++; +done: + return NL_SKIP; +} + +static int +list_switch(struct nl_msg *msg, void *arg) +{ + struct genlmsghdr *gnlh = nlmsg_data(nlmsg_hdr(msg)); + + if (nla_parse(tb, SWITCH_ATTR_MAX, genlmsg_attrdata(gnlh, 0), genlmsg_attrlen(gnlh, 0), NULL) < 0) + goto done; + + if (!tb[SWITCH_ATTR_DEV_NAME] || !tb[SWITCH_ATTR_NAME]) + goto done; + + printf("Found: %s - %s\n", nla_get_string(tb[SWITCH_ATTR_DEV_NAME]), + nla_get_string(tb[SWITCH_ATTR_ALIAS])); + +done: + return NL_SKIP; +} + +void +swlib_list(void) +{ + if (swlib_priv_init() < 0) + return; + swlib_call(SWITCH_CMD_GET_SWITCH, list_switch, NULL, NULL); + swlib_priv_free(); +} + +void +swlib_print_portmap(struct switch_dev *dev, char *segment) +{ + int i; + + if (segment) { + if (!strcmp(segment, "cpu")) { + printf("%d ", dev->cpu_port); + } else if (!strcmp(segment, "disabled")) { + for (i = 0; i < dev->ports; i++) + if (!dev->maps[i].segment) + printf("%d ", i); + } else for (i = 0; i < dev->ports; i++) { + if (dev->maps[i].segment && !strcmp(dev->maps[i].segment, segment)) + printf("%d ", i); + } + } else { + printf("%s - %s\n", dev->dev_name, dev->name); + for (i = 0; i < dev->ports; i++) + if (i == dev->cpu_port) + printf("port%d:\tcpu\n", i); + else if (dev->maps[i].segment) + printf("port%d:\t%s.%d\n", i, dev->maps[i].segment, dev->maps[i].virt); + else + printf("port%d:\tdisabled\n", i); + } +} + +struct switch_dev * +swlib_connect(const char *name) +{ + struct swlib_scan_arg arg; + + if (!refcount) { + if (swlib_priv_init() < 0) + return NULL; + }; + + arg.head = NULL; + arg.ptr = NULL; + arg.name = name; + swlib_call(SWITCH_CMD_GET_SWITCH, add_switch, NULL, &arg); + + if (!refcount) + swlib_priv_free(); + + return arg.head; +} + +static void +swlib_free_attributes(struct switch_attr **head) +{ + struct switch_attr *a = *head; + struct switch_attr *next; + + while (a) { + next = a->next; + free(a); + a = next; + } + *head = NULL; +} + +void +swlib_free(struct switch_dev *dev) +{ + swlib_free_attributes(&dev->ops); + swlib_free_attributes(&dev->port_ops); + swlib_free_attributes(&dev->vlan_ops); + free(dev); + + if (--refcount == 0) + swlib_priv_free(); +} + +void +swlib_free_all(struct switch_dev *dev) +{ + struct switch_dev *p; + + while (dev) { + p = dev->next; + swlib_free(dev); + dev = p; + } +} diff --git a/feeds/rtkmipsel/swconfig/src/swlib.h b/feeds/rtkmipsel/swconfig/src/swlib.h new file mode 100644 index 000000000..016f74b4f --- /dev/null +++ b/feeds/rtkmipsel/swconfig/src/swlib.h @@ -0,0 +1,252 @@ +/* + * swlib.h: Switch configuration API (user space part) + * + * Copyright (C) 2008-2009 Felix Fietkau + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public License + * version 2.1 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + +Usage of the library functions: + + The main datastructure for a switch is the struct switch_device + To get started, you first need to use switch_connect() to probe + for switches and allocate an instance of this struct. + + There are two possible usage modes: + dev = switch_connect("eth0"); + - this call will look for a switch registered for the linux device + "eth0" and only allocate a switch_device for this particular switch. + + dev = switch_connect(NULL) + - this will return one switch_device struct for each available + switch. The switch_device structs are chained with by ->next pointer + + Then to query a switch for all available attributes, use: + swlib_scan(dev); + + All allocated datastructures for the switch_device struct can be freed with + swlib_free(dev); + or + swlib_free_all(dev); + + The latter traverses a whole chain of switch_device structs and frees them all + + Switch attributes (struct switch_attr) are divided into three groups: + dev->ops: + - global settings + dev->port_ops: + - per-port settings + dev->vlan_ops: + - per-vlan settings + + switch_lookup_attr() is a small helper function to locate attributes + by name. + + switch_set_attr() and switch_get_attr() can alter or request the values + of attributes. + +Usage of the switch_attr struct: + + ->atype: attribute group, one of: + - SWLIB_ATTR_GROUP_GLOBAL + - SWLIB_ATTR_GROUP_VLAN + - SWLIB_ATTR_GROUP_PORT + + ->id: identifier for the attribute + + ->type: data type, one of: + - SWITCH_TYPE_INT + - SWITCH_TYPE_STRING + - SWITCH_TYPE_PORT + + ->name: short name of the attribute + ->description: longer description + ->next: pointer to the next attribute of the current group + + +Usage of the switch_val struct: + + When setting attributes, following members of the struct switch_val need + to be set up: + + ->len (for attr->type == SWITCH_TYPE_PORT) + ->port_vlan: + - port number (for attr->atype == SWLIB_ATTR_GROUP_PORT), or: + - vlan number (for attr->atype == SWLIB_ATTR_GROUP_VLAN) + ->value.i (for attr->type == SWITCH_TYPE_INT) + ->value.s (for attr->type == SWITCH_TYPE_STRING) + - owned by the caller, not stored in the library internally + ->value.ports (for attr->type == SWITCH_TYPE_PORT) + - must point to an array of at lest val->len * sizeof(struct switch_port) + + When getting string attributes, val->value.s must be freed by the caller + When getting port list attributes, an internal static buffer is used, + which changes from call to call. + + */ + +#ifndef __SWLIB_H +#define __SWLIB_H + +enum swlib_attr_group { + SWLIB_ATTR_GROUP_GLOBAL, + SWLIB_ATTR_GROUP_VLAN, + SWLIB_ATTR_GROUP_PORT, +}; + +enum swlib_port_flags { + SWLIB_PORT_FLAG_TAGGED = (1 << 0), +}; + + +struct switch_dev; +struct switch_attr; +struct switch_port; +struct switch_port_map; +struct switch_val; +struct uci_package; + +struct switch_dev { + int id; + char dev_name[IFNAMSIZ]; + const char *name; + const char *alias; + int ports; + int vlans; + int cpu_port; + struct switch_attr *ops; + struct switch_attr *port_ops; + struct switch_attr *vlan_ops; + struct switch_portmap *maps; + struct switch_dev *next; + void *priv; +}; + +struct switch_val { + struct switch_attr *attr; + int len; + int err; + int port_vlan; + union { + const char *s; + int i; + struct switch_port *ports; + } value; +}; + +struct switch_attr { + struct switch_dev *dev; + int atype; + int id; + int type; + const char *name; + const char *description; + struct switch_attr *next; +}; + +struct switch_port { + unsigned int id; + unsigned int flags; +}; + +struct switch_portmap { + unsigned int virt; + const char *segment; +}; + +/** + * swlib_list: list all switches + */ +void swlib_list(void); + +/** + * swlib_print_portmap: get portmap + * @dev: switch device struct + */ +void swlib_print_portmap(struct switch_dev *dev, char *segment); + +/** + * swlib_connect: connect to the switch through netlink + * @name: name of the ethernet interface, + * + * if name is NULL, it connect and builds a chain of all switches + */ +struct switch_dev *swlib_connect(const char *name); + +/** + * swlib_free: free all dynamically allocated data for the switch connection + * @dev: switch device struct + * + * all members of a switch device chain (generated by swlib_connect(NULL)) + * must be freed individually + */ +void swlib_free(struct switch_dev *dev); + +/** + * swlib_free_all: run swlib_free on all devices in the chain + * @dev: switch device struct + */ +void swlib_free_all(struct switch_dev *dev); + +/** + * swlib_scan: probe the switch driver for available commands/attributes + * @dev: switch device struct + */ +int swlib_scan(struct switch_dev *dev); + +/** + * swlib_lookup_attr: look up a switch attribute + * @dev: switch device struct + * @type: global, port or vlan + * @name: name of the attribute + */ +struct switch_attr *swlib_lookup_attr(struct switch_dev *dev, + enum swlib_attr_group atype, const char *name); + +/** + * swlib_set_attr: set the value for an attribute + * @dev: switch device struct + * @attr: switch attribute struct + * @val: attribute value pointer + * returns 0 on success + */ +int swlib_set_attr(struct switch_dev *dev, struct switch_attr *attr, + struct switch_val *val); + +/** + * swlib_set_attr_string: set the value for an attribute with type conversion + * @dev: switch device struct + * @attr: switch attribute struct + * @port_vlan: port or vlan (if applicable) + * @str: string value + * returns 0 on success + */ +int swlib_set_attr_string(struct switch_dev *dev, struct switch_attr *attr, + int port_vlan, const char *str); + +/** + * swlib_get_attr: get the value for an attribute + * @dev: switch device struct + * @attr: switch attribute struct + * @val: attribute value pointer + * returns 0 on success + * for string attributes, the result string must be freed by the caller + */ +int swlib_get_attr(struct switch_dev *dev, struct switch_attr *attr, + struct switch_val *val); + +/** + * swlib_apply_from_uci: set up the switch from a uci configuration + * @dev: switch device struct + * @p: uci package which contains the desired global config + */ +int swlib_apply_from_uci(struct switch_dev *dev, struct uci_package *p); + +#endif diff --git a/feeds/rtkmipsel/swconfig/src/uci.c b/feeds/rtkmipsel/swconfig/src/uci.c new file mode 100644 index 000000000..bbeeb0311 --- /dev/null +++ b/feeds/rtkmipsel/swconfig/src/uci.c @@ -0,0 +1,246 @@ +/* + * uci.c: UCI binding for the switch configuration utility + * + * Copyright (C) 2009 Felix Fietkau + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundatio. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include "swlib.h" + +#ifndef ARRAY_SIZE +#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0])) +#endif + +struct swlib_setting { + struct switch_attr *attr; + const char *name; + int port_vlan; + const char *val; + struct swlib_setting *next; +}; + +struct swlib_setting early_settings[] = { + { .name = "reset", .val = "1" }, + { .name = "enable_vlan", .val = "1" }, +}; + +static struct swlib_setting *settings; +static struct swlib_setting **head; + +static bool swlib_match_name(struct switch_dev *dev, const char *name) +{ + return (strcmp(name, dev->dev_name) == 0 || + strcmp(name, dev->alias) == 0); +} + +static int +swlib_map_settings(struct switch_dev *dev, int type, int port_vlan, struct uci_section *s) +{ + struct swlib_setting *setting; + struct switch_attr *attr; + struct uci_element *e; + struct uci_option *o; + + uci_foreach_element(&s->options, e) { + o = uci_to_option(e); + + if (o->type != UCI_TYPE_STRING) + continue; + + if (!strcmp(e->name, "device")) + continue; + + /* map early settings */ + if (type == SWLIB_ATTR_GROUP_GLOBAL) { + int i; + + for (i = 0; i < ARRAY_SIZE(early_settings); i++) { + if (strcmp(e->name, early_settings[i].name) != 0) + continue; + + early_settings[i].val = o->v.string; + goto skip; + } + } + + attr = swlib_lookup_attr(dev, type, e->name); + if (!attr) + continue; + + setting = malloc(sizeof(struct swlib_setting)); + memset(setting, 0, sizeof(struct swlib_setting)); + setting->attr = attr; + setting->port_vlan = port_vlan; + setting->val = o->v.string; + *head = setting; + head = &setting->next; +skip: + continue; + } +} + +int swlib_apply_from_uci(struct switch_dev *dev, struct uci_package *p) +{ + struct switch_attr *attr; + struct uci_element *e; + struct uci_section *s; + struct uci_option *o; + struct uci_ptr ptr; + struct switch_val val; + int i; + + settings = NULL; + head = &settings; + + uci_foreach_element(&p->sections, e) { + struct uci_element *n; + + s = uci_to_section(e); + + if (strcmp(s->type, "switch") != 0) + continue; + + uci_foreach_element(&s->options, n) { + struct uci_option *o = uci_to_option(n); + + if (strcmp(n->name, "name") != 0) + continue; + + if (o->type != UCI_TYPE_STRING) + continue; + + if (swlib_match_name(dev, o->v.string)) + goto found; + + break; + } + + if (!swlib_match_name(dev, e->name)) + continue; + + goto found; + } + + /* not found */ + return -1; + +found: + /* look up available early options, which need to be taken care + * of in the correct order */ + for (i = 0; i < ARRAY_SIZE(early_settings); i++) { + early_settings[i].attr = swlib_lookup_attr(dev, + SWLIB_ATTR_GROUP_GLOBAL, early_settings[i].name); + } + swlib_map_settings(dev, SWLIB_ATTR_GROUP_GLOBAL, 0, s); + + /* look for port or vlan sections */ + uci_foreach_element(&p->sections, e) { + struct uci_element *os; + s = uci_to_section(e); + + if (!strcmp(s->type, "switch_port")) { + char *devn, *port, *port_err = NULL; + int port_n; + + uci_foreach_element(&s->options, os) { + o = uci_to_option(os); + if (o->type != UCI_TYPE_STRING) + continue; + + if (!strcmp(os->name, "device")) { + devn = o->v.string; + if (!swlib_match_name(dev, devn)) + devn = NULL; + } else if (!strcmp(os->name, "port")) { + port = o->v.string; + } + } + if (!devn || !port || !port[0]) + continue; + + port_n = strtoul(port, &port_err, 0); + if (port_err && port_err[0]) + continue; + + swlib_map_settings(dev, SWLIB_ATTR_GROUP_PORT, port_n, s); + } else if (!strcmp(s->type, "switch_vlan")) { + char *devn, *vlan, *vlan_err = NULL; + int vlan_n; + + uci_foreach_element(&s->options, os) { + o = uci_to_option(os); + if (o->type != UCI_TYPE_STRING) + continue; + + if (!strcmp(os->name, "device")) { + devn = o->v.string; + if (!swlib_match_name(dev, devn)) + devn = NULL; + } else if (!strcmp(os->name, "vlan")) { + vlan = o->v.string; + } + } + if (!devn || !vlan || !vlan[0]) + continue; + + vlan_n = strtoul(vlan, &vlan_err, 0); + if (vlan_err && vlan_err[0]) + continue; + + swlib_map_settings(dev, SWLIB_ATTR_GROUP_VLAN, vlan_n, s); + } + } + + for (i = 0; i < ARRAY_SIZE(early_settings); i++) { + struct swlib_setting *st = &early_settings[i]; + if (!st->attr || !st->val) + continue; + swlib_set_attr_string(dev, st->attr, st->port_vlan, st->val); + + } + + while (settings) { + struct swlib_setting *st = settings; + + swlib_set_attr_string(dev, st->attr, st->port_vlan, st->val); + st = st->next; + free(settings); + settings = st; + } + + /* Apply the config */ + attr = swlib_lookup_attr(dev, SWLIB_ATTR_GROUP_GLOBAL, "apply"); + if (!attr) + return 0; + + memset(&val, 0, sizeof(val)); + swlib_set_attr(dev, attr, &val); + + return 0; +} diff --git a/patches/rtkmipsel/0001-tools-add-realtek-image-building-code.patch b/patches/rtkmipsel/0001-tools-add-realtek-image-building-code.patch new file mode 100644 index 000000000..cda468c53 --- /dev/null +++ b/patches/rtkmipsel/0001-tools-add-realtek-image-building-code.patch @@ -0,0 +1,1056 @@ +From d673a23639860e21ef87c4c455018c4b6245868a Mon Sep 17 00:00:00 2001 +From: John Crispin +Date: Wed, 3 Nov 2021 14:32:11 +0100 +Subject: [PATCH] tools: add realtek image building code + +Signed-off-by: John Crispin +--- + tools/Makefile | 1 + + tools/rtk-tools/Makefile | 50 ++++ + tools/rtk-tools/src/apmib.h | 77 +++++++ + tools/rtk-tools/src/cvimg.c | 443 ++++++++++++++++++++++++++++++++++++ + tools/rtk-tools/src/mgbin.c | 429 ++++++++++++++++++++++++++++++++++ + 5 files changed, 1000 insertions(+) + create mode 100644 tools/rtk-tools/Makefile + create mode 100644 tools/rtk-tools/src/apmib.h + create mode 100644 tools/rtk-tools/src/cvimg.c + create mode 100644 tools/rtk-tools/src/mgbin.c + +diff --git a/tools/Makefile b/tools/Makefile +index ae3cc5dfd6..a2d49967e7 100644 +--- a/tools/Makefile ++++ b/tools/Makefile +@@ -36,6 +36,7 @@ tools-$(CONFIG_TARGET_tegra) += cbootimage cbootimage-configs + tools-$(CONFIG_USES_MINOR) += kernel2minor + tools-$(CONFIG_USE_SPARSE) += sparse + tools-$(CONFIG_USE_LLVM_BUILD) += llvm-bpf ++tools-$(CONFIG_TARGET_rtkmipsel) += rtk-tools + + # builddir dependencies + $(curdir)/autoconf/compile := $(curdir)/m4/compile +diff --git a/tools/rtk-tools/Makefile b/tools/rtk-tools/Makefile +new file mode 100644 +index 0000000000..a7f79c04b6 +--- /dev/null ++++ b/tools/rtk-tools/Makefile +@@ -0,0 +1,50 @@ ++# ++# Copyright (C) 2006-2010 OpenWrt.org ++# ++# This is free software, licensed under the GNU General Public License v2. ++# See /LICENSE for more information. ++# ++ ++include $(TOPDIR)/rules.mk ++ ++PKG_NAME:=rtk-tools ++PKG_VERSION:=0.1 ++ ++HOST_BUILD_DIR:=$(BUILD_DIR_HOST)/${PKG_NAME}-$(PKG_VERSION) ++HOST_CFLAGS += -DCOMPACT_FILENAME_BUFFER -DHOME_GATEWAY ++ ++include $(INCLUDE_DIR)/host-build.mk ++ ++define Host/Compile ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_8196C src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl8196c ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_8196C src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl8196c ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_8196E src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl8196e ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_8196E src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl8196e ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl819xd ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl819xd ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl819xdt ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl819xdt ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl89xxd ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl8198c ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl8954e ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl8197f ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl89xxd ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl8198c ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl8954e ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_819XD src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl8197f ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_8881A src/cvimg.c -o $(HOST_BUILD_DIR)/cvimg-rtl8881a ++ $(HOSTCC) $(HOST_CFLAGS) -DCONFIG_RTL_8881A src/mgbin.c -o $(HOST_BUILD_DIR)/mgbin-rtl8881a ++endef ++ ++define Host/Install ++ $(INSTALL_DIR) $(STAGING_DIR_HOST)/bin ++ $(INSTALL_BIN) $(HOST_BUILD_DIR)/cvimg* $(STAGING_DIR_HOST)/bin/ ++ $(INSTALL_BIN) $(HOST_BUILD_DIR)/mgbin* $(STAGING_DIR_HOST)/bin/ ++endef ++ ++define Host/Clean ++ rm -f $(STAGING_DIR_HOST)/bin/cvimg* ++ rm -f $(STAGING_DIR_HOST)/bin/mgbin* ++endef ++ ++$(eval $(call HostBuild)) +diff --git a/tools/rtk-tools/src/apmib.h b/tools/rtk-tools/src/apmib.h +new file mode 100644 +index 0000000000..bf7257efa1 +--- /dev/null ++++ b/tools/rtk-tools/src/apmib.h +@@ -0,0 +1,77 @@ ++#ifndef __APMIB_H ++#define __APMIB_H ++ ++#ifndef WIN32 ++#define __PACK__ __attribute__ ((packed)) ++#else ++#define __PACK__ ++#endif ++ ++#define BOOT_HEADER ((char *)"boot") ++ ++#if defined(CONFIG_RTL_8196B) ++#define ROOT_HEADER ((char *)"r6br") ++#elif defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8881A) ++#define ROOT_HEADER ((char *)"r6cr") ++#else ++#define ROOT_HEADER ((char *)"root") ++#endif //#if defined(CONFIG_RTL_8196B) ++ ++#if defined(CONFIG_RTL_8196B) ++#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) ++#define WEB_HEADER ((char *)"w6bv") ++#elif (defined(HOME_GATEWAY)) ++#define WEB_HEADER ((char *)"w6bg") ++#else ++#define WEB_HEADER ((char *)"w6ba") ++#endif ++#elif defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8881A) ++#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) ++#define WEB_HEADER ((char *)"w6cv") ++#elif (defined(HOME_GATEWAY)) ++#define WEB_HEADER ((char *)"w6cg") ++#else ++#define WEB_HEADER ((char *)"w6ca") ++#endif ++#else ++#if (defined(HOME_GATEWAY) && defined(VPN_SUPPORT)) ++#define WEB_HEADER ((char *)"webv") ++#elif (defined(HOME_GATEWAY)) ++#define WEB_HEADER ((char *)"webg") ++#else ++#define WEB_HEADER ((char *)"weba") ++#endif ++#endif //#if defined(CONFIG_RTL_8196B) ++ ++#if defined(CONFIG_RTL_8196B) ++#define FW_HEADER_WITH_ROOT ((char *)"cr6b") ++#define FW_HEADER ((char *)"cs6b") ++#elif defined(CONFIG_RTL_8196C) || defined(CONFIG_RTL_8198) || defined(CONFIG_RTL_819XD) || defined(CONFIG_RTL_8196E) || defined(CONFIG_RTL_8881A) ++#define FW_HEADER_WITH_ROOT ((char *)"cr6c") ++#define FW_HEADER ((char *)"cs6c") ++#else ++#define FW_HEADER_WITH_ROOT ((char *)"csro") ++#define FW_HEADER ((char *)"csys") ++#endif //#if defined(CONFIG_RTL_8196B) ++ ++#define ALL_HEADER ((char *)"allp") ++ ++#define HW_SETTING_OFFSET 0x6000 ++#define DEFAULT_SETTING_OFFSET 0x8000 ++#define CURRENT_SETTING_OFFSET 0xc000 ++ ++#define DWORD_SWAP(v) ( (((v&0xff)<<24)&0xff000000) | ((((v>>8)&0xff)<<16)&0xff0000) | \ ++ ((((v>>16)&0xff)<<8)&0xff00) | (((v>>24)&0xff)&0xff) ) ++ ++#define WORD_SWAP(v) ((unsigned short)(((v>>8)&0xff) | ((v<<8)&0xff00))) ++ ++#define SIGNATURE_LEN 4 ++ ++typedef struct img_header { ++ unsigned char signature[SIGNATURE_LEN]; ++ unsigned int startAddr; ++ unsigned int burnAddr; ++ unsigned int len; ++}__PACK__ IMG_HEADER_T, *IMG_HEADER_Tp; ++ ++#endif +diff --git a/tools/rtk-tools/src/cvimg.c b/tools/rtk-tools/src/cvimg.c +new file mode 100644 +index 0000000000..de681d803e +--- /dev/null ++++ b/tools/rtk-tools/src/cvimg.c +@@ -0,0 +1,443 @@ ++/* ++ * Tool to convert ELF image to be the AP downloadable binary ++ * ++ * Authors: David Hsu ++ * ++ * $Id: cvimg.c,v 1.4 2009/06/12 07:10:44 michael Exp $ ++ * ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#undef HOME_GATEWAY ++#define HOME_GATEWAY ++#define RTK_4K_CHKSUM_FIX ++ ++#include "apmib.h" ++ ++/* 32-bit ELF base types. */ ++typedef unsigned int Elf32_Addr; ++typedef unsigned short Elf32_Half; ++typedef unsigned int Elf32_Off; ++typedef unsigned int Elf32_Word; ++ ++#define EI_NIDENT 16 ++ ++typedef struct elf32_hdr{ ++ unsigned char e_ident[EI_NIDENT]; ++ Elf32_Half e_type; ++ Elf32_Half e_machine; ++ Elf32_Word e_version; ++ Elf32_Addr e_entry; /* Entry point */ ++ Elf32_Off e_phoff; ++ Elf32_Off e_shoff; ++ Elf32_Word e_flags; ++ Elf32_Half e_ehsize; ++ Elf32_Half e_phentsize; ++ Elf32_Half e_phnum; ++ Elf32_Half e_shentsize; ++ Elf32_Half e_shnum; ++ Elf32_Half e_shstrndx; ++} Elf32_Ehdr; ++ ++#define DEFAULT_START_ADDR 0x80500000 ++#define DEFAULT_BASE_ADDR 0x80000000 ++ ++static unsigned short calculateChecksum(char *buf, int len); ++ ++///////////////////////////////////////////////////////// ++static unsigned int calculate_long_checksum(unsigned int *buf, int len) ++{ ++ int i, j; ++ unsigned int sum=0, tmp; ++ ++ j = len/4; ++ ++ for (i=0; i input-filename output-filename start-addr burn-addr [signature]\n"); ++ printf("