diff --git a/.gitignore b/.gitignore index af8ad0829..0971eb155 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,4 @@ Module.symvers modules.order *.mod.c .tmp_versions +.cache.mk diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..f1b6e4613 --- /dev/null +++ b/.travis.yml @@ -0,0 +1,93 @@ +language: c +compiler: gcc +sudo: required + +before_install: + - export ALL_DEB=$(wget --quiet -O - ${KERNEL_URL}v${KVER}/ | grep -o 'href=".*"' | grep -m1 all | cut -d '"' -f 2) + - export KVER_BUILD=$(echo $ALL_DEB | cut -d '_' -f 1 | cut -c15-) + - wget ${KERNEL_URL}v${KVER}/$(wget --quiet -O - ${KERNEL_URL}v${KVER}/ | grep -o 'href=".*"' | grep headers | grep generic | grep -m1 amd64 | cut -d '"' -f 2) + - wget ${KERNEL_URL}v${KVER}/$ALL_DEB + - sudo dpkg -i *.deb + +script: + - gcc --version + - make CC=$COMPILER KVER=$KVER_BUILD-generic + +env: + global: + - KERNEL_URL=http://kernel.ubuntu.com/~kernel-ppa/mainline/ + +matrix: + include: + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=4.15 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-6 + env: COMPILER=gcc-6 KVER=4.15 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + env: COMPILER=gcc-7 KVER=4.15 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=4.14 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-6 + env: COMPILER=gcc-6 KVER=4.14 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-7 + env: COMPILER=gcc-7 KVER=4.14 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=4.4.97 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-4.9 + env: COMPILER=gcc-4.9 KVER=3.16.50 + - compiler: gcc + addons: + apt: + sources: + - ubuntu-toolchain-r-test + packages: + - gcc-5 + env: COMPILER=gcc-5 KVER=3.14.79 diff --git a/Kconfig b/Kconfig index f87653d5a..16d3567ad 100644 --- a/Kconfig +++ b/Kconfig @@ -4,3 +4,8 @@ config RTL8812AU ---help--- Help message of RTL8812AU +config RTL8814AU + tristate "Realtek 8814A USB WiFi" + depends on USB + ---help--- + Help message of RTL8814AU diff --git a/LICENSE b/LICENSE new file mode 100644 index 000000000..d159169d1 --- /dev/null +++ b/LICENSE @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/Makefile b/Makefile index 64a470cb4..c3057cd99 100755 --- a/Makefile +++ b/Makefile @@ -1,8 +1,8 @@ EXTRA_CFLAGS += $(USER_EXTRA_CFLAGS) -EXTRA_CFLAGS += -O2 +EXTRA_CFLAGS += -O1 #EXTRA_CFLAGS += -O3 -#EXTRA_CFLAGS += -Wall -#EXTRA_CFLAGS += -Wextra +EXTRA_CFLAGS += -Wall +EXTRA_CFLAGS += -Wextra #EXTRA_CFLAGS += -Werror #EXTRA_CFLAGS += -pedantic #EXTRA_CFLAGS += -Wshadow -Wpointer-arith -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes @@ -13,8 +13,19 @@ EXTRA_CFLAGS += -Wno-unused-label EXTRA_CFLAGS += -Wno-unused-parameter EXTRA_CFLAGS += -Wno-unused-function EXTRA_CFLAGS += -Wno-unused -#EXTRA_CFLAGS += -Wno-uninitialized -EXTRA_CFLAGS += -Wno-error=date-time # Fix compile error on gcc 4.9 and later +EXTRA_CFLAGS += -Wno-date-time +EXTRA_CFLAGS += -Wno-misleading-indentation +EXTRA_CFLAGS += -Wno-uninitialized + +GCC_VER_49 := $(shell echo `$(CC) -dumpversion | cut -f1-2 -d.` \>= 4.9 | bc ) +ifeq ($(GCC_VER_49),1) +EXTRA_CFLAGS += -Wno-date-time # Fix compile error && warning on gcc 4.9 and later +endif + +# Relax some warnings from '-Wextra' so we won't get flooded with warnings +EXTRA_CFLAGS += -Wno-sign-compare +EXTRA_CFLAGS += -Wno-missing-field-initializers +EXTRA_CFLAGS += -Wno-type-limits EXTRA_CFLAGS += -I$(src)/include EXTRA_CFLAGS += -I$(src)/hal/phydm @@ -42,20 +53,20 @@ CONFIG_PCI_HCI = n CONFIG_SDIO_HCI = n CONFIG_GSPI_HCI = n ########################## Features ########################### +CONFIG_NET_NS = y CONFIG_MP_INCLUDED = y CONFIG_POWER_SAVING = n CONFIG_USB_AUTOSUSPEND = n CONFIG_HW_PWRP_DETECTION = n CONFIG_WIFI_TEST = n CONFIG_BT_COEXIST = n -CONFIG_INTEL_WIDI = n CONFIG_WAPI_SUPPORT = n CONFIG_EFUSE_CONFIG_FILE = y CONFIG_EXT_CLK = n CONFIG_TRAFFIC_PROTECT = y CONFIG_LOAD_PHY_PARA_FROM_FILE = y CONFIG_CALIBRATE_TX_POWER_BY_REGULATORY = n -CONFIG_CALIBRATE_TX_POWER_TO_MAX = n +CONFIG_CALIBRATE_TX_POWER_TO_MAX = y CONFIG_RTW_ADAPTIVITY_EN = disable CONFIG_RTW_ADAPTIVITY_MODE = normal CONFIG_SIGNAL_SCALE_MAPPING = n @@ -64,8 +75,12 @@ CONFIG_REDUCE_TX_CPU_LOADING = n CONFIG_BR_EXT = y CONFIG_TDLS = n CONFIG_WIFI_MONITOR = y +# Choose y below to disable the code in os_dep/linux/ wifi_regd.c +# most likely needed when using hostapd in 802.11ac mode +CONFIG_DISABLE_REGD_C = y CONFIG_MCC_MODE = n CONFIG_APPEND_VENDOR_IE_ENABLE = n +CONFIG_USB2_EXTERNAL_POWER = n ########################## Debug ########################### CONFIG_RTW_DEBUG = n # default log level is _DRV_INFO_ = 4, @@ -80,7 +95,7 @@ CONFIG_HIGH_ACTIVE = n CONFIG_PNO_SUPPORT = n CONFIG_PNO_SET_DEBUG = n CONFIG_AP_WOWLAN = n -######### Notify SDIO Host Keep Power During Syspend ########## +######### Notify SDIO Host Keep Power During Suspend ########## CONFIG_RTW_SDIO_PM_KEEP_POWER = y ###################### MP HW TX MODE FOR VHT ####################### CONFIG_MP_VHT_HW_TX_MODE = n @@ -131,12 +146,16 @@ CONFIG_PLATFORM_ARM_RTD299X = n CONFIG_PLATFORM_ARM_SPREADTRUM_6820 = n CONFIG_PLATFORM_ARM_SPREADTRUM_8810 = n CONFIG_PLATFORM_ARM_WMT = n +CONFIG_PLATFORM_ARM_RPI = n +CONFIG_PLATFORM_ARM_ODROIDC2 = n CONFIG_PLATFORM_TI_DM365 = n CONFIG_PLATFORM_MOZART = n CONFIG_PLATFORM_RTK119X = n CONFIG_PLATFORM_RTK129X = n CONFIG_PLATFORM_NOVATEK_NT72668 = n CONFIG_PLATFORM_HISILICON = n +CONFIG_PLATFORM_ARM64 = n +CONFIG_PLATFORM_PPC = n ############################################################### CONFIG_DRVEXT_MODULE = n @@ -144,6 +163,10 @@ CONFIG_DRVEXT_MODULE = n export TopDIR ?= $(shell pwd) ########### COMMON ################################# +ifeq ($(CONFIG_DISABLE_REGD_C), y) +EXTRA_CFLAGS += -DCONFIG_DISABLE_REGD_C +endif + ifeq ($(CONFIG_GSPI_HCI), y) HCI_NAME = gspi endif @@ -167,16 +190,20 @@ CONFIG_RTL8814A = y endif ifeq ($(DEBUG), 1) -EXTRA_CFLAGS += -DDBG=1 -DCONFIG_RTW_DEBUG -DCONFIG_DBG_COUNTER -DRTW_LOG_LEVEL=5 +EXTRA_CFLAGS += -DDBG=1 -DCONFIG_RTW_DEBUG -DCONFIG_DBG_COUNTER -DRTW_LOG_LEVEL=5 EXTRA_CFLAGS += -DCONFIG_RADIOTAP_WITH_RXDESC else ifeq ($(DEBUG), 2) EXTRA_CFLAGS += -DDBG=1 -DCONFIG_RTW_DEBUG -DCONFIG_DBG_COUNTER -DRTW_LOG_LEVEL=5 -EXTRA_CFLAGS += -DCONFIG_DEBUG_RTL871X -EXTRA_CFLAGS += -DCONFIG_RADIOTAP_WITH_RXDESC +EXTRA_CFLAGS += -DCONFIG_DEBUG_RTL871X +EXTRA_CFLAGS += -DCONFIG_RADIOTAP_WITH_RXDESC else EXTRA_CFLAGS += -DDBG=0 endif +ifeq ($(CONFIG_USB2_EXTERNAL_POWER), y) +EXTRA_CFLAGS += -DCONFIG_USE_EXTERNAL_POWER +endif + _OS_INTFS_FILES := os_dep/osdep_service.o \ os_dep/linux/os_intfs.o \ os_dep/linux/$(HCI_NAME)_intf.o \ @@ -218,7 +245,7 @@ _HAL_INTFS_FILES := hal/hal_intf.o \ hal/hal_hci/hal_$(HCI_NAME).o \ hal/led/hal_$(HCI_NAME)_led.o - + _OUTSRC_FILES := hal/phydm/phydm_debug.o \ hal/phydm/phydm_antdiv.o\ hal/phydm/phydm_antdect.o\ @@ -509,7 +536,7 @@ _OUTSRC_FILES += hal/phydm/rtl8821a/halhwimg8821a_fw.o\ hal/phydm/rtl8821a/phydm_rtl8821a.o\ hal/phydm/rtl8821a/phydm_iqk_8821a_ce.o\ hal/phydm/txbf/haltxbfjaguar.o - + endif endif @@ -601,7 +628,7 @@ _HAL_INTFS_FILES += hal/$(RTL871X)/$(RTL871X)_hal_init.o \ hal/$(RTL871X)/$(RTL871X)_rf6052.o \ hal/$(RTL871X)/$(RTL871X)_dm.o \ hal/$(RTL871X)/$(RTL871X)_rxdesc.o \ - hal/$(RTL871X)/$(RTL871X)_cmd.o + hal/$(RTL871X)/$(RTL871X)_cmd.o # hal/$(RTL871X)/hal8814a_fw.o @@ -883,15 +910,10 @@ ifeq ($(CONFIG_BT_COEXIST), y) EXTRA_CFLAGS += -DCONFIG_BT_COEXIST endif -ifeq ($(CONFIG_INTEL_WIDI), y) -EXTRA_CFLAGS += -DCONFIG_INTEL_WIDI -endif - ifeq ($(CONFIG_WAPI_SUPPORT), y) EXTRA_CFLAGS += -DCONFIG_WAPI_SUPPORT endif - ifeq ($(CONFIG_EFUSE_CONFIG_FILE), y) EXTRA_CFLAGS += -DCONFIG_EFUSE_CONFIG_FILE @@ -1052,12 +1074,11 @@ endif EXTRA_CFLAGS += -DDM_ODM_SUPPORT_TYPE=0x04 ifeq ($(CONFIG_PLATFORM_I386_PC), y) -EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT -SUBARCH := $(shell uname -m | sed -e s/i.86/i386/) +SUBARCH := $(shell uname -m | sed -e s/i.86/i386/ | sed -e s/aarch64/arm64/ ) ARCH ?= $(SUBARCH) CROSS_COMPILE ?= -KVER := $(shell uname -r) +KVER ?= $(shell uname -r) KSRC := /lib/modules/$(KVER)/build MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ INSTALL_PREFIX := @@ -1069,13 +1090,12 @@ EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ANDROID -DCONFIG_PLATFO ARCH := $(R_ARCH) #CROSS_COMPILE := arm-none-linux-gnueabi- CROSS_COMPILE := $(R_CROSS_COMPILE) -KVER:= 3.4.0 +KVER ?= 3.4.0 #KSRC := ../../../../build/out/kernel KSRC := $(KERNEL_BUILD_PATH) MODULE_NAME :=wlan endif - ifeq ($(CONFIG_PLATFORM_ACTIONS_ATM705X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN #EXTRA_CFLAGS += -DRTW_ENABLE_WIFI_CONTROL_FUNC @@ -1133,10 +1153,10 @@ endif ifeq ($(CONFIG_PLATFORM_MSTAR_TITANIA12), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_PLATFORM_MSTAR_TITANIA12 -ARCH:=mips +ARCH :=mips CROSS_COMPILE:= /usr/src/Mstar_kernel/mips-4.3/bin/mips-linux-gnu- -KVER:= 2.6.28.9 -KSRC:= /usr/src/Mstar_kernel/2.6.28.9/ +KVER ?= 2.6.28.9 +KSRC := /usr/src/Mstar_kernel/2.6.28.9/ endif ifeq ($(CONFIG_PLATFORM_MSTAR), y) @@ -1144,10 +1164,10 @@ EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR -DCONFIG_USE_USB_BUFFER_ALLOC_TX -DCONFIG_FIX_NR_BULKIN_BUFFER -DCONFIG_PREALLOC_RX_SKB_BUFFER EXTRA_CFLAGS += -DCONFIG_PLATFORM_MSTAR_HIGH -ARCH:=arm +ARCH :=arm CROSS_COMPILE:= /usr/src/bin/arm-none-linux-gnueabi- -KVER:= 3.1.10 -KSRC:= /usr/src/Mstar_kernel/3.1.10/ +KVER ?= 3.1.10 +KSRC := /usr/src/Mstar_kernel/3.1.10/ endif ifeq ($(CONFIG_PLATFORM_ANDROID_X86), y) @@ -1186,7 +1206,7 @@ ifeq ($(CONFIG_PLATFORM_ARM_PXA2XX), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := arm-none-linux-gnueabi- -KVER := 2.6.34.1 +KVER ?= 2.6.34.1 KSRC ?= /usr/src/linux-2.6.34.1 endif @@ -1194,7 +1214,7 @@ ifeq ($(CONFIG_PLATFORM_ARM_S3C2K4), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := arm-linux- -KVER := 2.6.24.7_$(ARCH) +KVER ?= 2.6.24.7_$(ARCH) KSRC := /usr/src/kernels/linux-$(KVER) endif @@ -1202,40 +1222,40 @@ ifeq ($(CONFIG_PLATFORM_ARM_S3C6K4), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN ARCH := arm CROSS_COMPILE := arm-none-linux-gnueabi- -KVER := 2.6.34.1 +KVER ?= 2.6.34.1 KSRC ?= /usr/src/linux-2.6.34.1 endif ifeq ($(CONFIG_PLATFORM_RTD2880B), y) EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -DCONFIG_PLATFORM_RTD2880B -ARCH:= +ARCH := CROSS_COMPILE:= -KVER:= -KSRC:= +KVER ?= +KSRC := endif ifeq ($(CONFIG_PLATFORM_MIPS_RMI), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -ARCH:=mips +ARCH :=mips CROSS_COMPILE:=mipsisa32r2-uclibc- -KVER:= -KSRC:= /root/work/kernel_realtek +KVER ?= +KSRC := /root/work/kernel_realtek endif ifeq ($(CONFIG_PLATFORM_MIPS_PLM), y) EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN -ARCH:=mips +ARCH :=mips CROSS_COMPILE:=mipsisa32r2-uclibc- -KVER:= -KSRC:= /root/work/kernel_realtek +KVER ?= +KSRC := /root/work/kernel_realtek endif ifeq ($(CONFIG_PLATFORM_MSTAR389), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MSTAR389 -ARCH:=mips +ARCH :=mips CROSS_COMPILE:= mips-linux-gnu- -KVER:= 2.6.28.10 -KSRC:= /home/mstar/mstar_linux/2.6.28.9/ +KVER ?= 2.6.28.10 +KSRC := /home/mstar/mstar_linux/2.6.28.9/ endif ifeq ($(CONFIG_PLATFORM_MIPS_AR9132), y) @@ -1259,42 +1279,44 @@ EXTRA_CFLAGS += -DCONFIG_PLATFORM_OPS ifeq ($(CONFIG_USB_HCI), y) _PLATFORM_FILES += platform/platform_RTK_DMP_usb.o endif -ARCH:=mips -CROSS_COMPILE:=mipsel-linux- -KVER:= +ARCH :=mips +CROSS_COMPILE :=mipsel-linux- +KVER ?= KSRC ?= /usr/src/DMP_Kernel/jupiter/linux-2.6.12 endif ifeq ($(CONFIG_PLATFORM_MT53XX), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MT53XX -ARCH:= arm +ARCH := arm CROSS_COMPILE:= arm11_mtk_le- -KVER:= 2.6.27 -KSRC?= /proj/mtk00802/BD_Compare/BDP/Dev/BDP_V301/BDP_Linux/linux-2.6.27 +KVER ?= 2.6.27 +KSRC ?= /proj/mtk00802/BD_Compare/BDP/Dev/BDP_V301/BDP_Linux/linux-2.6.27 endif ifeq ($(CONFIG_PLATFORM_ARM_MX51_241H), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_WISTRON_PLATFORM ARCH := arm CROSS_COMPILE := /opt/freescale/usr/local/gcc-4.1.2-glibc-2.5-nptl-3/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi- -KVER := 2.6.31 +KVER ?= 2.6.31 KSRC ?= /lib/modules/2.6.31-770-g0e46b52/source endif ifeq ($(CONFIG_PLATFORM_FS_MX61), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT ARCH := arm -CROSS_COMPILE := /home/share/CusEnv/FreeScale/arm-eabi-4.4.3/bin/arm-eabi- -KSRC ?= /home/share/CusEnv/FreeScale/FS_kernel_env +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := endif - - ifeq ($(CONFIG_PLATFORM_ACTIONS_ATJ227X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_ACTIONS_ATJ227X ARCH := mips CROSS_COMPILE := /home/cnsd4/project/actions/tools-2.6.27/bin/mipsel-linux-gnu- -KVER := 2.6.27 +KVER ?= 2.6.27 KSRC := /home/cnsd4/project/actions/linux-2.6.27.28 endif @@ -1308,14 +1330,14 @@ ARCH := arm CROSS_COMPILE := /opt/montavista/pro5.0/devkit/arm/v5t_le/bin/arm-linux- KSRC:= /home/vivotek/lsp/DM365/kernel_platform/kernel/linux-2.6.18 KERNELOUTPUT := ${PRODUCTDIR}/tmp -KVER := 2.6.18 +KVER ?= 2.6.18 endif ifeq ($(CONFIG_PLATFORM_MOZART), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MOZART ARCH := arm CROSS_COMPILE := /home/vivotek/lsp/mozart3v2/Mozart3e_Toolchain/build_arm_nofpu/usr/bin/arm-linux- -KVER := $(shell uname -r) +KVER ?= $(shell uname -r) KSRC:= /opt/Vivotek/lsp/mozart3v2/kernel_platform/kernel/mozart_kernel-1.17 KERNELOUTPUT := /home/pink/sample/ODM/IP8136W-VINT/tmp/kernel endif @@ -1440,8 +1462,8 @@ ifeq ($(CONFIG_PLATFORM_SZEBOOK), y) EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN ARCH:=arm CROSS_COMPILE:=/opt/crosstool2/bin/armeb-unknown-linux-gnueabi- -KVER:= 2.6.31.6 -KSRC:= ../code/linux-2.6.31.6-2020/ +KVER ?= 2.6.31.6 +KSRC := ../code/linux-2.6.31.6-2020/ endif #Add setting for MN10300 @@ -1449,12 +1471,11 @@ ifeq ($(CONFIG_PLATFORM_MN10300), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN -DCONFIG_PLATFORM_MN10300 ARCH := mn10300 CROSS_COMPILE := mn10300-linux- -KVER := 2.6.32.2 +KVER ?= 2.6.32.2 KSRC := /home/winuser/work/Plat_sLD2T_V3010/usr/src/linux-2.6.32.2 INSTALL_PREFIX := endif - ifeq ($(CONFIG_PLATFORM_ARM_SUNxI), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUNxI @@ -1476,7 +1497,7 @@ endif ARCH := arm #CROSS_COMPILE := arm-none-linux-gnueabi- CROSS_COMPILE=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/buildroot/output/external-toolchain/bin/arm-none-linux-gnueabi- -KVER := 3.0.8 +KVER ?= 3.0.8 #KSRC:= ../lichee/linux-3.0/ KSRC=/home/android_sdk/Allwinner/a10/android-jb42/lichee-jb42/linux-3.0 endif @@ -1543,6 +1564,17 @@ CROSS_COMPILE := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/out/andr KSRC := /home/android_sdk/Allwinner/a20/kitkat-a20_v4.4/lichee/linux-3.4 endif +ifeq ($(CONFIG_PLATFORM_PPC), y) +EXTRA_CFLAGS += -DCONFIG_BIG_ENDIAN +SUBARCH := $(shell uname -m | sed -e s/ppc/powerpc/) +ARCH ?= $(SUBARCH) +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + ifeq ($(CONFIG_PLATFORM_ARM_SUN8I_W3P1), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DCONFIG_PLATFORM_ARM_SUN8I @@ -1714,6 +1746,28 @@ MODULE_NAME := 8192eu endif +ifeq ($(CONFIG_PLATFORM_ARM_RPI), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +ARCH ?= arm +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + +ifeq ($(CONFIG_PLATFORM_ARM_ODROIDC2), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +ARCH ?= arm64 +CROSS_COMPILE ?= +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif + ifeq ($(CONFIG_PLATFORM_RTK129X), y) EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN EXTRA_CFLAGS += -DRTK_129X_PLATFORM @@ -1753,7 +1807,7 @@ EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_RX EXTRA_CFLAGS += -DCONFIG_USE_USB_BUFFER_ALLOC_TX ARCH ?= arm CROSS_COMPILE := arm-linux-gnueabihf- -KVER := 3.8.0 +KVER ?= 3.8.0 KSRC := /Custom/Novatek/TCL/linux-3.8_header #KSRC := $(KERNELDIR) endif @@ -1767,7 +1821,19 @@ ARCH := arm CROSS_COMPILE := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_build/prebuilts/gcc/linux-x86/arm/arm-eabi-4.6/bin/arm-eabi- KSRC := /home/android_sdk/Telechips/v13.05_r1-tcc-android-4.2.2_tcc893x-evm_build/kernel MODULE_NAME := wlan -endif +endif + +# ARM64 - odroid-c2 and such +ifeq ($(CONFIG_PLATFORM_ARM64), y) +EXTRA_CFLAGS += -DCONFIG_LITTLE_ENDIAN +EXTRA_CFLAGS += -DCONFIG_IOCTL_CFG80211 -DRTW_USE_CFG80211_STA_EVENT +ARCH ?= arm64 +CROSS_COMPILE := aarch64-linux-gnu- +KVER ?= $(shell uname -r) +KSRC := /lib/modules/$(KVER)/build +MODDESTDIR := /lib/modules/$(KVER)/kernel/drivers/net/wireless/ +INSTALL_PREFIX := +endif ifeq ($(CONFIG_MULTIDRV), y) @@ -1783,7 +1849,6 @@ ifeq ($(CONFIG_PCI_HCI), y) MODULE_NAME := rtw_pci endif - endif USER_MODULE_NAME ?= @@ -1819,7 +1884,7 @@ rtk_core := core/rtw_cmd.o \ core/rtw_btcoex.o \ core/rtw_beamforming.o \ core/rtw_odm.o \ - core/efuse/rtw_efuse.o + core/efuse/rtw_efuse.o ifeq ($(CONFIG_SDIO_HCI), y) rtk_core += core/rtw_sdio.o @@ -1827,8 +1892,6 @@ endif $(MODULE_NAME)-y += $(rtk_core) -$(MODULE_NAME)-$(CONFIG_INTEL_WIDI) += core/rtw_intel_widi.o - $(MODULE_NAME)-$(CONFIG_WAPI_SUPPORT) += core/rtw_wapi.o \ core/rtw_wapi_sms4.o @@ -1869,7 +1932,6 @@ config_r: @echo "make config" /bin/bash script/Configure script/config.in - .PHONY: modules clean clean: @@ -1887,4 +1949,3 @@ clean: rm -fr *.mod.c *.mod *.o .*.cmd *.ko *~ rm -fr .tmp_versions endif - diff --git a/README.md b/README.md new file mode 100644 index 000000000..93c346b83 --- /dev/null +++ b/README.md @@ -0,0 +1,110 @@ +# RTL8812AU/21AU and RTL8814AU drivers +# with monitor mode and frame injection + +## DKMS +This driver can be installed using [DKMS]. This is a system which will automatically recompile and install a kernel module when a new kernel gets installed or updated. To make use of DKMS, install the `dkms` package, which on Debian (based) systems is done like this: +``` +sudo apt install dkms +``` + +## Installation of Driver +In order to install the driver open a terminal in the directory with the source code and execute the following command: +``` +sudo ./dkms-install.sh +``` + +## Removal of Driver +In order to remove the driver from your system open a terminal in the directory with the source code and execute the following command: +``` +sudo ./dkms-remove.sh +``` + +## Make +For building & installing the RTL8812AU driver with 'make' use +``` +make +make install +``` +and for building & installing the RTL8814AU driver with 'make' use +``` +make RTL8814=1 +make install RTL8814=1 +``` + +## Notes +Download +``` +git clone -b v5.1.5 https://github.com/aircrack-ng/rtl8812au.git +cd rtl* +``` +Package / Build dependencies (Kali) +``` +sudo apt-get install build-essential +sudo apt-get install bc +sudo apt-get install linux-headers-`uname -r` +``` +For Raspberry (RPI) +``` +sudo apt install raspberrypi-kernel-headers +``` +For setting monitor mode + 1. Fix problematic interference in monitor mode. + ``` + airmon-ng check kill + ``` + You may also uncheck the box "Automatically connect to this network when it is avaiable" in nm-connection-editor. This only works if you have a saved wifi connection. + + 2. Set interface down + ``` + sudo ip link set wlan0 down + ``` + 3. Set monitor mode + ``` + sudo iw dev wlan0 set type monitor + ``` + 4. Set interface up + ``` + sudo ip link set wlan0 up + ``` +For setting TX power +``` +sudo iw wlan0 set txpower fixed 3000 +``` +Newer versions of NetworkManager switches to random MAC address. Some users would prefer to use a fixed address. +Simply add these lines below +``` +[device] +wifi.scan-rand-mac-address=no +``` +at the end of file /etc/NetworkManager/NetworkManager.conf and restart NetworkManager with the command: +``` +sudo service NetworkManager restart +``` + +## Tested / Working +``` +Tested and working on + * Kali Linux + * Raspberry PI +``` + +## LED Parameter +``` +We've added the "realtek-leds.conf" in build directory, +with this you may change the leds to +"2: Allways On", "1: Normal" or "0: Allways Off" with placing the file in "/etc/modprobe.d/ + +Manual modprobe will override this file if option value also included at the command line, e.g., +$ sudo modprobe -r 8812au +$ sudo modprobe 8812au rtw_led_ctrl=1 +``` + +## Credits +``` +astsam - for the main work + monitor/injection support - https://github.com/astsam +evilphish - for great patching (USB3, VHT + txpower control +++) - https://github.com/evilphish +jcard0na - for fixing the "sluggish" / broken injection - https://github.com/jcard0na +dpShaker - for adding support for pre-configured SeqNum (RadioTap) +CGarces - for providing kernel support patch (v4.15) +brimstone - for providing kernel support patch (v4.14) +``` diff --git a/clean b/clean deleted file mode 100644 index 87664218b..000000000 --- a/clean +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash -rmmod 8192cu -rmmod 8192ce -rmmod 8192du -rmmod 8192de diff --git a/core/efuse/rtw_efuse.c b/core/efuse/rtw_efuse.c index 1bb510553..aa05ce8be 100644 --- a/core/efuse/rtw_efuse.c +++ b/core/efuse/rtw_efuse.c @@ -337,6 +337,61 @@ u16 rtw_get_efuse_mask_arraylen(PADAPTER pAdapter) } +VOID efuse_PreUpdateAction( + PADAPTER pAdapter, + pu4Byte BackupRegs) +{ + if (IS_HARDWARE_TYPE_8812AU(pAdapter)) { + /* <20131115, Kordan> Turn off Rx to prevent from being busy when writing the EFUSE. (Asked by Chunchu.)*/ + BackupRegs[0] = PHY_QueryMacReg(pAdapter, REG_RCR, bMaskDWord); + BackupRegs[1] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0, bMaskDWord); + BackupRegs[2] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord); + BackupRegs[3] = PHY_QueryMacReg(pAdapter, REG_AFE_MISC, bMaskDWord); + + PlatformEFIOWrite4Byte(pAdapter, REG_RCR, 0x1); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+1, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+2, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+3, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+4, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+5, 0); + + /* <20140410, Kordan> 0x11 = 0x4E, lower down LX_SPS0 voltage. (Asked by Chunchu)*/ + PHY_SetMacReg(pAdapter, REG_AFE_MISC, bMaskByte1, 0x4E); + } + if (IS_HARDWARE_TYPE_8814AU(pAdapter)) { + /* <20131115, Kordan> Turn off Rx to prevent from being busy when writing the EFUSE. (Asked by Chunchu.)*/ + BackupRegs[0] = PHY_QueryMacReg(pAdapter, REG_RCR, bMaskDWord); + BackupRegs[1] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0, bMaskDWord); + BackupRegs[2] = PHY_QueryMacReg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord); + BackupRegs[3] = PHY_QueryMacReg(pAdapter, REG_AFE_MISC, bMaskDWord); + + PlatformEFIOWrite4Byte(pAdapter, REG_RCR, 0x1); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+1, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+2, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+3, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+4, 0); + PlatformEFIOWrite1Byte(pAdapter, REG_RXFLTMAP0+5, 0); + + /* <20140410, Kordan> 0x11 = 0x4E, lower down LX_SPS0 voltage. (Asked by Chunchu)*/ + PHY_SetMacReg(pAdapter, REG_AFE_MISC, bMaskByte1, 0x4E); + } +} + +VOID efuse_PostUpdateAction( + PADAPTER pAdapter, + pu4Byte BackupRegs) +{ + if (IS_HARDWARE_TYPE_8812AU(pAdapter)) { + /* <20131115, Kordan> Turn on Rx and restore the registers. (Asked by Chunchu.)*/ + PHY_SetMacReg(pAdapter, REG_RCR, bMaskDWord, BackupRegs[0]); + PHY_SetMacReg(pAdapter, REG_RXFLTMAP0, bMaskDWord, BackupRegs[1]); + PHY_SetMacReg(pAdapter, REG_RXFLTMAP0+4, bMaskDWord, BackupRegs[2]); + PHY_SetMacReg(pAdapter, REG_AFE_MISC, bMaskDWord, BackupRegs[3]); + } +} + #ifdef RTW_HALMAC #include "../../hal/hal_halmac.h" @@ -386,7 +441,6 @@ void EFUSE_GetEfuseDefinition(PADAPTER adapter, u8 efusetype, u8 type, void *out struct dvobj_priv *d; u32 v32 = 0; - d = adapter_to_dvobj(adapter); if (adapter->HalFunc.EFUSEGetEfuseDefinition) { @@ -414,7 +468,6 @@ u8 rtw_efuse_access(PADAPTER adapter, u8 write, u16 addr, u16 cnts, u8 *data) u32 size, i; int err; - d = adapter_to_dvobj(adapter); err = rtw_halmac_get_physical_efuse_size(d, &size); if (err) @@ -715,7 +768,6 @@ VOID hal_ReadEFuse_BT_logic_map( u16 i, total, used; u8 efuse_usage; - /* */ /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */ /* */ @@ -830,7 +882,6 @@ VOID hal_ReadEFuse_BT_logic_map( rtw_mfree(efuseTbl, EFUSE_BT_MAP_LEN); } - static u8 hal_EfusePartialWriteCheck( PADAPTER padapter, u8 efuseType, @@ -873,7 +924,6 @@ static u8 hal_EfusePartialWriteCheck( return bRet; } - static u8 hal_EfusePgPacketWrite2ByteHeader( PADAPTER padapter, u8 efuseType, @@ -940,7 +990,6 @@ static u8 hal_EfusePgPacketWrite2ByteHeader( return _TRUE; } - static u8 hal_EfusePgPacketWrite1ByteHeader( PADAPTER pAdapter, u8 efuseType, @@ -953,7 +1002,6 @@ static u8 hal_EfusePgPacketWrite1ByteHeader( u16 efuse_addr = *pAddr; u8 repeatcnt = 0; - /* RTW_INFO("%s\n", __FUNCTION__); */ pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; @@ -996,7 +1044,6 @@ static u8 hal_EfusePgPacketWriteHeader( return bRet; } - static u8 Hal_EfuseWordEnableDataWrite( PADAPTER padapter, @@ -1010,7 +1057,6 @@ Hal_EfuseWordEnableDataWrite( u8 badworden = 0x0F; u8 tmpdata[PGPKT_DATA_SIZE]; - /* RTW_INFO("%s: efuse_addr=%#x word_en=%#x\n", __FUNCTION__, efuse_addr, word_en); */ _rtw_memset(tmpdata, 0xFF, PGPKT_DATA_SIZE); @@ -1116,7 +1162,6 @@ u8 EfusePgPacketWrite_BT( return _TRUE; } - #else /* !RTW_HALMAC */ /* ------------------------------------------------------------------------------ */ #define REG_EFUSE_CTRL 0x0030 @@ -1469,7 +1514,6 @@ EFUSE_Write1Byte( } } /* EFUSE_Write1Byte */ - /* 11/16/2008 MH Read one byte from real Efuse. */ u8 efuse_OneByteRead( @@ -1555,7 +1599,6 @@ efuse_OneByteWrite( /* -----------------e-fuse reg ctrl --------------------------------- */ /* address */ - efuseValue = rtw_read32(pAdapter, EFUSE_CTRL); efuseValue |= (BIT21 | BIT31); efuseValue &= ~(0x3FFFF); @@ -1574,6 +1617,8 @@ efuse_OneByteWrite( } else rtw_write32(pAdapter, EFUSE_CTRL, efuseValue); + rtw_mdelay_os(1); + while ((0x80 & rtw_read8(pAdapter, EFUSE_CTRL + 3)) && (tmpidx < 100)) { rtw_mdelay_os(1); tmpidx++; @@ -1627,7 +1672,6 @@ Efuse_PgPacketWrite(IN PADAPTER pAdapter, return ret; } - int Efuse_PgPacketWrite_BT(IN PADAPTER pAdapter, IN u8 offset, @@ -1642,7 +1686,6 @@ Efuse_PgPacketWrite_BT(IN PADAPTER pAdapter, return ret; } - u8 Efuse_WordEnableDataWrite(IN PADAPTER pAdapter, IN u16 efuse_addr, @@ -1676,6 +1719,9 @@ u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 * u16 real_content_len = 0, max_available_size = 0; u8 res = _FAIL ; u8(*rw8)(PADAPTER, u16, u8 *); + u32 backupRegs[4] = {0}; + + efuse_PreUpdateAction(padapter, backupRegs); EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_REAL_CONTENT_LEN, (PVOID)&real_content_len, _FALSE); EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, (PVOID)&max_available_size, _FALSE); @@ -1706,6 +1752,8 @@ u8 rtw_efuse_access(PADAPTER padapter, u8 bWrite, u16 start_addr, u16 cnts, u8 * Efuse_PowerSwitch(padapter, bWrite, _FALSE); + efuse_PostUpdateAction(padapter, backupRegs); + return res; } /* ------------------------------------------------------------------------------ */ @@ -1797,8 +1845,11 @@ u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data) s32 i, j, idx; u8 ret = _SUCCESS; u16 mapLen = 0; + u32 backupRegs[4] = {0}; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + efuse_PreUpdateAction(padapter, backupRegs); + EFUSE_GetEfuseDefinition(padapter, EFUSE_WIFI, TYPE_EFUSE_MAP_LEN, (PVOID)&mapLen, _FALSE); if ((addr + cnts) > mapLen) @@ -1871,6 +1922,7 @@ u8 rtw_efuse_map_write(PADAPTER padapter, u16 addr, u16 cnts, u8 *data) /*Efuse_PowerSwitch(padapter, _TRUE, _FALSE);*/ exit: + efuse_PostUpdateAction(padapter, backupRegs); rtw_mfree(map, mapLen); @@ -2087,7 +2139,6 @@ efuse_ShadowRead4Byte( } /* efuse_ShadowRead4Byte */ - /*----------------------------------------------------------------------------- * Function: efuse_ShadowWrite1Byte * efuse_ShadowWrite2Byte @@ -2135,7 +2186,6 @@ efuse_ShadowWrite2Byte( PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pAdapter); - pHalData->efuse_eeprom_data[Offset] = Value & 0x00FF; pHalData->efuse_eeprom_data[Offset + 1] = Value >> 8; @@ -2157,7 +2207,6 @@ efuse_ShadowWrite4Byte( } /* efuse_ShadowWrite1Byte */ - /*----------------------------------------------------------------------------- * Function: EFUSE_ShadowRead * @@ -2225,7 +2274,6 @@ EFUSE_ShadowWrite( if (pAdapter->registrypriv.mp_mode == 0) return; - if (Type == 1) efuse_ShadowWrite1Byte(pAdapter, Offset, (u8)Value); else if (Type == 2) @@ -2344,7 +2392,6 @@ void EFUSE_ShadowMapUpdate( u8 *efuse_map = NULL; int err; - mapLen = EEPROM_MAX_SIZE; efuse_map = pHalData->efuse_eeprom_data; /* efuse default content is 0xFF */ @@ -2566,7 +2613,11 @@ u32 rtw_read_efuse_from_file(const char *path, u8 *buf) set_fs(KERNEL_DS); for (i = 0 ; i < HWSET_MAX_SIZE ; i++) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, temp, 2, &pos); +#else vfs_read(fp, temp, 2, &pos); +#endif if (sscanf(temp, "%hhx", &buf[i]) != 1) { if (0) RTW_ERR("%s sscanf fail\n", __func__); @@ -2574,10 +2625,18 @@ u32 rtw_read_efuse_from_file(const char *path, u8 *buf) } if ((i % EFUSE_FILE_COLUMN_NUM) == (EFUSE_FILE_COLUMN_NUM - 1)) { /* Filter the lates space char. */ +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, temp, 1, &pos); +#else vfs_read(fp, temp, 1, &pos); +#endif if (strchr(temp, ' ') == NULL) { pos--; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, temp, 2, &pos); +#else vfs_read(fp, temp, 2, &pos); +#endif } } else { pos += 1; /* Filter the space character */ @@ -2634,7 +2693,11 @@ u32 rtw_read_macaddr_from_file(const char *path, u8 *buf) fs = get_fs(); set_fs(KERNEL_DS); +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + kernel_read(fp, source_addr, 18, &pos); +#else vfs_read(fp, source_addr, 18, &pos); +#endif source_addr[17] = ':'; head = end = source_addr; diff --git a/core/rtw_ap.c b/core/rtw_ap.c index 1527834c2..025088052 100644 --- a/core/rtw_ap.c +++ b/core/rtw_ap.c @@ -3567,6 +3567,25 @@ void start_ap_mode(_adapter *padapter) } +void rtw_ap_bcmc_sta_flush(_adapter *padapter) +{ +#ifdef CONFIG_CONCURRENT_MODE + int cam_id = -1; + u8 *addr = adapter_mac_addr(padapter); + + cam_id = rtw_iface_bcmc_id_get(padapter); + if (cam_id != INVALID_SEC_MAC_CAM_ID) { + RTW_PRINT("clear group key for "ADPT_FMT" addr:"MAC_FMT", camid:%d\n", + ADPT_ARG(padapter), MAC_ARG(addr), cam_id); + clear_cam_entry(padapter, cam_id); + rtw_camid_free(padapter, cam_id); + rtw_iface_bcmc_id_set(padapter, INVALID_SEC_MAC_CAM_ID); /*init default value*/ + } +#else + invalidate_cam_all(padapter); +#endif +} + void stop_ap_mode(_adapter *padapter) { _irqL irqL; @@ -3599,6 +3618,7 @@ void stop_ap_mode(_adapter *padapter) #endif rtw_sta_flush(padapter, _TRUE); + rtw_ap_bcmc_sta_flush(padapter); /* free_assoc_sta_resources */ rtw_free_all_stainfo(padapter); diff --git a/core/rtw_cmd.c b/core/rtw_cmd.c index 8bff0d0e7..b792a7139 100644 --- a/core/rtw_cmd.c +++ b/core/rtw_cmd.c @@ -35,12 +35,10 @@ sint _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) { sint res = _SUCCESS; - _rtw_init_sema(&(pcmdpriv->cmd_queue_sema), 0); /* _rtw_init_sema(&(pcmdpriv->cmd_done_sema), 0); */ _rtw_init_sema(&(pcmdpriv->terminate_cmdthread_sema), 0); - _rtw_init_queue(&(pcmdpriv->cmd_queue)); /* allocate DMA-able/Non-Page memory for cmd_buf and rsp_buf */ @@ -70,7 +68,6 @@ sint _rtw_init_cmd_priv(struct cmd_priv *pcmdpriv) _rtw_mutex_init(&pcmdpriv->sctx_mutex); exit: - return res; } @@ -82,7 +79,6 @@ sint _rtw_init_evt_priv(struct evt_priv *pevtpriv) { sint res = _SUCCESS; - #ifdef CONFIG_H2CLBK _rtw_init_sema(&(pevtpriv->lbkevt_done), 0); pevtpriv->lbkevt_limit = 0; @@ -106,7 +102,6 @@ sint _rtw_init_evt_priv(struct evt_priv *pevtpriv) } pevtpriv->evt_buf = pevtpriv->evt_allocated_buf + 4 - ((unsigned int)(pevtpriv->evt_allocated_buf) & 3); - #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) pevtpriv->allocated_c2h_mem = rtw_zmalloc(C2H_MEM_SZ + 4); @@ -140,19 +135,16 @@ sint _rtw_init_evt_priv(struct evt_priv *pevtpriv) pevtpriv->c2h_queue = rtw_cbuf_alloc(C2H_QUEUE_MAX_LEN + 1); #endif - return res; } void _rtw_free_evt_priv(struct evt_priv *pevtpriv) { - #ifdef CONFIG_EVENT_THREAD_MODE _rtw_free_sema(&(pevtpriv->evt_notify)); _rtw_free_sema(&(pevtpriv->terminate_evtthread_sema)); - if (pevtpriv->evt_allocated_buf) rtw_mfree(pevtpriv->evt_allocated_buf, MAX_EVTSZ + 4); #endif @@ -171,8 +163,6 @@ void _rtw_free_evt_priv(struct evt_priv *pevtpriv) rtw_cbuf_free(pevtpriv->c2h_queue); #endif - - } void _rtw_free_cmd_priv(struct cmd_priv *pcmdpriv) @@ -211,7 +201,6 @@ sint _rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj, bool to_head) { _irqL irqL; - if (obj == NULL) goto exit; @@ -264,7 +253,6 @@ sint _rtw_enqueue_cmd(_queue *queue, struct cmd_obj *obj, bool to_head) exit: - return _SUCCESS; } @@ -273,7 +261,6 @@ struct cmd_obj *_rtw_dequeue_cmd(_queue *queue) _irqL irqL; struct cmd_obj *obj; - /* _enter_critical_bh(&(queue->lock), &irqL); */ _enter_critical(&queue->lock, &irqL); @@ -284,7 +271,6 @@ struct cmd_obj *_rtw_dequeue_cmd(_queue *queue) } #endif /* DBG_CMD_QUEUE */ - if (rtw_is_list_empty(&(queue->queue))) obj = NULL; else { @@ -324,7 +310,6 @@ struct cmd_obj *_rtw_dequeue_cmd(_queue *queue) /* _exit_critical_bh(&(queue->lock), &irqL); */ _exit_critical(&queue->lock, &irqL); - return obj; } @@ -401,14 +386,11 @@ int rtw_cmd_filter(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) return _SUCCESS; } - - u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) { int res = _FAIL; PADAPTER padapter = pcmdpriv->padapter; - if (cmd_obj == NULL) goto exit; @@ -444,7 +426,6 @@ u32 rtw_enqueue_cmd(struct cmd_priv *pcmdpriv, struct cmd_obj *cmd_obj) exit: - return res; } @@ -452,7 +433,6 @@ struct cmd_obj *rtw_dequeue_cmd(struct cmd_priv *pcmdpriv) { struct cmd_obj *cmd_obj; - cmd_obj = _rtw_dequeue_cmd(&pcmdpriv->cmd_queue); return cmd_obj; @@ -484,7 +464,6 @@ void rtw_free_cmd_obj(struct cmd_obj *pcmd) } - void rtw_stop_cmd_thread(_adapter *adapter) { if (adapter->cmdThread && @@ -519,7 +498,6 @@ thread_return rtw_cmd_thread(thread_context context) ATOMIC_SET(&(pcmdpriv->cmdthd_running), _TRUE); _rtw_up_sema(&pcmdpriv->terminate_cmdthread_sema); - while (1) { if (_rtw_down_sema(&pcmdpriv->cmd_queue_sema) == _FAIL) { RTW_PRINT(FUNC_ADPT_FMT" _rtw_down_sema(&pcmdpriv->cmd_queue_sema) return _FAIL, break\n", FUNC_ADPT_ARG(padapter)); @@ -703,7 +681,6 @@ thread_return rtw_cmd_thread(thread_context context) } - #ifdef CONFIG_EVENT_THREAD_MODE u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj) { @@ -711,7 +688,6 @@ u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj) int res; _queue *queue = &pevtpriv->evt_queue; - res = _SUCCESS; if (obj == NULL) { @@ -729,7 +705,6 @@ u32 rtw_enqueue_evt(struct evt_priv *pevtpriv, struct evt_obj *obj) exit: - return res; } @@ -738,7 +713,6 @@ struct evt_obj *rtw_dequeue_evt(_queue *queue) _irqL irqL; struct evt_obj *pevtobj; - _enter_critical_bh(&queue->lock, &irqL); if (rtw_is_list_empty(&(queue->queue))) @@ -750,7 +724,6 @@ struct evt_obj *rtw_dequeue_evt(_queue *queue) _exit_critical_bh(&queue->lock, &irqL); - return pevtobj; } @@ -771,7 +744,6 @@ void rtw_evt_notify_isr(struct evt_priv *pevtpriv) } #endif - /* u8 rtw_setstandby_cmd(unsigned char *adapter) */ @@ -783,7 +755,6 @@ u8 rtw_setstandby_cmd(_adapter *padapter, uint action) u8 ret = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { ret = _FAIL; @@ -805,7 +776,6 @@ u8 rtw_setstandby_cmd(_adapter *padapter, uint action) exit: - return ret; } @@ -826,7 +796,6 @@ u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, struct wifidirect_info *pwdinfo = &(padapter->wdinfo); #endif /* CONFIG_P2P */ - #ifdef CONFIG_LPS if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) rtw_lps_ctrl_wk_cmd(padapter, LPS_CTRL_SCAN, 1); @@ -849,7 +818,6 @@ u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, rtw_free_network_queue(padapter, _FALSE); - init_h2fwcmd_w_parm_no_rsp(ph2c, psurveyPara, GEN_CMD_CODE(_SiteSurvey)); /* psurveyPara->bsslimit = 48; */ @@ -906,7 +874,6 @@ u8 rtw_sitesurvey_cmd(_adapter *padapter, NDIS_802_11_SSID *ssid, int ssid_num, } else _clr_fwstate_(pmlmepriv, _FW_UNDER_SURVEY); - return res; } @@ -917,7 +884,6 @@ u8 rtw_setdatarate_cmd(_adapter *padapter, u8 *rateset) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -942,7 +908,6 @@ u8 rtw_setdatarate_cmd(_adapter *padapter, u8 *rateset) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -953,7 +918,6 @@ u8 rtw_setbasicrate_cmd(_adapter *padapter, u8 *rateset) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -974,11 +938,9 @@ u8 rtw_setbasicrate_cmd(_adapter *padapter, u8 *rateset) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } - /* unsigned char rtw_setphy_cmd(unsigned char *adapter) @@ -995,7 +957,6 @@ u8 rtw_setphy_cmd(_adapter *padapter, u8 modem, u8 ch) * struct registry_priv* pregistry_priv = &padapter->registrypriv; */ u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1011,7 +972,6 @@ u8 rtw_setphy_cmd(_adapter *padapter, u8 modem, u8 ch) init_h2fwcmd_w_parm_no_rsp(ph2c, psetphypara, _SetPhy_CMD_); - psetphypara->modem = modem; psetphypara->rfchannel = ch; @@ -1155,7 +1115,6 @@ u8 rtw_getrfreg_cmd(_adapter *padapter, u8 offset, u8 *pval) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1182,7 +1141,6 @@ u8 rtw_getrfreg_cmd(_adapter *padapter, u8 offset, u8 *pval) exit: - return res; } @@ -1382,7 +1340,6 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) res = _FAIL; - goto exit; } @@ -1409,7 +1366,6 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) psecnetwork->IELength = rtw_restruct_sec_ie(padapter, &pnetwork->network.IEs[0], &psecnetwork->IEs[0], pnetwork->network.IELength); - pqospriv->qos_option = 0; if (pregistrypriv->wmm_enable) { @@ -1500,7 +1456,6 @@ u8 rtw_joinbss_cmd(_adapter *padapter, struct wlan_network *pnetwork) exit: - return res; } @@ -1511,8 +1466,6 @@ u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, bool enqueue) /* struct cmd_priv *cmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - - /* prepare cmd parameter */ param = (struct disconnect_parm *)rtw_zmalloc(sizeof(*param)); if (param == NULL) { @@ -1540,7 +1493,6 @@ u8 rtw_disassoc_cmd(_adapter *padapter, u32 deauth_timeout_ms, bool enqueue) /* exit: - return res; } @@ -1576,7 +1528,6 @@ u8 rtw_setopmode_cmd(_adapter *padapter, NDIS_802_11_NETWORK_INFRASTRUCTURE net } exit: - return res; } @@ -1591,7 +1542,6 @@ u8 rtw_setstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 key_type, bool struct security_priv *psecuritypriv = &padapter->securitypriv; u8 res = _SUCCESS; - psetstakey_para = (struct set_stakey_parm *)rtw_zmalloc(sizeof(struct set_stakey_parm)); if (psetstakey_para == NULL) { res = _FAIL; @@ -1645,7 +1595,6 @@ u8 rtw_setstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 key_type, bool } exit: - return res; } @@ -1660,7 +1609,6 @@ u8 rtw_clearstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 enqueue) s16 cam_id = 0; u8 res = _SUCCESS; - if (!enqueue) { while ((cam_id = rtw_camid_search(padapter, sta->hwaddr, -1, -1)) >= 0) { RTW_PRINT("clear key for addr:"MAC_FMT", camid:%d\n", MAC_ARG(sta->hwaddr), cam_id); @@ -1703,7 +1651,6 @@ u8 rtw_clearstakey_cmd(_adapter *padapter, struct sta_info *sta, u8 enqueue) exit: - return res; } @@ -1783,7 +1730,6 @@ u8 rtw_setassocsta_cmd(_adapter *padapter, u8 *mac_addr) u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1814,7 +1760,6 @@ u8 rtw_setassocsta_cmd(_adapter *padapter, u8 *mac_addr) exit: - return res; } @@ -1826,7 +1771,6 @@ u8 rtw_addbareq_cmd(_adapter *padapter, u8 tid, u8 *addr) u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1852,7 +1796,6 @@ u8 rtw_addbareq_cmd(_adapter *padapter, u8 tid, u8 *addr) exit: - return res; } @@ -1863,7 +1806,6 @@ u8 rtw_addbarsp_cmd(_adapter *padapter, u8 *addr, u16 tid, u8 status, u8 size, u struct addBaRsp_parm *paddBaRsp_parm; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1890,7 +1832,6 @@ u8 rtw_addbarsp_cmd(_adapter *padapter, u8 *addr, u16 tid, u8 status, u8 size, u exit: - return res; } /* add for CONFIG_IEEE80211W, none 11w can use it */ @@ -1901,7 +1842,6 @@ u8 rtw_reset_securitypriv_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1922,13 +1862,11 @@ u8 rtw_reset_securitypriv_cmd(_adapter *padapter) init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); - /* rtw_enqueue_cmd(pcmdpriv, ph2c); */ res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -1940,7 +1878,6 @@ u8 rtw_free_assoc_resources_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -1961,13 +1898,11 @@ u8 rtw_free_assoc_resources_cmd(_adapter *padapter) init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); - /* rtw_enqueue_cmd(pcmdpriv, ph2c); */ res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -1979,7 +1914,6 @@ u8 rtw_dynamic_chk_wk_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - /* only primary padapter does this cmd */ ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); @@ -2001,13 +1935,11 @@ u8 rtw_dynamic_chk_wk_cmd(_adapter *padapter) pdrvextra_cmd_parm->pbuf = NULL; init_h2fwcmd_w_parm_no_rsp(ph2c, pdrvextra_cmd_parm, GEN_CMD_CODE(_Set_Drv_Extra)); - /* rtw_enqueue_cmd(pcmdpriv, ph2c); */ res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -2020,7 +1952,6 @@ u8 rtw_set_ch_cmd(_adapter *padapter, u8 ch, u8 bw, u8 ch_offset, u8 enqueue) u8 res = _SUCCESS; - RTW_INFO(FUNC_NDEV_FMT" ch:%u, bw:%u, ch_offset:%u\n", FUNC_NDEV_ARG(padapter->pnetdev), ch, bw, ch_offset); @@ -2074,7 +2005,6 @@ u8 _rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, const struct cou struct submit_ctx sctx; u8 res = _SUCCESS; - /* check if allow software config */ if (swconfig && rtw_hal_is_disable_sw_channel_plan(adapter) == _TRUE) { res = _FAIL; @@ -2134,7 +2064,6 @@ u8 _rtw_set_chplan_cmd(_adapter *adapter, int flags, u8 chplan, const struct cou exit: - return res; } @@ -2174,8 +2103,6 @@ u8 rtw_led_blink_cmd(_adapter *padapter, PVOID pLed) u8 res = _SUCCESS; - - pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (pcmdobj == NULL) { res = _FAIL; @@ -2196,7 +2123,6 @@ u8 rtw_led_blink_cmd(_adapter *padapter, PVOID pLed) exit: - return res; } @@ -2209,8 +2135,6 @@ u8 rtw_set_csa_cmd(_adapter *padapter, u8 new_ch_no) u8 res = _SUCCESS; - - pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (pcmdobj == NULL) { res = _FAIL; @@ -2231,7 +2155,6 @@ u8 rtw_set_csa_cmd(_adapter *padapter, u8 new_ch_no) exit: - return res; } @@ -2244,10 +2167,8 @@ u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option) u8 res = _SUCCESS; - #ifdef CONFIG_TDLS - pcmdobj = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (pcmdobj == NULL) { res = _FAIL; @@ -2273,8 +2194,6 @@ u8 rtw_tdls_cmd(_adapter *padapter, u8 *addr, u8 option) exit: - - return res; } @@ -2285,7 +2204,6 @@ u8 rtw_enable_hw_update_tsf_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -2338,12 +2256,11 @@ u8 traffic_status_watchdog(_adapter *padapter, u8 from_timer) } else #endif /* CONFIG_BT_COEXIST */ { - BusyThresholdHigh = 100; - BusyThresholdLow = 75; + BusyThresholdHigh = 25; + BusyThresholdLow = 15; } BusyThreshold = BusyThresholdHigh; - /* */ /* Determine if our traffic is busy now */ /* */ @@ -2527,7 +2444,6 @@ u8 traffic_status_watchdog(_adapter *padapter, u8 from_timer) } - /* for 11n Logo 4.2.31/4.2.32 */ static void dynamic_update_bcn_check(_adapter *padapter) { @@ -2561,7 +2477,7 @@ static void dynamic_update_bcn_check(_adapter *padapter) if (_FALSE != ATOMIC_READ(&pmlmepriv->olbc) && _FALSE != ATOMIC_READ(&pmlmepriv->olbc_ht)) { - + if (rtw_ht_operation_update(padapter) > 0) { update_beacon(padapter, _HT_CAPABILITY_IE_, NULL, _FALSE); update_beacon(padapter, _HT_ADD_INFO_IE_, NULL, _TRUE); @@ -2647,7 +2563,6 @@ void lps_ctrl_wk_hdl(_adapter *padapter, u8 lps_ctrl_type) struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); u8 mstatus; - if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE)) return; @@ -2726,7 +2641,6 @@ u8 rtw_lps_ctrl_wk_cmd(_adapter *padapter, u8 lps_ctrl_type, u8 enqueue) /* struct pwrctrl_priv *pwrctrlpriv = adapter_to_pwrctl(padapter); */ u8 res = _SUCCESS; - /* if(!pwrctrlpriv->bLeisurePs) */ /* return res; */ @@ -2757,7 +2671,6 @@ u8 rtw_lps_ctrl_wk_cmd(_adapter *padapter, u8 lps_ctrl_type, u8 enqueue) exit: - return res; } @@ -2774,7 +2687,6 @@ u8 rtw_dm_in_lps_wk_cmd(_adapter *padapter) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - ph2c = (struct cmd_obj *)rtw_zmalloc(sizeof(struct cmd_obj)); if (ph2c == NULL) { res = _FAIL; @@ -2919,7 +2831,6 @@ u8 rtw_rpt_timer_cfg_cmd(_adapter *padapter, u16 minRptTime) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -2976,7 +2887,6 @@ u8 rtw_antenna_select_cmd(_adapter *padapter, u8 antenna, u8 enqueue) antenna_select_wk_hdl(padapter, antenna); exit: - return res; } @@ -3049,7 +2959,6 @@ u8 p2p_protocol_wk_cmd(_adapter *padapter, int intCmdType) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) return res; @@ -3077,7 +2986,6 @@ u8 p2p_protocol_wk_cmd(_adapter *padapter, int intCmdType) exit: - return res; } @@ -3119,7 +3027,6 @@ u8 rtw_ps_cmd(_adapter *padapter) exit: - return res; } @@ -3783,7 +3690,6 @@ u8 rtw_run_in_thread_cmd(PADAPTER padapter, void (*func)(void *), void *context) res = rtw_enqueue_cmd(pcmdpriv, ph2c); exit: - return res; } @@ -4202,11 +4108,6 @@ u8 rtw_drvextra_cmd_hdl(_adapter *padapter, unsigned char *pbuf) case CHECK_HIQ_WK_CID: rtw_chk_hi_queue_hdl(padapter); break; -#endif -#ifdef CONFIG_INTEL_WIDI - case INTEl_WIDI_WK_CID: - intel_widi_wk_hdl(padapter, pdrvextra_cmd->type, pdrvextra_cmd->pbuf); - break; #endif /* add for CONFIG_IEEE80211W, none 11w can use it */ case RESET_SECURITYPRIV: @@ -4300,11 +4201,9 @@ void rtw_disassoc_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) return; } - void rtw_getmacreg_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd) { - rtw_free_cmd_obj(pcmd); } @@ -4313,7 +4212,6 @@ void rtw_joinbss_cmd_callback(_adapter *padapter, struct cmd_obj *pcmd) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - if (pcmd->res == H2C_DROPPED) { /* TODO: cancel timer and do timeout handler directly... */ /* need to make timeout handlerOS independent */ @@ -4380,8 +4278,6 @@ void rtw_create_ibss_post_hdl(_adapter *padapter, int status) return; } - - void rtw_setstaKey_cmdrsp_callback(_adapter *padapter , struct cmd_obj *pcmd) { @@ -4389,7 +4285,6 @@ void rtw_setstaKey_cmdrsp_callback(_adapter *padapter , struct cmd_obj *pcmd) struct set_stakey_rsp *psetstakey_rsp = (struct set_stakey_rsp *)(pcmd->rsp); struct sta_info *psta = rtw_get_stainfo(pstapriv, psetstakey_rsp->addr); - if (psta == NULL) { goto exit; } @@ -4411,7 +4306,6 @@ void rtw_setassocsta_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd) struct set_assocsta_rsp *passocsta_rsp = (struct set_assocsta_rsp *)(pcmd->rsp); struct sta_info *psta = rtw_get_stainfo(pstapriv, passocsta_parm->addr); - if (psta == NULL) { goto exit; } @@ -4441,5 +4335,4 @@ void rtw_getrttbl_cmd_cmdrsp_callback(_adapter *padapter, struct cmd_obj *pcmd) padapter->mppriv.workparam.bcompleted = _TRUE; #endif - } diff --git a/core/rtw_debug.c b/core/rtw_debug.c index f32ba0b74..166f6caee 100644 --- a/core/rtw_debug.c +++ b/core/rtw_debug.c @@ -47,7 +47,6 @@ const char *rtw_log_level_str[] = { void dump_drv_version(void *sel) { RTW_PRINT_SEL(sel, "%s %s\n", DRV_NAME, DRIVERVERSION); - RTW_PRINT_SEL(sel, "build time: %s %s\n", __DATE__, __TIME__); } void dump_drv_cfg(void *sel) diff --git a/core/rtw_ieee80211.c b/core/rtw_ieee80211.c index e443945c4..56a009680 100644 --- a/core/rtw_ieee80211.c +++ b/core/rtw_ieee80211.c @@ -1379,7 +1379,7 @@ extern char *rtw_initmac; */ void rtw_macaddr_cfg(u8 *out, const u8 *hw_mac_addr) { -#define DEFAULT_RANDOM_MACADDR 1 +#define DEFAULT_RANDOM_MACADDR 0 u8 mac[ETH_ALEN]; if (out == NULL) { @@ -1422,9 +1422,9 @@ void rtw_macaddr_cfg(u8 *out, const u8 *hw_mac_addr) mac[0] = 0x00; mac[1] = 0xe0; mac[2] = 0x4c; - mac[3] = 0x87; - mac[4] = 0x00; - mac[5] = 0x00; + mac[3] = 0xe0; + mac[4] = 0x10; + mac[5] = 0x70; #endif } diff --git a/core/rtw_mlme.c b/core/rtw_mlme.c index 71ffc2af2..4cb54dba8 100644 --- a/core/rtw_mlme.c +++ b/core/rtw_mlme.c @@ -1279,13 +1279,6 @@ void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf) || _SUCCESS != rtw_sitesurvey_cmd(adapter, &pmlmepriv->assoc_ssid, 1, NULL, 0) ) { rtw_set_to_roam(adapter, 0); -#ifdef CONFIG_INTEL_WIDI - if (adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) { - _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); - intel_widi_wk_cmd(adapter, INTEL_WIDI_LISTEN_WK, NULL, 0); - RTW_INFO("change to widi listen\n"); - } -#endif /* CONFIG_INTEL_WIDI */ rtw_free_assoc_resources(adapter, 1); rtw_indicate_disconnect(adapter, 0, _FALSE); } else @@ -1515,20 +1508,12 @@ void rtw_indicate_connect(_adapter *padapter) } rtw_set_to_roam(padapter, 0); -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) { - _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_WK, NULL, 0); - RTW_INFO("change to widi listen\n"); - } -#endif /* CONFIG_INTEL_WIDI */ if (!check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE)) rtw_mi_set_scan_deny(padapter, 3000); } - /* *rtw_indicate_disconnect: the caller has to lock pmlmepriv->lock */ @@ -2442,10 +2427,6 @@ void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf) roam = _TRUE; roam_target = pmlmepriv->roam_network; } -#ifdef CONFIG_INTEL_WIDI - else if (adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_CONNECTED) - roam = _TRUE; -#endif /* CONFIG_INTEL_WIDI */ if (roam == _TRUE) { if (rtw_to_roam(adapter) > 0) @@ -2471,10 +2452,6 @@ void rtw_stadel_event_callback(_adapter *adapter, u8 *pbuf) _exit_critical_bh(&(pmlmepriv->scanned_queue.lock), &irqL); rtw_indicate_disconnect(adapter, *(u16 *)pstadel->rsvd, pstadel->locally_generated); -#ifdef CONFIG_INTEL_WIDI - if (!rtw_to_roam(adapter)) - process_intel_widi_disconnect(adapter, 1); -#endif /* CONFIG_INTEL_WIDI */ _rtw_roaming(adapter, roam_target); } @@ -2593,13 +2570,6 @@ void _rtw_join_timeout_handler(_adapter *adapter) } break; } else { -#ifdef CONFIG_INTEL_WIDI - if (adapter->mlmepriv.widi_state == INTEL_WIDI_STATE_ROAMING) { - _rtw_memset(pmlmepriv->sa_ext, 0x00, L2SDTA_SERVICE_VE_LEN); - intel_widi_wk_cmd(adapter, INTEL_WIDI_LISTEN_WK, NULL, 0); - RTW_INFO("change to widi listen\n"); - } -#endif /* CONFIG_INTEL_WIDI */ RTW_INFO("%s We've try roaming but fail\n", __FUNCTION__); rtw_indicate_disconnect(adapter, 0, _FALSE); break; diff --git a/core/rtw_mlme_ext.c b/core/rtw_mlme_ext.c old mode 100755 new mode 100644 index 9ff7eaf76..050bfa364 --- a/core/rtw_mlme_ext.c +++ b/core/rtw_mlme_ext.c @@ -1420,10 +1420,11 @@ void mgt_dispatcher(_adapter *padapter, union recv_frame *precv_frame) #ifdef CONFIG_AP_MODE switch (GetFrameSubType(pframe)) { case WIFI_AUTH: - if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) + if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { ptable->func = &OnAuth; - else + } else ptable->func = &OnAuthClient; + /* Intentional fallthrough */ /* pass through */ case WIFI_ASSOCREQ: case WIFI_REASSOCREQ: @@ -2201,14 +2202,15 @@ unsigned int OnAuth(_adapter *padapter, union recv_frame *precv_frame) if (rtw_is_list_empty(&pstat->asoc_list) == _FALSE) { rtw_list_delete(&pstat->asoc_list); pstapriv->asoc_list_cnt--; - if (pstat->expire_to > 0) + if (pstat->expire_to > 0) { ;/* TODO: STA re_auth within expire_to */ + } } _exit_critical_bh(&pstapriv->asoc_list_lock, &irqL); - if (seq == 1) + if (seq == 1) { ; /* TODO: STA re_auth and auth timeout */ - + } } } @@ -5645,9 +5647,6 @@ void issue_probersp_p2p(_adapter *padapter, unsigned char *da) #ifdef CONFIG_WFD u32 wfdielen = 0; #endif -#ifdef CONFIG_INTEL_WIDI - u8 zero_array_check[L2SDTA_SERVICE_VE_LEN] = { 0x00 }; -#endif /* CONFIG_INTEL_WIDI */ /* RTW_INFO("%s\n", __FUNCTION__); */ @@ -5749,39 +5748,6 @@ void issue_probersp_p2p(_adapter *padapter, unsigned char *da) /* Value: */ wpsie[wpsielen++] = WPS_VERSION_1; /* Version 1.0 */ -#ifdef CONFIG_INTEL_WIDI - /* Commented by Kurt */ - /* Appended WiDi info. only if we did issued_probereq_widi(), and then we saved ven. ext. in pmlmepriv->sa_ext. */ - if (_rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE - || pmlmepriv->num_p2p_sdt != 0) { - /* Sec dev type */ - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_ATTR_SEC_DEV_TYPE_LIST); - wpsielen += 2; - - /* Length: */ - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(0x0008); - wpsielen += 2; - - /* Value: */ - /* Category ID */ - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_PDT_CID_DISPLAYS); - wpsielen += 2; - - /* OUI */ - *(u32 *)(wpsie + wpsielen) = cpu_to_be32(INTEL_DEV_TYPE_OUI); - wpsielen += 4; - - *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_PDT_SCID_WIDI_CONSUMER_SINK); - wpsielen += 2; - - if (_rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE) { - /* Vendor Extension */ - _rtw_memcpy(wpsie + wpsielen, pmlmepriv->sa_ext, L2SDTA_SERVICE_VE_LEN); - wpsielen += L2SDTA_SERVICE_VE_LEN; - } - } -#endif /* CONFIG_INTEL_WIDI */ - /* WiFi Simple Config State */ /* Type: */ *(u16 *)(wpsie + wpsielen) = cpu_to_be16(WPS_ATTR_SIMPLE_CONF_STATE); @@ -6406,13 +6372,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) result = process_p2p_group_negotation_req(pwdinfo, frame_body, len); issue_p2p_GO_response(padapter, GetAddr2Ptr(pframe), frame_body, len, result); -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) { - padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; - _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL, 0); - } -#endif /* CONFIG_INTEL_WIDI */ /* Commented by Albert 20110718 */ /* No matter negotiating or negotiation failure, the driver should set up the restore P2P state timer. */ @@ -6564,11 +6523,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) } } else { rtw_p2p_set_state(pwdinfo, P2P_STATE_RECV_INVITE_REQ_DISMATCH); -#ifdef CONFIG_INTEL_WIDI - _rtw_memcpy(pwdinfo->p2p_peer_device_addr, group_id.go_device_addr , ETH_ALEN); - rtw_p2p_set_role(pwdinfo, P2P_ROLE_CLIENT); -#endif /* CONFIG_INTEL_WIDI */ - status_code = P2P_STATUS_FAIL_UNKNOWN_P2PGROUP; } } @@ -6614,13 +6568,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) issue_p2p_invitation_response(padapter, GetAddr2Ptr(pframe), pwdinfo->inviteresp_info.token, status_code); _set_timer(&pwdinfo->restore_p2p_state_timer, 3000); } -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) { - padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; - _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL, 0); - } -#endif /* CONFIG_INTEL_WIDI */ break; } case P2P_INVIT_RESP: { @@ -6685,13 +6632,6 @@ unsigned int on_action_public_p2p(union recv_frame *precv_frame) rtw_p2p_set_state(pwdinfo, P2P_STATE_RX_PROVISION_DIS_REQ); _set_timer(&pwdinfo->restore_p2p_state_timer, P2P_PROVISION_TIMEOUT); -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state == INTEL_WIDI_STATE_LISTEN) { - padapter->mlmepriv.widi_state = INTEL_WIDI_STATE_WFD_CONNECTION; - _cancel_timer_ex(&(padapter->mlmepriv.listen_timer)); - intel_widi_wk_cmd(padapter, INTEL_WIDI_LISTEN_STOP_WK, NULL, 0); - } -#endif /* CONFIG_INTEL_WIDI */ break; case P2P_PROVISION_DISC_RESP: @@ -10500,12 +10440,6 @@ u8 collect_bss_info(_adapter *padapter, union recv_frame *precv_frame, WLAN_BSSI } -#ifdef CONFIG_INTEL_WIDI - /* process_intel_widi_query_or_tigger(padapter, bssid); */ - if (process_intel_widi_query_or_tigger(padapter, bssid)) - return _FAIL; -#endif /* CONFIG_INTEL_WIDI */ - #if defined(DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) & 1 if (strcmp(bssid->Ssid.Ssid, DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED) == 0) { RTW_INFO("Receiving %s("MAC_FMT", DSConfig:%u) from ch%u with ss:%3u, sq:%3u, RawRSSI:%3ld\n" diff --git a/core/rtw_p2p.c b/core/rtw_p2p.c index ca69e572b..a5d6d97a3 100644 --- a/core/rtw_p2p.c +++ b/core/rtw_p2p.c @@ -1867,16 +1867,6 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) { u8 p2pie[MAX_P2P_IE_LEN] = { 0x00 }; u32 len = 0, p2pielen = 0; -#ifdef CONFIG_INTEL_WIDI - struct mlme_priv *pmlmepriv = &(pwdinfo->padapter->mlmepriv); - u8 zero_array_check[L2SDTA_SERVICE_VE_LEN] = { 0x00 }; - u8 widi_version = 0, i = 0; - - if (_rtw_memcmp(pmlmepriv->sa_ext, zero_array_check, L2SDTA_SERVICE_VE_LEN) == _FALSE) - widi_version = 35; - else if (pmlmepriv->num_p2p_sdt != 0) - widi_version = 40; -#endif /* CONFIG_INTEL_WIDI */ /* P2P OUI */ p2pielen = 0; @@ -1959,13 +1949,7 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) /* 21->P2P Device Address (6bytes) + Config Methods (2bytes) + Primary Device Type (8bytes) */ /* + NumofSecondDevType (1byte) + WPS Device Name ID field (2bytes) + WPS Device Name Len field (2bytes) */ /* *(u16*) ( p2pie + p2pielen ) = cpu_to_le16( 21 + pwdinfo->device_name_len ); */ -#ifdef CONFIG_INTEL_WIDI - if (widi_version == 35) - RTW_PUT_LE16(p2pie + p2pielen, 21 + 8 + pwdinfo->device_name_len); - else if (widi_version == 40) - RTW_PUT_LE16(p2pie + p2pielen, 21 + 8 * pmlmepriv->num_p2p_sdt + pwdinfo->device_name_len); - else -#endif /* CONFIG_INTEL_WIDI */ + RTW_PUT_LE16(p2pie + p2pielen, 21 + pwdinfo->device_name_len); p2pielen += 2; @@ -1980,25 +1964,6 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) RTW_PUT_BE16(p2pie + p2pielen, pwdinfo->supported_wps_cm); p2pielen += 2; -#ifdef CONFIG_INTEL_WIDI - if (widi_version == 40) { - /* Primary Device Type */ - /* Category ID */ - /* *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_CID_MULIT_MEDIA ); */ - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_pdt_cid); - p2pielen += 2; - - /* OUI */ - /* *(u32*) ( p2pie + p2pielen ) = cpu_to_be32( WPSOUI ); */ - RTW_PUT_BE32(p2pie + p2pielen, WPSOUI); - p2pielen += 4; - - /* Sub Category ID */ - /* *(u16*) ( p2pie + p2pielen ) = cpu_to_be16( WPS_PDT_SCID_MEDIA_SERVER ); */ - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_pdt_scid); - p2pielen += 2; - } else -#endif /* CONFIG_INTEL_WIDI */ { /* Primary Device Type */ /* Category ID */ @@ -2018,32 +1983,6 @@ u32 build_probe_resp_p2p_ie(struct wifidirect_info *pwdinfo, u8 *pbuf) } /* Number of Secondary Device Types */ -#ifdef CONFIG_INTEL_WIDI - if (widi_version == 35) { - p2pie[p2pielen++] = 0x01; - - RTW_PUT_BE16(p2pie + p2pielen, WPS_PDT_CID_DISPLAYS); - p2pielen += 2; - - RTW_PUT_BE32(p2pie + p2pielen, INTEL_DEV_TYPE_OUI); - p2pielen += 4; - - RTW_PUT_BE16(p2pie + p2pielen, P2P_SCID_WIDI_CONSUMER_SINK); - p2pielen += 2; - } else if (widi_version == 40) { - p2pie[p2pielen++] = pmlmepriv->num_p2p_sdt; - for (; i < pmlmepriv->num_p2p_sdt; i++) { - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_sdt_cid[i]); - p2pielen += 2; - - RTW_PUT_BE32(p2pie + p2pielen, INTEL_DEV_TYPE_OUI); - p2pielen += 4; - - RTW_PUT_BE16(p2pie + p2pielen, pmlmepriv->p2p_sdt_scid[i]); - p2pielen += 2; - } - } else -#endif /* CONFIG_INTEL_WIDI */ p2pie[p2pielen++] = 0x00; /* No Secondary Device Type List */ /* Device Name */ @@ -4209,7 +4148,6 @@ int process_p2p_cross_connect_ie(PADAPTER padapter, u8 *IEs, u32 IELength) struct wifidirect_info *pwdinfo = &(padapter->wdinfo); - if (IELength <= _BEACON_IE_OFFSET_) return ret; @@ -4246,7 +4184,6 @@ void process_p2p_ps_ie(PADAPTER padapter, u8 *IEs, u32 IELength) u8 find_p2p = _FALSE, find_p2p_ps = _FALSE; u8 noa_offset, noa_num, noa_index; - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) return; #ifdef CONFIG_CONCURRENT_MODE @@ -4329,7 +4266,6 @@ void p2p_ps_wk_hdl(_adapter *padapter, u8 p2p_ps_state) struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); struct wifidirect_info *pwdinfo = &(padapter->wdinfo); - /* Pre action for p2p state */ switch (p2p_ps_state) { case P2P_PS_DISABLE: @@ -4394,7 +4330,6 @@ u8 p2p_ps_wk_cmd(_adapter *padapter, u8 p2p_ps_state, u8 enqueue) struct cmd_priv *pcmdpriv = &padapter->cmdpriv; u8 res = _SUCCESS; - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE) #ifdef CONFIG_CONCURRENT_MODE || (padapter->hw_port != HW_PORT0) @@ -4429,7 +4364,6 @@ u8 p2p_ps_wk_cmd(_adapter *padapter, u8 p2p_ps_state, u8 enqueue) exit: - return res; } @@ -4497,7 +4431,6 @@ static void pre_tx_scan_timer_process(void *FunctionContext) _enter_critical_bh(&pmlmepriv->lock, &irqL); - if (rtw_p2p_chk_state(pwdinfo, P2P_STATE_TX_PROVISION_DIS_REQ)) { if (_TRUE == pwdinfo->tx_prov_disc_info.benable) { /* the provision discovery request frame is trigger to send or not */ p2p_protocol_wk_cmd(adapter, P2P_PRE_TX_PROVDISC_PROCESS_WK); @@ -5091,7 +5024,6 @@ void dbg_rtw_p2p_set_role(struct wifidirect_info *wdinfo, enum P2P_ROLE role, co } #endif /* CONFIG_DBG_P2P */ - int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) { int ret = _SUCCESS; @@ -5133,17 +5065,12 @@ int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) #endif } else if (role == P2P_ROLE_DISABLE) { -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.p2p_reject_disable == _TRUE) - return ret; -#endif /* CONFIG_INTEL_WIDI */ #ifdef CONFIG_IOCTL_CFG80211 if (padapter->wdinfo.driver_interface == DRIVER_CFG80211) adapter_wdev_data(padapter)->p2p_enabled = _FALSE; #endif /* CONFIG_IOCTL_CFG80211 */ - /* Disable P2P function */ if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) { _cancel_timer_ex(&pwdinfo->find_phase_timer); @@ -5151,8 +5078,10 @@ int rtw_p2p_enable(_adapter *padapter, enum P2P_ROLE role) _cancel_timer_ex(&pwdinfo->pre_tx_scan_timer); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey); _cancel_timer_ex(&pwdinfo->reset_ch_sitesurvey2); + reset_ch_sitesurvey_timer_process(padapter); reset_ch_sitesurvey_timer_process2(padapter); + #ifdef CONFIG_CONCURRENT_MODE _cancel_timer_ex(&pwdinfo->ap_p2p_switch_timer); #endif diff --git a/core/rtw_pwrctrl.c b/core/rtw_pwrctrl.c index d8b45f450..0a596db2f 100644 --- a/core/rtw_pwrctrl.c +++ b/core/rtw_pwrctrl.c @@ -219,6 +219,7 @@ bool rtw_pwr_unassociated_idle(_adapter *adapter) || check_fwstate(pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) || check_fwstate(pmlmepriv, WIFI_AP_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE) + || check_fwstate(pmlmepriv, WIFI_MONITOR_STATE) #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) || pcfg80211_wdinfo->is_ro_ch #elif defined(CONFIG_P2P) @@ -618,6 +619,7 @@ u8 PS_RDY_CHECK(_adapter *padapter) || check_fwstate(pmlmepriv, WIFI_UNDER_LINKING | WIFI_UNDER_WPS) || check_fwstate(pmlmepriv, WIFI_AP_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE | WIFI_ADHOC_STATE) + || check_fwstate(pmlmepriv, WIFI_MONITOR_STATE) #if defined(CONFIG_P2P) && defined(CONFIG_IOCTL_CFG80211) || pcfg80211_wdinfo->is_ro_ch #endif diff --git a/core/rtw_recv.c b/core/rtw_recv.c old mode 100755 new mode 100644 index d4deb8502..8bb59eeaa --- a/core/rtw_recv.c +++ b/core/rtw_recv.c @@ -28,7 +28,6 @@ #endif - #ifdef CONFIG_NEW_SIGNAL_STAT_PROCESS void rtw_signal_stat_timer_hdl(RTW_TIMER_HDL_ARGS); @@ -52,8 +51,6 @@ u8 signal_stat_calc_profile[SIGNAL_STAT_CALC_PROFILE_MAX][2] = { void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) { - - _rtw_memset((u8 *)psta_recvpriv, 0, sizeof(struct sta_recv_priv)); _rtw_spinlock_init(&psta_recvpriv->lock); @@ -63,7 +60,6 @@ void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv) _rtw_init_queue(&psta_recvpriv->defrag_q); - } sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) @@ -73,7 +69,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) union recv_frame *precvframe; sint res = _SUCCESS; - /* We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). */ /* _rtw_memset((unsigned char *)precvpriv, 0, sizeof (struct recv_priv)); */ @@ -113,7 +108,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) precvframe = (union recv_frame *) precvpriv->precv_frame_buf; - for (i = 0; i < NR_RECVFRAME ; i++) { _rtw_init_listhead(&(precvframe->u.list)); @@ -149,7 +143,6 @@ sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter) exit: - return res; } @@ -177,7 +170,6 @@ void _rtw_free_recv_priv(struct recv_priv *precvpriv) { _adapter *padapter = precvpriv->adapter; - rtw_free_uc_swdec_pending_queue(padapter); rtw_mfree_recv_priv_lock(precvpriv); @@ -189,7 +181,6 @@ void _rtw_free_recv_priv(struct recv_priv *precvpriv) rtw_hal_free_recv_priv(padapter); - } bool rtw_rframe_del_wfd_ie(union recv_frame *rframe, u8 ies_offset) @@ -231,7 +222,6 @@ union recv_frame *_rtw_alloc_recvframe(_queue *pfree_recv_queue) } } - return precvframe; } @@ -264,7 +254,6 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) _adapter *padapter = precvframe->u.hdr.adapter; struct recv_priv *precvpriv = &padapter->recvpriv; - #ifdef CONFIG_CONCURRENT_MODE padapter = GET_PRIMARY_ADAPTER(padapter); precvpriv = &padapter->recvpriv; @@ -272,10 +261,8 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) precvframe->u.hdr.adapter = padapter; #endif - rtw_os_free_recvframe(precvframe); - _enter_critical_bh(&pfree_recv_queue->lock, &irqL); rtw_list_delete(&(precvframe->u.hdr.list)); @@ -291,21 +278,16 @@ int rtw_free_recvframe(union recv_frame *precvframe, _queue *pfree_recv_queue) _exit_critical_bh(&pfree_recv_queue->lock, &irqL); - return _SUCCESS; } - - - sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) { _adapter *padapter = precvframe->u.hdr.adapter; struct recv_priv *precvpriv = &padapter->recvpriv; - /* _rtw_init_listhead(&(precvframe->u.hdr.list)); */ rtw_list_delete(&(precvframe->u.hdr.list)); @@ -317,7 +299,6 @@ sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) precvpriv->free_recvframe_cnt++; } - return _SUCCESS; } @@ -342,9 +323,6 @@ sint rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue) } */ - - - /* caller : defrag ; recvframe_chk_defrag in recv_thread (passive) pframequeue: defrag_queue : will be accessed in recv_thread (passive) @@ -375,7 +353,6 @@ void rtw_free_recvframe_queue(_queue *pframequeue, _queue *pfree_recv_queue) _rtw_spinunlock(&pframequeue->lock); - } u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter) @@ -393,7 +370,6 @@ u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter) return cnt; } - sint rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue) { _irqL irqL; @@ -510,7 +486,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) pframe = precvframe->u.hdr.rx_data; payload = pframe + prxattrib->hdrlen + prxattrib->iv_len; - /* rtw_seccalctkipmic(&stainfo->dot11tkiprxmickey.skey[0],pframe,payload, datalen ,&miccode[0],(unsigned char)prxattrib->priority); */ /* care the length of the data */ rtw_seccalctkipmic(mickey, pframe, payload, datalen , &miccode[0], (unsigned char)prxattrib->priority); /* care the length of the data */ @@ -528,8 +503,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) if (bmic_err == _TRUE) { - - /* double check key_index for some timing issue , */ /* cannot compare with psecuritypriv->dot118021XGrpKeyid also cause timing issue */ if ((IS_MCAST(prxattrib->ra) == _TRUE) && (prxattrib->key_index != pmlmeinfo->key_index)) @@ -559,7 +532,6 @@ sint recvframe_chkmic(_adapter *adapter, union recv_frame *precvframe) exit: - return res; } @@ -576,10 +548,8 @@ union recv_frame *decryptor(_adapter *padapter, union recv_frame *precv_frame) union recv_frame *return_packet = precv_frame; u32 res = _SUCCESS; - DBG_COUNTER(padapter->rx_logs.core_rx_post_decrypt); - if (prxattrib->encrypt > 0) { u8 *iv = precv_frame->u.hdr.rx_data + prxattrib->hdrlen; prxattrib->key_index = (((iv[3]) >> 6) & 0x3) ; @@ -693,7 +663,6 @@ union recv_frame *decryptor(_adapter *padapter, union recv_frame *precv_frame) prxattrib->bdecrypted = _TRUE; /* recvframe_chkmic(adapter, precv_frame); */ /* move to recvframme_defrag function */ - return return_packet; } @@ -712,7 +681,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) u16 eapol_type = 0x888e;/* for Funia BD's WPA issue */ struct rx_pkt_attrib *pattrib; - pstapriv = &adapter->stapriv; auth_alg = adapter->securitypriv.dot11AuthAlgrthm; @@ -726,7 +694,6 @@ union recv_frame *portctrl(_adapter *adapter, union recv_frame *precv_frame) psta = rtw_get_stainfo(pstapriv, psta_addr); - if (auth_alg == dot11AuthAlgrthm_8021X) { if ((psta != NULL) && (psta->ieee8021x_blocked)) { /* blocked */ @@ -775,7 +742,6 @@ sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcac u16 seq_ctrl = ((precv_frame->u.hdr.attrib.seq_num & 0xffff) << 4) | (precv_frame->u.hdr.attrib.frag_num & 0xf); - if (tid > 15) { return _FAIL; @@ -790,7 +756,6 @@ sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcac prxcache->tid_rxseq[tid] = seq_ctrl; - return _SUCCESS; } @@ -897,7 +862,6 @@ void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame) } - #endif } @@ -1083,7 +1047,6 @@ sint sta2sta_data_frame( u8 *pframe_body = psnap_type + 2 + 1; #endif - /* RTW_INFO("[%s] %d, seqnum:%d\n", __FUNCTION__, __LINE__, pattrib->seq_num); */ if ((check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) == _TRUE) || @@ -1294,7 +1257,6 @@ sint ap2sta_data_frame( goto exit; } - /* check BSSID */ if (_rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) || @@ -1354,7 +1316,6 @@ sint ap2sta_data_frame( goto exit; } - } else if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { /* Special case */ ret = RTW_RX_HANDLED; @@ -1387,7 +1348,6 @@ sint ap2sta_data_frame( exit: - return ret; } @@ -1481,7 +1441,6 @@ sint sta2ap_data_frame( exit: - return ret; } @@ -1642,7 +1601,6 @@ sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame) { /* struct mlme_priv *pmlmepriv = &adapter->mlmepriv; */ - #if 0 if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE) { #ifdef CONFIG_NATIVEAP_MLME @@ -1745,7 +1703,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) struct security_priv *psecuritypriv = &adapter->securitypriv; sint ret = _SUCCESS; - bretry = GetRetry(ptr); pda = get_da(ptr); psa = get_sa(ptr); @@ -1816,7 +1773,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) /* psta->signal_quality= prxcmd->sq; */ precv_frame->u.hdr.psta = psta; - pattrib->amsdu = 0; pattrib->ack_policy = 0; /* parsing QC field */ @@ -1835,7 +1791,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) pattrib->hdrlen = pattrib->to_fr_ds == 3 ? 30 : 24; } - if (pattrib->order) /* HT-CTRL 11n */ pattrib->hdrlen += 4; @@ -1852,7 +1807,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) if (pattrib->privacy) { - #ifdef CONFIG_TDLS if ((psta->tdls_sta_state & TDLS_LINKED_STATE) && (psta->dot118021XPrivacy == _AES_)) pattrib->encrypt = psta->dot118021XPrivacy; @@ -1869,7 +1823,6 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame) exit: - return ret; } @@ -2172,7 +2125,7 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) if ((bDumpRxPkt == 4) && (eth_type == 0x888e)) dump_rx_packet(ptr); #endif - } else + } else { DBG_COUNTER(adapter->rx_logs.core_rx_pre_data_handled); break; default: @@ -2183,6 +2136,7 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) retval = _FAIL; break; } +} exit: @@ -2190,7 +2144,6 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame) return retval; } - /* remove the wlanhdr and add the eth_hdr */ #if 1 @@ -2210,7 +2163,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) u8 *ptr = get_recvframe_data(precvframe) ; /* point to frame_ctrl field */ struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib; - if (pattrib->encrypt) recvframe_pull_tail(precvframe, pattrib->icv_len); @@ -2233,7 +2185,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) rmv_len = pattrib->hdrlen + pattrib->iv_len + (bsnaphdr ? SNAP_SIZE : 0); len = precvframe->u.hdr.len - rmv_len; - _rtw_memcpy(ð_type, ptr + rmv_len, 2); eth_type = ntohs((unsigned short)eth_type); /* pattrib->ether_type */ pattrib->eth_type = eth_type; @@ -2415,7 +2366,6 @@ sint wlanhdr_to_ethhdr(union recv_frame *precvframe) exit: - return ret; } #endif @@ -2564,8 +2514,6 @@ union recv_frame *recvframe_defrag(_adapter *adapter, _queue *defrag_q) /* free the defrag_q queue and return the prframe */ rtw_free_recvframe_queue(defrag_q, pfree_recv_queue); - - return prframe; } @@ -2661,7 +2609,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec } - if ((prtnframe != NULL) && (prtnframe->u.hdr.attrib.privacy)) { /* after defrag we must check tkip mic code */ if (recvframe_chkmic(padapter, prtnframe) == _FAIL) { @@ -2670,7 +2617,6 @@ union recv_frame *recvframe_chk_defrag(PADAPTER padapter, union recv_frame *prec } } - return prtnframe; } @@ -2835,7 +2781,6 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */ /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */ - phead = get_list_head(ppending_recvframe_queue); plist = get_next(phead); @@ -2858,7 +2803,6 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec } - /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */ /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */ @@ -2998,7 +2942,6 @@ int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *pre /* error condition; */ } - /* Update local variables. */ bPktInBuf = _FALSE; @@ -3129,7 +3072,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) _enter_critical_bh(&ppending_recvframe_queue->lock, &irql); - /* s2. check if winstart_b(indicate_seq) needs to been updated */ if (!check_indicate_seq(preorder_ctrl, pattrib->seq_num)) { pdbgpriv->dbg_rx_ampdu_drop_count++; @@ -3152,7 +3094,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) #endif } - /* s3. Insert all packet into Reorder Queue to maintain its ordering. */ if (!enqueue_reorder_recvframe(preorder_ctrl, prframe)) { /* DbgPrint("recv_indicatepkt_reorder, enqueue_reorder_recvframe fail!\n"); */ @@ -3164,7 +3105,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) goto _err_exit; } - /* s4. */ /* Indication process. */ /* After Packet dropping and Sliding Window shifting as above, we can now just indicate the packets */ @@ -3188,7 +3128,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) _cancel_timer_ex(&preorder_ctrl->reordering_ctrl_timer); } - _success_exit: return _SUCCESS; @@ -3200,7 +3139,6 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe) return _FAIL; } - void rtw_reordering_ctrl_timeout_handler(void *pcontext) { _irqL irql; @@ -3208,7 +3146,6 @@ void rtw_reordering_ctrl_timeout_handler(void *pcontext) _adapter *padapter = preorder_ctrl->padapter; _queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue; - if (RTW_CANNOT_RUN(padapter)) return; @@ -3392,7 +3329,6 @@ static sint MPwlanhdr_to_ethhdr(union recv_frame *precvframe) _rtw_memcpy(ptr + 12, &len, 2); } - len = htons(pattrib->seq_num); /* RTW_INFO("wlan seq = %d ,seq_num =%x\n",len,pattrib->seq_num); */ _rtw_memcpy(ptr + 12, &len, 2); @@ -3405,12 +3341,10 @@ static sint MPwlanhdr_to_ethhdr(union recv_frame *precvframe) } - return ret; } - int mp_recv_frame(_adapter *padapter, union recv_frame *rframe) { int ret = _SUCCESS; @@ -3674,9 +3608,15 @@ static sint fill_radiotap_hdr(_adapter *padapter, union recv_frame *precvframe) if (pattrib->mfrag) hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FRAG; - /* always append FCS */ - hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FCS; +#ifdef CONFIG_RX_PACKET_APPEND_FCS + // Start by always indicating FCS is there: + hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_FCS; + // Next, test for prior conditions that will remove FCS, and update flag accordingly: + if(check_fwstate(&padapter->mlmepriv,WIFI_MONITOR_STATE) == _FALSE) + if((pattrib->pkt_rpt_type == NORMAL_RX) && (pHalData->ReceiveConfig & RCR_APPFCS)) + hdr_buf[rt_len] &= ~IEEE80211_RADIOTAP_F_FCS; +#endif if (0) hdr_buf[rt_len] |= IEEE80211_RADIOTAP_F_DATAPAD; @@ -3931,7 +3871,6 @@ int recv_frame_monitor(_adapter *padapter, union recv_frame *rframe) _queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue; _pkt *pskb = NULL; - /* fill radiotap header */ if (fill_radiotap_hdr(padapter, rframe) == _FAIL) { ret = _FAIL; @@ -4148,7 +4087,6 @@ int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe) return ret; } - int recv_func(_adapter *padapter, union recv_frame *rframe); int recv_func(_adapter *padapter, union recv_frame *rframe) { @@ -4213,7 +4151,6 @@ int recv_func(_adapter *padapter, union recv_frame *rframe) return ret; } - s32 rtw_recv_entry(union recv_frame *precvframe) { _adapter *padapter; @@ -4232,7 +4169,6 @@ s32 rtw_recv_entry(union recv_frame *precvframe) goto _recv_entry_drop; } - precvpriv->rx_pkts++; @@ -4245,8 +4181,6 @@ s32 rtw_recv_entry(union recv_frame *precvframe) padapter->mppriv.rx_pktloss = precvpriv->rx_drop; #endif - - return ret; } @@ -4589,7 +4523,6 @@ void rtw_reset_continual_no_rx_packet(struct sta_info *sta, int tid_index) ATOMIC_SET(&sta->continual_no_rx_packet[tid_index], 0); } - s32 pre_recv_entry(union recv_frame *precvframe, u8 *pphy_status) { s32 ret = _SUCCESS; diff --git a/core/rtw_wlan_util.c b/core/rtw_wlan_util.c index 6844da964..6de4e2e5f 100644 --- a/core/rtw_wlan_util.c +++ b/core/rtw_wlan_util.c @@ -2353,8 +2353,7 @@ int rtw_get_bcn_keys(ADAPTER *Adapter, u8 *pframe, u32 packet_len, _rtw_memcpy(recv_beacon->ssid, elems.ssid, elems.ssid_len); recv_beacon->ssid_len = elems.ssid_len; - } else - ; /* means hidden ssid */ + } else { ; } /* means hidden ssid */ /* checking RSN first */ if (elems.rsn_ie && elems.rsn_ie_len) { @@ -3038,11 +3037,6 @@ void update_tx_basic_rate(_adapter *padapter, u8 wirelessmode) if (!rtw_p2p_chk_state(pwdinfo, P2P_STATE_NONE)) return; #endif /* CONFIG_P2P */ -#ifdef CONFIG_INTEL_WIDI - if (padapter->mlmepriv.widi_state != INTEL_WIDI_STATE_NONE) - return; -#endif /* CONFIG_INTEL_WIDI */ - _rtw_memset(supported_rates, 0, NDIS_802_11_LENGTH_RATES_EX); /* clear B mod if current channel is in 5G band, avoid tx cck rate in 5G band. */ @@ -4475,7 +4469,11 @@ int rtw_dev_nlo_info_set(struct pno_nlo_info *nlo_info, pno_ssid_t *ssid, source = rtw_zmalloc(2048); if (source != NULL) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + len = kernel_read(fp, source, len, &pos); +#else len = vfs_read(fp, source, len, &pos); +#endif rtw_parse_cipher_list(nlo_info, source); rtw_mfree(source, 2048); } diff --git a/core/rtw_xmit.c b/core/rtw_xmit.c index f931d97b0..c1019bbb2 100644 --- a/core/rtw_xmit.c +++ b/core/rtw_xmit.c @@ -1254,10 +1254,11 @@ static s32 update_attrib(_adapter *padapter, _pkt *pkt, struct pkt_attrib *pattr _rtw_memcpy(pattrib->ra, pattrib->dst, ETH_ALEN); _rtw_memcpy(pattrib->ta, get_bssid(pmlmepriv), ETH_ALEN); DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_ap); - } else + } else { DBG_COUNTER(padapter->tx_logs.core_tx_upd_attrib_unknown); bmcast = IS_MCAST(pattrib->ra); + } if (bmcast) { psta = rtw_get_bcmc_stainfo(padapter); if (psta == NULL) { /* if we cannot get psta => drop the pkt */ @@ -3874,7 +3875,7 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) u32 len = skb->len; u8 category, action; int type = -1; - + //RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); if (skb) @@ -3922,17 +3923,17 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) fixed_rate = 0; fixed_rate += MGN_MCS0; } - if ((mcs_have & 4) && + if ((mcs_have & 4) && (iterator.this_arg[1] & 4)) sgi = 1; - if ((mcs_have & 1) && + if ((mcs_have & 1) && (iterator.this_arg[1] & 1)) bwidth = 1; - if ((mcs_have & 0x10) && + if ((mcs_have & 0x10) && (iterator.this_arg[1] & 0x10)) ldpc = 1; if ((mcs_have & 0x20)) - stbc = (iterator.this_arg[1] >> 5) & 3; + stbc = (iterator.this_arg[1] >> 5) & 3; } break; @@ -3994,8 +3995,9 @@ s32 rtw_monitor_xmit_entry(struct sk_buff *skb, struct net_device *ndev) pattrib->ldpc = ldpc; pattrib->stbc = stbc; pattrib->retry_ctrl = (txflags & 0x08)?_FALSE:_TRUE; + // pattrib->sw_seq = (txflags & 0x10)?_TRUE:_FALSE; // Adds support for pre-configured SeqNum via RadioTap + - pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; pmlmeext->mgnt_seq = GetSequence(pwlanhdr); diff --git a/dkms-install.sh b/dkms-install.sh new file mode 100755 index 000000000..51d8f6685 --- /dev/null +++ b/dkms-install.sh @@ -0,0 +1,23 @@ +#!/bin/bash + +if [[ $EUID -ne 0 ]]; then + echo "You must run this with superuser priviliges. Try \"sudo ./dkms-install.sh\"" 2>&1 + exit 1 +else + echo "About to run dkms install steps..." +fi + +DRV_DIR=rtl8812au +DRV_NAME=rtl8812au +DRV_VERSION=5.1.5 + +cp -r ../${DRV_DIR} /usr/src/${DRV_NAME}-${DRV_VERSION} + +dkms add -m ${DRV_NAME} -v ${DRV_VERSION} +dkms build -m ${DRV_NAME} -v ${DRV_VERSION} +dkms install -m ${DRV_NAME} -v ${DRV_VERSION} +RESULT=$? + +echo "Finished running dkms install steps." + +exit $RESULT diff --git a/dkms-remove.sh b/dkms-remove.sh new file mode 100755 index 000000000..51a3a3277 --- /dev/null +++ b/dkms-remove.sh @@ -0,0 +1,24 @@ +#!/bin/bash + +if [[ $EUID -ne 0 ]]; then + echo "You must run this with superuser priviliges. Try \"sudo ./dkms-remove.sh\"" 2>&1 + exit 1 +else + echo "About to run dkms removal steps..." +fi + +DRV_DIR=rtl8812au +DRV_NAME=rtl8812au +DRV_VERSION=5.1.5 + +dkms remove ${DRV_NAME}/${DRV_VERSION} --all +rm -rf /usr/src/${DRV_NAME}-${DRV_VERSION} + +RESULT=$? +if [[ "$RESULT" != "0" ]]; then + echo "Error occurred while running dkms remove." 2>&1 +else + echo "Finished running dkms removal steps." +fi + +exit $RESULT diff --git a/dkms.conf b/dkms.conf new file mode 100644 index 000000000..e23ac1ed5 --- /dev/null +++ b/dkms.conf @@ -0,0 +1,9 @@ +PACKAGE_NAME="realtek-rtl88xxau" +PACKAGE_VERSION="5.1.5~20180608" +CLEAN="make clean" +BUILT_MODULE_NAME[0]=8812au +DEST_MODULE_LOCATION[0]="/updates" +MAKE[0]="'make' KVER=${kernelver} && 'make' RTL8814=1 KVER=${kernelver}" +BUILT_MODULE_NAME[1]=8814au +DEST_MODULE_LOCATION[1]="/updates" +AUTOINSTALL="yes" diff --git a/hal/HalPwrSeqCmd.c b/hal/HalPwrSeqCmd.c index de709b106..a4fd21a3a 100644 --- a/hal/HalPwrSeqCmd.c +++ b/hal/HalPwrSeqCmd.c @@ -35,7 +35,6 @@ Major Change History: --*/ #include - /* * Description: * This routine deal with the Power Configuration CMDs parsing for RTL8723/RTL8188E Series IC. @@ -63,7 +62,6 @@ u8 HalPwrSeqCmdParsing( do { PwrCfgCmd = PwrSeqCmd[AryIdx]; - /* 2 Only Handle the command whose FAB, CUT, and Interface are matched */ if ((GET_PWR_CFG_FAB_MASK(PwrCfgCmd) & FabVersion) && (GET_PWR_CFG_CUT_MASK(PwrCfgCmd) & CutVersion) && diff --git a/hal/btc/HalBtc8703b2Ant.c b/hal/btc/HalBtc8703b2Ant.c old mode 100755 new mode 100644 diff --git a/hal/btc/HalBtc8703b2Ant.h b/hal/btc/HalBtc8703b2Ant.h old mode 100755 new mode 100644 diff --git a/hal/btc/HalBtcOutSrc.h b/hal/btc/HalBtcOutSrc.h index 9a8c8fb99..545223bb7 100644 --- a/hal/btc/HalBtcOutSrc.h +++ b/hal/btc/HalBtcOutSrc.h @@ -146,7 +146,7 @@ typedef enum _BTC_WIFI_ROLE{ typedef enum _BTC_WIRELESS_FREQ{ BTC_FREQ_2_4G = 0x0, BTC_FREQ_5G = 0x1, - BTC_FREQ_MAX + BTC_FREQ_MAX }BTC_WIRELESS_FREQ,*PBTC_WIRELESS_FREQ; typedef enum _BTC_WIFI_BW_MODE{ @@ -155,13 +155,13 @@ typedef enum _BTC_WIFI_BW_MODE{ BTC_WIFI_BW_HT40 = 0x2, BTC_WIFI_BW_HT80 = 0x3, BTC_WIFI_BW_HT160 = 0x4, - BTC_WIFI_BW_MAX + BTC_WIFI_BW_MAX }BTC_WIFI_BW_MODE,*PBTC_WIFI_BW_MODE; typedef enum _BTC_WIFI_TRAFFIC_DIR{ BTC_WIFI_TRAFFIC_TX = 0x0, BTC_WIFI_TRAFFIC_RX = 0x1, - BTC_WIFI_TRAFFIC_MAX + BTC_WIFI_TRAFFIC_MAX }BTC_WIFI_TRAFFIC_DIR,*PBTC_WIFI_TRAFFIC_DIR; typedef enum _BTC_WIFI_PNP{ @@ -179,14 +179,14 @@ typedef enum _BTC_IOT_PEER BTC_IOT_PEER_RALINK = 4, BTC_IOT_PEER_ATHEROS = 5, BTC_IOT_PEER_CISCO = 6, - BTC_IOT_PEER_MERU = 7, + BTC_IOT_PEER_MERU = 7, BTC_IOT_PEER_MARVELL = 8, BTC_IOT_PEER_REALTEK_SOFTAP = 9,// peer is RealTek SOFT_AP, by Bohn, 2009.12.17 BTC_IOT_PEER_SELF_SOFTAP = 10, // Self is SoftAP BTC_IOT_PEER_AIRGO = 11, - BTC_IOT_PEER_INTEL = 12, - BTC_IOT_PEER_RTK_APCLIENT = 13, - BTC_IOT_PEER_REALTEK_81XX = 14, + BTC_IOT_PEER_INTEL = 12, + BTC_IOT_PEER_RTK_APCLIENT = 13, + BTC_IOT_PEER_REALTEK_81XX = 14, BTC_IOT_PEER_REALTEK_WOW = 15, BTC_IOT_PEER_REALTEK_JAGUAR_BCUTAP = 16, BTC_IOT_PEER_REALTEK_JAGUAR_CCUTAP = 17, @@ -215,7 +215,7 @@ typedef enum _BTC_ANT_TYPE{ typedef enum _BTC_VENDOR{ BTC_VENDOR_LENOVO, - BTC_VENDOR_ASUS, + BTC_VENDOR_ASUS, BTC_VENDOR_OTHER }BTC_VENDOR,*PBTC_VENDOR; @@ -242,7 +242,7 @@ typedef enum _BTC_GET_TYPE{ // type s4Byte BTC_GET_S4_WIFI_RSSI, BTC_GET_S4_HS_RSSI, - + // type u4Byte BTC_GET_U4_WIFI_BW, BTC_GET_U4_WIFI_TRAFFIC_DIRECTION, @@ -543,21 +543,21 @@ typedef VOID IN u4Byte BitMask, IN u4Byte Data ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_BB_REG)( IN PVOID pBtcContext, IN u4Byte RegAddr, IN u4Byte BitMask ); typedef VOID -(*BFP_BTC_SET_RF_REG)( +(*BFP_BTC_SET_RF_REG)( IN PVOID pBtcContext, IN u1Byte eRFPath, IN u4Byte RegAddr, IN u4Byte BitMask, IN u4Byte Data ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_RF_REG)( IN PVOID pBtcContext, IN u1Byte eRFPath, @@ -598,7 +598,7 @@ typedef BOOLEAN IN u1Byte txTime, IN u1Byte btChnl ); -typedef u2Byte +typedef u2Byte (*BFP_BTC_GET_BT_REG)( IN PVOID pBtcContext, IN u1Byte regType, @@ -620,17 +620,17 @@ typedef COL_H2C_STATUS IN u1Byte h2c_par_len ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_BT_COEX_SUPPORTED_FEATURE)( IN PVOID pBtcContext ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_BT_COEX_SUPPORTED_VERSION)( IN PVOID pBtcContext ); -typedef u4Byte +typedef u4Byte (*BFP_BTC_GET_PHYDM_VERSION)( IN PVOID pBtcContext ); @@ -775,7 +775,7 @@ extern struct btc_coexist GLBtCoexist; BOOLEAN EXhalbtcoutsrc_InitlizeVariables( - IN PVOID Adapter + IN PVOID Adapter ); VOID EXhalbtcoutsrc_PowerOnSetting( diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c index 22f793cc3..b7ff6f64c 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.c @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License 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. -* -* 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., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License 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. +* +* 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., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ #include @@ -25,7 +25,7 @@ * MPCIE.TXT ******************************************************************************/ -u1Byte Array_MP_8814A_MPCIE[] = { +u1Byte Array_MP_8814A_MPCIE[] = { 0xFF, 0xFF, 0xFF, diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h index 8b51c1b4a..9b4d7c5ac 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_PCIE.h @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License 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. -* -* 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., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License 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. +* +* 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., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c index cd80e9294..d882d922c 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.c @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License 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. -* -* 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., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License 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. +* +* 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., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ #include @@ -25,7 +25,7 @@ * MUSB.TXT ******************************************************************************/ -u1Byte Array_MP_8814A_MUSB[] = { +u1Byte Array_MP_8814A_MUSB[] = { 0xFF, 0xFF, 0xFF, diff --git a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h index 4262400d7..be33e37e1 100644 --- a/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h +++ b/hal/efuse/rtl8814a/HalEfuseMask8814A_USB.h @@ -1,21 +1,21 @@ -/****************************************************************************** -* -* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. -* -* This program is free software; you can redistribute it and/or modify it -* under the terms of version 2 of the GNU General Public License 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. -* -* 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., -* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA -* -* +/****************************************************************************** +* +* Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. +* +* This program is free software; you can redistribute it and/or modify it +* under the terms of version 2 of the GNU General Public License 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. +* +* 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., +* 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA +* +* ******************************************************************************/ diff --git a/hal/hal_com_phycfg.c b/hal/hal_com_phycfg.c index dc28867a6..9b448d2ba 100644 --- a/hal/hal_com_phycfg.c +++ b/hal/hal_com_phycfg.c @@ -3491,9 +3491,8 @@ PHY_SetTxPowerLimit( if (powerLimit < prevPowerLimit) pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A] = powerLimit; - if (0) - RTW_INFO("2.4G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" - , regulation, bandwidth, rateSection, channelIndex, pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][ODM_RF_PATH_A]); + RTW_INFO("2.4G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" + , regulation, bandwidth, rateSection, channelIndex, pHalData->TxPwrLimit_2_4G[regulation][bandwidth][rateSection][channelIndex][ODM_RF_PATH_A]); } else if (eqNByte(Band, (u8 *)("5G"), 2)) { channelIndex = phy_GetChannelIndexOfTxPowerLimit(BAND_ON_5G, channel); @@ -3512,9 +3511,8 @@ PHY_SetTxPowerLimit( if (powerLimit < prevPowerLimit) pHalData->TxPwrLimit_5G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A] = powerLimit; - if (0) - RTW_INFO("5G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" - , regulation, bandwidth, rateSection, channel, pHalData->TxPwrLimit_5G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A]); + RTW_INFO("5G Band value : [regulation %d][bw %d][rate_section %d][chnl %d][val %d]\n" + , regulation, bandwidth, rateSection, channel, pHalData->TxPwrLimit_5G[regulation][bandwidth][rateSection][channelIndex][RF_PATH_A]); } else { RTW_PRINT("Cannot recognize the band info in %s\n", Band); return; diff --git a/hal/hal_dm.c b/hal/hal_dm.c index 870685fb0..e152da300 100644 --- a/hal/hal_dm.c +++ b/hal/hal_dm.c @@ -99,7 +99,6 @@ void Init_ODM_ComInfo(_adapter *adapter) ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_BWIFI_TEST, adapter->registrypriv.wifi_spec); - if (pHalData->rf_type == RF_1T1R) ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_1T1R); else if (pHalData->rf_type == RF_1T2R) @@ -121,7 +120,6 @@ void Init_ODM_ComInfo(_adapter *adapter) else ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_TYPE, ODM_XTXR); - { /* 1 ======= BoardType: ODM_CMNINFO_BOARD_TYPE ======= */ u8 odm_board_type = ODM_BOARD_DEFAULT; diff --git a/hal/hal_mp.c b/hal/hal_mp.c index bf6b4c270..f7d86180f 100644 --- a/hal/hal_mp.c +++ b/hal/hal_mp.c @@ -52,7 +52,6 @@ #endif #endif /* !RTW_HALMAC */ - u8 MgntQuery_NssTxRate(u16 Rate) { u8 NssNum = RF_TX_NUM_NONIMPLEMENT; @@ -112,7 +111,6 @@ s32 hal_mpt_SetPowerTracking(PADAPTER padapter, u8 enable) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); PDM_ODM_T pDM_Odm = &(pHalData->odmpriv); - if (!netif_running(padapter->pnetdev)) { return _FAIL; } @@ -137,7 +135,6 @@ void hal_mpt_GetPowerTracking(PADAPTER padapter, u8 *enable) *enable = pDM_Odm->RFCalibrateInfo.TxPowerTrackControl; } - void hal_mpt_CCKTxPowerAdjust(PADAPTER Adapter, BOOLEAN bInCH14) { u32 TempVal = 0, TempVal2 = 0, TempVal3 = 0; @@ -988,8 +985,9 @@ void mpt_SetRFPath_8812A(PADAPTER pAdapter) } switch (ulAntennaRx) { - u32 reg0xC50 = 0; + u32 reg0xC50; case ANTENNA_A: + reg0xC50 = 0; PHY_SetBBReg(pAdapter, rRxPath_Jaguar, bMaskByte0, 0x11); PHY_SetRFReg(pAdapter, ODM_RF_PATH_B, RF_AC_Jaguar, 0xF0000, 0x1); /*/ RF_B_0x0[19:16] = 1, Standby mode*/ PHY_SetBBReg(pAdapter, rCCK_RX_Jaguar, bCCK_RX_Jaguar, 0x0); @@ -1016,6 +1014,7 @@ void mpt_SetRFPath_8812A(PADAPTER pAdapter) } break; case ANTENNA_B: + reg0xC50 = 0; PHY_SetBBReg(pAdapter, rRxPath_Jaguar, bMaskByte0, 0x22); PHY_SetRFReg(pAdapter, ODM_RF_PATH_A, RF_AC_Jaguar, 0xF0000, 0x1);/*/ RF_A_0x0[19:16] = 1, Standby mode */ PHY_SetBBReg(pAdapter, rCCK_RX_Jaguar, bCCK_RX_Jaguar, 0x1); @@ -1299,7 +1298,6 @@ void mpt_SetRFPath_8723D(PADAPTER pAdapter) PHY_SetRFReg(pAdapter, ODM_RF_PATH_A, 0x51, bRFRegOffsetMask, 0x6B04E); - for (i = 0; i < 3; ++i) { /* <20130603, Kordan> Because BB suppors only 1T1R, we restore IQC to S1 instead of S0.*/ @@ -1468,7 +1466,6 @@ VOID mpt_SetRFPath_819X(PADAPTER pAdapter) break; } - if (chgTx && chgRx) { switch (pHalData->rf_chip) { case RF_8225: @@ -1493,7 +1490,6 @@ VOID mpt_SetRFPath_819X(PADAPTER pAdapter) } } /* MPT_ProSetRFPath */ - void hal_mpt_SetAntenna(PADAPTER pAdapter) { @@ -1560,12 +1556,10 @@ s32 hal_mpt_SetThermalMeter(PADAPTER pAdapter, u8 target_ther) return _FAIL; } - if (check_fwstate(&pAdapter->mlmepriv, WIFI_MP_STATE) == _FALSE) { return _FAIL; } - target_ther &= 0xff; if (target_ther < 0x07) target_ther = 0x07; @@ -1577,14 +1571,12 @@ s32 hal_mpt_SetThermalMeter(PADAPTER pAdapter, u8 target_ther) return _SUCCESS; } - void hal_mpt_TriggerRFThermalMeter(PADAPTER pAdapter) { PHY_SetRFReg(pAdapter, ODM_RF_PATH_A, 0x42, BIT17 | BIT16, 0x03); } - u8 hal_mpt_ReadRFThermalMeter(PADAPTER pAdapter) { @@ -1595,7 +1587,6 @@ u8 hal_mpt_ReadRFThermalMeter(PADAPTER pAdapter) } - void hal_mpt_GetThermalMeter(PADAPTER pAdapter, u8 *value) { #if 0 @@ -1611,7 +1602,6 @@ void hal_mpt_GetThermalMeter(PADAPTER pAdapter, u8 *value) } - void hal_mpt_SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); @@ -1656,7 +1646,6 @@ void hal_mpt_SetSingleCarrierTx(PADAPTER pAdapter, u8 bStart) } } - void hal_mpt_SetSingleToneTx(PADAPTER pAdapter, u8 bStart) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); @@ -2071,7 +2060,6 @@ static VOID mpt_StopCckContTx( } /* mpt_StopCckContTx */ - static VOID mpt_StopOfdmContTx( PADAPTER pAdapter ) diff --git a/hal/led/hal_usb_led.c b/hal/led/hal_usb_led.c index 44324f613..117bc93e0 100644 --- a/hal/led/hal_usb_led.c +++ b/hal/led/hal_usb_led.c @@ -66,7 +66,6 @@ SwLedBlink( bStopBlinking = _TRUE; break; - default: bStopBlinking = _TRUE; break; @@ -142,7 +141,6 @@ SwLedBlink1( SwLedOff(padapter, pLed); } - if (pHalData->CustomerID == RT_CID_DEFAULT) { if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { if (!pLed1->bSWLedCtrl) { @@ -453,7 +451,6 @@ SwLedBlink3( if (pLed->bLedOn) SwLedOff(padapter, pLed); - } pLed->bLedBlinkInProgress = _FALSE; } else { @@ -497,14 +494,12 @@ SwLedBlink3( } break; - default: break; } } - void SwLedBlink4( PLED_USB pLed @@ -688,9 +683,6 @@ SwLedBlink4( default: break; } - - - } void @@ -742,7 +734,6 @@ SwLedBlink5( } break; - case LED_BLINK_TXRX: pLed->BlinkTimes--; if (pLed->BlinkTimes == 0) @@ -778,9 +769,6 @@ SwLedBlink5( default: break; } - - - } void @@ -798,7 +786,6 @@ SwLedBlink6( } else { SwLedOff(padapter, pLed); } - } void @@ -886,8 +873,6 @@ SwLedBlink7( default: break; } - - } void @@ -903,8 +888,6 @@ SwLedBlink8( } else { SwLedOff(Adapter, pLed); } - - } /* page added for Belkin AC950. 20120813 */ @@ -925,7 +908,6 @@ SwLedBlink9( } /* RTW_INFO("%s, pLed->CurrLedState=%d, pLed->BlinkingLedState=%d\n", __FUNCTION__, pLed->CurrLedState, pLed->BlinkingLedState); */ - switch (pLed->CurrLedState) { case RTW_LED_ON: SwLedOn(Adapter, pLed); @@ -1140,7 +1122,6 @@ SwLedBlink9( default: break; } - } /* page added for Netgear A6200V2. 20120827 */ @@ -1160,7 +1141,6 @@ SwLedBlink10( SwLedOff(Adapter, pLed); } - switch (pLed->CurrLedState) { case RTW_LED_ON: SwLedOn(Adapter, pLed); @@ -1341,7 +1321,6 @@ SwLedBlink10( break; } - } void @@ -1478,9 +1457,6 @@ SwLedBlink12( default: break; } - - - } VOID @@ -1540,8 +1516,6 @@ SwLedBlink13( LinkBlinkCnt = 0; break; } - - } VOID @@ -1598,7 +1572,6 @@ SwLedBlink14( LinkBlinkCnt = 0; break; } - } VOID @@ -1726,7 +1699,6 @@ SwLedBlink15( LinkBlinkCnt = 0; break; } - } /* @@ -1749,6 +1721,24 @@ void BlinkHandler(PLED_USB pLed) return; } +#ifdef CONFIG_SW_LED + /* led_enable 1 is normal blinking so don't cause always on/off */ + if (padapter->registrypriv.led_ctrl != 1) { + if (padapter->registrypriv.led_ctrl == 0) + { + /* Cause LED to be always off */ + pLed->BlinkingLedState = RTW_LED_OFF; + /* RTW_INFO("Led off\n"); */ + } else { + /* Cause LED to be always on for led_ctrl 2 or greater */ + pLed->BlinkingLedState = RTW_LED_ON; + /* RTW_INFO("Led on\n"); */ + } + /* Skip various switch cases where SwLedBlink*() called below */ + pLed->CurrLedState = LED_UNKNOWN; + } +#endif + switch (ledpriv->LedStrategy) { case SW_LED_MODE0: SwLedBlink(pLed); @@ -1956,7 +1946,6 @@ SwLedControlMode0( break; } - } /* ALPHA, added by chiyoko, 20090106 */ @@ -2114,7 +2103,6 @@ SwLedControlMode1( } break; - case LED_CTL_STOP_WPS: if (pLed->bLedNoLinkBlinkInProgress == _TRUE) { _cancel_timer_ex(&(pLed->BlinkTimer)); @@ -2193,7 +2181,6 @@ SwLedControlMode1( break; } - } /* Arcadyan/Sitecom , added by chiyoko, 20090216 */ @@ -2332,7 +2319,6 @@ SwLedControlMode2( break; } - } /* COREGA, added by chiyoko, 20090316 */ @@ -2486,7 +2472,6 @@ SwLedControlMode3( break; } - } @@ -2790,11 +2775,8 @@ SwLedControlMode4( break; } - } - - /* Sercomm-Belkin, added by chiyoko, 20090415 */ static void SwLedControlMode5( @@ -2871,7 +2853,6 @@ SwLedControlMode5( break; } - } /* WNC-Corega, added by chiyoko, 20090902 */ @@ -2902,7 +2883,6 @@ SwLedControlMode6( default: break; } - } /* Netgear, added by sinda, 2011/11/11 */ @@ -2996,7 +2976,6 @@ SwLedControlMode7( break; - case LED_CTL_STOP_WPS_FAIL: case LED_CTL_STOP_WPS_FAIL_OVERLAP: /* WPS session overlap */ if (pLed->bLedWPSBlinkInProgress) { @@ -3042,7 +3021,6 @@ SwLedControlMode7( break; } - } void @@ -3077,8 +3055,6 @@ SwLedControlMode8( default: break; } - - } /* page added for Belkin AC950, 20120813 */ @@ -3269,7 +3245,6 @@ SwLedControlMode9( if (pLed1->bLedOn) _set_timer(&(pLed1->BlinkTimer), 0); - break; case LED_CTL_STOP_WPS_FAIL: /* WPS authentication fail */ @@ -3356,7 +3331,6 @@ SwLedControlMode9( pLed1->bLedWPSBlinkInProgress = _FALSE; } - pLed1->BlinkingLedState = LED_UNKNOWN; SwLedOff(Adapter, pLed); SwLedOff(Adapter, pLed1); @@ -3380,7 +3354,6 @@ SwLedControlMode9( break; } - } /* page added for Netgear A6200V2, 20120827 */ @@ -3519,7 +3492,6 @@ SwLedControlMode10( _set_timer(&(pLed1->BlinkTimer), LED_BLINK_NORMAL_INTERVAL + LED_BLINK_LINK_INTERVAL_NETGEAR); } - break; case LED_CTL_STOP_WPS: /* WPS connect success */ @@ -3573,12 +3545,10 @@ SwLedControlMode10( break; - default: break; } - } /* Edimax-ASUS, added by Page, 20121221 */ @@ -3633,7 +3603,6 @@ SwLedControlMode11( break; - case LED_CTL_STOP_WPS: case LED_CTL_STOP_WPS_FAIL: if (pLed->bLedBlinkInProgress == _TRUE) { @@ -3676,7 +3645,6 @@ SwLedControlMode11( break; } - } /* page added for NEC */ @@ -3757,7 +3725,6 @@ SwLedControlMode12( break; } - } /* Maddest add for NETGEAR R6100 */ @@ -3777,7 +3744,6 @@ SwLedControlMode13( if (pLed->bLedWPSBlinkInProgress) return; - pLed->CurrLedState = RTW_LED_ON; pLed->BlinkingLedState = RTW_LED_ON; if (pLed->bLedBlinkInProgress) { @@ -3832,7 +3798,6 @@ SwLedControlMode13( break; - case LED_CTL_STOP_WPS_FAIL: case LED_CTL_STOP_WPS_FAIL_OVERLAP: /* WPS session overlap */ if (pLed->bLedWPSBlinkInProgress) { @@ -3902,8 +3867,6 @@ SwLedControlMode13( break; } - - } /* Maddest add for DNI Buffalo */ @@ -4226,7 +4189,6 @@ LedControlUSB( default: break; } - } /* @@ -4271,7 +4233,6 @@ InitLed( _init_workitem(&(pLed->BlinkWorkItem), BlinkWorkItemCallback, pLed); } - /* * Description: * DeInitialize an LED_871x object. diff --git a/hal/phydm/halhwimg.h b/hal/phydm/halhwimg.h index 108f71509..f072094a7 100644 --- a/hal/phydm/halhwimg.h +++ b/hal/phydm/halhwimg.h @@ -29,7 +29,7 @@ #define RTL8188EE_HWIMG_SUPPORT 0 #define RTL8188EU_HWIMG_SUPPORT 0 #define RTL8188ES_HWIMG_SUPPORT 0 - + #elif (DEV_BUS_TYPE == RT_USB_INTERFACE) // For 92C #define RTL8192CE_HWIMG_SUPPORT 0 @@ -52,7 +52,7 @@ #define RTL8188EE_HWIMG_SUPPORT 0 #define RTL8188EU_HWIMG_SUPPORT 0 #define RTL8188ES_HWIMG_SUPPORT 0 - + #elif (DEV_BUS_TYPE == RT_SDIO_INTERFACE) // For 92C #define RTL8192CE_HWIMG_SUPPORT 0 @@ -102,7 +102,7 @@ #define RTL8188EU_HWIMG_SUPPORT 0 #define RTL8188ES_HWIMG_SUPPORT 0 - #else + #else // For 8723 #define RTL8723E_HWIMG_SUPPORT 1 diff --git a/hal/phydm/halphyrf_ce.c b/hal/phydm/halphyrf_ce.c index fa931779f..400e3cadb 100644 --- a/hal/phydm/halphyrf_ce.c +++ b/hal/phydm/halphyrf_ce.c @@ -46,7 +46,7 @@ void ConfigureTxpowerTrack( #if RTL8192E_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8192E) ConfigureTxpowerTrack_8192E(pConfig); -#endif +#endif #if RTL8821A_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8821) ConfigureTxpowerTrack_8821A(pConfig); @@ -58,7 +58,7 @@ void ConfigureTxpowerTrack( #if RTL8188E_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8188E) ConfigureTxpowerTrack_8188E(pConfig); -#endif +#endif #if RTL8723B_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8723B) @@ -78,24 +78,24 @@ void ConfigureTxpowerTrack( #if RTL8188F_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8188F) ConfigureTxpowerTrack_8188F(pConfig); -#endif +#endif #if RTL8723D_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8723D) ConfigureTxpowerTrack_8723D(pConfig); -#endif +#endif #if RTL8822B_SUPPORT if (pDM_Odm->SupportICType == ODM_RTL8822B) ConfigureTxpowerTrack_8822B(pConfig); -#endif +#endif } //====================================================================== // <20121113, Kordan> This function should be called when TxAGC changed. -// Otherwise the previous compensation is gone, because we record the +// Otherwise the previous compensation is gone, because we record the // delta of temperature between two TxPowerTracking watch dogs. // -// NOTE: If Tx BB swing or Tx scaling is varified during run-time, still +// NOTE: If Tx BB swing or Tx scaling is varified during run-time, still // need to call this function. //====================================================================== VOID @@ -107,13 +107,12 @@ ODM_ClearTxPowerTrackingState( PHAL_DATA_TYPE pHalData = GET_HAL_DATA(pDM_Odm->Adapter); u1Byte p = 0; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); - + pRFCalibrateInfo->BbSwingIdxCckBase = pRFCalibrateInfo->DefaultCckIndex; pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->DefaultCckIndex; pDM_Odm->RFCalibrateInfo.CCK_index = 0; - - for (p = ODM_RF_PATH_A; p < MAX_RF_PATH; ++p) - { + + for (p = ODM_RF_PATH_A; p < MAX_RF_PATH; ++p) { pRFCalibrateInfo->BbSwingIdxOfdmBase[p] = pRFCalibrateInfo->DefaultOfdmIndex; pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->DefaultOfdmIndex; pRFCalibrateInfo->OFDM_index[p] = pRFCalibrateInfo->DefaultOfdmIndex; @@ -123,10 +122,10 @@ ODM_ClearTxPowerTrackingState( pRFCalibrateInfo->DeltaPowerIndexLast[p] = 0; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = 0; /* Initial Mix mode power tracking*/ - pRFCalibrateInfo->Remnant_OFDMSwingIdx[p] = 0; + pRFCalibrateInfo->Remnant_OFDMSwingIdx[p] = 0; pRFCalibrateInfo->KfreeOffset[p] = 0; } - + pRFCalibrateInfo->Modify_TxAGC_Flag_PathA = FALSE; /*Initial at Modify Tx Scaling Mode*/ pRFCalibrateInfo->Modify_TxAGC_Flag_PathB = FALSE; /*Initial at Modify Tx Scaling Mode*/ pRFCalibrateInfo->Modify_TxAGC_Flag_PathC = FALSE; /*Initial at Modify Tx Scaling Mode*/ @@ -163,7 +162,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( u1Byte ThermalValue = 0, delta, delta_LCK, delta_IQK, p = 0, i = 0; s1Byte diff_DPK[4] = {0}; u1Byte ThermalValue_AVG_count = 0; - u4Byte ThermalValue_AVG = 0, RegC80, RegCd0, RegCd4, Regab4; + u4Byte ThermalValue_AVG = 0, RegC80, RegCd0, RegCd4, Regab4; u1Byte OFDM_min_index = 0; // OFDM BB Swing should be less than +3.0dB, which is required by Arthur u1Byte Indexforchannel = 0; // GetRightChnlPlaceforIQK(pHalData->CurrentChannel) @@ -196,10 +195,10 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (pDM_Odm->SupportICType & ODM_RTL8814A) /*for 8814 path C & D*/ (*c.GetDeltaSwingTable8814only)(pDM_Odm, (pu1Byte *)&deltaSwingTableIdx_TUP_C, (pu1Byte *)&deltaSwingTableIdx_TDOWN_C, (pu1Byte *)&deltaSwingTableIdx_TUP_D, (pu1Byte *)&deltaSwingTableIdx_TDOWN_D); - + if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) /*for Xtal Offset*/ (*c.GetDeltaSwingXtalTable)(pDM_Odm, (ps1Byte *)&deltaSwingTableXtal_UP, (ps1Byte *)&deltaSwingTableXtal_DOWN); - + pRFCalibrateInfo->TXPowerTrackingCallbackCnt++; /*cosa add for debug*/ pRFCalibrateInfo->bTXPowerTrackingInit = TRUE; @@ -216,15 +215,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter( #endif ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("===>ODM_TXPowerTrackingCallback_ThermalMeter\n pRFCalibrateInfo->BbSwingIdxCckBase: %d, pRFCalibrateInfo->BbSwingIdxOfdmBase[A]: %d, pRFCalibrateInfo->DefaultOfdmIndex: %d\n", + ("===>ODM_TXPowerTrackingCallback_ThermalMeter\n pRFCalibrateInfo->BbSwingIdxCckBase: %d, pRFCalibrateInfo->BbSwingIdxOfdmBase[A]: %d, pRFCalibrateInfo->DefaultOfdmIndex: %d\n", pRFCalibrateInfo->BbSwingIdxCckBase, pRFCalibrateInfo->BbSwingIdxOfdmBase[ODM_RF_PATH_A], pRFCalibrateInfo->DefaultOfdmIndex)); - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("pRFCalibrateInfo->TxPowerTrackControl=%d, pHalData->EEPROMThermalMeter %d\n", pRFCalibrateInfo->TxPowerTrackControl, pHalData->EEPROMThermalMeter)); ThermalValue = (u1Byte)ODM_GetRFReg(pDM_Odm, ODM_RF_PATH_A, c.ThermalRegAddr, 0xfc00); //0x42: RF Reg[15:10] 88E /*add log by zhao he, check c80/c94/c14/ca0 value*/ - if (pDM_Odm->SupportICType == ODM_RTL8723D) { + if (pDM_Odm->SupportICType == ODM_RTL8723D) { RegC80 = ODM_GetBBReg(pDM_Odm, 0xc80, bMaskDWord); RegCd0 = ODM_GetBBReg(pDM_Odm, 0xcd0, bMaskDWord); RegCd4 = ODM_GetBBReg(pDM_Odm, 0xcd4, bMaskDWord); @@ -238,31 +237,30 @@ ODM_TXPowerTrackingCallback_ThermalMeter( /*4 3. Initialize ThermalValues of RFCalibrateInfo*/ - if (pRFCalibrateInfo->bReloadtxpowerindex) - ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,("reload ofdm index for band switch\n")); + if (pRFCalibrateInfo->bReloadtxpowerindex) { + ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD,("reload ofdm index for band switch\n")); + } /*4 4. Calculate average thermal meter*/ - + pRFCalibrateInfo->ThermalValue_AVG[pRFCalibrateInfo->ThermalValue_AVG_index] = ThermalValue; pRFCalibrateInfo->ThermalValue_AVG_index++; if (pRFCalibrateInfo->ThermalValue_AVG_index == c.AverageThermalNum) /*Average times = c.AverageThermalNum*/ pRFCalibrateInfo->ThermalValue_AVG_index = 0; - for(i = 0; i < c.AverageThermalNum; i++) - { + for (i = 0; i < c.AverageThermalNum; i++) { if (pRFCalibrateInfo->ThermalValue_AVG[i]) { ThermalValue_AVG += pRFCalibrateInfo->ThermalValue_AVG[i]; ThermalValue_AVG_count++; } } - if(ThermalValue_AVG_count) //Calculate Average ThermalValue after average enough times - { + if (ThermalValue_AVG_count) { //Calculate Average ThermalValue after average enough times ThermalValue = (u1Byte)(ThermalValue_AVG / ThermalValue_AVG_count); ODM_RT_TRACE(pDM_Odm,ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("AVG Thermal Meter = 0x%X, EFUSE Thermal Base = 0x%X\n", ThermalValue, pHalData->EEPROMThermalMeter)); } - + //4 5. Calculate delta, delta_LCK, delta_IQK. //"delta" here is used to determine whether thermal value changes or not. @@ -275,7 +273,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( delta_IQK = (ThermalValue > pRFCalibrateInfo->ThermalValue_IQK)?(ThermalValue - pRFCalibrateInfo->ThermalValue_IQK):(pRFCalibrateInfo->ThermalValue_IQK - ThermalValue); ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("no PG, use ThermalValue for IQK\n")); } - + for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) diff_DPK[p] = (s1Byte)ThermalValue - (s1Byte)pRFCalibrateInfo->DpkThermal[p]; @@ -291,7 +289,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (c.PHY_LCCalibrate) (*c.PHY_LCCalibrate)(pDM_Odm); } - + delta_LCK = (ThermalValue > pRFCalibrateInfo->ThermalValue_LCK)?(ThermalValue - pRFCalibrateInfo->ThermalValue_LCK):(pRFCalibrateInfo->ThermalValue_LCK - ThermalValue); } @@ -310,25 +308,24 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } } - /*3 7. If necessary, move the index of swing table to adjust Tx power.*/ - - if (delta > 0 && pRFCalibrateInfo->TxPowerTrackControl) - { + /*3 7. If necessary, move the index of swing table to adjust Tx power.*/ + + if (delta > 0 && pRFCalibrateInfo->TxPowerTrackControl) { //"delta" here is used to record the absolute value of differrence. -#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - delta = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue); +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) + delta = ThermalValue > pHalData->EEPROMThermalMeter?(ThermalValue - pHalData->EEPROMThermalMeter):(pHalData->EEPROMThermalMeter - ThermalValue); #else - delta = (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther)?(ThermalValue - pDM_Odm->priv->pmib->dot11RFEntry.ther):(pDM_Odm->priv->pmib->dot11RFEntry.ther - ThermalValue); + delta = (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther)?(ThermalValue - pDM_Odm->priv->pmib->dot11RFEntry.ther):(pDM_Odm->priv->pmib->dot11RFEntry.ther - ThermalValue); #endif if (delta >= TXPWR_TRACK_TABLE_SIZE) delta = TXPWR_TRACK_TABLE_SIZE - 1; /*4 7.1 The Final Power Index = BaseIndex + PowerIndexOffset*/ - -#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - if(ThermalValue > pHalData->EEPROMThermalMeter) { + +#if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) + if (ThermalValue > pHalData->EEPROMThermalMeter) { #else - if(ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) { + if (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) { #endif for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { @@ -336,12 +333,12 @@ ODM_TXPowerTrackingCallback_ThermalMeter( switch (p) { case ODM_RF_PATH_B: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TUP_B[%d] = %d\n", delta, deltaSwingTableIdx_TUP_B[delta])); + ("deltaSwingTableIdx_TUP_B[%d] = %d\n", delta, deltaSwingTableIdx_TUP_B[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_B[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_B[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_C: @@ -351,7 +348,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_C[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_C[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_D: @@ -361,17 +358,17 @@ ODM_TXPowerTrackingCallback_ThermalMeter( pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_D[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_D[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; default: - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("deltaSwingTableIdx_TUP_A[%d] = %d\n", delta, deltaSwingTableIdx_TUP_A[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = deltaSwingTableIdx_TUP_A[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = deltaSwingTableIdx_TUP_A[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is higher and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; } } @@ -379,7 +376,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) { /*Save XtalOffset from Xtal table*/ pRFCalibrateInfo->XtalOffsetLast = pRFCalibrateInfo->XtalOffset; /*recording last Xtal offset*/ - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("[Xtal] deltaSwingTableXtal_UP[%d] = %d\n", delta, deltaSwingTableXtal_UP[delta])); pRFCalibrateInfo->XtalOffset = deltaSwingTableXtal_UP[delta]; @@ -388,7 +385,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( else XtalOffsetEanble = 1; } - + } else { for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { pRFCalibrateInfo->DeltaPowerIndexLast[p] = pRFCalibrateInfo->DeltaPowerIndex[p]; /*recording poer index offset*/ @@ -396,46 +393,46 @@ ODM_TXPowerTrackingCallback_ThermalMeter( switch (p) { case ODM_RF_PATH_B: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_B[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_B[delta])); + ("deltaSwingTableIdx_TDOWN_B[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_B[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_B[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_B[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_B] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_C: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_C[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_C[delta])); + ("deltaSwingTableIdx_TDOWN_C[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_C[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_C[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_C[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_C] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; case ODM_RF_PATH_D: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_D[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_D[delta])); + ("deltaSwingTableIdx_TDOWN_D[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_D[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_D[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_D[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_D] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; default: ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("deltaSwingTableIdx_TDOWN_A[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_A[delta])); + ("deltaSwingTableIdx_TDOWN_A[%d] = %d\n", delta, deltaSwingTableIdx_TDOWN_A[delta])); pRFCalibrateInfo->DeltaPowerIndex[p] = -1 * deltaSwingTableIdx_TDOWN_A[delta]; pRFCalibrateInfo->Absolute_OFDMSwingIdx[p] = -1 * deltaSwingTableIdx_TDOWN_A[delta]; /*Record delta swing for mix mode power tracking*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); + ("******Temp is lower and pRFCalibrateInfo->Absolute_OFDMSwingIdx[ODM_RF_PATH_A] = %d\n", pRFCalibrateInfo->Absolute_OFDMSwingIdx[p])); break; - } + } } if (pDM_Odm->SupportICType & (ODM_RTL8703B | ODM_RTL8723D)) { /*Save XtalOffset from Xtal table*/ pRFCalibrateInfo->XtalOffsetLast = pRFCalibrateInfo->XtalOffset; /*recording last Xtal offset*/ - ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("[Xtal] deltaSwingTableXtal_DOWN[%d] = %d\n", delta, deltaSwingTableXtal_DOWN[delta])); pRFCalibrateInfo->XtalOffset = deltaSwingTableXtal_DOWN[delta]; @@ -446,10 +443,10 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } } - + for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("\n\n=========================== [Path-%d] Calculating PowerIndexOffset===========================\n", p)); + ("\n\n=========================== [Path-%d] Calculating PowerIndexOffset===========================\n", p)); if (pRFCalibrateInfo->DeltaPowerIndex[p] == pRFCalibrateInfo->DeltaPowerIndexLast[p]) /*If Thermal value changes but lookup table value still the same*/ pRFCalibrateInfo->PowerIndexOffset[p] = 0; @@ -458,12 +455,12 @@ ODM_TXPowerTrackingCallback_ThermalMeter( ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("[Path-%d] PowerIndexOffset(%d) = DeltaPowerIndex(%d) - DeltaPowerIndexLast(%d)\n", p, pRFCalibrateInfo->PowerIndexOffset[p], pRFCalibrateInfo->DeltaPowerIndex[p], pRFCalibrateInfo->DeltaPowerIndexLast[p])); - + pRFCalibrateInfo->OFDM_index[p] = pRFCalibrateInfo->BbSwingIdxOfdmBase[p] + pRFCalibrateInfo->PowerIndexOffset[p]; pRFCalibrateInfo->CCK_index = pRFCalibrateInfo->BbSwingIdxCckBase + pRFCalibrateInfo->PowerIndexOffset[p]; - pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->CCK_index; - pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->OFDM_index[p]; + pRFCalibrateInfo->BbSwingIdxCck = pRFCalibrateInfo->CCK_index; + pRFCalibrateInfo->BbSwingIdxOfdm[p] = pRFCalibrateInfo->OFDM_index[p]; /*************Print BB Swing Base and Index Offset*************/ @@ -473,15 +470,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter( ("The 'OFDM' final index(%d) = BaseIndex[%d](%d) + PowerIndexOffset(%d)\n", pRFCalibrateInfo->BbSwingIdxOfdm[p], p, pRFCalibrateInfo->BbSwingIdxOfdmBase[p], pRFCalibrateInfo->PowerIndexOffset[p])); /*4 7.1 Handle boundary conditions of index.*/ - + if (pRFCalibrateInfo->OFDM_index[p] > c.SwingTableSize_OFDM-1) pRFCalibrateInfo->OFDM_index[p] = c.SwingTableSize_OFDM-1; else if (pRFCalibrateInfo->OFDM_index[p] <= OFDM_min_index) pRFCalibrateInfo->OFDM_index[p] = OFDM_min_index; } - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("\n\n========================================================================================================\n")); + ("\n\n========================================================================================================\n")); if (pRFCalibrateInfo->CCK_index > c.SwingTableSize_CCK-1) pRFCalibrateInfo->CCK_index = c.SwingTableSize_CCK-1; @@ -489,7 +486,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( pRFCalibrateInfo->CCK_index = 0; } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("The thermal meter is unchanged or TxPowerTracking OFF(%d): ThermalValue: %d , pRFCalibrateInfo->ThermalValue: %d\n", + ("The thermal meter is unchanged or TxPowerTracking OFF(%d): ThermalValue: %d , pRFCalibrateInfo->ThermalValue: %d\n", pRFCalibrateInfo->TxPowerTrackControl, ThermalValue, pRFCalibrateInfo->ThermalValue)); for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) @@ -497,7 +494,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n", + ("TxPowerTracking: [CCK] Swing Current Index: %d, Swing Base Index: %d\n", pRFCalibrateInfo->CCK_index, pRFCalibrateInfo->BbSwingIdxCckBase)); /*Print Swing base & current*/ for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { @@ -508,7 +505,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if ((pDM_Odm->SupportICType & ODM_RTL8814A)) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("PowerTrackingType=%d\n", PowerTrackingType)); - + if (PowerTrackingType == 0) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("**********Enter POWER Tracking MIX_MODE**********\n")); for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) @@ -527,15 +524,15 @@ ODM_TXPowerTrackingCallback_ThermalMeter( (*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, TSSI_MODE, p, 0); } pRFCalibrateInfo->ThermalValue = ThermalValue; /*Record last Power Tracking Thermal Value*/ - + } else if ((pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_A] != 0 || pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_B] != 0 || pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_C] != 0 || - pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_D] != 0) && + pRFCalibrateInfo->PowerIndexOffset[ODM_RF_PATH_D] != 0) && pRFCalibrateInfo->TxPowerTrackControl && (pHalData->EEPROMThermalMeter != 0xff)) { //4 7.2 Configure the Swing Table to adjust Tx Power. - - pRFCalibrateInfo->bTxPowerChanged = TRUE; /*Always TRUE after Tx Power is adjusted by power tracking.*/ + + pRFCalibrateInfo->bTxPowerChanged = TRUE; /*Always TRUE after Tx Power is adjusted by power tracking.*/ // // 2012/04/23 MH According to Luke's suggestion, we can not write BB digital // to increase TX power. Otherwise, EVM will be bad. @@ -544,14 +541,14 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (ThermalValue > pRFCalibrateInfo->ThermalValue) { for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature Increasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", - p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); + ("Temperature Increasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", + p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); } } else if (ThermalValue < pRFCalibrateInfo->ThermalValue) { /*Low temperature*/ for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("Temperature Decreasing(%d): delta_pi: %d , delta_t: %d, Now_t: %d, EFUSE_t: %d, Last_t: %d\n", - p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); + p, pRFCalibrateInfo->PowerIndexOffset[p], delta, ThermalValue, pHalData->EEPROMThermalMeter, pRFCalibrateInfo->ThermalValue)); } } @@ -562,7 +559,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( #endif { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); if (pDM_Odm->SupportICType == ODM_RTL8188E || pDM_Odm->SupportICType == ODM_RTL8192E || pDM_Odm->SupportICType == ODM_RTL8821 || pDM_Odm->SupportICType == ODM_RTL8812 || pDM_Odm->SupportICType == ODM_RTL8723B || pDM_Odm->SupportICType == ODM_RTL8814A || @@ -576,9 +573,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) (*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, BBSWING, p, Indexforchannel); } - } - else - { + } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); @@ -594,7 +589,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( for (p = ODM_RF_PATH_A; p < c.RfPathCount; p++) (*c.ODM_TxPwrTrackSetPwr)(pDM_Odm, BBSWING, p, Indexforchannel); } - + } pRFCalibrateInfo->BbSwingIdxCckBase = pRFCalibrateInfo->BbSwingIdxCck; /*Record last time Power Tracking result as base.*/ @@ -603,7 +598,7 @@ ODM_TXPowerTrackingCallback_ThermalMeter( ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("pRFCalibrateInfo->ThermalValue = %d ThermalValue= %d\n", pRFCalibrateInfo->ThermalValue, ThermalValue)); - + pRFCalibrateInfo->ThermalValue = ThermalValue; /*Record last Power Tracking Thermal Value*/ } @@ -621,11 +616,11 @@ ODM_TXPowerTrackingCallback_ThermalMeter( if (ThermalValue > pDM_Odm->priv->pmib->dot11RFEntry.ther) { #endif ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("Temperature(%d) higher than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); (*c.ODM_TxXtalTrackSetXtal)(pDM_Odm); } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, - ("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); + ("Temperature(%d) lower than PG value(%d)\n", ThermalValue, pHalData->EEPROMThermalMeter)); (*c.ODM_TxXtalTrackSetXtal)(pDM_Odm); } } @@ -638,17 +633,17 @@ ODM_TXPowerTrackingCallback_ThermalMeter( /*Delta temperature is equal to or larger than 20 centigrade (When threshold is 8).*/ if (delta_IQK >= c.Threshold_IQK) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("delta_IQK(%d) >= Threshold_IQK(%d)\n", delta_IQK, c.Threshold_IQK)); - if (!pRFCalibrateInfo->bIQKInProgress) + if (!pRFCalibrateInfo->bIQKInProgress) (*c.DoIQK)(pDM_Odm, delta_IQK, ThermalValue, 8); } } if (pRFCalibrateInfo->DpkThermal[ODM_RF_PATH_A] != 0) { - if (diff_DPK[ODM_RF_PATH_A] >= c.Threshold_DPK) { + if (diff_DPK[ODM_RF_PATH_A] >= c.Threshold_DPK) { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK)); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } else if ((diff_DPK[ODM_RF_PATH_A] <= -1 * c.Threshold_DPK)) { - s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK); + s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_A] / c.Threshold_DPK); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, value); @@ -656,16 +651,16 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } else { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xcc4, BIT14|BIT13|BIT12|BIT11|BIT10, 0); - ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } } if (pRFCalibrateInfo->DpkThermal[ODM_RF_PATH_B] != 0) { - if (diff_DPK[ODM_RF_PATH_B] >= c.Threshold_DPK) { + if (diff_DPK[ODM_RF_PATH_B] >= c.Threshold_DPK) { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK)); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } else if ((diff_DPK[ODM_RF_PATH_B] <= -1 * c.Threshold_DPK)) { - s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK); + s4Byte value = 0x20 + (diff_DPK[ODM_RF_PATH_B] / c.Threshold_DPK); ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, value); @@ -673,14 +668,14 @@ ODM_TXPowerTrackingCallback_ThermalMeter( } else { ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0xec4, BIT14|BIT13|BIT12|BIT11|BIT10, 0); - ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); } } -#endif - +#endif + ODM_RT_TRACE(pDM_Odm, ODM_COMP_TX_PWR_TRACK, ODM_DBG_LOUD, ("<===ODM_TXPowerTrackingCallback_ThermalMeter\n")); - + pRFCalibrateInfo->TXPowercount = 0; } @@ -700,21 +695,18 @@ ODM_ResetIQKResult( #if !(DM_ODM_SUPPORT_TYPE & ODM_AP) u1Byte ODM_GetRightChnlPlaceforIQK(u1Byte chnl) { - u1Byte channel_all[ODM_TARGET_CHNL_NUM_2G_5G] = + u1Byte channel_all[ODM_TARGET_CHNL_NUM_2G_5G] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,149,151,153,155,157,159,161,163,165}; u1Byte place = chnl; - - if(chnl > 14) - { - for(place = 14; place 14) { + for (place = 14; placeAdapter; -#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) +#if (DM_ODM_SUPPORT_TYPE == ODM_WIN) if (*pDM_Odm->pIsFcsModeEnable) return; #endif - + #if (DM_ODM_SUPPORT_TYPE & (ODM_CE)) if (IS_HARDWARE_TYPE_8812AU(Adapter)) return; #endif - + if (pDM_Odm->bLinked) { if ((*pDM_Odm->pChannel != pDM_Odm->preChannel) && (!*pDM_Odm->pbScanInProcess)) { pDM_Odm->preChannel = *pDM_Odm->pChannel; @@ -745,24 +737,24 @@ odm_IQCalibrate( if (pDM_Odm->LinkedInterval < 3) pDM_Odm->LinkedInterval++; - + if (pDM_Odm->LinkedInterval == 2) { if (IS_HARDWARE_TYPE_8814A(Adapter)) { - #if (RTL8814A_SUPPORT == 1) + #if (RTL8814A_SUPPORT == 1) PHY_IQCalibrate_8814A(pDM_Odm, FALSE); #endif - } - + } + #if (RTL8822B_SUPPORT == 1) else if (IS_HARDWARE_TYPE_8822B(Adapter)) PHY_IQCalibrate_8822B(pDM_Odm, FALSE); #endif - + #if (RTL8821C_SUPPORT == 1) else if (IS_HARDWARE_TYPE_8821C(Adapter)) PHY_IQCalibrate_8821C(pDM_Odm, FALSE); #endif - + #if (RTL8821A_SUPPORT == 1) else if (IS_HARDWARE_TYPE_8821(Adapter)) PHY_IQCalibrate_8821A(pDM_Odm, FALSE); @@ -778,14 +770,14 @@ void phydm_rf_init(IN PVOID pDM_VOID) odm_TXPowerTrackingInit(pDM_Odm); #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - ODM_ClearTxPowerTrackingState(pDM_Odm); + ODM_ClearTxPowerTrackingState(pDM_Odm); #endif #if (DM_ODM_SUPPORT_TYPE & (ODM_AP)) -#if (RTL8814A_SUPPORT == 1) +#if (RTL8814A_SUPPORT == 1) if (pDM_Odm->SupportICType & ODM_RTL8814A) PHY_IQCalibrate_8814A_Init(pDM_Odm); -#endif +#endif #endif } diff --git a/hal/phydm/mp_precomp.h b/hal/phydm/mp_precomp.h index 2ae81105a..322bce015 100644 --- a/hal/phydm/mp_precomp.h +++ b/hal/phydm/mp_precomp.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. diff --git a/hal/phydm/phydm.c b/hal/phydm/phydm.c index e6a6af273..fd4fd8e15 100644 --- a/hal/phydm/phydm.c +++ b/hal/phydm/phydm.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -76,21 +76,19 @@ ODM_PWdB_Conversion( s4Byte Y, integer = 0, decimal = 0; u4Byte i; - if(X == 0) + if (X == 0) X = 1; // log2(x), x can't be 0 - for(i = (TotalBit-1); i > 0; i--) - { - if(X & BIT(i)) - { + for (i = (TotalBit-1); i > 0; i--) { + if (X & BIT(i)) { integer = i; - if(i > 0) - decimal = (X & BIT(i-1))?2:0; //decimal is 0.5dB*3=1.5dB~=2dB + if (i > 0) + decimal = (X & BIT(i-1))?2:0; //decimal is 0.5dB*3=1.5dB~=2dB break; } } - - Y = 3*(integer-DecimalBit)+decimal; //10*log(x)=3*log2(x), + + Y = 3*(integer-DecimalBit)+decimal; //10*log(x)=3*log2(x), return Y; } @@ -101,17 +99,17 @@ ODM_SignConversion( IN u4Byte TotalBit ) { - if(value&BIT(TotalBit-1)) + if (value&BIT(TotalBit-1)) value -= BIT(TotalBit); return value; } void -phydm_seq_sorting( +phydm_seq_sorting( IN PVOID pDM_VOID, IN OUT u4Byte *p_value, IN OUT u4Byte *rank_idx, - IN OUT u4Byte *p_idx_out, + IN OUT u4Byte *p_idx_out, IN u1Byte seq_length ) { @@ -126,9 +124,9 @@ phydm_seq_sorting( } for (i = 0; i < (seq_length - 1); i++) { - + for (j = 0; j < (seq_length - 1 - i); j++) { - + tmp_a = p_value[j]; tmp_b = p_value[j+1]; @@ -138,20 +136,20 @@ phydm_seq_sorting( if (tmp_a < tmp_b) { p_value[j] = tmp_b; p_value[j+1] = tmp_a; - + rank_idx[j] = tmp_idx_b; rank_idx[j+1] = tmp_idx_a; } - } + } } for (i = 0; i < seq_length; i++) { p_idx_out[rank_idx[i]] = i+1; /**/ } - - + + } VOID @@ -180,7 +178,7 @@ ODM_InitMpDriverStatus( prtl8192cd_priv priv = pDM_Odm->priv; pDM_Odm->mp_mode = (BOOLEAN)priv->pshare->rf_ft_var.mp_specific; - + #endif } @@ -223,19 +221,19 @@ PHYDM_InitTRXAntennaSetting( } else if (pDM_Odm->SupportICType & (ODM_RTL8723D | ODM_RTL8821C)) { pDM_Odm->TXAntStatus = 0x1; pDM_Odm->RXAntStatus = 0x1; - + } /*#endif*/ } void -phydm_traffic_load_decision( +phydm_traffic_load_decision( IN PVOID pDM_VOID ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; pSWAT_T pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table; - + /*---trafic load decision---*/ pDM_Odm->curTxOkCnt = *(pDM_Odm->pNumTxBytesUnicast) - pDM_Odm->lastTxOkCnt; pDM_Odm->curRxOkCnt = *(pDM_Odm->pNumRxBytesUnicast) - pDM_Odm->lastRxOkCnt; @@ -249,25 +247,25 @@ phydm_traffic_load_decision( pDM_Odm->tx_tp = ((pDM_Odm->tx_tp)>>1) + (u4Byte)(((pDM_Odm->curTxOkCnt)>>18)>>1); /* <<3(8bit), >>20(10^6,M), >>1(2sec)*/ pDM_Odm->rx_tp = ((pDM_Odm->rx_tp)>>1) + (u4Byte)(((pDM_Odm->curRxOkCnt)>>18)>>1); /* <<3(8bit), >>20(10^6,M), >>1(2sec)*/ #endif - pDM_Odm->total_tp = pDM_Odm->tx_tp + pDM_Odm->rx_tp; - + pDM_Odm->total_tp = pDM_Odm->tx_tp + pDM_Odm->rx_tp; + pDM_Odm->pre_TrafficLoad = pDM_Odm->TrafficLoad; - + if (pDM_Odm->curTxOkCnt > 1875000 || pDM_Odm->curRxOkCnt > 1875000) { /* ( 1.875M * 8bit ) / 2sec= 7.5M bits /sec )*/ - + pDM_Odm->TrafficLoad = TRAFFIC_HIGH; /**/ } else if (pDM_Odm->curTxOkCnt > 500000 || pDM_Odm->curRxOkCnt > 500000) { /*( 0.5M * 8bit ) / 2sec = 2M bits /sec )*/ - + pDM_Odm->TrafficLoad = TRAFFIC_MID; /**/ } else if (pDM_Odm->curTxOkCnt > 100000 || pDM_Odm->curRxOkCnt > 100000) { /*( 0.1M * 8bit ) / 2sec = 0.4M bits /sec )*/ - + pDM_Odm->TrafficLoad = TRAFFIC_LOW; /**/ } else { - + pDM_Odm->TrafficLoad = TRAFFIC_ULTRA_LOW; /**/ } @@ -283,7 +281,7 @@ phydm_config_ofdm_tx_path( #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + if (path == PHYDM_A) { ODM_SetBBReg(pDM_Odm, 0x90c , bMaskDWord, 0x81321311); /**/ @@ -294,8 +292,8 @@ phydm_config_ofdm_tx_path( ODM_SetBBReg(pDM_Odm, 0x90c , bMaskDWord, 0x83321333); /**/ } - - + + } #endif } @@ -310,7 +308,7 @@ phydm_config_ofdm_rx_path( #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + if (path == PHYDM_A) { ofdm_rx_path = 1; /**/ @@ -321,7 +319,7 @@ phydm_config_ofdm_rx_path( ofdm_rx_path = 3; /**/ } - + ODM_SetBBReg(pDM_Odm, 0xC04 , 0xff, (((ofdm_rx_path)<<4)|ofdm_rx_path)); ODM_SetBBReg(pDM_Odm, 0xD04 , 0xf, ofdm_rx_path); } @@ -335,7 +333,7 @@ phydm_config_cck_rx_antenna_init( { #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + /*CCK 2R CCA parameters*/ ODM_SetBBReg(pDM_Odm, 0xa2c , BIT18, 1); /*enable 2R Rx path*/ ODM_SetBBReg(pDM_Odm, 0xa2c , BIT22, 1); /*enable 2R MRC*/ @@ -360,7 +358,7 @@ phydm_config_cck_rx_path( #if (RTL8192E_SUPPORT == 1) if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { - + if (path == PHYDM_A) { path_div_select = 0; cck_1_path = 0; @@ -368,21 +366,21 @@ phydm_config_cck_rx_path( } else if (path == PHYDM_B) { path_div_select = 0; cck_1_path = 1; - cck_2_path = 1; + cck_2_path = 1; } else if (path == PHYDM_AB) { - + if (path_div_en == CCA_PATHDIV_ENABLE) path_div_select = 1; - + cck_1_path = 0; - cck_2_path = 1; - + cck_2_path = 1; + } - + ODM_SetBBReg(pDM_Odm, 0xa04 , (BIT27|BIT26), cck_1_path); ODM_SetBBReg(pDM_Odm, 0xa04 , (BIT25|BIT24), cck_2_path); ODM_SetBBReg(pDM_Odm, 0xa74 , BIT8, path_div_select); - + } #endif } @@ -403,7 +401,7 @@ phydm_config_trx_path( /* CCK */ if (dm_value[0] == 0) { - + if (dm_value[1] == 1) { /*TX*/ if (dm_value[2] == 1) ODM_SetBBReg(pDM_Odm, 0xa04, 0xf0000000, 0x8); @@ -412,9 +410,9 @@ phydm_config_trx_path( else if (dm_value[2] == 3) ODM_SetBBReg(pDM_Odm, 0xa04, 0xf0000000, 0xc); } else if (dm_value[1] == 2) { /*RX*/ - + phydm_config_cck_rx_antenna_init(pDM_Odm); - + if (dm_value[2] == 1) { phydm_config_cck_rx_path(pDM_Odm, PHYDM_A, CCA_PATHDIV_DISABLE); } else if (dm_value[2] == 2) { @@ -426,7 +424,7 @@ phydm_config_trx_path( phydm_config_cck_rx_path(pDM_Odm, PHYDM_B, CCA_PATHDIV_DISABLE); } } - } + } /* OFDM */ else if (dm_value[0] == 1) { @@ -447,7 +445,7 @@ phydm_config_trx_path( (dm_value[2] & 0x4)?"C":"", (dm_value[2] & 0x8)?"D":"" )); - + } VOID @@ -460,19 +458,17 @@ phydm_Init_cck_setting( pDM_Odm->bCckHighPower = (BOOLEAN) ODM_GetBBReg(pDM_Odm, ODM_REG(CCK_RPT_FORMAT,pDM_Odm), ODM_BIT(CCK_RPT_FORMAT,pDM_Odm)); #if (RTL8192E_SUPPORT == 1) - if(pDM_Odm->SupportICType & (ODM_RTL8192E)) - { + if (pDM_Odm->SupportICType & (ODM_RTL8192E)) { #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) phydm_config_cck_rx_antenna_init(pDM_Odm); phydm_config_cck_rx_path(pDM_Odm, PHYDM_A, CCA_PATHDIV_DISABLE); #endif - + /* 0x824[9] = 0x82C[9] = 0xA80[7] those registers setting should be equal or CCK RSSI report may be incorrect */ value_824 = ODM_GetBBReg(pDM_Odm, 0x824, BIT9); value_82c = ODM_GetBBReg(pDM_Odm, 0x82c, BIT9); - - if(value_824 != value_82c) - { + + if (value_824 != value_82c) { ODM_SetBBReg(pDM_Odm, 0x82c , BIT9, value_824); } ODM_SetBBReg(pDM_Odm, 0xa80 , BIT7, value_824); @@ -481,19 +477,19 @@ phydm_Init_cck_setting( ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("cck_agc_report_type = (( %d )), ExtLNAGain = (( %d ))\n", pDM_Odm->cck_agc_report_type, pDM_Odm->ExtLNAGain)); } #endif - + #if ((RTL8703B_SUPPORT == 1) || (RTL8723D_SUPPORT == 1)) if (pDM_Odm->SupportICType & (ODM_RTL8703B|ODM_RTL8723D)) { pDM_Odm->cck_agc_report_type = ODM_GetBBReg(pDM_Odm, 0x950, BIT11) ? 1 : 0; /*1: 4bit LNA , 0: 3bit LNA */ - + if (pDM_Odm->cck_agc_report_type != 1) { DbgPrint("[Warning] 8703B/8723D CCK should be 4bit LNA, ie. 0x950[11] = 1\n"); /**/ } } #endif - + #if ((RTL8723D_SUPPORT == 1) || (RTL8822B_SUPPORT == 1) || (RTL8197F_SUPPORT == 1)) if (pDM_Odm->SupportICType & (ODM_RTL8723D|ODM_RTL8822B|ODM_RTL8197F)) { @@ -501,7 +497,7 @@ phydm_Init_cck_setting( } else #endif pDM_Odm->cck_new_agc = FALSE; - + } VOID @@ -535,7 +531,7 @@ odm_CommonInfoSelfInit( { phydm_Init_cck_setting(pDM_Odm); pDM_Odm->RFPathRxEnable = (u1Byte) ODM_GetBBReg(pDM_Odm, ODM_REG(BB_RX_PATH,pDM_Odm), ODM_BIT(BB_RX_PATH,pDM_Odm)); -#if (DM_ODM_SUPPORT_TYPE != ODM_CE) +#if (DM_ODM_SUPPORT_TYPE != ODM_CE) pDM_Odm->pbNet_closed = &pDM_Odm->BOOLEAN_temp; #endif @@ -559,7 +555,7 @@ odm_CommonInfoSelfInit( pDM_Odm->TrafficLoad = TRAFFIC_LOW; pDM_Odm->nbi_set_result = 0; - + } VOID @@ -602,8 +598,7 @@ odm_CommonInfoSelfUpdate( /* THis variable cannot be used because it is wrong*/ #if (DM_ODM_SUPPORT_TYPE == ODM_AP) - if (*(pDM_Odm->pBandWidth) == ODM_BW40M) - { + if (*(pDM_Odm->pBandWidth) == ODM_BW40M) { if (*(pDM_Odm->pSecChOffset) == 1) pDM_Odm->ControlChannel = *(pDM_Odm->pChannel) + 2; else if (*(pDM_Odm->pSecChOffset) == 2) @@ -625,14 +620,11 @@ odm_CommonInfoSelfUpdate( pDM_Odm->ControlChannel = *(pDM_Odm->pChannel); #endif - for (i=0; ipODM_StaInfo[i]; - if(IS_STA_VALID(pEntry)) - { + if (IS_STA_VALID(pEntry)) { EntryCnt++; - if(EntryCnt==1) - { + if (EntryCnt==1) { OneEntry_MACID=i; } @@ -640,15 +632,14 @@ odm_CommonInfoSelfUpdate( ma_rx_tp = (pEntry->rx_byte_cnt_LowMAW)<<3; /* low moving average RX TP ( bit /sec)*/ ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_RA_DBG, ODM_DBG_LOUD, ("ClientTP[%d]: ((%d )) bit/sec\n", i, ma_rx_tp)); - + if (ma_rx_tp > ACTIVE_TP_THRESHOLD) num_active_client++; #endif } } - - if(EntryCnt == 1) - { + + if (EntryCnt == 1) { pDM_Odm->bOneEntryOnly = TRUE; pDM_Odm->OneEntry_MACID=OneEntry_MACID; } @@ -657,15 +648,15 @@ odm_CommonInfoSelfUpdate( pDM_Odm->pre_number_linked_client = pDM_Odm->number_linked_client; pDM_Odm->pre_number_active_client = pDM_Odm->number_active_client; - + pDM_Odm->number_linked_client = EntryCnt; - pDM_Odm->number_active_client = num_active_client; + pDM_Odm->number_active_client = num_active_client; /* Update MP driver status*/ ODM_UpdateMpDriverStatus(pDM_Odm); /*Traffic load information update*/ - phydm_traffic_load_decision(pDM_Odm); + phydm_traffic_load_decision(pDM_Odm); } VOID @@ -691,7 +682,7 @@ PhyDM_Get_Structure( case PHYDM_FALSEALMCNT: pStruct = &FalseAlmCnt; break; - + case PHYDM_CFOTRACK: pStruct = &DM_CfoTrack; break; @@ -699,7 +690,7 @@ PhyDM_Get_Structure( case PHYDM_ADAPTIVITY: pStruct = &(pDM_Odm->Adaptivity); break; - + default: break; } @@ -709,7 +700,7 @@ PhyDM_Get_Structure( case PHYDM_FALSEALMCNT: pStruct = &(pDM_Odm->FalseAlmCnt); break; - + case PHYDM_CFOTRACK: pStruct = &(pDM_Odm->DM_CfoTrack); break; @@ -717,7 +708,7 @@ PhyDM_Get_Structure( case PHYDM_ADAPTIVITY: pStruct = &(pDM_Odm->Adaptivity); break; - + default: break; } @@ -732,7 +723,7 @@ odm_HWSetting( ) { #if (RTL8821A_SUPPORT == 1) - if(pDM_Odm->SupportICType & ODM_RTL8821) + if (pDM_Odm->SupportICType & ODM_RTL8821) odm_HWSetting_8821A(pDM_Odm); #endif @@ -774,7 +765,7 @@ ODM_DMInit( odm_PathDiversityInit(pDM_Odm); odm_DynamicTxPowerInit(pDM_Odm); phydm_initRaInfo(pDM_Odm); - + #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN | ODM_CE)) #ifdef BEAMFORMING_VERSION_1 if (pHalData->BeamformingVersion == BEAMFORMING_VERSION_1) @@ -782,29 +773,27 @@ ODM_DMInit( { phydm_Beamforming_Init(pDM_Odm); } -#endif +#endif - if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES) - { + if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { odm_DynamicBBPowerSavingInit(pDM_Odm); #if (RTL8188E_SUPPORT == 1) - if(pDM_Odm->SupportICType==ODM_RTL8188E) - { + if (pDM_Odm->SupportICType==ODM_RTL8188E) { ODM_PrimaryCCA_Init(pDM_Odm); ODM_RAInfo_Init_all(pDM_Odm); } #endif #if (DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) - + #if (RTL8723B_SUPPORT == 1) - if(pDM_Odm->SupportICType == ODM_RTL8723B) + if (pDM_Odm->SupportICType == ODM_RTL8723B) odm_SwAntDetectInit(pDM_Odm); #endif #if (RTL8192E_SUPPORT == 1) - if(pDM_Odm->SupportICType==ODM_RTL8192E) + if (pDM_Odm->SupportICType==ODM_RTL8192E) odm_PrimaryCCA_Check_Init(pDM_Odm); #endif @@ -821,7 +810,7 @@ ODM_DMReset( { pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; - ODM_AntDivReset(pDM_Odm); + ODM_AntDivReset(pDM_Odm); phydm_setEDCCAThresholdAPI(pDM_Odm, pDM_DigTable->CurIGValue); } @@ -840,10 +829,9 @@ phydm_support_ability_debug( u4Byte used = *_used; u4Byte out_len = *_out_len; - pre_support_ability = pDM_Odm->SupportAbility ; + pre_support_ability = pDM_Odm->SupportAbility ; PHYDM_SNPRINTF((output+used, out_len-used,"\n%s\n", "================================")); - if(dm_value[0] == 100) - { + if (dm_value[0] == 100) { PHYDM_SNPRINTF((output+used, out_len-used, "[Supportability] PhyDM Selection\n")); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "================================")); PHYDM_SNPRINTF((output+used, out_len-used, "00. (( %s ))DIG\n", ((pDM_Odm->SupportAbility & ODM_BB_DIG)?("V"):(".")))); @@ -851,20 +839,20 @@ phydm_support_ability_debug( PHYDM_SNPRINTF((output+used, out_len-used, "02. (( %s ))DYNAMIC_TXPWR\n", ((pDM_Odm->SupportAbility & ODM_BB_DYNAMIC_TXPWR)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "03. (( %s ))FA_CNT\n", ((pDM_Odm->SupportAbility & ODM_BB_FA_CNT)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "04. (( %s ))RSSI_MONITOR\n", ((pDM_Odm->SupportAbility & ODM_BB_RSSI_MONITOR)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "05. (( %s ))CCK_PD\n", ((pDM_Odm->SupportAbility & ODM_BB_CCK_PD)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "05. (( %s ))CCK_PD\n", ((pDM_Odm->SupportAbility & ODM_BB_CCK_PD)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "06. (( %s ))ANT_DIV\n", ((pDM_Odm->SupportAbility & ODM_BB_ANT_DIV)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "08. (( %s ))PWR_TRAIN\n", ((pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "08. (( %s ))PWR_TRAIN\n", ((pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "09. (( %s ))RATE_ADAPTIVE\n", ((pDM_Odm->SupportAbility & ODM_BB_RATE_ADAPTIVE)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "10. (( %s ))PATH_DIV\n", ((pDM_Odm->SupportAbility & ODM_BB_PATH_DIV)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "13. (( %s ))ADAPTIVITY\n", ((pDM_Odm->SupportAbility & ODM_BB_ADAPTIVITY)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "10. (( %s ))PATH_DIV\n", ((pDM_Odm->SupportAbility & ODM_BB_PATH_DIV)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "13. (( %s ))ADAPTIVITY\n", ((pDM_Odm->SupportAbility & ODM_BB_ADAPTIVITY)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "14. (( %s ))CFO_TRACKING\n", ((pDM_Odm->SupportAbility & ODM_BB_CFO_TRACKING)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "15. (( %s ))NHM_CNT\n", ((pDM_Odm->SupportAbility & ODM_BB_NHM_CNT)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "15. (( %s ))NHM_CNT\n", ((pDM_Odm->SupportAbility & ODM_BB_NHM_CNT)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "16. (( %s ))PRIMARY_CCA\n", ((pDM_Odm->SupportAbility & ODM_BB_PRIMARY_CCA)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "17. (( %s ))TXBF\n", ((pDM_Odm->SupportAbility & ODM_BB_TXBF)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "18. (( %s ))DYNAMIC_ARFR\n", ((pDM_Odm->SupportAbility & ODM_BB_DYNAMIC_ARFR)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "20. (( %s ))EDCA_TURBO\n", ((pDM_Odm->SupportAbility & ODM_MAC_EDCA_TURBO)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "21. (( %s ))EARLY_MODE\n", ((pDM_Odm->SupportAbility & ODM_MAC_EARLY_MODE)?("V"):(".")))); - PHYDM_SNPRINTF((output+used, out_len-used, "24. (( %s ))TX_PWR_TRACK\n", ((pDM_Odm->SupportAbility & ODM_RF_TX_PWR_TRACK)?("V"):(".")))); + PHYDM_SNPRINTF((output+used, out_len-used, "24. (( %s ))TX_PWR_TRACK\n", ((pDM_Odm->SupportAbility & ODM_RF_TX_PWR_TRACK)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "25. (( %s ))RX_GAIN_TRACK\n", ((pDM_Odm->SupportAbility & ODM_RF_RX_GAIN_TRACK)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used, "26. (( %s ))RF_CALIBRATION\n", ((pDM_Odm->SupportAbility & ODM_RF_CALIBRATION)?("V"):(".")))); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "================================")); @@ -874,31 +862,25 @@ phydm_support_ability_debug( { pDM_Odm->SupportAbility = 0 ; DbgPrint("Disable all SupportAbility components \n"); - PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "Disable all SupportAbility components")); + PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "Disable all SupportAbility components")); } */ - else - { + else { - if(dm_value[1] == 1) //enable - { + if (dm_value[1] == 1) { //enable pDM_Odm->SupportAbility |= BIT(dm_value[0]) ; - if(BIT(dm_value[0]) & ODM_BB_PATH_DIV) - { + if (BIT(dm_value[0]) & ODM_BB_PATH_DIV) { odm_PathDiversityInit(pDM_Odm); } } - else if(dm_value[1] == 2) //disable - { + else if (dm_value[1] == 2) { //disable pDM_Odm->SupportAbility &= ~(BIT(dm_value[0])) ; - } - else - { + } else { //DbgPrint("\n[Warning!!!] 1:enable, 2:disable \n\n"); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "[Warning!!!] 1:enable, 2:disable")); } } - PHYDM_SNPRINTF((output+used, out_len-used,"pre-SupportAbility = 0x%x\n", pre_support_ability )); + PHYDM_SNPRINTF((output+used, out_len-used,"pre-SupportAbility = 0x%x\n", pre_support_ability )); PHYDM_SNPRINTF((output+used, out_len-used,"Curr-SupportAbility = 0x%x\n", pDM_Odm->SupportAbility )); PHYDM_SNPRINTF((output+used, out_len-used,"%s\n", "================================")); } @@ -911,15 +893,15 @@ VOID ODM_DMWatchdog_LPS( IN PDM_ODM_T pDM_Odm ) -{ +{ odm_CommonInfoSelfUpdate(pDM_Odm); odm_FalseAlarmCounterStatistics(pDM_Odm); odm_RSSIMonitorCheck(pDM_Odm); - odm_DIGbyRSSI_LPS(pDM_Odm); + odm_DIGbyRSSI_LPS(pDM_Odm); odm_CCKPacketDetectionThresh(pDM_Odm); odm_CommonInfoSelfReset(pDM_Odm); - if(*(pDM_Odm->pbPowerSaving)==TRUE) + if (*(pDM_Odm->pbPowerSaving)==TRUE) return; } #endif @@ -940,17 +922,16 @@ ODM_DMWatchdog( #if (DM_ODM_SUPPORT_TYPE == ODM_AP) { prtl8192cd_priv priv = pDM_Odm->priv; - if( (priv->auto_channel != 0) && (priv->auto_channel != 2) )//if ACS running, do not do FA/CCA counter read + if ( (priv->auto_channel != 0) && (priv->auto_channel != 2) )//if ACS running, do not do FA/CCA counter read return; } -#endif +#endif odm_FalseAlarmCounterStatistics(pDM_Odm); phydm_NoisyDetection(pDM_Odm); - + odm_RSSIMonitorCheck(pDM_Odm); - if(*(pDM_Odm->pbPowerSaving) == TRUE) - { + if (*(pDM_Odm->pbPowerSaving) == TRUE) { odm_DIGbyRSSI_LPS(pDM_Odm); { pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; @@ -962,7 +943,7 @@ ODM_DMWatchdog( ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, ("DMWatchdog in power saving mode\n")); return; } - + Phydm_CheckAdaptivity(pDM_Odm); odm_UpdatePowerTrainingState(pDM_Odm); odm_DIG(pDM_Odm); @@ -971,7 +952,7 @@ ODM_DMWatchdog( Phydm_Adaptivity(pDM_Odm, pDM_DigTable->CurIGValue); } odm_CCKPacketDetectionThresh(pDM_Odm); - + phydm_ra_info_watchdog(pDM_Odm); odm_EdcaTurboCheck(pDM_Odm); odm_PathDiversity(pDM_Odm); @@ -984,9 +965,8 @@ ODM_DMWatchdog( phydm_rf_watchdog(pDM_Odm); - if(pDM_Odm->SupportICType & ODM_IC_11N_SERIES) - { - + if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { + #if (RTL8188E_SUPPORT == 1) if (pDM_Odm->SupportICType == ODM_RTL8188E) ODM_DynamicPrimaryCCA(pDM_Odm); @@ -995,8 +975,8 @@ ODM_DMWatchdog( #if( DM_ODM_SUPPORT_TYPE & (ODM_WIN|ODM_CE)) #if (RTL8192E_SUPPORT == 1) - if(pDM_Odm->SupportICType==ODM_RTL8192E) - odm_DynamicPrimaryCCA_Check(pDM_Odm); + if (pDM_Odm->SupportICType==ODM_RTL8192E) + odm_DynamicPrimaryCCA_Check(pDM_Odm); #endif #endif } @@ -1006,7 +986,7 @@ ODM_DMWatchdog( #endif odm_CommonInfoSelfReset(pDM_Odm); - + } @@ -1017,7 +997,7 @@ VOID ODM_CmnInfoInit( IN PDM_ODM_T pDM_Odm, IN ODM_CMNINFO_E CmnInfo, - IN u4Byte Value + IN u4Byte Value ) { // @@ -1047,7 +1027,7 @@ ODM_CmnInfoInit( case ODM_CMNINFO_MP_TEST_CHIP: pDM_Odm->bIsMPChip= (u1Byte)Value; break; - + case ODM_CMNINFO_IC_TYPE: pDM_Odm->SupportICType = Value; break; @@ -1068,14 +1048,14 @@ ODM_CmnInfoInit( case ODM_CMNINFO_RF_ANTENNA_TYPE: pDM_Odm->AntDivType= (u1Byte)Value; break; - + case ODM_CMNINFO_WITH_EXT_ANTENNA_SWITCH: pDM_Odm->with_extenal_ant_switch = (u1Byte)Value; - break; - + break; + case ODM_CMNINFO_BE_FIX_TX_ANT: pDM_Odm->DM_FatTable.b_fix_tx_ant = (u1Byte)Value; - break; + break; case ODM_CMNINFO_BOARD_TYPE: if (!pDM_Odm->bInitHwInfoByRfe) @@ -1111,17 +1091,17 @@ ODM_CmnInfoInit( if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeGPA = (u2Byte)Value; break; - + case ODM_CMNINFO_APA: if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeAPA = (u2Byte)Value; break; - + case ODM_CMNINFO_GLNA: if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeGLNA = (u2Byte)Value; break; - + case ODM_CMNINFO_ALNA: if (!pDM_Odm->bInitHwInfoByRfe) pDM_Odm->TypeALNA = (u2Byte)Value; @@ -1141,7 +1121,7 @@ ODM_CmnInfoInit( break; case ODM_CMNINFO_BWIFI_TEST: pDM_Odm->WIFITest = (u1Byte)Value; - break; + break; case ODM_CMNINFO_SMART_CONCURRENT: pDM_Odm->bDualMacSmartConcurrent = (BOOLEAN )Value; break; @@ -1171,11 +1151,11 @@ ODM_CmnInfoInit( pDM_Odm->DFS_RegionDomain = (u1Byte)Value; break; #endif - //To remove the compiler warning, must add an empty default statement to handle the other values. + //To remove the compiler warning, must add an empty default statement to handle the other values. default: //do nothing - break; - + break; + } } @@ -1185,7 +1165,7 @@ VOID ODM_CmnInfoHook( IN PDM_ODM_T pDM_Odm, IN ODM_CMNINFO_E CmnInfo, - IN PVOID pValue + IN PVOID pValue ) { // @@ -1199,7 +1179,7 @@ ODM_CmnInfoHook( case ODM_CMNINFO_MAC_PHY_MODE: pDM_Odm->pMacPhyMode = (u1Byte *)pValue; break; - + case ODM_CMNINFO_TX_UNI: pDM_Odm->pNumTxBytesUnicast = (u8Byte *)pValue; break; @@ -1231,7 +1211,7 @@ ODM_CmnInfoHook( case ODM_CMNINFO_CHNL: pDM_Odm->pChannel = (u1Byte *)pValue; break; - + case ODM_CMNINFO_DMSP_GET_VALUE: pDM_Odm->pbGetValueFromOtherMac = (BOOLEAN *)pValue; break; @@ -1291,7 +1271,7 @@ ODM_CmnInfoHook( case ODM_CMNINFO_IS1ANTENNA: pDM_Odm->pIs1Antenna = (BOOLEAN *)pValue; break; - + case ODM_CMNINFO_RFDEFAULTPATH: pDM_Odm->pRFDefaultPath= (u1Byte *)pValue; break; @@ -1328,7 +1308,7 @@ ODM_CmnInfoHook( // break; //case ODM_CMNINFO_BT_COEXIST: - // pDM_Odm->BTCoexist = (BOOLEAN *)pValue; + // pDM_Odm->BTCoexist = (BOOLEAN *)pValue; //case ODM_CMNINFO_STA_STATUS: //pDM_Odm->pODM_StaInfo[] = (PSTA_INFO_T)pValue; @@ -1341,7 +1321,7 @@ ODM_CmnInfoHook( //case ODM_CMNINFO_MAC_STATUS: // pDM_Odm->pMacInfo = (ODM_MAC_INFO *)pValue; // break; - //To remove the compiler warning, must add an empty default statement to handle the other values. + //To remove the compiler warning, must add an empty default statement to handle the other values. default: //do nothing break; @@ -1356,7 +1336,7 @@ ODM_CmnInfoPtrArrayHook( IN PDM_ODM_T pDM_Odm, IN ODM_CMNINFO_E CmnInfo, IN u2Byte Index, - IN PVOID pValue + IN PVOID pValue ) { // @@ -1366,10 +1346,10 @@ ODM_CmnInfoPtrArrayHook( { // // Dynamic call by reference pointer. - // + // case ODM_CMNINFO_STA_STATUS: pDM_Odm->pODM_StaInfo[Index] = (PSTA_INFO_T)pValue; - + if (IS_STA_VALID(pDM_Odm->pODM_StaInfo[Index])) #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) pDM_Odm->platform2phydm_macid_table[((PSTA_INFO_T)pValue)->AssociatedMacId] = Index; /*AssociatedMacId are unique bttween different Adapter*/ @@ -1378,14 +1358,14 @@ ODM_CmnInfoPtrArrayHook( #elif (DM_ODM_SUPPORT_TYPE == ODM_CE) pDM_Odm->platform2phydm_macid_table[((PSTA_INFO_T)pValue)->mac_id] = Index; #endif - - break; - //To remove the compiler warning, must add an empty default statement to handle the other values. + + break; + //To remove the compiler warning, must add an empty default statement to handle the other values. default: //do nothing break; } - + } @@ -1396,7 +1376,7 @@ VOID ODM_CmnInfoUpdate( IN PDM_ODM_T pDM_Odm, IN u4Byte CmnInfo, - IN u8Byte Value + IN u8Byte Value ) { // @@ -1407,7 +1387,7 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_LINK_IN_PROGRESS: pDM_Odm->bLinkInProcess = (BOOLEAN)Value; break; - + case ODM_CMNINFO_ABILITY: pDM_Odm->SupportAbility = (u4Byte)Value; break; @@ -1431,7 +1411,7 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_STATION_STATE: pDM_Odm->bsta_state = (BOOLEAN)Value; break; - + case ODM_CMNINFO_RSSI_MIN: pDM_Odm->RSSI_Min= (u1Byte)Value; break; @@ -1455,30 +1435,30 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_BT_ENABLED: pDM_Odm->bBtEnabled = (BOOLEAN)Value; break; - + case ODM_CMNINFO_BT_HS_CONNECT_PROCESS: pDM_Odm->bBtConnectProcess = (BOOLEAN)Value; break; - + case ODM_CMNINFO_BT_HS_RSSI: pDM_Odm->btHsRssi = (u1Byte)Value; break; - + case ODM_CMNINFO_BT_OPERATION: pDM_Odm->bBtHsOperation = (BOOLEAN)Value; break; case ODM_CMNINFO_BT_LIMITED_DIG: pDM_Odm->bBtLimitedDig = (BOOLEAN)Value; - break; + break; case ODM_CMNINFO_BT_DIG: pDM_Odm->btHsDigVal = (u1Byte)Value; break; - + case ODM_CMNINFO_BT_BUSY: pDM_Odm->bBtBusy = (BOOLEAN)Value; - break; + break; case ODM_CMNINFO_BT_DISABLE_EDCA: pDM_Odm->bBtDisableEdcaTurbo = (BOOLEAN)Value; @@ -1534,14 +1514,14 @@ ODM_CmnInfoUpdate( case ODM_CMNINFO_CHNL: pDM_Odm->Channel = (u1Byte)Value; - break; -*/ + break; +*/ default: //do nothing break; } - + } @@ -1553,59 +1533,59 @@ ODM_InitAllWorkItems(IN PDM_ODM_T pDM_Odm ) PADAPTER pAdapter = pDM_Odm->Adapter; #if USE_WORKITEM #ifdef CONFIG_S0S1_SW_ANTENNA_DIVERSITY - ODM_InitializeWorkItem( pDM_Odm, - &pDM_Odm->DM_SWAT_Table.phydm_SwAntennaSwitchWorkitem, + ODM_InitializeWorkItem( pDM_Odm, + &pDM_Odm->DM_SWAT_Table.phydm_SwAntennaSwitchWorkitem, (RT_WORKITEM_CALL_BACK)ODM_SW_AntDiv_WorkitemCallback, (PVOID)pAdapter, "AntennaSwitchWorkitem"); #endif #ifdef CONFIG_HL_SMART_ANTENNA_TYPE1 - ODM_InitializeWorkItem(pDM_Odm, - &pDM_Odm->dm_sat_table.hl_smart_antenna_workitem, + ODM_InitializeWorkItem(pDM_Odm, + &pDM_Odm->dm_sat_table.hl_smart_antenna_workitem, (RT_WORKITEM_CALL_BACK)phydm_beam_switch_workitem_callback, (PVOID)pAdapter, "hl_smart_ant_workitem"); - ODM_InitializeWorkItem(pDM_Odm, - &pDM_Odm->dm_sat_table.hl_smart_antenna_decision_workitem, + ODM_InitializeWorkItem(pDM_Odm, + &pDM_Odm->dm_sat_table.hl_smart_antenna_decision_workitem, (RT_WORKITEM_CALL_BACK)phydm_beam_decision_workitem_callback, (PVOID)pAdapter, "hl_smart_ant_decision_workitem"); #endif - + ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->PathDivSwitchWorkitem), - (RT_WORKITEM_CALL_BACK)odm_PathDivChkAntSwitchWorkitemCallback, + &(pDM_Odm->PathDivSwitchWorkitem), + (RT_WORKITEM_CALL_BACK)odm_PathDivChkAntSwitchWorkitemCallback, (PVOID)pAdapter, "SWAS_WorkItem"); ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->CCKPathDiversityWorkitem), - (RT_WORKITEM_CALL_BACK)odm_CCKTXPathDiversityWorkItemCallback, + &(pDM_Odm->CCKPathDiversityWorkitem), + (RT_WORKITEM_CALL_BACK)odm_CCKTXPathDiversityWorkItemCallback, (PVOID)pAdapter, "CCKTXPathDiversityWorkItem"); ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->MPT_DIGWorkitem), - (RT_WORKITEM_CALL_BACK)odm_MPT_DIGWorkItemCallback, + &(pDM_Odm->MPT_DIGWorkitem), + (RT_WORKITEM_CALL_BACK)odm_MPT_DIGWorkItemCallback, (PVOID)pAdapter, "MPT_DIGWorkitem"); ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->RaRptWorkitem), - (RT_WORKITEM_CALL_BACK)ODM_UpdateInitRateWorkItemCallback, + &(pDM_Odm->RaRptWorkitem), + (RT_WORKITEM_CALL_BACK)ODM_UpdateInitRateWorkItemCallback, (PVOID)pAdapter, "RaRptWorkitem"); #if( defined(CONFIG_5G_CG_SMART_ANT_DIVERSITY) ) ||( defined(CONFIG_2G_CG_SMART_ANT_DIVERSITY) ) ODM_InitializeWorkItem( pDM_Odm, - &(pDM_Odm->FastAntTrainingWorkitem), - (RT_WORKITEM_CALL_BACK)odm_FastAntTrainingWorkItemCallback, + &(pDM_Odm->FastAntTrainingWorkitem), + (RT_WORKITEM_CALL_BACK)odm_FastAntTrainingWorkItemCallback, (PVOID)pAdapter, "FastAntTrainingWorkitem"); #endif @@ -1619,14 +1599,14 @@ ODM_InitAllWorkItems(IN PDM_ODM_T pDM_Odm ) (RT_WORKITEM_CALL_BACK)halComTxbf_EnterWorkItemCallback, (PVOID)pAdapter, "Txbf_EnterWorkItem"); - + ODM_InitializeWorkItem( pDM_Odm, &(pDM_Odm->BeamformingInfo.TxbfInfo.Txbf_LeaveWorkItem), (RT_WORKITEM_CALL_BACK)halComTxbf_LeaveWorkItemCallback, (PVOID)pAdapter, "Txbf_LeaveWorkItem"); - + ODM_InitializeWorkItem( pDM_Odm, &(pDM_Odm->BeamformingInfo.TxbfInfo.Txbf_FwNdpaWorkItem), @@ -1700,7 +1680,7 @@ ODM_FreeAllWorkItems(IN PDM_ODM_T pDM_Odm ) ODM_FreeWorkItem(&(pDM_Odm->dm_sat_table.hl_smart_antenna_decision_workitem)); #endif - ODM_FreeWorkItem(&(pDM_Odm->PathDivSwitchWorkitem)); + ODM_FreeWorkItem(&(pDM_Odm->PathDivSwitchWorkitem)); ODM_FreeWorkItem(&(pDM_Odm->CCKPathDiversityWorkitem)); #if (defined(CONFIG_5G_CG_SMART_ANT_DIVERSITY)) || (defined(CONFIG_2G_CG_SMART_ANT_DIVERSITY)) ODM_FreeWorkItem(&(pDM_Odm->FastAntTrainingWorkitem)); @@ -1759,15 +1739,15 @@ odm_IsLinked( { u4Byte i; BOOLEAN Linked = FALSE; - + for(i=0; ipODM_StaInfo[i]) ) - { + { Linked = TRUE; break; } - + } pDM_Odm->bLinked = Linked; @@ -1776,7 +1756,7 @@ odm_IsLinked( VOID ODM_InitAllTimers( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) @@ -1785,22 +1765,22 @@ ODM_InitAllTimers( #if (DM_ODM_SUPPORT_TYPE == ODM_AP) #ifdef MP_TEST - if (pDM_Odm->priv->pshare->rf_ft_var.mp_specific) - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, - (RT_TIMER_CALL_BACK)odm_MPT_DIGCallback, NULL, "MPT_DIGTimer"); + if (pDM_Odm->priv->pshare->rf_ft_var.mp_specific) + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, + (RT_TIMER_CALL_BACK)odm_MPT_DIGCallback, NULL, "MPT_DIGTimer"); #endif #elif(DM_ODM_SUPPORT_TYPE == ODM_WIN) - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer, (RT_TIMER_CALL_BACK)odm_MPT_DIGCallback, NULL, "MPT_DIGTimer"); #endif #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->PathDivSwitchTimer, + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->PathDivSwitchTimer, (RT_TIMER_CALL_BACK)odm_PathDivChkAntSwitchCallback, NULL, "PathDivTimer"); - ODM_InitializeTimer(pDM_Odm, &pDM_Odm->CCKPathDiversityTimer, - (RT_TIMER_CALL_BACK)odm_CCKTXPathDiversityCallback, NULL, "CCKPathDiversityTimer"); + ODM_InitializeTimer(pDM_Odm, &pDM_Odm->CCKPathDiversityTimer, + (RT_TIMER_CALL_BACK)odm_CCKTXPathDiversityCallback, NULL, "CCKPathDiversityTimer"); ODM_InitializeTimer(pDM_Odm, &pDM_Odm->sbdcnt_timer, - (RT_TIMER_CALL_BACK)phydm_sbd_callback, NULL, "SbdTimer"); + (RT_TIMER_CALL_BACK)phydm_sbd_callback, NULL, "SbdTimer"); #if (BEAMFORMING_SUPPORT == 1) ODM_InitializeTimer(pDM_Odm, &pDM_Odm->BeamformingInfo.TxbfInfo.Txbf_FwNdpaTimer, (RT_TIMER_CALL_BACK)halComTxbf_FwNdpaTimerCallback, NULL, "Txbf_FwNdpaTimer"); @@ -1817,16 +1797,16 @@ ODM_InitAllTimers( VOID ODM_CancelAllTimers( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) // - // 2012/01/12 MH Temp BSOD fix. We need to find NIC allocate mem fail reason in + // 2012/01/12 MH Temp BSOD fix. We need to find NIC allocate mem fail reason in // win7 platform. // HAL_ADAPTER_STS_CHK(pDM_Odm) -#endif +#endif #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) ODM_AntDivTimers(pDM_Odm,CANCEL_ANTDIV_TIMMER); @@ -1862,7 +1842,7 @@ ODM_CancelAllTimers( VOID ODM_ReleaseAllTimers( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #if (defined(CONFIG_PHYDM_ANTENNA_DIVERSITY)) @@ -1906,7 +1886,7 @@ ODM_ReleaseTimer(pDM_Odm, &pDM_Odm->MPT_DIGTimer); #if (DM_ODM_SUPPORT_TYPE == ODM_AP) VOID ODM_InitAllThreads( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #ifdef TPT_THREAD @@ -1916,17 +1896,17 @@ ODM_InitAllThreads( VOID ODM_StopAllThreads( - IN PDM_ODM_T pDM_Odm + IN PDM_ODM_T pDM_Odm ) { #ifdef TPT_THREAD kTPT_task_stop(pDM_Odm->priv); #endif } -#endif +#endif -#if( DM_ODM_SUPPORT_TYPE == ODM_WIN) +#if( DM_ODM_SUPPORT_TYPE == ODM_WIN) // // 2011/07/26 MH Add an API for testing IQK fail case. // @@ -1941,19 +1921,17 @@ ODM_CheckPowerStatus( PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); // 2011/07/27 MH We are not testing ready~~!! We may fail to get correct value when init sequence. - if (pMgntInfo->init_adpt_in_progress == TRUE) - { + if (pMgntInfo->init_adpt_in_progress == TRUE) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ODM_CheckPowerStatus Return TRUE, due to initadapter\n")); return TRUE; } - + // // 2011/07/19 MH We can not execute tx pwoer tracking/ LLC calibrate or IQK. // - Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); - if(Adapter->bDriverStopped || Adapter->bDriverIsGoingToPnpSetPowerSleep || rtState == eRfOff) - { - ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", + Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); + if (Adapter->bDriverStopped || Adapter->bDriverIsGoingToPnpSetPowerSleep || rtState == eRfOff) { + ODM_RT_TRACE(pDM_Odm, ODM_COMP_INIT, ODM_DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", Adapter->bDriverStopped, Adapter->bDriverIsGoingToPnpSetPowerSleep, rtState)); return FALSE; } @@ -1980,10 +1958,10 @@ ODM_CheckPowerStatus( // // 2011/07/19 MH We can not execute tx pwoer tracking/ LLC calibrate or IQK. // - Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); + Adapter->HalFunc.GetHwRegHandler(Adapter, HW_VAR_RF_STATE, (pu1Byte)(&rtState)); if(Adapter->bDriverStopped || Adapter->bDriverIsGoingToPnpSetPowerSleep || rtState == eRfOff) { - ODM_RT_TRACE(pDM_Odm,COMP_INIT, DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", + ODM_RT_TRACE(pDM_Odm,COMP_INIT, DBG_LOUD, ("ODM_CheckPowerStatus Return FALSE, due to %d/%d/%d\n", Adapter->bDriverStopped, Adapter->bDriverIsGoingToPnpSetPowerSleep, rtState)); return FALSE; } @@ -2005,7 +1983,7 @@ GetPSDData( //unsigned int val, rfval; //int psd_report; u4Byte psd_report; - + //HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); //Debug Message //val = PHY_QueryBBReg(Adapter,0x908, bMaskDWord); @@ -2026,7 +2004,7 @@ GetPSDData( ODM_SetBBReg(pDM_Odm, 0x808, BIT22, 0); //Read PSD report, Reg8B4[15:0] psd_report = ODM_GetBBReg(pDM_Odm,0x8B4, bMaskDWord) & 0x0000FFFF; - + #if 1//(DEV_BUS_TYPE == RT_PCI_INTERFACE) && ( (RT_PLATFORM == PLATFORM_LINUX) || (RT_PLATFORM == PLATFORM_MACOSX)) psd_report = (u4Byte) (odm_ConvertTo_dB(psd_report))+(u4Byte)(initial_gain_psd-0x1c); #else @@ -2034,11 +2012,11 @@ GetPSDData( #endif return psd_report; - + } #endif -u4Byte +u4Byte odm_ConvertTo_dB( u4Byte Value) { @@ -2048,23 +2026,18 @@ odm_ConvertTo_dB( Value = Value & 0xFFFF; - for (i = 0; i < 12; i++) - { - if (Value <= dB_Invert_Table[i][7]) - { + for (i = 0; i < 12; i++) { + if (Value <= dB_Invert_Table[i][7]) { break; } } - if (i >= 12) - { + if (i >= 12) { return (96); // maximum 96 dB } - for (j = 0; j < 8; j++) - { - if (Value <= dB_Invert_Table[i][j]) - { + for (j = 0; j < 8; j++) { + if (Value <= dB_Invert_Table[i][j]) { break; } } @@ -2074,16 +2047,16 @@ odm_ConvertTo_dB( return (dB); } -u4Byte +u4Byte odm_ConvertTo_linear( u4Byte Value) { u1Byte i; u1Byte j; u4Byte linear; - + /* 1dB~96dB */ - + Value = Value & 0xFF; i = (u1Byte)((Value - 1) >> 3); @@ -2112,22 +2085,20 @@ ODM_AsocEntry_Init( ODM_CmnInfoPtrArrayHook(pDM_OutSrc, ODM_CMNINFO_STA_STATUS, 0, &pLoopAdapter->MgntInfo.DefaultPort[0]); pLoopAdapter->MgntInfo.DefaultPort[0].MultiPortStationIdx = TotalAssocEntryNum; - + adaptercount += 1; - RT_TRACE(COMP_INIT, DBG_LOUD, ("adaptercount=%d\n", adaptercount)); + RT_TRACE(COMP_INIT, DBG_LOUD, ("adaptercount=%d\n", adaptercount)); pLoopAdapter = GetNextExtAdapter(pLoopAdapter); TotalAssocEntryNum +=1; - while(pLoopAdapter) - { - for (index = 0; index MgntInfo.AsocEntry[index]); - pLoopAdapter->MgntInfo.AsocEntry[index].MultiPortStationIdx = TotalAssocEntryNum+index; + pLoopAdapter->MgntInfo.AsocEntry[index].MultiPortStationIdx = TotalAssocEntryNum+index; } - + TotalAssocEntryNum+= index; - if(IS_HARDWARE_TYPE_8188E((pDM_Odm->Adapter))) + if (IS_HARDWARE_TYPE_8188E((pDM_Odm->Adapter))) pLoopAdapter->RASupport = TRUE; adaptercount += 1; RT_TRACE(COMP_INIT, DBG_LOUD, ("adaptercount=%d\n", adaptercount)); @@ -2136,7 +2107,7 @@ ODM_AsocEntry_Init( RT_TRACE(COMP_INIT, DBG_LOUD, ("TotalAssocEntryNum = %d\n", TotalAssocEntryNum)); if (TotalAssocEntryNum < (ODM_ASSOCIATE_ENTRY_NUM-1)) { - + RT_TRACE(COMP_INIT, DBG_LOUD, ("In hook null\n")); for (index = TotalAssocEntryNum; index < ODM_ASSOCIATE_ENTRY_NUM; index++) ODM_CmnInfoPtrArrayHook(pDM_OutSrc, ODM_CMNINFO_STA_STATUS, index, NULL); @@ -2191,8 +2162,7 @@ void odm_dtc(PDM_ODM_T pDM_Odm) if (DTC_BASE < pDM_Odm->RSSI_Min) { /* need to decade the CTS TX power */ sign = 1; - for (i=0;i= pDM_Odm->RSSI_Min) || (dtc_steps >= 6)) break; else @@ -2200,13 +2170,11 @@ void odm_dtc(PDM_ODM_T pDM_Odm) } } #if 0 - else if (DTC_DWN_BASE > pDM_Odm->RSSI_Min) - { + else if (DTC_DWN_BASE > pDM_Odm->RSSI_Min) { /* needs to increase the CTS TX power */ sign = 0; dtc_steps = 1; - for (i=0;iRSSI_Min) || (dtc_steps>=10)) break; else @@ -2241,21 +2209,19 @@ odm_UpdatePowerTrainingState( pDIG_T pDM_DigTable = &pDM_Odm->DM_DigTable; u4Byte score = 0; - if(!(pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)) + if (!(pDM_Odm->SupportAbility & ODM_BB_PWR_TRAIN)) return; ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState()============>\n")); pDM_Odm->bChangeState = FALSE; // Debug command - if(pDM_Odm->ForcePowerTrainingState) - { - if(pDM_Odm->ForcePowerTrainingState == 1 && !pDM_Odm->bDisablePowerTraining) - { + if (pDM_Odm->ForcePowerTrainingState) { + if (pDM_Odm->ForcePowerTrainingState == 1 && !pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = TRUE; } - else if(pDM_Odm->ForcePowerTrainingState == 2 && pDM_Odm->bDisablePowerTraining) + else if (pDM_Odm->ForcePowerTrainingState == 2 && pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = FALSE; @@ -2268,13 +2234,12 @@ odm_UpdatePowerTrainingState( pDM_Odm->ForcePowerTrainingState)); return; } - - if(!pDM_Odm->bLinked) + + if (!pDM_Odm->bLinked) return; - + // First connect - if((pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0 == FALSE)) - { + if ((pDM_Odm->bLinked) && (pDM_DigTable->bMediaConnect_0 == FALSE)) { pDM_Odm->PT_score = 0; pDM_Odm->bChangeState = TRUE; pDM_Odm->PhyDbgInfo.NumQryPhyStatusOFDM = 0; @@ -2284,54 +2249,48 @@ odm_UpdatePowerTrainingState( } // Compute score - if(pDM_Odm->NHM_cnt_0 >= 215) + if (pDM_Odm->NHM_cnt_0 >= 215) score = 2; - else if(pDM_Odm->NHM_cnt_0 >= 190) + else if (pDM_Odm->NHM_cnt_0 >= 190) score = 1; // unknow state - else - { + else { u4Byte RX_Pkt_Cnt; - + RX_Pkt_Cnt = (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusOFDM) + (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusCCK); - - if((FalseAlmCnt->Cnt_CCA_all > 31 && RX_Pkt_Cnt > 31) && (FalseAlmCnt->Cnt_CCA_all >= RX_Pkt_Cnt)) - { - if((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 1)) <= FalseAlmCnt->Cnt_CCA_all) + + if ((FalseAlmCnt->Cnt_CCA_all > 31 && RX_Pkt_Cnt > 31) && (FalseAlmCnt->Cnt_CCA_all >= RX_Pkt_Cnt)) { + if ((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 1)) <= FalseAlmCnt->Cnt_CCA_all) score = 0; - else if((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 2)) <= FalseAlmCnt->Cnt_CCA_all) + else if ((RX_Pkt_Cnt + (RX_Pkt_Cnt >> 2)) <= FalseAlmCnt->Cnt_CCA_all) score = 1; else score = 2; } - ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): RX_Pkt_Cnt = %d, Cnt_CCA_all = %d\n", + ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): RX_Pkt_Cnt = %d, Cnt_CCA_all = %d\n", RX_Pkt_Cnt, FalseAlmCnt->Cnt_CCA_all)); } ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): NumQryPhyStatusOFDM = %d, NumQryPhyStatusCCK = %d\n", (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusOFDM), (u4Byte)(pDM_Odm->PhyDbgInfo.NumQryPhyStatusCCK))); - ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): NHM_cnt_0 = %d, score = %d\n", + ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): NHM_cnt_0 = %d, score = %d\n", pDM_Odm->NHM_cnt_0, score)); // smoothing pDM_Odm->PT_score = (score << 4) + (pDM_Odm->PT_score>>1) + (pDM_Odm->PT_score>>2); score = (pDM_Odm->PT_score + 32) >> 6; - ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): PT_score = %d, score after smoothing = %d\n", + ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): PT_score = %d, score after smoothing = %d\n", pDM_Odm->PT_score, score)); // Mode decision - if(score == 2) - { - if(pDM_Odm->bDisablePowerTraining) - { + if (score == 2) { + if (pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = FALSE; ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): Change state\n")); } ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): Enable Power Training\n")); } - else if(score == 0) - { - if(!pDM_Odm->bDisablePowerTraining) - { + else if (score == 0) { + if (!pDM_Odm->bDisablePowerTraining) { pDM_Odm->bChangeState = TRUE; pDM_Odm->bDisablePowerTraining = TRUE; ODM_RT_TRACE(pDM_Odm,ODM_COMP_RA_MASK, ODM_DBG_LOUD,("odm_UpdatePowerTrainingState(): Change state\n")); @@ -2358,14 +2317,14 @@ u1Byte GetRightChnlPlaceforIQK(u1Byte chnl) 102, 104, 106, 108, 110, 112, 114, 116, 118, 120, 122, 124, 126, 128, 130, 132, 134, 136, 138, 140, 149, 151, 153, 155, 157, 159, 161, 163, 165}; u1Byte place = chnl; - + if (chnl > 14) { for (place = 14; place < sizeof(channel_all); place++) { if (channel_all[place] == chnl) return place-13; } } - + return 0; } @@ -2379,17 +2338,17 @@ phydm_NoisyDetection( { u4Byte Total_FA_Cnt, Total_CCA_Cnt; u4Byte Score = 0, i, Score_Smooth; - + Total_CCA_Cnt = pDM_Odm->FalseAlmCnt.Cnt_CCA_all; - Total_FA_Cnt = pDM_Odm->FalseAlmCnt.Cnt_all; + Total_FA_Cnt = pDM_Odm->FalseAlmCnt.Cnt_all; /* if( Total_FA_Cnt*16>=Total_CCA_Cnt*14 ) // 87.5 - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*12 ) // 75 - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*10 ) // 56.25 - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*8 ) // 50 else if( Total_FA_Cnt*16>=Total_CCA_Cnt*7 ) // 43.75 @@ -2397,7 +2356,7 @@ phydm_NoisyDetection( else if( Total_FA_Cnt*16>=Total_CCA_Cnt*6 ) // 37.5 else if( Total_FA_Cnt*16>=Total_CCA_Cnt*5 ) // 31.25% - + else if( Total_FA_Cnt*16>=Total_CCA_Cnt*4 ) // 25% else if( Total_FA_Cnt*16>=Total_CCA_Cnt*3 ) // 18.75% @@ -2406,10 +2365,8 @@ phydm_NoisyDetection( else if( Total_FA_Cnt*16>=Total_CCA_Cnt*1 ) // 6.25% */ - for(i=0;i<=16;i++) - { - if( Total_FA_Cnt*16>=Total_CCA_Cnt*(16-i) ) - { + for (i=0;i<=16;i++) { + if ( Total_FA_Cnt*16>=Total_CCA_Cnt*(16-i) ) { Score = 16-i; break; } @@ -2487,7 +2444,7 @@ phydm_NoisyDetection( break; case 15: ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, - ("[NoisyDetection] Total_FA_Cnt/Total_CCA_Cnt=93.75%%\n")); + ("[NoisyDetection] Total_FA_Cnt/Total_CCA_Cnt=93.75%%\n")); break; case 16: ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, @@ -2495,13 +2452,13 @@ phydm_NoisyDetection( break; default: ODM_RT_TRACE(pDM_Odm,ODM_COMP_COMMON, ODM_DBG_LOUD, - ("[NoisyDetection] Unknown Value!! Need Check!!\n")); + ("[NoisyDetection] Unknown Value!! Need Check!!\n")); } -*/ +*/ ODM_RT_TRACE(pDM_Odm, ODM_COMP_NOISY_DETECT, ODM_DBG_LOUD, ("[NoisyDetection] Total_CCA_Cnt=%d, Total_FA_Cnt=%d, NoisyDecision_Smooth=%d, Score=%d, Score_Smooth=%d, pDM_Odm->NoisyDecision=%d\n", Total_CCA_Cnt, Total_FA_Cnt, pDM_Odm->NoisyDecision_Smooth, Score, Score_Smooth, pDM_Odm->NoisyDecision)); - + } VOID @@ -2514,18 +2471,18 @@ phydm_csi_mask_enable( u4Byte reg_value = 0; reg_value = (enable == CSI_MASK_ENABLE) ? 1 : 0; - + if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { ODM_SetBBReg(pDM_Odm, 0xD2C, BIT28, reg_value); ODM_RT_TRACE(pDM_Odm, ODM_COMP_API, ODM_DBG_LOUD, ("Enable CSI Mask: Reg 0xD2C[28] = ((0x%x))\n", reg_value)); - + } else if (pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) { ODM_SetBBReg(pDM_Odm, 0x874, BIT0, reg_value); ODM_RT_TRACE(pDM_Odm, ODM_COMP_API, ODM_DBG_LOUD, ("Enable CSI Mask: Reg 0x874[0] = ((0x%x))\n", reg_value)); } - + } VOID @@ -2536,14 +2493,14 @@ phydm_clean_all_csi_mask( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; if (pDM_Odm->SupportICType & ODM_IC_11N_SERIES) { - + ODM_SetBBReg(pDM_Odm, 0xD40, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0xD44, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0xD48, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0xD4c, bMaskDWord, 0); - + } else if (pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) { - + ODM_SetBBReg(pDM_Odm, 0x880, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0x884, bMaskDWord, 0); ODM_SetBBReg(pDM_Odm, 0x888, bMaskDWord, 0); @@ -2580,37 +2537,37 @@ phydm_set_csi_mask_reg( tone_num = 64; csi_mask_reg_p = 0xD40; - csi_mask_reg_n = 0xD48; - + csi_mask_reg_n = 0xD48; + } else if (pDM_Odm->SupportICType & ODM_IC_11AC_SERIES) { tone_num = 128; csi_mask_reg_p = 0x880; - csi_mask_reg_n = 0x890; + csi_mask_reg_n = 0x890; } - + if (tone_direction == FREQ_POSITIVE) { if (tone_idx_tmp >= (tone_num - 1)) tone_idx_tmp = (tone_num - 1); - + byte_offset = (u1Byte)(tone_idx_tmp >> 3); bit_offset = (u1Byte)(tone_idx_tmp & 0x7); target_reg = csi_mask_reg_p + byte_offset; - + } else { tone_num_shift = tone_num; - + if (tone_idx_tmp >= tone_num) tone_idx_tmp = tone_num; tone_idx_tmp = tone_num - tone_idx_tmp; - + byte_offset = (u1Byte)(tone_idx_tmp >> 3); - bit_offset = (u1Byte)(tone_idx_tmp & 0x7); + bit_offset = (u1Byte)(tone_idx_tmp & 0x7); target_reg = csi_mask_reg_n + byte_offset; } - + reg_tmp_value = ODM_Read1Byte(pDM_Odm, target_reg); ODM_RT_TRACE(pDM_Odm, ODM_COMP_API, ODM_DBG_LOUD, ("Pre Mask tone idx[%d]: Reg0x%x = ((0x%x))\n", (tone_idx_tmp + tone_num_shift), target_reg, reg_tmp_value)); reg_tmp_value |= BIT(bit_offset); diff --git a/hal/phydm/phydm_beamforming.c b/hal/phydm/phydm_beamforming.c index 1078cc906..c6fdd26e4 100644 --- a/hal/phydm/phydm_beamforming.c +++ b/hal/phydm/phydm_beamforming.c @@ -25,7 +25,7 @@ phydm_staInfoInit( PRT_VERY_HIGH_THROUGHPUT pVHTInfo = GET_VHT_INFO(pMgntInfo); ODM_MoveMemory(pDM_Odm, pEntry->MyMacAddr, Adapter->CurrentAddress, 6); - + pEntry->HtBeamformCap = pHTInfo->HtBeamformCap; pEntry->VhtBeamformCap = pVHTInfo->VhtBeamformCap; @@ -44,15 +44,15 @@ phydm_staInfoInit( pEntry->WirelessMode = pMgntInfo->dot11CurrentWirelessMode; pEntry->BW = pMgntInfo->dot11CurrentChannelBandWidth; pEntry->CurBeamform = pHTInfo->HtCurBeamform; - } + } if ((pEntry->WirelessMode & WIRELESS_MODE_AC_5G) || (pEntry->WirelessMode & WIRELESS_MODE_AC_24G)) { if (staIdx != 0) pEntry->CurBeamformVHT = pSTA->VHTInfo.VhtCurBeamform; else - pEntry->CurBeamformVHT = pVHTInfo->VhtCurBeamform; + pEntry->CurBeamformVHT = pVHTInfo->VhtCurBeamform; } - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("pSTA->wireless_mode = 0x%x, staidx = %d\n", pSTA->WirelessMode, staIdx)); #elif (DM_ODM_SUPPORT_TYPE == ODM_CE) @@ -91,16 +91,16 @@ void phydm_staInfoUpdate( ) { PSTA_INFO_T pSTA = pDM_Odm->pODM_StaInfo[staIdx]; - + if (!IS_STA_VALID(pSTA)) return; - + #if (DM_ODM_SUPPORT_TYPE == ODM_CE) pSTA->txbf_paid = pBeamformEntry->P_AID; pSTA->txbf_gid = pBeamformEntry->G_ID; -#endif +#endif } - + u1Byte Beamforming_GetHTNDPTxRate( @@ -112,12 +112,12 @@ Beamforming_GetHTNDPTxRate( u1Byte Nr_index = 0; u1Byte NDPTxRate; /*Find Nr*/ - + if (pDM_Odm->SupportICType & ODM_RTL8814A) Nr_index = TxBF_Nr(halTxbf8814A_GetNtx(pDM_Odm), CompSteeringNumofBFer); else Nr_index = TxBF_Nr(1, CompSteeringNumofBFer); - + switch (Nr_index) { case 1: NDPTxRate = MGN_MCS8; @@ -130,7 +130,7 @@ Beamforming_GetHTNDPTxRate( case 3: NDPTxRate = MGN_MCS24; break; - + default: NDPTxRate = MGN_MCS8; break; @@ -154,7 +154,7 @@ Beamforming_GetVHTNDPTxRate( Nr_index = TxBF_Nr(halTxbf8814A_GetNtx(pDM_Odm), CompSteeringNumofBFer); else Nr_index = TxBF_Nr(1, CompSteeringNumofBFer); - + switch (Nr_index) { case 1: NDPTxRate = MGN_VHT2SS_MCS0; @@ -167,7 +167,7 @@ Beamforming_GetVHTNDPTxRate( case 3: NDPTxRate = MGN_VHT4SS_MCS0; break; - + default: NDPTxRate = MGN_VHT2SS_MCS0; break; @@ -188,7 +188,7 @@ phydm_Beamforming_GetBFeeEntryByAddr( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - + for (i = 0; i < BEAMFORMEE_ENTRY_NUM; i++) { if (pBeamInfo->BeamformeeEntry[i].bUsed && (eqMacAddr(RA, pBeamInfo->BeamformeeEntry[i].MacAddr))) { *Idx = i; @@ -209,7 +209,7 @@ phydm_Beamforming_GetBFerEntryByAddr( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - + for (i = 0; i < BEAMFORMER_ENTRY_NUM; i++) { if (pBeamInfo->BeamformerEntry[i].bUsed && (eqMacAddr(TA, pBeamInfo->BeamformerEntry[i].MacAddr))) { *Idx = i; @@ -231,7 +231,7 @@ phydm_Beamforming_GetEntryByMacId( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - + for (i = 0; i < BEAMFORMEE_ENTRY_NUM; i++) { if (pBeamInfo->BeamformeeEntry[i].bUsed && (MacId == pBeamInfo->BeamformeeEntry[i].MacId)) { *Idx = i; @@ -253,7 +253,7 @@ phydm_Beamforming_GetEntryBeamCapByMacId( u1Byte i = 0; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; BEAMFORMING_CAP BeamformEntryCap = BEAMFORMING_CAP_NONE; - + for (i = 0; i < BEAMFORMEE_ENTRY_NUM; i++) { if (pBeamInfo->BeamformeeEntry[i].bUsed && (MacId == pBeamInfo->BeamformeeEntry[i].MacId)) { BeamformEntryCap = pBeamInfo->BeamformeeEntry[i].BeamformEntryCap; @@ -279,7 +279,7 @@ phydm_Beamforming_GetFreeBFeeEntry( if (pBeamInfo->BeamformeeEntry[i].bUsed == FALSE) { *Idx = i; return &(pBeamInfo->BeamformeeEntry[i]); - } + } } return NULL; } @@ -300,7 +300,7 @@ phydm_Beamforming_GetFreeBFerEntry( if (pBeamInfo->BeamformerEntry[i].bUsed == FALSE) { *Idx = i; return &(pBeamInfo->BeamformerEntry[i]); - } + } } return NULL; } @@ -324,11 +324,11 @@ phydm_Beamforming_GetFirstMUBFeeEntryIdx( BOOLEAN bFound = FALSE; for (idx = 0; idx < BEAMFORMEE_ENTRY_NUM; idx++) { - if (pBeamInfo->BeamformeeEntry[idx].bUsed && pBeamInfo->BeamformeeEntry[idx].is_mu_sta) { + if (pBeamInfo->BeamformeeEntry[idx].bUsed && pBeamInfo->BeamformeeEntry[idx].is_mu_sta) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] idx=%d!\n", __func__, idx)); bFound = TRUE; break; - } + } } if (!bFound) @@ -354,13 +354,13 @@ Beamforming_AddBFeeEntry( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); - if (pEntry != NULL) { + if (pEntry != NULL) { pEntry->bUsed = TRUE; pEntry->AID = pSTA->AID; pEntry->MacId = pSTA->MacID; pEntry->SoundBW = pSTA->BW; ODM_MoveMemory(pDM_Odm, pEntry->MyMacAddr, pSTA->MyMacAddr, 6); - + if (phydm_actingDetermine(pDM_Odm, PhyDM_ACTING_AS_AP)) { /*BSSID[44:47] xor BSSID[40:43]*/ u2Byte BSSID = ((pSTA->MyMacAddr[5] & 0xf0) >> 4) ^ (pSTA->MyMacAddr[5] & 0xf); @@ -433,7 +433,7 @@ Beamforming_AddBFerEntry( if (phydm_actingDetermine(pDM_Odm, PhyDM_ACTING_AS_AP)) { /*BSSID[44:47] xor BSSID[40:43]*/ u2Byte BSSID = ((pSTA->MyMacAddr[5] & 0xf0) >> 4) ^ (pSTA->MyMacAddr[5] & 0xf); - + pEntry->P_AID = (pSTA->AID + BSSID * 32) & 0x1ff; pEntry->G_ID = 63; /*(dec(A) + dec(B)*32) mod 512*/ @@ -447,7 +447,7 @@ Beamforming_AddBFerEntry( pEntry->G_ID = 0; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: P_AID addressed to AP=0x%X\n", __func__, pEntry->P_AID)); } - + cpMacAddr(pEntry->MacAddr, pSTA->RA); pEntry->BeamformEntryCap = BeamformCap; @@ -488,18 +488,18 @@ Beamforming_RemoveEntry( PRT_BEAMFORMER_ENTRY pBFerEntry = phydm_Beamforming_GetBFerEntryByAddr(pDM_Odm, RA, Idx); PRT_BEAMFORMEE_ENTRY pEntry = phydm_Beamforming_GetBFeeEntryByAddr(pDM_Odm, RA, Idx); BOOLEAN ret = FALSE; - + RT_DISP(FBEAM, FBEAM_FUN, ("[Beamforming]@%s Start!\n", __func__)); RT_DISP(FBEAM, FBEAM_FUN, ("[Beamforming]@%s, pBFerEntry=0x%x\n", __func__, pBFerEntry)); RT_DISP(FBEAM, FBEAM_FUN, ("[Beamforming]@%s, pEntry=0x%x\n", __func__, pEntry)); - - if (pEntry != NULL) { + + if (pEntry != NULL) { pEntry->bUsed = FALSE; pEntry->BeamformEntryCap = BEAMFORMING_CAP_NONE; /*pEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_UNINITIALIZE;*/ pEntry->bBeamformingInProgress = FALSE; ret = TRUE; - } + } if (pBFerEntry != NULL) { pBFerEntry->bUsed = FALSE; pBFerEntry->BeamformEntryCap = BEAMFORMING_CAP_NONE; @@ -514,13 +514,13 @@ Beamforming_RemoveEntry( VOID phydm_Beamforming_NDPARate( IN PVOID pDM_VOID, - CHANNEL_WIDTH BW, + CHANNEL_WIDTH BW, u1Byte Rate ) { u2Byte NDPARate = Rate; PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); if (NDPARate == 0) { @@ -561,9 +561,9 @@ phydm_Beamforming_DymNDPARate( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s End, NDPA Rate = 0x%X\n", __func__, NDPARate)); } -/* -* SW Sounding : SW Timer unit 1ms -* HW Timer unit (1/32000) s 32k is clock. +/* +* SW Sounding : SW Timer unit 1ms +* HW Timer unit (1/32000) s 32k is clock. * FW Sounding : FW Timer unit 10ms */ VOID @@ -573,7 +573,7 @@ Beamforming_DymPeriod( ) { u1Byte Idx; - BOOLEAN bChangePeriod = FALSE; + BOOLEAN bChangePeriod = FALSE; u2Byte SoundPeriod_SW, SoundPeriod_FW; PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; @@ -584,7 +584,7 @@ Beamforming_DymPeriod( PRT_BEAMFORMEE_ENTRY pEntry = &(pBeamInfo->BeamformeeEntry[pBeamInfo->BeamformeeCurIdx]); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - + //3 TODO per-client throughput caculation. if ((*(pDM_Odm->pCurrentTxTP) + *(pDM_Odm->pCurrentRxTP) > 2) && ((pEntry->LogStatusFailCnt <= 20) || status)) { @@ -598,16 +598,16 @@ Beamforming_DymPeriod( for (Idx = 0; Idx < BEAMFORMEE_ENTRY_NUM; Idx++) { pBeamformEntry = pBeamInfo->BeamformeeEntry+Idx; - + if (pBeamformEntry->DefaultCSICnt > 20) { /*Modified by David*/ SoundPeriod_SW = 4000; SoundPeriod_FW = 400; } - - ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Period = %d\n", __func__, SoundPeriod_SW)); + + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Period = %d\n", __func__, SoundPeriod_SW)); if (pBeamformEntry->BeamformEntryCap & (BEAMFORMER_CAP_HT_EXPLICIT | BEAMFORMER_CAP_VHT_SU)) { - if (pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER) { + if (pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER) { if (pBeamformEntry->SoundPeriod != SoundPeriod_FW) { pBeamformEntry->SoundPeriod = SoundPeriod_FW; bChangePeriod = TRUE; /*Only FW sounding need to send H2C packet to change sound period. */ @@ -623,8 +623,6 @@ Beamforming_DymPeriod( } - - BOOLEAN Beamforming_SendHTNDPAPacket( IN PVOID pDM_VOID, @@ -645,7 +643,6 @@ Beamforming_SendHTNDPAPacket( } - BOOLEAN Beamforming_SendVHTNDPAPacket( IN PVOID pDM_VOID, @@ -780,7 +777,7 @@ phydm_beamforming_SoundingMode( if (BeamOidInfo.SoundOidMode == SOUNDING_SW_VHT_TIMER || BeamOidInfo.SoundOidMode == SOUNDING_HW_VHT_TIMER) { if (BeamEntry.BeamformEntryCap & BEAMFORMER_CAP_VHT_SU) Mode = BeamOidInfo.SoundOidMode; - else + else Mode = SOUNDING_STOP_All_TIMER; } else if (BeamOidInfo.SoundOidMode == SOUNDING_SW_HT_TIMER || BeamOidInfo.SoundOidMode == SOUNDING_HW_HT_TIMER) { if (BeamEntry.BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT) @@ -797,7 +794,7 @@ phydm_beamforming_SoundingMode( Mode = SOUNDING_FW_HT_TIMER; else Mode = SOUNDING_SW_HT_TIMER; - } else + } else Mode = SOUNDING_STOP_All_TIMER; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SupportInterface=%d, Mode=%d\n", __func__, SupportInterface, Mode)); @@ -851,7 +848,7 @@ phydm_beamforming_SoundingBW( else if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_SW_VHT_TIMER) /*Modified by David*/ SoundingBW = BeamEntry.SoundBW; /*BeamOidInfo.SoundOidBW;*/ - else + else SoundingBW = BeamEntry.SoundBW; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, SoundingBW=0x%X\n", __func__, SoundingBW)); @@ -878,7 +875,7 @@ phydm_Beamforming_SelectBeamEntry( pSoundInfo->SoundMode = phydm_beamforming_SoundingMode(pDM_Odm, pBeamInfo, pSoundInfo->SoundIdx); else pSoundInfo->SoundMode = SOUNDING_STOP_All_TIMER; - + if (SOUNDING_STOP_All_TIMER == pSoundInfo->SoundMode) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Return because of SOUNDING_STOP_All_TIMER\n", __func__)); return FALSE; @@ -899,8 +896,8 @@ phydm_beamforming_StartPeriod( PADAPTER Adapter = pDM_Odm->Adapter; BOOLEAN Ret = TRUE; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; - PRT_SOUNDING_INFO pSoundInfo = &(pBeamInfo->SoundingInfo); - + PRT_SOUNDING_INFO pSoundInfo = &(pBeamInfo->SoundingInfo); + phydm_Beamforming_DymNDPARate(pDM_Odm); phydm_Beamforming_SelectBeamEntry(pDM_Odm, pBeamInfo); // Modified @@ -927,7 +924,7 @@ phydm_beamforming_StartPeriod( else Ret = FALSE; - ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SoundIdx=%d, SoundMode=%d, SoundBW=%d, SoundPeriod=%d\n", __func__, + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SoundIdx=%d, SoundMode=%d, SoundBW=%d, SoundPeriod=%d\n", __func__, pSoundInfo->SoundIdx, pSoundInfo->SoundMode, pSoundInfo->SoundBW, pSoundInfo->SoundPeriod)); return Ret; @@ -944,7 +941,7 @@ phydm_beamforming_EndPeriod_SW( PADAPTER Adapter = pDM_Odm->Adapter; PRT_BEAMFORMING_INFO pBeamInfo = &pDM_Odm->BeamformingInfo; PRT_SOUNDING_INFO pSoundInfo = &(pBeamInfo->SoundingInfo); - + HAL_HW_TIMER_TYPE TimerType = HAL_TIMER_TXBF; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); @@ -972,7 +969,7 @@ phydm_beamforming_EndPeriod_FW( /*SU BFee Entry Only*/ -VOID +VOID phydm_beamforming_ClearEntry_SW( IN PVOID pDM_VOID, BOOLEAN IsDelete, @@ -1009,13 +1006,13 @@ phydm_beamforming_ClearEntry_SW( /*Used after bSounding=RESET, and will clear the setting of "ever sounded" entry, which is not necessarily be deleted.*/ /*This function is mainly used in case "BeamOidInfo.SoundOidMode == SOUNDING_STOP_All_TIMER".*/ /*However, setting oid doesn't delete entries (bUsed is still TRUE), new entries may fail to be added in.*/ - + if (pBeamformEntry->bSound) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] SW reset BFee entry %d\n", __func__, Idx)); - /* - * If End procedure is + /* + * If End procedure is * 1. Between (Send NDPA, C2H packet return), reset state to initialized. - * After C2H packet return , status bit will be set to zero. + * After C2H packet return , status bit will be set to zero. * * 2. After C2H packet, then reset state to initialized and clear status bit. */ @@ -1064,17 +1061,17 @@ phydm_beamforming_ClearEntry_FW( /*Used after bSounding=RESET, and will clear the setting of "ever sounded" entry, which is not necessarily be deleted.*/ /*This function is mainly used in case "BeamOidInfo.SoundOidMode == SOUNDING_STOP_All_TIMER".*/ /*However, setting oid doesn't delete entries (bUsed is still TRUE), new entries may fail to be added in.*/ - + if (pBeamformEntry->bSound) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]FW reset BFee entry %d\n", __func__, Idx)); - /* - * If End procedure is + /* + * If End procedure is * 1. Between (Send NDPA, C2H packet return), reset state to initialized. - * After C2H packet return , status bit will be set to zero. + * After C2H packet return , status bit will be set to zero. * * 2. After C2H packet, then reset state to initialized and clear status bit. */ - + pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZED; pBeamformEntry->bSound = FALSE; } @@ -1083,7 +1080,7 @@ phydm_beamforming_ClearEntry_FW( } /* -* Called : +* Called : * 1. Add and delete entry : Beamforming_Enter/Beamforming_Leave * 2. FW trigger : Beamforming_SetTxBFen * 3. Set OID_RT_BEAMFORMING_PERIOD : BeamformingControl_V2 @@ -1105,7 +1102,6 @@ phydm_Beamforming_Notify( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, Before notify, bSounding=%d, Idx=%d\n", __func__, bSounding, Idx)); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: pBeamInfo->beamformee_su_cnt = %d\n", __func__, pBeamInfo->beamformee_su_cnt)); - switch (bSounding) { case BEAMFORMEE_NOTIFY_ADD_SU: @@ -1136,8 +1132,9 @@ phydm_Beamforming_Notify( /*if (pSoundInfo->SoundMode == SOUNDING_SW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_SW_HT_TIMER) ODM_SetTimer(pDM_Odm, &pBeamInfo->BeamformingTimer, pSoundInfo->SoundPeriod);*/ ODM_SetTimer(pDM_Odm, &pBeamInfo->BeamformingTimer, 1000); /*Do MU sounding every 1sec*/ - } else + } else { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: Less or larger than 2 MU STAs, not to set timer\n", __func__)); + } break; case BEAMFORMEE_NOTIFY_DELETE_MU: @@ -1151,7 +1148,7 @@ phydm_Beamforming_Notify( break; case BEAMFORMING_NOTIFY_RESET: - if (pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER) { + if (pSoundInfo->SoundMode == SOUNDING_FW_HT_TIMER || pSoundInfo->SoundMode == SOUNDING_FW_VHT_TIMER) { phydm_beamforming_ClearEntry_FW(pDM_Odm, FALSE, Idx); phydm_beamforming_EndPeriod_FW(pDM_Odm); } else { @@ -1168,7 +1165,6 @@ phydm_Beamforming_Notify( } - BOOLEAN Beamforming_InitEntry( IN PVOID pDM_VOID, @@ -1188,7 +1184,7 @@ Beamforming_InitEntry( /*The current setting does not support Beaforming*/ if (BEAMFORMING_CAP_NONE == pSTA->HtBeamformCap && BEAMFORMING_CAP_NONE == pSTA->VhtBeamformCap) { - ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("The configuration disabled Beamforming! Skip...\n")); + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("The configuration disabled Beamforming! Skip...\n")); return FALSE; } @@ -1210,7 +1206,7 @@ Beamforming_InitEntry( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] HT NumofSoundingDim=%d, CompSteeringNumofBFer=%d\n", __func__, NumofSoundingDim, CompSteeringNumofBFer)); } #if (ODM_IC_11AC_SERIES_SUPPORT == 1) - if (pSTA->WirelessMode & WIRELESS_MODE_AC_5G || pSTA->WirelessMode & WIRELESS_MODE_AC_24G) { /*VHT*/ + if (pSTA->WirelessMode & WIRELESS_MODE_AC_5G || pSTA->WirelessMode & WIRELESS_MODE_AC_24G) { /*VHT*/ /* We are Beamformee because the STA is SU Beamformer*/ if (TEST_FLAG(pSTA->CurBeamformVHT, BEAMFORMING_VHT_BEAMFORMER_ENABLE)) { @@ -1238,7 +1234,7 @@ Beamforming_InitEntry( } ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]VHT CurBeamformVHT=0x%X, BeamformCap=0x%X\n", __func__, pSTA->CurBeamformVHT, BeamformCap)); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]VHT NumofSoundingDim=0x%X, CompSteeringNumofBFer=0x%X\n", __func__, NumofSoundingDim, CompSteeringNumofBFer)); - + } #endif } @@ -1246,17 +1242,18 @@ Beamforming_InitEntry( if(BeamformCap == BEAMFORMING_CAP_NONE) return FALSE; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Self BF Entry Cap = 0x%02X\n", __func__, BeamformCap)); /*We are BFee, so the entry is BFer*/ if (BeamformCap & (BEAMFORMEE_CAP_VHT_MU | BEAMFORMEE_CAP_VHT_SU | BEAMFORMEE_CAP_HT_EXPLICIT)) { pBeamformerEntry = phydm_Beamforming_GetBFerEntryByAddr(pDM_Odm, pSTA->RA, &BFerIdx); - + if (pBeamformerEntry == NULL) { pBeamformerEntry = Beamforming_AddBFerEntry(pDM_Odm, pSTA, BeamformCap, NumofSoundingDim , &BFerIdx); - if (pBeamformerEntry == NULL) + if (pBeamformerEntry == NULL) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]Not enough BFer entry!!!!!\n", __func__)); + } } } @@ -1272,17 +1269,19 @@ Beamforming_InitEntry( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s]: Add BFee entry %d\n", __func__, BFeeIdx)); - if (pBeamformEntry == NULL) + if (pBeamformEntry == NULL) { return FALSE; - else + } else { pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZEING; + } } else { /*Entry has been created. If entry is initialing or progressing then errors occur.*/ - if (pBeamformEntry->BeamformEntryState != BEAMFORMING_ENTRY_STATE_INITIALIZED && + if (pBeamformEntry->BeamformEntryState != BEAMFORMING_ENTRY_STATE_INITIALIZED && pBeamformEntry->BeamformEntryState != BEAMFORMING_ENTRY_STATE_PROGRESSED) { return FALSE; - } else + } else { pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZEING; + } } pBeamformEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_INITIALIZED; phydm_staInfoUpdate(pDM_Odm, staIdx, pBeamformEntry); @@ -1309,7 +1308,7 @@ Beamforming_DeInitEntry( BOOLEAN ret = FALSE; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); - + if (pBFeeEntry != NULL) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, pBFeeEntry\n", __func__)); pBFeeEntry->bUsed = FALSE; @@ -1322,8 +1321,8 @@ Beamforming_DeInitEntry( pDM_Odm->BeamformingInfo.beamformee_su_cnt -= 1; } ret = TRUE; - } - + } + if (pBFerEntry != NULL) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, pBFerEntry\n", __func__)); pBFerEntry->bUsed = FALSE; @@ -1356,7 +1355,7 @@ BeamformingStart_V1( PRT_BEAMFORMEE_ENTRY pEntry; BOOLEAN ret = TRUE; PRT_BEAMFORMING_INFO pBeamInfo = &(pDM_Odm->BeamformingInfo); - + pEntry = phydm_Beamforming_GetBFeeEntryByAddr(pDM_Odm, RA, &Idx); if (pEntry->bUsed == FALSE) { @@ -1368,7 +1367,7 @@ BeamformingStart_V1( pEntry->bBeamformingInProgress = TRUE; - if (Mode == 1) { + if (Mode == 1) { if (!(pEntry->BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT)) { pEntry->bBeamformingInProgress = FALSE; return FALSE; @@ -1395,7 +1394,7 @@ BeamformingStart_V1( HalComTxbf_Set(pDM_Odm, TXBF_SET_SOUNDING_STATUS, (pu1Byte)&Idx); if (Mode == 1) - ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA, BW, NORMAL_QUEUE); + ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA, BW, NORMAL_QUEUE); else ret = Beamforming_SendVHTNDPAPacket(pDM_Odm, RA, pEntry->AID, BW, NORMAL_QUEUE); @@ -1414,7 +1413,7 @@ BOOLEAN BeamformingStart_SW( IN PVOID pDM_VOID, u1Byte Idx, - u1Byte Mode, + u1Byte Mode, CHANNEL_WIDTH BW ) { @@ -1444,8 +1443,8 @@ BeamformingStart_SW( pEntry->bBeamformingInProgress = TRUE; RA = pEntry->MacAddr; - - if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) { + + if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) { if (!(pEntry->BeamformEntryCap & BEAMFORMER_CAP_HT_EXPLICIT)) { pEntry->bBeamformingInProgress = FALSE; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Return by not support BEAMFORMER_CAP_HT_EXPLICIT <==\n", __func__)); @@ -1470,12 +1469,12 @@ BeamformingStart_SW( pBeamInfo->BeamformeeCurIdx = Idx; } - + /*2014.12.22 Luke: Need to be checked*/ /*GET_TXBF_INFO(Adapter)->fTxbfSet(Adapter, TXBF_SET_SOUNDING_STATUS, (pu1Byte)&Idx);*/ if (Mode == SOUNDING_SW_HT_TIMER || Mode == SOUNDING_HW_HT_TIMER || Mode == SOUNDING_AUTO_HT_TIMER) - ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA , BW, NORMAL_QUEUE); + ret = Beamforming_SendHTNDPAPacket(pDM_Odm, RA , BW, NORMAL_QUEUE); else ret = Beamforming_SendVHTNDPAPacket(pDM_Odm, RA , pEntry->AID, BW, NORMAL_QUEUE); @@ -1485,7 +1484,7 @@ BeamformingStart_SW( return FALSE; } - + /*-------------------------- // Send BF Report Poll for MU BF --------------------------*/ @@ -1494,9 +1493,9 @@ BeamformingStart_SW( { u1Byte idx, PollSTACnt = 0; BOOLEAN bGetFirstBFee = FALSE; - + if (pBeamInfo->beamformee_mu_cnt > 1) { /* More than 1 MU STA*/ - + for (idx = 0; idx < BEAMFORMEE_ENTRY_NUM; idx++) { pEntry = &(pBeamInfo->BeamformeeEntry[idx]); if (pEntry->is_mu_sta) { @@ -1538,7 +1537,7 @@ BeamformingStart_FW( pEntry->BeamformEntryState = BEAMFORMING_ENTRY_STATE_PROGRESSING; pEntry->bSound = TRUE; HalComTxbf_Set(pDM_Odm, TXBF_SET_SOUNDING_FW_NDPA, (pu1Byte)&Idx); - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] End, Idx=0x%X\n", __func__, Idx)); return TRUE; } @@ -1546,7 +1545,7 @@ BeamformingStart_FW( VOID Beamforming_CheckSoundingSuccess( IN PVOID pDM_VOID, - BOOLEAN Status + BOOLEAN Status ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; @@ -1573,7 +1572,7 @@ Beamforming_CheckSoundingSuccess( VOID phydm_Beamforming_End_SW( IN PVOID pDM_VOID, - BOOLEAN Status + BOOLEAN Status ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; @@ -1604,20 +1603,20 @@ phydm_Beamforming_End_SW( HalComTxbf_Set(pDM_Odm, TXBF_SET_TX_PATH_RESET, (pu1Byte)&(pBeamInfo->BeamformeeCurIdx)); ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] LogStatusFailCnt %d\n", __func__, pEntry->LogStatusFailCnt)); } - + if (pEntry->LogStatusFailCnt > 50) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s LogStatusFailCnt > 50, Stop SOUNDING\n", __func__)); pEntry->bSound = FALSE; - Beamforming_DeInitEntry(pDM_Odm, pEntry->MacAddr); + Beamforming_DeInitEntry(pDM_Odm, pEntry->MacAddr); /*Modified by David - Every action of deleting entry should follow by Notify*/ phydm_Beamforming_Notify(pDM_Odm); - } - + } + pEntry->bBeamformingInProgress = FALSE; } ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s: Status=%d\n", __func__, Status)); -} +} VOID @@ -1645,28 +1644,29 @@ Beamforming_TimerCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Start!\n", __func__)); - if (pBeamInfo->is_mu_sounding) + if (pBeamInfo->is_mu_sounding) { bBeamformingInProgress = pBeamInfo->is_mu_sounding_in_progress; - else + } else { bBeamformingInProgress = pEntry->bBeamformingInProgress; - + } if (bBeamformingInProgress) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("bBeamformingInProgress, reset it\n")); phydm_Beamforming_End_SW(pDM_Odm, 0); - } + } ret = phydm_Beamforming_SelectBeamEntry(pDM_Odm, pBeamInfo); #if (SUPPORT_MU_BF == 1) - if (ret && pBeamInfo->beamformee_mu_cnt > 1) + if (ret && pBeamInfo->beamformee_mu_cnt > 1) { ret = 1; - else + } else { ret = 0; + } #endif - if (ret) + if (ret) { ret = BeamformingStart_SW(pDM_Odm, pSoundInfo->SoundIdx, pSoundInfo->SoundMode, pSoundInfo->SoundBW); - else + } else { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s, Error value return from BeamformingStart_V2\n", __func__)); - + } if ((pBeamInfo->beamformee_su_cnt != 0) || (pBeamInfo->beamformee_mu_cnt > 1)) { if (pSoundInfo->SoundMode == SOUNDING_SW_VHT_TIMER || pSoundInfo->SoundMode == SOUNDING_SW_HT_TIMER) ODM_SetTimer(pDM_Odm, &pBeamInfo->BeamformingTimer, pSoundInfo->SoundPeriod); @@ -1691,7 +1691,7 @@ Beamforming_SWTimerCallback( PADAPTER Adapter = (PADAPTER)pTimer->Adapter; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T pDM_Odm = &pHalData->DM_OutSrc; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); Beamforming_TimerCallback(pDM_Odm); #elif(DM_ODM_SUPPORT_TYPE == ODM_CE) @@ -1776,7 +1776,7 @@ Beamforming_Enter( { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; u1Byte BFerBFeeIdx = 0xff; - + if (Beamforming_InitEntry(pDM_Odm, staIdx, &BFerBFeeIdx)) HalComTxbf_Set(pDM_Odm, TXBF_SET_SOUNDING_ENTER, (pu1Byte)&BFerBFeeIdx); diff --git a/hal/phydm/phydm_hwconfig.c b/hal/phydm/phydm_hwconfig.c index 48d31a19a..769381fee 100644 --- a/hal/phydm/phydm_hwconfig.c +++ b/hal/phydm/phydm_hwconfig.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -42,7 +42,7 @@ #define READ_FIRMWARE_MP(ic, txt) (ODM_ReadFirmware_MP_##ic##txt(pDM_Odm, pFirmware, pSize)) -#define READ_FIRMWARE_TC(ic, txt) (ODM_ReadFirmware_TC_##ic##txt(pDM_Odm, pFirmware, pSize)) +#define READ_FIRMWARE_TC(ic, txt) (ODM_ReadFirmware_TC_##ic##txt(pDM_Odm, pFirmware, pSize)) #if (PHYDM_TESTCHIP_SUPPORT == 1) #define READ_FIRMWARE(ic, txt) do {\ @@ -50,11 +50,11 @@ READ_FIRMWARE_MP(ic,txt);\ else\ READ_FIRMWARE_TC(ic,txt);\ - } while(0) + } while(0) #else #define READ_FIRMWARE READ_FIRMWARE_MP #endif - + #define GET_VERSION_MP(ic, txt) (ODM_GetVersion_MP_##ic##txt()) #define GET_VERSION_TC(ic, txt) (ODM_GetVersion_TC_##ic##txt()) #define GET_VERSION(ic, txt) (pDM_Odm->bIsMPChip?GET_VERSION_MP(ic,txt):GET_VERSION_TC(ic,txt)) @@ -78,14 +78,14 @@ odm_QueryRxPwrPercentage( // IF other SW team do not support the feature, remove this section.?? // s4Byte -odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo( +odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo( IN OUT PDM_ODM_T pDM_Odm, - s4Byte CurrSig + s4Byte CurrSig ) -{ +{ s4Byte RetSig = 0; #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - //if(pDM_Odm->SupportInterface == ODM_ITRF_PCIE) + //if(pDM_Odm->SupportInterface == ODM_ITRF_PCIE) { // Step 1. Scale mapping. // 20100611 Joseph: Re-tunning RSSI presentation for Lenovo. @@ -116,16 +116,16 @@ odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Lenovo( } s4Byte -odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore( +odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore( IN OUT PDM_ODM_T pDM_Odm, - s4Byte CurrSig + s4Byte CurrSig ) { s4Byte RetSig = 0; #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) //if(pDM_Odm->SupportInterface == ODM_ITRF_USB) { - // Netcore request this modification because 2009.04.13 SU driver use it. + // Netcore request this modification because 2009.04.13 SU driver use it. if (CurrSig >= 31 && CurrSig <= 100) RetSig = 100; else if (CurrSig >= 21 && CurrSig <= 30) @@ -155,14 +155,14 @@ odm_SignalScaleMapping_92CSeries_patch_RT_CID_819x_Netcore( s4Byte -odm_SignalScaleMapping_92CSeries( +odm_SignalScaleMapping_92CSeries( IN OUT PDM_ODM_T pDM_Odm, - IN s4Byte CurrSig + IN s4Byte CurrSig ) { - s4Byte RetSig = 0; -#if (DEV_BUS_TYPE == RT_PCI_INTERFACE) - if (pDM_Odm->SupportInterface == ODM_ITRF_PCIE) + s4Byte RetSig = 0; +#if (DEV_BUS_TYPE == RT_PCI_INTERFACE) + if (pDM_Odm->SupportInterface == ODM_ITRF_PCIE) { // Step 1. Scale mapping. if(CurrSig >= 61 && CurrSig <= 100) @@ -1279,6 +1279,9 @@ odm_RxPhyStatusJaguarSeries_Parsing( EVM += 20; if (EVM > 100) EVM = 100; + } else { + // it's a made up value, but Realtek apparently assumed 'this would never happen' + EVM = 0; } } else { if (i < ODM_RF_PATH_C) { diff --git a/hal/phydm/phydm_kfree.c b/hal/phydm/phydm_kfree.c index a91cdee9b..889c050e6 100644 --- a/hal/phydm/phydm_kfree.c +++ b/hal/phydm/phydm_kfree.c @@ -38,7 +38,7 @@ phydm_SetKfreeToRF_8814A( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); BOOLEAN bOdd; - + if ((Data%2) != 0) { /*odd -> positive*/ Data = Data - 1; ODM_SetRFReg(pDM_Odm, eRFPath, rRF_TxGainOffset, BIT19, 1); @@ -113,9 +113,9 @@ phydm_SetKfreeToRF_8814A( /*that means Kfree offset is negative, we need to record it.*/ pRFCalibrateInfo->KfreeOffset[eRFPath] = (-1)*pRFCalibrateInfo->KfreeOffset[eRFPath]; ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); - } else + } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); - + } } @@ -127,7 +127,7 @@ phydm_SetKfreeToRF( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - + if (pDM_Odm->SupportICType & ODM_RTL8814A) phydm_SetKfreeToRF_8814A(pDM_Odm, eRFPath, Data); } @@ -150,9 +150,9 @@ phydm_ConfigKFree( maxRFpath = 2; /*0~1*/ else maxRFpath = 1; - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("===>phy_ConfigKFree8814A()\n")); - + if (pRFCalibrateInfo->RegRfKFreeEnable == 2) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("phy_ConfigKFree8814A(): RegRfKFreeEnable == 2, Disable\n")); return; @@ -188,4 +188,3 @@ phydm_ConfigKFree( } ODM_RT_TRACE(pDM_Odm, ODM_COMP_MP, ODM_DBG_LOUD, ("<===phy_ConfigKFree8814A()\n")); } - diff --git a/hal/phydm/phydm_pathdiv.c b/hal/phydm/phydm_pathdiv.c index 0ddeba391..d6aa427c7 100644 --- a/hal/phydm/phydm_pathdiv.c +++ b/hal/phydm/phydm_pathdiv.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -37,34 +37,28 @@ phydm_dtp_fix_tx_path( pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; u1Byte i,num_enable_path=0; - if(path==pDM_PathDiv->pre_tx_path) - { + if (path==pDM_PathDiv->pre_tx_path) { return; - } - else - { + } else { pDM_PathDiv->pre_tx_path=path; } ODM_SetBBReg( pDM_Odm, 0x93c, BIT18|BIT19, 3); - for(i=0; i<4; i++) - { - if(path&BIT(i)) + for (i=0; i<4; i++) { + if (path&BIT(i)) num_enable_path++; } ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Number of trun-on path : (( %d ))\n", num_enable_path)); - if(num_enable_path == 1) - { + if (num_enable_path == 1) { ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path); - - if(path==PHYDM_A)//1-1 - { + + if (path==PHYDM_A) { //1-1 ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A ))\n")); ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); } - else if(path==PHYDM_B)//1-2 + else if (path==PHYDM_B)//1-2 { ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( B ))\n")); ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 0); @@ -82,20 +76,19 @@ phydm_dtp_fix_tx_path( } } - else if(num_enable_path == 2) + else if (num_enable_path == 2) { ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path); ODM_SetBBReg( pDM_Odm, 0x940, 0xf0, path); - - if(path==PHYDM_AB)//2-1 - { + + if (path==PHYDM_AB) { //2-1 ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B ))\n")); //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); } else if(path==PHYDM_AC)//2-2 { @@ -105,7 +98,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); } else if(path==PHYDM_AD)//2-3 { @@ -115,7 +108,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); } else if(path==PHYDM_BC)//2-4 { @@ -125,7 +118,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); } else if(path==PHYDM_BD)//2-5 { @@ -135,7 +128,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); } else if(path==PHYDM_CD)//2-6 { @@ -145,7 +138,7 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 1); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 1); } } @@ -154,14 +147,13 @@ phydm_dtp_fix_tx_path( ODM_SetBBReg( pDM_Odm, 0x93c, 0xf00000, path); ODM_SetBBReg( pDM_Odm, 0x940, 0xf0, path); ODM_SetBBReg( pDM_Odm, 0x940, 0xf0000, path); - - if(path==PHYDM_ABC)//3-1 - { + + if(path==PHYDM_ABC) { //3-1 ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B C))\n")); //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 2); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); @@ -176,11 +168,11 @@ phydm_dtp_fix_tx_path( ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" Trun on path (( A B D ))\n")); //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 1); ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); - ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); + ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 1); ODM_SetBBReg( pDM_Odm, 0x940, BIT15|BIT14, 2); //set for 3ss ODM_SetBBReg( pDM_Odm, 0x940, BIT21|BIT20, 0); @@ -194,7 +186,7 @@ phydm_dtp_fix_tx_path( //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT25|BIT24, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT9|BIT8, 0); ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); @@ -210,7 +202,7 @@ phydm_dtp_fix_tx_path( //set for 1ss ODM_SetBBReg( pDM_Odm, 0x93c, BIT27|BIT26, 0); ODM_SetBBReg( pDM_Odm, 0x93c, BIT29|BIT28, 1); - ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); + ODM_SetBBReg( pDM_Odm, 0x93c, BIT31|BIT30, 2); //set for 2ss ODM_SetBBReg( pDM_Odm, 0x940, BIT11|BIT10, 0); ODM_SetBBReg( pDM_Odm, 0x940, BIT13|BIT12, 1); @@ -268,9 +260,7 @@ phydm_find_default_path( { pDM_PathDiv->is_pathA_exist=FALSE; } - } - else - { + } else { if( (rssi_avg_a >=rssi_avg_b) && (rssi_avg_a >=rssi_avg_c)&&(rssi_avg_a >=rssi_avg_d)) pDM_PathDiv->default_path=PATH_A; else if( (rssi_avg_b >=rssi_avg_c)&&(rssi_avg_b >=rssi_avg_d)) @@ -294,19 +284,14 @@ phydm_candidate_dtp_update( pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; pDM_PathDiv->num_candidate=3; - - if(pDM_PathDiv->use_path_a_as_default_ant == 1) - { - if(pDM_PathDiv->num_tx_path==3) - { - if(pDM_PathDiv->is_pathA_exist) - { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; + + if(pDM_PathDiv->use_path_a_as_default_ant == 1) { + if(pDM_PathDiv->num_tx_path==3) { + if(pDM_PathDiv->is_pathA_exist) { + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; pDM_PathDiv->ant_candidate_3 = PHYDM_ACD; - } - else // use path BCD - { + } else { // use path BCD pDM_PathDiv->num_candidate=1; phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BCD); return; @@ -316,75 +301,69 @@ phydm_candidate_dtp_update( { if(pDM_PathDiv->is_pathA_exist) { - pDM_PathDiv->ant_candidate_1 = PHYDM_AB; - pDM_PathDiv->ant_candidate_2 = PHYDM_AC; - pDM_PathDiv->ant_candidate_3 = PHYDM_AD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AB; + pDM_PathDiv->ant_candidate_2 = PHYDM_AC; + pDM_PathDiv->ant_candidate_3 = PHYDM_AD; + } else { + pDM_PathDiv->ant_candidate_1 = PHYDM_BC; + pDM_PathDiv->ant_candidate_2 = PHYDM_BD; + pDM_PathDiv->ant_candidate_3 = PHYDM_CD; } - else - { - pDM_PathDiv->ant_candidate_1 = PHYDM_BC; - pDM_PathDiv->ant_candidate_2 = PHYDM_BD; - pDM_PathDiv->ant_candidate_3 = PHYDM_CD; - } } - } - else - { - //2 3 TX Mode - if(pDM_PathDiv->num_tx_path==3)//choose 3 ant form 4 - { - if(pDM_PathDiv->default_path == PATH_A) //choose 2 ant form 3 - { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; - pDM_PathDiv->ant_candidate_3 = PHYDM_ACD; + } else { + //2 3 TX Mode + if(pDM_PathDiv->num_tx_path==3) { //choose 3 ant form 4 + if(pDM_PathDiv->default_path == PATH_A) { //choose 2 ant form 3 + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; + pDM_PathDiv->ant_candidate_3 = PHYDM_ACD; } else if(pDM_PathDiv->default_path==PATH_B) { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; - pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ABD; + pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; } else if(pDM_PathDiv->default_path == PATH_C) { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; - pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; - pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; + pDM_PathDiv->ant_candidate_1 = PHYDM_ABC; + pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; + pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; } else if(pDM_PathDiv->default_path == PATH_D) { - pDM_PathDiv->ant_candidate_1 = PHYDM_ABD; - pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; - pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; + pDM_PathDiv->ant_candidate_1 = PHYDM_ABD; + pDM_PathDiv->ant_candidate_2 = PHYDM_ACD; + pDM_PathDiv->ant_candidate_3 = PHYDM_BCD; } } - - //2 2 TX Mode - else if(pDM_PathDiv->num_tx_path==2)//choose 2 ant form 4 + + //2 2 TX Mode + else if(pDM_PathDiv->num_tx_path==2)//choose 2 ant form 4 { if(pDM_PathDiv->default_path == PATH_A) //choose 2 ant form 3 { - pDM_PathDiv->ant_candidate_1 = PHYDM_AB; - pDM_PathDiv->ant_candidate_2 = PHYDM_AC; - pDM_PathDiv->ant_candidate_3 = PHYDM_AD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AB; + pDM_PathDiv->ant_candidate_2 = PHYDM_AC; + pDM_PathDiv->ant_candidate_3 = PHYDM_AD; } else if(pDM_PathDiv->default_path==PATH_B) { - pDM_PathDiv->ant_candidate_1 = PHYDM_AB; - pDM_PathDiv->ant_candidate_2 = PHYDM_BC; - pDM_PathDiv->ant_candidate_3 = PHYDM_BD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AB; + pDM_PathDiv->ant_candidate_2 = PHYDM_BC; + pDM_PathDiv->ant_candidate_3 = PHYDM_BD; } else if(pDM_PathDiv->default_path == PATH_C) { - pDM_PathDiv->ant_candidate_1 = PHYDM_AC; - pDM_PathDiv->ant_candidate_2 = PHYDM_BC; - pDM_PathDiv->ant_candidate_3 = PHYDM_CD; + pDM_PathDiv->ant_candidate_1 = PHYDM_AC; + pDM_PathDiv->ant_candidate_2 = PHYDM_BC; + pDM_PathDiv->ant_candidate_3 = PHYDM_CD; } else if(pDM_PathDiv->default_path == PATH_D) { - pDM_PathDiv->ant_candidate_1= PHYDM_AD; - pDM_PathDiv->ant_candidate_2 = PHYDM_BD; - pDM_PathDiv->ant_candidate_3= PHYDM_CD; + pDM_PathDiv->ant_candidate_1= PHYDM_AD; + pDM_PathDiv->ant_candidate_2= PHYDM_BD; + pDM_PathDiv->ant_candidate_3= PHYDM_CD; } } } @@ -397,108 +376,96 @@ phydm_dynamic_tx_path( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; - + pPATHDIV_T pDM_PathDiv = &pDM_Odm->DM_PathDiv; + PSTA_INFO_T pEntry; u4Byte i; u1Byte num_client=0; u1Byte H2C_Parameter[6] ={0}; - if(!pDM_Odm->bLinked) //bLinked==False - { + if(!pDM_Odm->bLinked) { //bLinked==False ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, ("DTP_8814 [No Link!!!]\n")); - - if(pDM_PathDiv->bBecomeLinked == TRUE) - { + + if(pDM_PathDiv->bBecomeLinked == TRUE) { ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" [Be disconnected]----->\n")); pDM_PathDiv->bBecomeLinked = pDM_Odm->bLinked; } return; - } - else - { - if(pDM_PathDiv->bBecomeLinked ==FALSE) - { + } else { + if(pDM_PathDiv->bBecomeLinked ==FALSE) { ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, (" [Be Linked !!!]----->\n")); pDM_PathDiv->bBecomeLinked = pDM_Odm->bLinked; - } - } - - //2 [Period CTRL] - if(pDM_PathDiv->dtp_period >=2) - { - pDM_PathDiv->dtp_period=0; + } } - else - { + + //2 [Period CTRL] + if(pDM_PathDiv->dtp_period >=2) { + pDM_PathDiv->dtp_period=0; + } else { //ODM_RT_TRACE(pDM_Odm,ODM_COMP_PATH_DIV, ODM_DBG_LOUD, ("Phydm_Dynamic_Tx_Path_8814A() Stay = (( %d ))\n",pDM_PathDiv->dtp_period)); - pDM_PathDiv->dtp_period++; + pDM_PathDiv->dtp_period++; return; } - + //2 [Fix Path] if (pDM_Odm->path_select != PHYDM_AUTO_PATH) { return; } - - //2 [Check Bfer] + + //2 [Check Bfer] #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) #if (BEAMFORMING_SUPPORT == 1) { BEAMFORMING_CAP BeamformCap = (pDM_Odm->BeamformingInfo.BeamformCap); if( BeamformCap & BEAMFORMER_CAP ) // BFmer On && Div On -> Div Off - { - if( pDM_PathDiv->fix_path_bfer == 0) + { + if( pDM_PathDiv->fix_path_bfer == 0) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_PATH_DIV,ODM_DBG_LOUD,("[ PathDiv : OFF ] BFmer ==1 \n")); - pDM_PathDiv->fix_path_bfer = 1 ; + pDM_PathDiv->fix_path_bfer = 1 ; } return; } else // BFmer Off && Div Off -> Div On { - if( pDM_PathDiv->fix_path_bfer == 1 ) + if( pDM_PathDiv->fix_path_bfer == 1 ) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_PATH_DIV,ODM_DBG_LOUD,("[ PathDiv : ON ] BFmer ==0 \n")); pDM_PathDiv->fix_path_bfer = 0; } } } - #endif + #endif #endif - if(pDM_PathDiv->use_path_a_as_default_ant ==1) - { + if(pDM_PathDiv->use_path_a_as_default_ant ==1) { phydm_find_default_path(pDM_Odm); - phydm_candidate_dtp_update(pDM_Odm); - } - else - { - if( pDM_PathDiv->dtp_state == PHYDM_DTP_INIT) - { + phydm_candidate_dtp_update(pDM_Odm); + } else { + if( pDM_PathDiv->dtp_state == PHYDM_DTP_INIT) { phydm_find_default_path(pDM_Odm); phydm_candidate_dtp_update(pDM_Odm); pDM_PathDiv->dtp_state = PHYDM_DTP_RUNNING_1; } - + else if( pDM_PathDiv->dtp_state == PHYDM_DTP_RUNNING_1) { pDM_PathDiv->dtp_check_patha_counter++; - + if(pDM_PathDiv->dtp_check_patha_counter>=NUM_RESET_DTP_PERIOD) { pDM_PathDiv->dtp_check_patha_counter=0; pDM_PathDiv->dtp_state = PHYDM_DTP_INIT; } - //2 Search space update + //2 Search space update else { // 1. find the worst candidate - + // 2. repalce the worst candidate } @@ -507,17 +474,14 @@ phydm_dynamic_tx_path( //2 Dynamic Path Selection H2C - if(pDM_PathDiv->num_candidate == 1) - { + if(pDM_PathDiv->num_candidate == 1) { return; - } - else - { + } else { H2C_Parameter[0] = pDM_PathDiv->num_candidate; - H2C_Parameter[1] = pDM_PathDiv->num_tx_path; - H2C_Parameter[2] = pDM_PathDiv->ant_candidate_1; - H2C_Parameter[3] = pDM_PathDiv->ant_candidate_2; - H2C_Parameter[4] = pDM_PathDiv->ant_candidate_3; + H2C_Parameter[1] = pDM_PathDiv->num_tx_path; + H2C_Parameter[2] = pDM_PathDiv->ant_candidate_1; + H2C_Parameter[3] = pDM_PathDiv->ant_candidate_2; + H2C_Parameter[4] = pDM_PathDiv->ant_candidate_3; ODM_FillH2CCmd(pDM_Odm, PHYDM_H2C_DYNAMIC_TX_PATH, 6, H2C_Parameter); } @@ -525,7 +489,6 @@ phydm_dynamic_tx_path( } - VOID phydm_dynamic_tx_path_init( IN PVOID pDM_VOID @@ -552,29 +515,25 @@ phydm_dynamic_tx_path_init( memcpy(&(pDM_PathDiv->search_space_3[0]), &(search_space_3[0]), NUM_CHOOSE3_FROM4); pDM_PathDiv->use_path_a_as_default_ant= 1; - pDM_PathDiv->dtp_state = PHYDM_DTP_INIT; + pDM_PathDiv->dtp_state = PHYDM_DTP_INIT; pDM_Odm->path_select = PHYDM_AUTO_PATH; pDM_PathDiv->path_div_type = PHYDM_4R_PATH_DIV; - - if(pDM_PathDiv->is_u3_mode ) - { + + if(pDM_PathDiv->is_u3_mode ) { pDM_PathDiv->num_tx_path=3; phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BCD);/* 3TX Set Init TX Path*/ - - } - else - { + } else { pDM_PathDiv->num_tx_path=2; phydm_dtp_fix_tx_path(pDM_Odm, PHYDM_BC);/* 2TX // Set Init TX Path*/ } - + } VOID -phydm_process_rssi_for_path_div( - IN OUT PVOID pDM_VOID, +phydm_process_rssi_for_path_div( + IN OUT PVOID pDM_VOID, IN PVOID p_phy_info_void, IN PVOID p_pkt_info_void ) @@ -595,20 +554,18 @@ phydm_process_rssi_for_path_div( { pDM_PathDiv->path_a_sum_all+=pPhyInfo->RxMIMOSignalStrength[0]; pDM_PathDiv->path_a_cnt_all++; - + pDM_PathDiv->path_b_sum_all+=pPhyInfo->RxMIMOSignalStrength[1]; pDM_PathDiv->path_b_cnt_all++; - + pDM_PathDiv->path_c_sum_all+=pPhyInfo->RxMIMOSignalStrength[2]; pDM_PathDiv->path_c_cnt_all++; - + pDM_PathDiv->path_d_sum_all+=pPhyInfo->RxMIMOSignalStrength[3]; pDM_PathDiv->path_d_cnt_all++; } #endif - } - else - { + } else { pDM_PathDiv->PathA_Sum[pPktinfo->StationID]+=pPhyInfo->RxMIMOSignalStrength[0]; pDM_PathDiv->PathA_Cnt[pPktinfo->StationID]++; @@ -617,8 +574,6 @@ phydm_process_rssi_for_path_div( } } } - - } #endif //#if RTL8814A_SUPPORT @@ -636,10 +591,10 @@ odm_pathdiv_debug( pPATHDIV_T pDM_PathDiv = &(pDM_Odm->DM_PathDiv); u4Byte used = *_used; u4Byte out_len = *_out_len; - + pDM_Odm->path_select = (dm_value[0] & 0xf); PHYDM_SNPRINTF((output+used, out_len-used,"Path_select = (( 0x%x ))\n",pDM_Odm->path_select )); - + //2 [Fix Path] if (pDM_Odm->path_select != PHYDM_AUTO_PATH) { @@ -648,11 +603,9 @@ odm_pathdiv_debug( ((pDM_Odm->path_select) & 0x2)?"B":"", ((pDM_Odm->path_select) & 0x4)?"C":"", ((pDM_Odm->path_select) & 0x8)?"D":"" )); - + phydm_dtp_fix_tx_path( pDM_Odm, pDM_Odm->path_select ); - } - else - { + } else { PHYDM_SNPRINTF((output+used, out_len-used,"%s\n","Auto Path")); } } @@ -670,8 +623,8 @@ phydm_c2h_dtp_handler( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; pPATHDIV_T pDM_PathDiv = &(pDM_Odm->DM_PathDiv); - u1Byte macid = CmdBuf[0]; - u1Byte target = CmdBuf[1]; + u1Byte macid = CmdBuf[0]; + u1Byte target = CmdBuf[1]; u1Byte nsc_1 = CmdBuf[2]; u1Byte nsc_2 = CmdBuf[3]; u1Byte nsc_3 = CmdBuf[4]; @@ -688,10 +641,10 @@ phydm_c2h_dtp_handler( } else { - phydm_dtp_fix_tx_path(pDM_Odm, pDM_PathDiv->ant_candidate_3); + phydm_dtp_fix_tx_path(pDM_Odm, pDM_PathDiv->ant_candidate_3); } */ -#endif +#endif } VOID @@ -732,7 +685,7 @@ odm_PathDiversityInit( PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; /*pDM_Odm->SupportAbility |= ODM_BB_PATH_DIV;*/ - + if(pDM_Odm->mp_mode == TRUE) return; @@ -752,7 +705,7 @@ odm_PathDiversityInit( if(pDM_Odm->SupportICType & ODM_RTL8814A) phydm_dynamic_tx_path_init(pDM_Odm); else - #endif + #endif {} #endif } @@ -807,4 +760,3 @@ odm_SwAntDivConstructScanChnl( } #endif // #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - diff --git a/hal/phydm/phydm_rxhp.c b/hal/phydm/phydm_rxhp.c old mode 100755 new mode 100644 diff --git a/hal/phydm/phydm_rxhp.h b/hal/phydm/phydm_rxhp.h old mode 100755 new mode 100644 diff --git a/hal/phydm/phydm_types.h b/hal/phydm/phydm_types.h index a5382fb9c..4f5137a3f 100644 --- a/hal/phydm/phydm_types.h +++ b/hal/phydm/phydm_types.h @@ -153,7 +153,11 @@ typedef enum _RT_SPINLOCK_TYPE{ typedef struct rtl8192cd_priv *prtl8192cd_priv; typedef struct stat_info STA_INFO_T,*PSTA_INFO_T; +#if defined (LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + typedef struct legacy_timer_emu RT_TIMER, *PRT_TIMER; +#else typedef struct timer_list RT_TIMER, *PRT_TIMER; +#endif typedef void * RT_TIMER_CALL_BACK; #ifdef CONFIG_PCI_HCI @@ -217,13 +221,17 @@ typedef enum _RT_SPINLOCK_TYPE{ #endif - #if defined(CONFIG_LITTLE_ENDIAN) + #if defined(__LITTLE_ENDIAN) #define ODM_ENDIAN_TYPE ODM_ENDIAN_LITTLE - #elif defined (CONFIG_BIG_ENDIAN) + #else #define ODM_ENDIAN_TYPE ODM_ENDIAN_BIG #endif +#if defined (LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + typedef struct legacy_timer_emu RT_TIMER, *PRT_TIMER; +#else typedef struct timer_list RT_TIMER, *PRT_TIMER; +#endif typedef void * RT_TIMER_CALL_BACK; #define STA_INFO_T struct sta_info #define PSTA_INFO_T struct sta_info * diff --git a/hal/phydm/rtchnlplan.c b/hal/phydm/rtchnlplan.c index 4b41ff111..6fa98947f 100644 --- a/hal/phydm/rtchnlplan.c +++ b/hal/phydm/rtchnlplan.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -19,12 +19,12 @@ ******************************************************************************/ /****************************************************************************** - + History: Data Who Remark (Internal History) - + 05/14/2012 MH Collect RTK inernal infromation and generate channel plan draft. - + ******************************************************************************/ //============================================================ @@ -41,73 +41,73 @@ // /* - Channel Plan Contents - Domain Code EEPROM Countries in Specific Domain - 2G RD 5G RD Bit[6:0] 2G 5G - Case Old Define 00h~1Fh Old Define Old Define - 1 2G_WORLD 5G_NULL 20h Worldwird 13 NA - 2 2G_ETSI1 5G_NULL 21h Europe 2G NA - 3 2G_FCC1 5G_NULL 22h US 2G NA - 4 2G_MKK1 5G_NULL 23h Japan 2G NA - 5 2G_ETSI2 5G_NULL 24h France 2G NA + Channel Plan Contents + Domain Code EEPROM Countries in Specific Domain + 2G RD 5G RD Bit[6:0] 2G 5G + Case Old Define 00h~1Fh Old Define Old Define + 1 2G_WORLD 5G_NULL 20h Worldwird 13 NA + 2 2G_ETSI1 5G_NULL 21h Europe 2G NA + 3 2G_FCC1 5G_NULL 22h US 2G NA + 4 2G_MKK1 5G_NULL 23h Japan 2G NA + 5 2G_ETSI2 5G_NULL 24h France 2G NA 6 2G_FCC1 5G_FCC1 25h US 2G US 5G ¤K¤j°ê»{ÃÒ 7 2G_WORLD 5G_ETSI1 26h Worldwird 13 Europe ¤K¤j°ê»{ÃÒ 8 2G_MKK1 5G_MKK1 27h Japan 2G Japan 5G ¤K¤j°ê»{ÃÒ 9 2G_WORLD 5G_KCC1 28h Worldwird 13 Korea ¤K¤j°ê»{ÃÒ - 10 2G_WORLD 5G_FCC2 29h Worldwird 13 US o/w DFS Channels - 11 2G_WORLD 5G_FCC3 30h Worldwird 13 India, Mexico - 12 2G_WORLD 5G_FCC4 31h Worldwird 13 Venezuela - 13 2G_WORLD 5G_FCC5 32h Worldwird 13 China - 14 2G_WORLD 5G_FCC6 33h Worldwird 13 Israel + 10 2G_WORLD 5G_FCC2 29h Worldwird 13 US o/w DFS Channels + 11 2G_WORLD 5G_FCC3 30h Worldwird 13 India, Mexico + 12 2G_WORLD 5G_FCC4 31h Worldwird 13 Venezuela + 13 2G_WORLD 5G_FCC5 32h Worldwird 13 China + 14 2G_WORLD 5G_FCC6 33h Worldwird 13 Israel 15 2G_FCC1 5G_FCC7 34h US 2G US/Canada ¤K¤j°ê»{ÃÒ 16 2G_WORLD 5G_ETSI2 35h Worldwird 13 Australia, New Zealand ¤K¤j°ê»{ÃÒ - 17 2G_WORLD 5G_ETSI3 36h Worldwird 13 Russia - 18 2G_MKK1 5G_MKK2 37h Japan 2G Japan (W52, W53) - 19 2G_MKK1 5G_MKK3 38h Japan 2G Japan (W56) + 17 2G_WORLD 5G_ETSI3 36h Worldwird 13 Russia + 18 2G_MKK1 5G_MKK2 37h Japan 2G Japan (W52, W53) + 19 2G_MKK1 5G_MKK3 38h Japan 2G Japan (W56) 20 2G_FCC1 5G_NCC1 39h US 2G Taiwan ¤K¤j°ê»{ÃÒ - + NA 2G_WORLD 5G_FCC1 7F FCC FCC DFS Channels Realtek Define - - - - - - 2.4G Regulatory Domains + + + + + + 2.4G Regulatory Domains Case 2G RD Regulation Channels Frequencyes Note Countries in Specific Domain 1 2G_WORLD ETSI 1~13 2412~2472 Passive scan CH 12, 13 Worldwird 13 2 2G_ETSI1 ETSI 1~13 2412~2472 Europe 3 2G_FCC1 FCC 1~11 2412~2462 US 4 2G_MKK1 MKK 1~13, 14 2412~2472, 2484 Japan 5 2G_ETSI2 ETSI 10~13 2457~2472 France - - - - - 5G Regulatory Domains + + + + + 5G Regulatory Domains Case 5G RD Regulation Channels Frequencyes Note Countries in Specific Domain - 1 5G_NULL NA NA NA Do not support 5GHz - 2 5G_ETSI1 ETSI "36~48, 52~64, + 1 5G_NULL NA NA NA Do not support 5GHz + 2 5G_ETSI1 ETSI "36~48, 52~64, 100~140" "5180~5240, 5260~5230 5500~5700" Band1, Ban2, Band3 Europe - 3 5G_ETSI2 ETSI "36~48, 52~64, + 3 5G_ETSI2 ETSI "36~48, 52~64, 100~140, 149~165" "5180~5240, 5260~5230 5500~5700, 5745~5825" Band1, Ban2, Band3, Band4 Australia, New Zealand - 4 5G_ETSI3 ETSI "36~48, 52~64, - 100~132, 149~165" + 4 5G_ETSI3 ETSI "36~48, 52~64, + 100~132, 149~165" "5180~5240, 5260~5230 5500~5660, 5745~5825" Band1, Ban2, Band3(except CH 136, 140), Band4" Russia - 5 5G_FCC1 FCC "36~48, 52~64, - 100~140, 149~165" + 5 5G_FCC1 FCC "36~48, 52~64, + 100~140, 149~165" "5180~5240, 5260~5230 5500~5700, 5745~5825" Band1(5150~5250MHz), Band2(5250~5350MHz), Band3(5470~5725MHz), Band4(5725~5850MHz)" US 6 5G_FCC2 FCC 36~48, 149~165 5180~5240, 5745~5825 Band1, Band4 FCC o/w DFS Channels - 7 5G_FCC3 FCC "36~48, 52~64, + 7 5G_FCC3 FCC "36~48, 52~64, 149~165" "5180~5240, 5260~5230 5745~5825" Band1, Ban2, Band4 India, Mexico - 8 5G_FCC4 FCC "36~48, 52~64, + 8 5G_FCC4 FCC "36~48, 52~64, 149~161" "5180~5240, 5260~5230 5745~5805" Band1, Ban2, Band4(except CH 165)" Venezuela @@ -115,20 +115,20 @@ 10 5G_FCC6 FCC 36~48, 52~64 5180~5240, 5260~5230 Band1, Band2 Israel 11 5G_FCC7 5G_IC1 FCC - IC" "36~48, 52~64, - 100~116, 136, 140, + IC" "36~48, 52~64, + 100~116, 136, 140, 149~165" "5180~5240, 5260~5230 - 5500~5580, 5680, 5700, + 5500~5580, 5680, 5700, 5745~5825" "Band1, Band2, Band3(except 5600~5650MHz), Band4" "US Canada" - 12 5G_KCC1 KCC "36~48, 52~64, + 12 5G_KCC1 KCC "36~48, 52~64, 100~124, 149~165" "5180~5240, 5260~5230 5500~5620, 5745~5825" "Band1, Ban2, Band3(5470~5650MHz), Band4" Korea - 13 5G_MKK1 MKK "36~48, 52~64, + 13 5G_MKK1 MKK "36~48, 52~64, 100~140" "5180~5240, 5260~5230 5500~5700" W52, W53, W56 Japan 14 5G_MKK2 MKK 36~48, 52~64 5180~5240, 5260~5230 W52, W53 Japan (W52, W53) @@ -136,17 +136,17 @@ 16 5G_NCC1 NCC "56~64, 100~116, 136, 140, 149~165" "5260~5320 - 5500~5580, 5680, 5700, + 5500~5580, 5680, 5700, 5745~5825" "Band2(except CH 52), Band3(except 5600~5650MHz), Band4" Taiwan - - -*/ - + + +*/ + +// +// 2.4G CHannel // -// 2.4G CHannel -// /* 2.4G Band Regulatory Domains RTL8192D @@ -176,7 +176,7 @@ // /* - 5G Band RTL8192D RTL8195 (Jaguar) Jaguar 2 Regulatory Domains + 5G Band RTL8192D RTL8195 (Jaguar) Jaguar 2 Regulatory Domains Channel Number Channel Frequency Global Global Global "US (FCC 15.407)" "Canada (FCC, except 5.6~5.65GHz)" Argentina, Australia, New Zealand, Brazil, S. Africa (FCC/ETSI) "Europe @@ -199,7 +199,7 @@ 56 5280 v v v v v v Indoor v Indoor Indoor v v Indoor v 60 5300 v v v v v v v Indoor v Indoor Indoor v v Indoor v 64 5320 v v v v v v Indoor v Indoor Indoor v v Indoor v - + "Band 3 5.47GHz ~ @@ -209,13 +209,13 @@ 108 5540 v v v v v v v v v v v v 112 5560 v v v v v v v v v v v 116 5580 v v v v v v v v v v v v v - 120 5600 v v v Indoor v Indoor v v v - 124 5620 v v v v Indoor v Indoor v v v - 128 5640 v v v Indoor v Indoor v v - 132 5660 v v v E v Indoor v Indoor v v + 120 5600 v v v Indoor v Indoor v v v + 124 5620 v v v v Indoor v Indoor v v v + 128 5640 v v v Indoor v Indoor v v + 132 5660 v v v E v Indoor v Indoor v v 136 5680 v v v v v v v v v 140 5700 v v E v v v v v v v - 144 5720 E E E + 144 5720 E E E "Band 4 5.725GHz ~ @@ -225,14 +225,14 @@ 157 5785 v v v v v v v v v v v v v 161 5805 v v v v v v v v v v v v 165 5825 v v P P v v v v v v v v v - 169 5845 P P P - 173 5865 P P P P - 177 5885 P P P + 169 5845 P P P + 173 5865 P P P P + 177 5885 P P P Channel Count 28 28 14 7 0 28 24 20 24 19 5 13 8 19 20 22 15 12 E: FCC accepted the ask for CH144 from Accord. PS: 160MHz ¥Î 80MHz+80MHz¹ê²{¡H Argentina Belgium (¤ñ§Q®É) India Israel Russia P: Customer's requirement from James. Australia The Netherlands (²üÄõ) Mexico Turkey Ukraine - New Zealand UK (­^°ê) Singapore - Brazil Switzerland (·ç¤h) + New Zealand UK (­^°ê) Singapore + Brazil Switzerland (·ç¤h) */ @@ -240,11 +240,11 @@ Channel Count 28 28 14 7 0 28 24 20 24 19 5 13 8 19 20 22 15 12 /*---------------------------Define Local Constant---------------------------*/ -// define Maximum Power v.s each band for each region +// define Maximum Power v.s each band for each region // ISRAEL // Format: // RT_CHANNEL_DOMAIN_Region ={{{Chnl_Start, Chnl_end, Pwr_dB_Max}, {Chn2_Start, Chn2_end, Pwr_dB_Max}, {Chn3_Start, Chn3_end, Pwr_dB_Max}, {Chn4_Start, Chn4_end, Pwr_dB_Max}, {Chn5_Start, Chn5_end, Pwr_dB_Max}}, Limit_Num} */ -// RT_CHANNEL_DOMAIN_FCC ={{{01,11,30}, {36,48,17}, {52,64,24}, {100,140,24}, {149,165,30}}, 5} +// RT_CHANNEL_DOMAIN_FCC ={{{01,11,30}, {36,48,17}, {52,64,24}, {100,140,24}, {149,165,30}}, 5} // "NR" is non-release channle. // Issue--- Israel--Russia--New Zealand // DOMAIN_01= (2G_WORLD, 5G_NULL) @@ -272,8 +272,8 @@ Channel Count 28 28 14 7 0 28 24 20 24 19 5 13 8 19 20 22 15 12 static RT_CHANNEL_PLAN_MAXPWR ChnlPlanPwrMax_2G[] = { - // 2G_WORLD, - {{1, 13, 20}, 1}, + // 2G_WORLD, + {{1, 13, 20}, 1}, // 2G_ETSI1 {{1, 13, 20}, 1}, @@ -292,7 +292,7 @@ static RT_CHANNEL_PLAN_MAXPWR ChnlPlanPwrMax_2G[] = { /* //===========================================1:(2G_WORLD, 5G_NULL) -RT_CHANNEL_PLAN_MAXPWR RT_DOMAIN_01 ={{{01,13,20}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}}, 1} +RT_CHANNEL_PLAN_MAXPWR RT_DOMAIN_01 ={{{01,13,20}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}, {NR,NR,0}}, 1} //===========================================2:(2G_ETSI1, 5G_NULL) @@ -374,56 +374,56 @@ RT_DOMAIN_23 ={{{01,13,20}, {36,48,23}, {52,64,23}, {100,140,30}, {149,165,30}}, // // Counter & Realtek Channel plan transfer table. // -RT_CHNL_CTRY_TBL RtCtryChnlTbl[] = +RT_CHNL_CTRY_TBL RtCtryChnlTbl[] = { { - RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" + RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" "AL", RT_2G_WORLD, - RT_5G_WORLD, + RT_5G_WORLD, RT_CHANNEL_DOMAIN_UNDEFINED // 2G/5G world. }, -#if 0 +#if 0 { - RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" + RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" "BB", RT_2G_WORLD, - RT_5G_NULL, + RT_5G_NULL, RT_CHANNEL_DOMAIN_EFUSE_0x20 // 2G world. 5G_NULL }, - + { - RT_CTRY_DE, // "Germany¼w°ê" + RT_CTRY_DE, // "Germany¼w°ê" "DE", RT_2G_WORLD, - RT_5G_ETSI1, + RT_5G_ETSI1, RT_CHANNEL_DOMAIN_EFUSE_0x26 }, - + { - RT_CTRY_US, // "Germany¼w°ê" + RT_CTRY_US, // "Germany¼w°ê" "US", RT_2G_FCC1, - RT_5G_FCC7, + RT_5G_FCC7, RT_CHANNEL_DOMAIN_EFUSE_0x34 }, { - RT_CTRY_JP, // "Germany¼w°ê" + RT_CTRY_JP, // "Germany¼w°ê" "JP", RT_2G_MKK1, - RT_5G_MKK1, + RT_5G_MKK1, RT_CHANNEL_DOMAIN_EFUSE_0x34 }, - + { - RT_CTRY_TW, // "Germany¼w°ê" + RT_CTRY_TW, // "Germany¼w°ê" "TW", RT_2G_FCC1, - RT_5G_NCC1, + RT_5G_NCC1, RT_CHANNEL_DOMAIN_EFUSE_0x39 - }, + }, #endif }; // RtCtryChnlTbl @@ -437,13 +437,13 @@ static RT_CHANNEL_PLAN_NEW RtChnlPlan[] = { // Channel Plan 0x20. { - &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. - RT_CHANNEL_DOMAIN_EFUSE_0x20, // RT_CHANNEL_DOMAIN RT Channel Plan Define + &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. + RT_CHANNEL_DOMAIN_EFUSE_0x20, // RT_CHANNEL_DOMAIN RT Channel Plan Define RT_2G_WORLD, // RT_REGULATION_2G RT_5G_NULL, // RT_REGULATION_5G RT_WORLD, // RT_REGULATION_CMN RT Regulatory domain definition. RT_SREQ_NA, // RT Channel plan special & customerize requirement. - + CHNL_RT_2G_WORLD, CHNL_RT_2G_WORLD_SCAN_TYPE, &ChnlPlanPwrMax_2G[0], @@ -451,31 +451,27 @@ static RT_CHANNEL_PLAN_NEW RtChnlPlan[] = CHNL_RT_5G_NULL, CHNL_RT_5G_NULL_SCAN_TYPE, - + }, - + // Channel Plan 0x26. { - &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. - RT_CHANNEL_DOMAIN_EFUSE_0x26, // RT_CHANNEL_DOMAIN RT Channel Plan Define + &RtCtryChnlTbl[1], // RT_CHNL_CTRY_TBL Country & channel plan transfer table. + RT_CHANNEL_DOMAIN_EFUSE_0x26, // RT_CHANNEL_DOMAIN RT Channel Plan Define RT_2G_WORLD, // RT_REGULATION_2G RT_5G_ETSI1, // RT_REGULATION_5G RT_WORLD, // RT_REGULATION_CMN RT Regulatory domain definition. RT_SREQ_NA, // RT Channel plan special & customerize requirement. - + CHNL_RT_2G_WORLD, // 2G workd cannel CHNL_RT_2G_WORLD_SCAN_TYPE, &ChnlPlanPwrMax_2G[1], - + CHNL_RT_5G_ETSI1, CHNL_RT_5G_ETSI1_SCAN_TYPE, - - } - - -}; -#endif - + } +}; +#endif diff --git a/hal/phydm/rtchnlplan.h b/hal/phydm/rtchnlplan.h index 37786cf8f..4589257c3 100644 --- a/hal/phydm/rtchnlplan.h +++ b/hal/phydm/rtchnlplan.h @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2012 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -41,7 +41,7 @@ typedef enum _RT_CHANNEL_DOMAIN_NEW // ..... RT_CHANNEL_DOMAIN_MAX_NEW, - + }RT_CHANNEL_DOMAIN_NEW, *PRT_CHANNEL_DOMAIN_NEW; @@ -90,7 +90,7 @@ typedef enum _RT_CHANNEL_DOMAIN_NEW #define DOMAIN_CODE_5G_NCC1 \ {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24 #define DOMAIN_CODE_5G_NCC2 \ - {56,60,64,149,153,157,161,165}, 8 + {56,60,64,149,153,157,161,165}, 8 #define UNDEFINED \ {0}, 0 #endif @@ -103,157 +103,157 @@ typedef enum _RT_CHANNEL_DOMAIN_NEW Countries "Country Abbreviation" Domain Code SKU's Ch# of 20MHz 2G 5G Ch# of 40MHz "Albaniaªüº¸¤Ú¥§¨È" AL Local Test - -"Algeriaªüº¸¤Î§Q¨È" DZ CE TCF - -"Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" AG 2G_WORLD FCC TCF - + +"Algeriaªüº¸¤Î§Q¨È" DZ CE TCF + +"Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" AG 2G_WORLD FCC TCF + "Argentinaªü®Ú§Ê" AR 2G_WORLD Local Test - + "Armenia¨È¬ü¥§¨È" AM 2G_WORLD ETSI - + "Arubaªü¾|¤Ú®q" AW 2G_WORLD FCC TCF - -"Australia¿D¬w" AU 2G_WORLD 5G_ETSI2 - -"Austria¶ø¦a§Q" AT 2G_WORLD 5G_ETSI1 CE - -"Azerbaijanªü¶ë«ô¾Ê" AZ 2G_WORLD CE TCF - -"Bahamas¤Ú«¢°¨" BS 2G_WORLD - + +"Australia¿D¬w" AU 2G_WORLD 5G_ETSI2 + +"Austria¶ø¦a§Q" AT 2G_WORLD 5G_ETSI1 CE + +"Azerbaijanªü¶ë«ô¾Ê" AZ 2G_WORLD CE TCF + +"Bahamas¤Ú«¢°¨" BS 2G_WORLD + "Barbados¤Ú¤Ú¦h´µ" BB 2G_WORLD FCC TCF - -"Belgium¤ñ§Q®É" BE 2G_WORLD 5G_ETSI1 CE - -"Bermuda¦Ê¼}¹F" BM 2G_WORLD FCC TCF - + +"Belgium¤ñ§Q®É" BE 2G_WORLD 5G_ETSI1 CE + +"Bermuda¦Ê¼}¹F" BM 2G_WORLD FCC TCF + "Brazil¤Ú¦è" BR 2G_WORLD Local Test - -"Bulgaria«O¥[§Q¨È" BG 2G_WORLD 5G_ETSI1 CE - + +"Bulgaria«O¥[§Q¨È" BG 2G_WORLD 5G_ETSI1 CE + "Canada¥[®³¤j" CA 2G_FCC1 5G_FCC7 IC / FCC IC / FCC - -"Cayman Islands¶}°Ò¸s®q" KY 2G_WORLD 5G_ETSI1 CE - -"Chile´¼§Q" CL 2G_WORLD FCC TCF - -"China¤¤°ê" CN 2G_WORLD 5G_FCC5 «H³¡?¡i2002¡j353? - -"Columbia­ô­Û¤ñ¨È" CO 2G_WORLD Voluntary - -"Costa Rica­ô´µ¹F¾¤¥[" CR 2G_WORLD FCC TCF - -"Cyprus¶ë®ú¸ô´µ" CY 2G_WORLD 5G_ETSI1 CE - -"Czech ±¶§J" CZ 2G_WORLD 5G_ETSI1 CE - -"Denmark¤¦³Á" DK 2G_WORLD 5G_ETSI1 CE - -"Dominican Republic¦h©ú¥§¥[¦@©M°ê" DO 2G_WORLD FCC TCF - -"Egypt®J¤Î" EG 2G_WORLD CE T CF - -"El SalvadorÂĺ¸¥Ë¦h" SV 2G_WORLD Voluntary - -"Estonia·R¨F¥§¨È" EE 2G_WORLD 5G_ETSI1 CE - -"FinlandªâÄõ" FI 2G_WORLD 5G_ETSI1 CE - -"Franceªk°ê" FR 5G_E TSI1 CE - -"Germany¼w°ê" DE 2G_WORLD 5G_ETSI1 CE - -"Greece §ÆÃ¾" GR 2G_WORLD 5G_ETSI1 CE - -"GuamÃö®q" GU 2G_WORLD - -"Guatemala¥Ê¦a°¨©Ô" GT 2G_WORLD - -"Haiti®ü¦a" HT 2G_WORLD FCC TCF - -"Honduras§»³£©Ô´µ" HN 2G_WORLD FCC TCF - -"Hungary¦I¤ú§Q" HU 2G_WORLD 5G_ETSI1 CE - -"Iceland¦B®q" IS 2G_WORLD 5G_ETSI1 CE - -"India¦L«×" IN 2G_WORLD 5G_FCC3 FCC/CE TCF - -"Ireland·Rº¸Äõ" IE 2G_WORLD 5G_ETSI1 CE - -"Israel¥H¦â¦C" IL 5G_F CC6 CE TCF - -"Italy¸q¤j§Q" IT 2G_WORLD 5G_ETSI1 CE - -"Japan¤é¥»" JP 2G_MKK1 5G_MKK1 MKK MKK - -"KoreaÁú°ê" KR 2G_WORLD 5G_KCC1 KCC KCC - -"Latvia©Ô²æºû¨È" LV 2G_WORLD 5G_ETSI1 CE - -"Lithuania¥ß³³©{" LT 2G_WORLD 5G_ETSI1 CE - -"Luxembourg¿c´Ë³ù" LU 2G_WORLD 5G_ETSI1 CE - -"Malaysia°¨¨Ó¦è¨È" MY 2G_WORLD Local Test - -"Malta°¨º¸¥L" MT 2G_WORLD 5G_ETSI1 CE - -"Mexico¾¥¦è­ô" MX 2G_WORLD 5G_FCC3 Local Test - -"Morocco¼¯¬¥­ô" MA CE TCF - -"Netherlands²üÄõ" NL 2G_WORLD 5G_ETSI1 CE - -"New Zealand¯Ã¦èÄõ" NZ 2G_WORLD 5G_ETSI2 - -"Norway®¿«Â" NO 2G_WORLD 5G_ETSI1 CE - + +"Cayman Islands¶}°Ò¸s®q" KY 2G_WORLD 5G_ETSI1 CE + +"Chile´¼§Q" CL 2G_WORLD FCC TCF + +"China¤¤°ê" CN 2G_WORLD 5G_FCC5 «H³¡?¡i2002¡j353? + +"Columbia­ô­Û¤ñ¨È" CO 2G_WORLD Voluntary + +"Costa Rica­ô´µ¹F¾¤¥[" CR 2G_WORLD FCC TCF + +"Cyprus¶ë®ú¸ô´µ" CY 2G_WORLD 5G_ETSI1 CE + +"Czech ±¶§J" CZ 2G_WORLD 5G_ETSI1 CE + +"Denmark¤¦³Á" DK 2G_WORLD 5G_ETSI1 CE + +"Dominican Republic¦h©ú¥§¥[¦@©M°ê" DO 2G_WORLD FCC TCF + +"Egypt®J¤Î" EG 2G_WORLD CE T CF + +"El SalvadorÂĺ¸¥Ë¦h" SV 2G_WORLD Voluntary + +"Estonia·R¨F¥§¨È" EE 2G_WORLD 5G_ETSI1 CE + +"FinlandªâÄõ" FI 2G_WORLD 5G_ETSI1 CE + +"Franceªk°ê" FR 5G_E TSI1 CE + +"Germany¼w°ê" DE 2G_WORLD 5G_ETSI1 CE + +"Greece §ÆÃ¾" GR 2G_WORLD 5G_ETSI1 CE + +"GuamÃö®q" GU 2G_WORLD + +"Guatemala¥Ê¦a°¨©Ô" GT 2G_WORLD + +"Haiti®ü¦a" HT 2G_WORLD FCC TCF + +"Honduras§»³£©Ô´µ" HN 2G_WORLD FCC TCF + +"Hungary¦I¤ú§Q" HU 2G_WORLD 5G_ETSI1 CE + +"Iceland¦B®q" IS 2G_WORLD 5G_ETSI1 CE + +"India¦L«×" IN 2G_WORLD 5G_FCC3 FCC/CE TCF + +"Ireland·Rº¸Äõ" IE 2G_WORLD 5G_ETSI1 CE + +"Israel¥H¦â¦C" IL 5G_F CC6 CE TCF + +"Italy¸q¤j§Q" IT 2G_WORLD 5G_ETSI1 CE + +"Japan¤é¥»" JP 2G_MKK1 5G_MKK1 MKK MKK + +"KoreaÁú°ê" KR 2G_WORLD 5G_KCC1 KCC KCC + +"Latvia©Ô²æºû¨È" LV 2G_WORLD 5G_ETSI1 CE + +"Lithuania¥ß³³©{" LT 2G_WORLD 5G_ETSI1 CE + +"Luxembourg¿c´Ë³ù" LU 2G_WORLD 5G_ETSI1 CE + +"Malaysia°¨¨Ó¦è¨È" MY 2G_WORLD Local Test + +"Malta°¨º¸¥L" MT 2G_WORLD 5G_ETSI1 CE + +"Mexico¾¥¦è­ô" MX 2G_WORLD 5G_FCC3 Local Test + +"Morocco¼¯¬¥­ô" MA CE TCF + +"Netherlands²üÄõ" NL 2G_WORLD 5G_ETSI1 CE + +"New Zealand¯Ã¦èÄõ" NZ 2G_WORLD 5G_ETSI2 + +"Norway®¿«Â" NO 2G_WORLD 5G_ETSI1 CE + "Panama¤Ú®³°¨ " PA 2G_FCC1 Voluntary - + "Philippinesµá«ß»«" PH 2G_WORLD FCC TCF - -"PolandªiÄõ" PL 2G_WORLD 5G_ETSI1 CE - -"Portugal¸²µå¤ú" PT 2G_WORLD 5G_ETSI1 CE - -"Romaniaù°¨¥§¨È" RO 2G_WORLD 5G_ETSI1 CE - -"Russia«Xù´µ" RU 2G_WORLD 5G_ETSI3 CE TCF - -"Saudi Arabia¨F¦aªü©Ô§B" SA 2G_WORLD CE TCF - -"Singapore·s¥[©Y" SG 2G_WORLD - -"Slovakia´µ¬¥¥ï§J" SK 2G_WORLD 5G_ETSI1 CE - -"Slovenia´µ¬¥ºû¥§¨È" SI 2G_WORLD 5G_ETSI1 CE - -"South Africa«n«D" ZA 2G_WORLD CE TCF - -"Spain¦è¯Z¤ú" ES 5G_ETSI1 CE - -"Sweden·ç¨å" SE 2G_WORLD 5G_ETSI1 CE - -"Switzerland·ç¤h" CH 2G_WORLD 5G_ETSI1 CE - -"Taiwan»OÆW" TW 2G_FCC1 5G_NCC1 NCC - -"Thailand®õ°ê" TH 2G_WORLD FCC/CE TCF - -"Turkey¤g¦Õ¨ä" TR 2G_WORLD - -"Ukraine¯Q§JÄõ" UA 2G_WORLD Local Test - -"United Kingdom­^°ê" GB 2G_WORLD 5G_ETSI1 CE ETSI - + +"PolandªiÄõ" PL 2G_WORLD 5G_ETSI1 CE + +"Portugal¸²µå¤ú" PT 2G_WORLD 5G_ETSI1 CE + +"Romaniaù°¨¥§¨È" RO 2G_WORLD 5G_ETSI1 CE + +"Russia«Xù´µ" RU 2G_WORLD 5G_ETSI3 CE TCF + +"Saudi Arabia¨F¦aªü©Ô§B" SA 2G_WORLD CE TCF + +"Singapore·s¥[©Y" SG 2G_WORLD + +"Slovakia´µ¬¥¥ï§J" SK 2G_WORLD 5G_ETSI1 CE + +"Slovenia´µ¬¥ºû¥§¨È" SI 2G_WORLD 5G_ETSI1 CE + +"South Africa«n«D" ZA 2G_WORLD CE TCF + +"Spain¦è¯Z¤ú" ES 5G_ETSI1 CE + +"Sweden·ç¨å" SE 2G_WORLD 5G_ETSI1 CE + +"Switzerland·ç¤h" CH 2G_WORLD 5G_ETSI1 CE + +"Taiwan»OÆW" TW 2G_FCC1 5G_NCC1 NCC + +"Thailand®õ°ê" TH 2G_WORLD FCC/CE TCF + +"Turkey¤g¦Õ¨ä" TR 2G_WORLD + +"Ukraine¯Q§JÄõ" UA 2G_WORLD Local Test + +"United Kingdom­^°ê" GB 2G_WORLD 5G_ETSI1 CE ETSI + "United States¬ü°ê" US 2G_FCC1 5G_FCC7 FCC FCC - + "Venezuela©e¤º·ç©Ô" VE 2G_WORLD 5G_FCC4 FCC TCF - + "Vietnam¶V«n" VN 2G_WORLD FCC/CE TCF - + */ @@ -261,86 +261,86 @@ Countries "Country Abbreviation" Domain Code SKU's Ch# of 20MHz // Counter abbervation. typedef enum _RT_COUNTRY_DEFINE_NUM { - RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" - RT_CTRY_DZ, // "Algeriaªüº¸¤Î§Q¨È" - RT_CTRY_AG, // "Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" - RT_CTRY_AR, // "Argentinaªü®Ú§Ê" - RT_CTRY_AM, // "Armenia¨È¬ü¥§¨È" - RT_CTRY_AW, // "Arubaªü¾|¤Ú®q" - RT_CTRY_AU, // "Australia¿D¬w" - RT_CTRY_AT, // "Austria¶ø¦a§Q" - RT_CTRY_AZ, // "Azerbaijanªü¶ë«ô¾Ê" - RT_CTRY_BS, // "Bahamas¤Ú«¢°¨" - RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" - RT_CTRY_BE, // "Belgium¤ñ§Q®É" - RT_CTRY_BM, // "Bermuda¦Ê¼}¹F" - RT_CTRY_BR, // "Brazil¤Ú¦è" - RT_CTRY_BG, // "Bulgaria«O¥[§Q¨È" - RT_CTRY_CA, // "Canada¥[®³¤j" - RT_CTRY_KY, // "Cayman Islands¶}°Ò¸s®q" - RT_CTRY_CL, // "Chile´¼§Q" - RT_CTRY_CN, // "China¤¤°ê" - RT_CTRY_CO, // "Columbia­ô­Û¤ñ¨È" - RT_CTRY_CR, // "Costa Rica­ô´µ¹F¾¤¥[" - RT_CTRY_CY, // "Cyprus¶ë®ú¸ô´µ" - RT_CTRY_CZ, // "Czech ±¶§J" - RT_CTRY_DK, // "Denmark¤¦³Á" - RT_CTRY_DO, // "Dominican Republic¦h©ú¥§¥[¦@©M°ê" - RT_CTRY_CE, // "Egypt®J¤Î" EG 2G_WORLD - RT_CTRY_SV, // "El SalvadorÂĺ¸¥Ë¦h" - RT_CTRY_EE, // "Estonia·R¨F¥§¨È" - RT_CTRY_FI, // "FinlandªâÄõ" - RT_CTRY_FR, // "Franceªk°ê" - RT_CTRY_DE, // "Germany¼w°ê" - RT_CTRY_GR, // "Greece §ÆÃ¾" - RT_CTRY_GU, // "GuamÃö®q" - RT_CTRY_GT, // "Guatemala¥Ê¦a°¨©Ô" - RT_CTRY_HT, // "Haiti®ü¦a" - RT_CTRY_HN, // "Honduras§»³£©Ô´µ" - RT_CTRY_HU, // "Hungary¦I¤ú§Q" - RT_CTRY_IS, // "Iceland¦B®q" - RT_CTRY_IN, // "India¦L«×" - RT_CTRY_IE, // "Ireland·Rº¸Äõ" - RT_CTRY_IL, // "Israel¥H¦â¦C" - RT_CTRY_IT, // "Italy¸q¤j§Q" - RT_CTRY_JP, // "Japan¤é¥»" - RT_CTRY_KR, // "KoreaÁú°ê" - RT_CTRY_LV, // "Latvia©Ô²æºû¨È" - RT_CTRY_LT, // "Lithuania¥ß³³©{" - RT_CTRY_LU, // "Luxembourg¿c´Ë³ù" - RT_CTRY_MY, // "Malaysia°¨¨Ó¦è¨È" - RT_CTRY_MT, // "Malta°¨º¸¥L" - RT_CTRY_MX, // "Mexico¾¥¦è­ô" - RT_CTRY_MA, // "Morocco¼¯¬¥­ô" - RT_CTRY_NL, // "Netherlands²üÄõ" - RT_CTRY_NZ, // "New Zealand¯Ã¦èÄõ" - RT_CTRY_NO, // "Norway®¿«Â" - RT_CTRY_PA, // "Panama¤Ú®³°¨ " - RT_CTRY_PH, // "Philippinesµá«ß»«" - RT_CTRY_PL, // "PolandªiÄõ" - RT_CTRY_PT, // "Portugal¸²µå¤ú" - RT_CTRY_RO, // "Romaniaù°¨¥§¨È" - RT_CTRY_RU, // "Russia«Xù´µ" - RT_CTRY_SA, // "Saudi Arabia¨F¦aªü©Ô§B" - RT_CTRY_SG, // "Singapore·s¥[©Y" - RT_CTRY_SK, // "Slovakia´µ¬¥¥ï§J" - RT_CTRY_SI, // "Slovenia´µ¬¥ºû¥§¨È" - RT_CTRY_ZA, // "South Africa«n«D" - RT_CTRY_ES, // "Spain¦è¯Z¤ú" - RT_CTRY_SE, // "Sweden·ç¨å" - RT_CTRY_CH, // "Switzerland·ç¤h" - RT_CTRY_TW, // "Taiwan»OÆW" - RT_CTRY_TH, // "Thailand®õ°ê" - RT_CTRY_TR, // "Turkey¤g¦Õ¨ä" - RT_CTRY_UA, // "Ukraine¯Q§JÄõ" - RT_CTRY_GB, // "United Kingdom­^°ê" - RT_CTRY_US, // "United States¬ü°ê" - RT_CTRY_VE, // "Venezuela©e¤º·ç©Ô" - RT_CTRY_VN, // "Vietnam¶V«n" - RT_CTRY_MAX, // - + RT_CTRY_AL, // "Albaniaªüº¸¤Ú¥§¨È" + RT_CTRY_DZ, // "Algeriaªüº¸¤Î§Q¨È" + RT_CTRY_AG, // "Antigua & Barbuda¦w´£¥Ê®q&¤Ú¥¬¹F" + RT_CTRY_AR, // "Argentinaªü®Ú§Ê" + RT_CTRY_AM, // "Armenia¨È¬ü¥§¨È" + RT_CTRY_AW, // "Arubaªü¾|¤Ú®q" + RT_CTRY_AU, // "Australia¿D¬w" + RT_CTRY_AT, // "Austria¶ø¦a§Q" + RT_CTRY_AZ, // "Azerbaijanªü¶ë«ô¾Ê" + RT_CTRY_BS, // "Bahamas¤Ú«¢°¨" + RT_CTRY_BB, // "Barbados¤Ú¤Ú¦h´µ" + RT_CTRY_BE, // "Belgium¤ñ§Q®É" + RT_CTRY_BM, // "Bermuda¦Ê¼}¹F" + RT_CTRY_BR, // "Brazil¤Ú¦è" + RT_CTRY_BG, // "Bulgaria«O¥[§Q¨È" + RT_CTRY_CA, // "Canada¥[®³¤j" + RT_CTRY_KY, // "Cayman Islands¶}°Ò¸s®q" + RT_CTRY_CL, // "Chile´¼§Q" + RT_CTRY_CN, // "China¤¤°ê" + RT_CTRY_CO, // "Columbia­ô­Û¤ñ¨È" + RT_CTRY_CR, // "Costa Rica­ô´µ¹F¾¤¥[" + RT_CTRY_CY, // "Cyprus¶ë®ú¸ô´µ" + RT_CTRY_CZ, // "Czech ±¶§J" + RT_CTRY_DK, // "Denmark¤¦³Á" + RT_CTRY_DO, // "Dominican Republic¦h©ú¥§¥[¦@©M°ê" + RT_CTRY_CE, // "Egypt®J¤Î" EG 2G_WORLD + RT_CTRY_SV, // "El SalvadorÂĺ¸¥Ë¦h" + RT_CTRY_EE, // "Estonia·R¨F¥§¨È" + RT_CTRY_FI, // "FinlandªâÄõ" + RT_CTRY_FR, // "Franceªk°ê" + RT_CTRY_DE, // "Germany¼w°ê" + RT_CTRY_GR, // "Greece §ÆÃ¾" + RT_CTRY_GU, // "GuamÃö®q" + RT_CTRY_GT, // "Guatemala¥Ê¦a°¨©Ô" + RT_CTRY_HT, // "Haiti®ü¦a" + RT_CTRY_HN, // "Honduras§»³£©Ô´µ" + RT_CTRY_HU, // "Hungary¦I¤ú§Q" + RT_CTRY_IS, // "Iceland¦B®q" + RT_CTRY_IN, // "India¦L«×" + RT_CTRY_IE, // "Ireland·Rº¸Äõ" + RT_CTRY_IL, // "Israel¥H¦â¦C" + RT_CTRY_IT, // "Italy¸q¤j§Q" + RT_CTRY_JP, // "Japan¤é¥»" + RT_CTRY_KR, // "KoreaÁú°ê" + RT_CTRY_LV, // "Latvia©Ô²æºû¨È" + RT_CTRY_LT, // "Lithuania¥ß³³©{" + RT_CTRY_LU, // "Luxembourg¿c´Ë³ù" + RT_CTRY_MY, // "Malaysia°¨¨Ó¦è¨È" + RT_CTRY_MT, // "Malta°¨º¸¥L" + RT_CTRY_MX, // "Mexico¾¥¦è­ô" + RT_CTRY_MA, // "Morocco¼¯¬¥­ô" + RT_CTRY_NL, // "Netherlands²üÄõ" + RT_CTRY_NZ, // "New Zealand¯Ã¦èÄõ" + RT_CTRY_NO, // "Norway®¿«Â" + RT_CTRY_PA, // "Panama¤Ú®³°¨ " + RT_CTRY_PH, // "Philippinesµá«ß»«" + RT_CTRY_PL, // "PolandªiÄõ" + RT_CTRY_PT, // "Portugal¸²µå¤ú" + RT_CTRY_RO, // "Romaniaù°¨¥§¨È" + RT_CTRY_RU, // "Russia«Xù´µ" + RT_CTRY_SA, // "Saudi Arabia¨F¦aªü©Ô§B" + RT_CTRY_SG, // "Singapore·s¥[©Y" + RT_CTRY_SK, // "Slovakia´µ¬¥¥ï§J" + RT_CTRY_SI, // "Slovenia´µ¬¥ºû¥§¨È" + RT_CTRY_ZA, // "South Africa«n«D" + RT_CTRY_ES, // "Spain¦è¯Z¤ú" + RT_CTRY_SE, // "Sweden·ç¨å" + RT_CTRY_CH, // "Switzerland·ç¤h" + RT_CTRY_TW, // "Taiwan»OÆW" + RT_CTRY_TH, // "Thailand®õ°ê" + RT_CTRY_TR, // "Turkey¤g¦Õ¨ä" + RT_CTRY_UA, // "Ukraine¯Q§JÄõ" + RT_CTRY_GB, // "United Kingdom­^°ê" + RT_CTRY_US, // "United States¬ü°ê" + RT_CTRY_VE, // "Venezuela©e¤º·ç©Ô" + RT_CTRY_VN, // "Vietnam¶V«n" + RT_CTRY_MAX, // + }RT_COUNTRY_NAME, *PRT_COUNTRY_NAME; - + // Scan type including active and passive scan. typedef enum _RT_SCAN_TYPE_NEW { @@ -349,32 +349,32 @@ typedef enum _RT_SCAN_TYPE_NEW SCAN_PAS, SCAN_BOTH, }RT_SCAN_TYPE_NEW, *PRT_SCAN_TYPE_NEW; - + // Power table sample. typedef struct _RT_CHNL_PLAN_LIMIT { u2Byte Chnl_Start; - u2Byte Chnl_end; - + u2Byte Chnl_end; + u2Byte Freq_Start; - u2Byte Freq_end; + u2Byte Freq_end; }RT_CHNL_PLAN_LIMIT, *PRT_CHNL_PLAN_LIMIT; - -// + +// // 2.4G Regulatory Domains // typedef enum _RT_REGULATION_DOMAIN_2G { - RT_2G_NULL, + RT_2G_NULL, RT_2G_WORLD, RT_2G_ETSI1, RT_2G_FCC1, RT_2G_MKK1, - RT_2G_ETSI2 - + RT_2G_ETSI2 + }RT_REGULATION_2G, *PRT_REGULATION_2G; @@ -382,12 +382,12 @@ typedef enum _RT_REGULATION_DOMAIN_2G //{ // u1Byte Chnl; // RT_SCAN_TYPE_NEW -// +// //}RT_CHANNEL_BEHAVIOR, *PRT_CHANNEL_BEHAVIOR; //typedef struct _RT_CHANNEL_PLAN_TYPE //{ -// RT_CHANNEL_BEHAVIOR +// RT_CHANNEL_BEHAVIOR // u1Byte Chnl_num; //}RT_CHNL_PLAN_TYPE, *PRT_CHNL_PLAN_TYPE; @@ -447,17 +447,17 @@ typedef enum _RT_REGULATION_DOMAIN_2G {2457, 2472}, 1 -// +// // 5G Regulatory Domains // typedef enum _RT_REGULATION_DOMAIN_5G -{ +{ RT_5G_NULL, RT_5G_WORLD, RT_5G_ETSI1, RT_5G_ETSI2, RT_5G_ETSI3, - RT_5G_FCC1, + RT_5G_FCC1, RT_5G_FCC2, RT_5G_FCC3, RT_5G_FCC4, @@ -470,7 +470,7 @@ typedef enum _RT_REGULATION_DOMAIN_5G RT_5G_MKK2, RT_5G_MKK3, RT_5G_NCC1, - + }RT_REGULATION_5G, *PRT_REGULATION_5G; // @@ -511,7 +511,7 @@ typedef enum _RT_REGULATION_DOMAIN_5G #define CHNL_RT_5G_MKK3 \ {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24 #define CHNL_RT_5G_NCC1 \ - {56,60,64,149,153,157,161,165}, 8 + {56,60,64,149,153,157,161,165}, 8 // // 5G Channel Active or passive scan. @@ -551,26 +551,26 @@ typedef enum _RT_REGULATION_DOMAIN_5G #define CHNL_RT_5G_MKK3_SCAN_TYPE \ {56,60,64,100,104,108,112,116,136,140,149,153,157,161,165}, 24 #define CHNL_RT_5G_NCC1_SCAN_TYPE \ - {56,60,64,149,153,157,161,165}, 8 + {56,60,64,149,153,157,161,165}, 8 -// +// // Global Regulation // typedef enum _RT_REGULATION_COMMON { - RT_WORLD, - RT_FCC, + RT_WORLD, + RT_FCC, RT_MKK, RT_ETSI, RT_IC, RT_CE, RT_NCC, - + }RT_REGULATION_CMN, *PRT_REGULATION_CMN; -// +// // Special requirement for different regulation domain. // For internal test or customerize special request. // @@ -580,46 +580,46 @@ typedef enum _RT_CHNLPLAN_SREQ RT_SREQ_2G_ADHOC_11N = 0x00000001, RT_SREQ_2G_ADHOC_11B = 0x00000002, RT_SREQ_2G_ALL_PASS = 0x00000004, - RT_SREQ_2G_ALL_ACT = 0x00000008, + RT_SREQ_2G_ALL_ACT = 0x00000008, RT_SREQ_5G_ADHOC_11N = 0x00000010, RT_SREQ_5G_ADHOC_11AC = 0x00000020, RT_SREQ_5G_ALL_PASS = 0x00000040, RT_SREQ_5G_ALL_ACT = 0x00000080, - RT_SREQ_C1_PLAN = 0x00000100, - RT_SREQ_C2_PLAN = 0x00000200, - RT_SREQ_C3_PLAN = 0x00000400, - RT_SREQ_C4_PLAN = 0x00000800, - RT_SREQ_NFC_ON = 0x00001000, + RT_SREQ_C1_PLAN = 0x00000100, + RT_SREQ_C2_PLAN = 0x00000200, + RT_SREQ_C3_PLAN = 0x00000400, + RT_SREQ_C4_PLAN = 0x00000800, + RT_SREQ_NFC_ON = 0x00001000, RT_SREQ_MASK = 0x0000FFFF, /* Requirements bit mask */ - + }RT_CHNLPLAN_SREQ, *PRT_CHNLPLAN_SREQ; // // RT_COUNTRY_NAME & RT_REGULATION_2G & RT_REGULATION_5G transfer table -// +// // typedef struct _RT_CHANNEL_PLAN_COUNTRY_TRANSFER_TABLE -{ +{ + // + // Define countery domain and corresponding // - // Define countery domain and corresponding - // RT_COUNTRY_NAME Country_Enum; char Country_Name[3]; - + //char Domain_Name[12]; - RT_REGULATION_2G Domain_2G; + RT_REGULATION_2G Domain_2G; - RT_REGULATION_5G Domain_5G; + RT_REGULATION_5G Domain_5G; RT_CHANNEL_DOMAIN RtChDomain; //u1Byte Country_Area; - + }RT_CHNL_CTRY_TBL, *PRT_CHNL_CTRY_TBL; - + #define RT_MAX_CHNL_NUM_2G 13 -#define RT_MAX_CHNL_NUM_5G 44 +#define RT_MAX_CHNL_NUM_5G 44 // Power table sample. @@ -640,7 +640,7 @@ typedef struct _RT_CHANNEL_PLAN_MAXPWR RT_CHNL_PWR_LIMIT Chnl[RT_MAX_BAND_NUM]; u1Byte Band_Useful_Num; - + }RT_CHANNEL_PLAN_MAXPWR, *PRT_CHANNEL_PLAN_MAXPWR; @@ -651,49 +651,45 @@ typedef struct _RT_CHANNEL_PLAN_MAXPWR typedef struct _RT_CHANNEL_PLAN_NEW -{ +{ // - // Define countery domain and corresponding + // Define countery domain and corresponding // //char Country_Name[36]; //u1Byte Country_Enum; - + //char Domain_Name[12]; - + PRT_CHNL_CTRY_TBL pCtryTransfer; - - RT_CHANNEL_DOMAIN RtChDomain; + + RT_CHANNEL_DOMAIN RtChDomain; RT_REGULATION_2G Domain_2G; - RT_REGULATION_5G Domain_5G; + RT_REGULATION_5G Domain_5G; RT_REGULATION_CMN Regulator; RT_CHNLPLAN_SREQ ChnlSreq; - + //RT_CHNL_PLAN_LIMIT RtChnl; - + u1Byte Chnl2G[MAX_CHANNEL_NUM]; // CHNL_RT_2G_WORLD u1Byte Len2G; u1Byte Chnl2GScanTp[MAX_CHANNEL_NUM]; // CHNL_RT_2G_WORLD_SCAN_TYPE //u1Byte Freq2G[2]; // FREQ_RT_2G_WORLD - u1Byte Chnl5G[MAX_CHANNEL_NUM]; + u1Byte Chnl5G[MAX_CHANNEL_NUM]; u1Byte Len5G; u1Byte Chnl5GScanTp[MAX_CHANNEL_NUM]; //u1Byte Freq2G[2]; // FREQ_RT_2G_WORLD RT_CHANNEL_PLAN_MAXPWR ChnlMaxPwr; - - + + }RT_CHANNEL_PLAN_NEW, *PRT_CHANNEL_PLAN_NEW; - - + + #endif // __RT_CHANNELPLAN_H__ - - - - - + diff --git a/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c b/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c index 28905fdfc..b3f7bc29b 100755 --- a/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c +++ b/hal/phydm/rtl8821a/phydm_iqk_8821a_ce.c @@ -33,10 +33,10 @@ void DoIQK_8821A( PVOID pDM_VOID, u1Byte DeltaThermalIndex, - u1Byte ThermalValue, + u1Byte ThermalValue, u1Byte Threshold ) -{ +{ PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; pDM_Odm->RFCalibrateInfo.ThermalValue_IQK= ThermalValue; PHY_IQCalibrate_8821A(pDM_Odm, FALSE); @@ -47,7 +47,7 @@ void _IQK_RX_FillIQC_8821A( IN ODM_RF_RADIO_PATH_E Path, IN unsigned int RX_X, IN unsigned int RX_Y - ) + ) { switch (Path) { case ODM_RF_PATH_A: @@ -60,8 +60,8 @@ void _IQK_RX_FillIQC_8821A( } break; default: - break; - }; + break; + }; } void _IQK_TX_FillIQC_8821A( @@ -69,7 +69,7 @@ void _IQK_TX_FillIQC_8821A( IN ODM_RF_RADIO_PATH_E Path, IN unsigned int TX_X, IN unsigned int TX_Y - ) + ) { switch (Path) { case ODM_RF_PATH_A: @@ -85,14 +85,14 @@ void _IQK_TX_FillIQC_8821A( } break; default: - break; - }; + break; + }; } void _IQK_BackupMacBB_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte MACBB_backup, - IN pu4Byte Backup_MACBB_REG, + IN pu4Byte Backup_MACBB_REG, IN u4Byte MACBB_NUM ) { @@ -102,17 +102,17 @@ void _IQK_BackupMacBB_8821A( for (i = 0; i < MACBB_NUM; i++){ MACBB_backup[i] = ODM_Read4Byte(pDM_Odm, Backup_MACBB_REG[i]); } - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("BackupMacBB Success!!!!\n")); } void _IQK_BackupRF_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte RFA_backup, - IN pu4Byte RFB_backup, - IN pu4Byte Backup_RF_REG, + IN pu4Byte RFB_backup, + IN pu4Byte Backup_RF_REG, IN u4Byte RF_NUM - ) + ) { u4Byte i; @@ -127,15 +127,15 @@ void _IQK_BackupRF_8821A( void _IQK_BackupAFE_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte AFE_backup, - IN pu4Byte Backup_AFE_REG, + IN pu4Byte Backup_AFE_REG, IN u4Byte AFE_NUM ) { u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C - //Save AFE Parameters + //Save AFE Parameters for (i = 0; i < AFE_NUM; i++){ - AFE_backup[i] = ODM_Read4Byte(pDM_Odm, Backup_AFE_REG[i]); + AFE_backup[i] = ODM_Read4Byte(pDM_Odm, Backup_AFE_REG[i]); } ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("BackupAFE Success!!!!\n")); } @@ -143,13 +143,13 @@ void _IQK_BackupAFE_8821A( void _IQK_RestoreMacBB_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte MACBB_backup, - IN pu4Byte Backup_MACBB_REG, + IN pu4Byte Backup_MACBB_REG, IN u4Byte MACBB_NUM - ) + ) { u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C - //Reload MacBB Parameters + //Reload MacBB Parameters for (i = 0; i < MACBB_NUM; i++){ ODM_Write4Byte(pDM_Odm, Backup_MACBB_REG[i], MACBB_backup[i]); } @@ -163,7 +163,7 @@ void _IQK_RestoreRF_8821A( IN pu4Byte RF_backup, IN u4Byte RF_REG_NUM ) -{ +{ u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C @@ -184,13 +184,13 @@ void _IQK_RestoreRF_8821A( void _IQK_RestoreAFE_8821A( IN PDM_ODM_T pDM_Odm, IN pu4Byte AFE_backup, - IN pu4Byte Backup_AFE_REG, + IN pu4Byte Backup_AFE_REG, IN u4Byte AFE_NUM ) { u4Byte i; ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C - //Reload AFE Parameters + //Reload AFE Parameters for (i = 0; i < AFE_NUM; i++){ ODM_Write4Byte(pDM_Odm, Backup_AFE_REG[i], AFE_backup[i]); } @@ -240,7 +240,7 @@ void _IQK_Tx_8821A( while (cal < cal_num_8821A){ switch (Path) { case ODM_RF_PATH_A: - { + { //Path-A LOK ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C // ========Path-A AFE all on======== @@ -291,7 +291,7 @@ void _IQK_Tx_8821A( ODM_delay_ms(10); //Delay 10ms ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00000000); - + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C ODM_SetRFReg(pDM_Odm, Path, 0x58, 0x7fe00, ODM_GetRFReg(pDM_Odm, Path, 0x8, 0xffc00)); // Load LOK switch (*pDM_Odm->pBandWidth) @@ -305,12 +305,12 @@ void _IQK_Tx_8821A( { ODM_SetRFReg(pDM_Odm, Path, 0x18, 0x00c00, 0x0); } - break; + break; default: break; } ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 - + // 3. TX RF Setting ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C ODM_SetRFReg(pDM_Odm, Path, 0xef, bRFRegOffsetMask, 0x80000); @@ -390,19 +390,18 @@ void _IQK_Tx_8821A( } } - if (delay_count < 20){ // If 20ms No Result, then cal_retry++ + if (delay_count < 20) { // If 20ms No Result, then cal_retry++ // ============TXIQK Check============== TX_fail = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(12)); - - if (~TX_fail){ + + if (~TX_fail) { ODM_Write4Byte(pDM_Odm, 0xcb8, 0x02000000); VDF_X[k] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; ODM_Write4Byte(pDM_Odm, 0xcb8, 0x04000000); VDF_Y[k] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; TX0IQKOK = TRUE; break; - } - else{ + } else { ODM_SetBBReg(pDM_Odm, 0xccc, 0x000007ff, 0x0); ODM_SetBBReg(pDM_Odm, 0xcd4, 0x000007ff, 0x200); TX0IQKOK = FALSE; @@ -411,8 +410,7 @@ void _IQK_Tx_8821A( break; } } - } - else{ + } else { TX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10){ @@ -421,17 +419,16 @@ void _IQK_Tx_8821A( } } } - if (k == 3){ + if (k == 3) { TX_X0[cal] = VDF_X[k-1] ; TX_Y0[cal] = VDF_Y[k-1]; } - } - else{ + } else { ODM_Write4Byte(pDM_Odm, 0xc80, 0x18008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 ODM_Write4Byte(pDM_Odm, 0xc84, 0x38008c10);// RX_Tone_idx[9:0], RxK_Mask[29] ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00100000);// cb8[20] ±N SI/PI ¨Ï¥ÎÅv¤Áµ¹ iqk_dpk module cal_retry = 0; - while(1){ + while (1) { // one shot ODM_Write4Byte(pDM_Odm, 0x980, 0xfa000000); ODM_Write4Byte(pDM_Odm, 0x980, 0xf8000000); @@ -439,12 +436,11 @@ void _IQK_Tx_8821A( ODM_delay_ms(10); //Delay 10ms ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00000000); delay_count = 0; - while (1){ + while (1) { IQK_ready = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(10)); if ((~IQK_ready) || (delay_count>20)) { break; - } - else{ + } else { ODM_delay_ms(1); delay_count++; } @@ -453,7 +449,7 @@ void _IQK_Tx_8821A( if (delay_count < 20){ // If 20ms No Result, then cal_retry++ // ============TXIQK Check============== TX_fail = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(12)); - + if (~TX_fail){ ODM_Write4Byte(pDM_Odm, 0xcb8, 0x02000000); TX_X0[cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; @@ -461,8 +457,7 @@ void _IQK_Tx_8821A( TX_Y0[cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; TX0IQKOK = TRUE; break; - } - else{ + } else { ODM_SetBBReg(pDM_Odm, 0xccc, 0x000007ff, 0x0); ODM_SetBBReg(pDM_Odm, 0xcd4, 0x000007ff, 0x200); TX0IQKOK = FALSE; @@ -471,19 +466,18 @@ void _IQK_Tx_8821A( break; } } - } - else{ + } else { TX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10) - break; + break; } } } if (TX0IQKOK == FALSE) break; // TXK fail, Don't do RXK - + //====== RX IQK ====== ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x0); // [31] = 0 --> Page C // 1. RX RF Setting @@ -494,28 +488,27 @@ void _IQK_Tx_8821A( ODM_SetRFReg(pDM_Odm, Path, 0x8f, bRFRegOffsetMask, 0x88001); ODM_SetRFReg(pDM_Odm, Path, 0x65, bRFRegOffsetMask, 0x931d8); ODM_SetRFReg(pDM_Odm, Path, 0xef, bRFRegOffsetMask, 0x00000); - + ODM_SetBBReg(pDM_Odm, 0x978, 0x03FF8000, (TX_X0[cal])>>21&0x000007ff); - ODM_SetBBReg(pDM_Odm, 0x978, 0x000007FF, (TX_Y0[cal])>>21&0x000007ff); + ODM_SetBBReg(pDM_Odm, 0x978, 0x000007FF, (TX_Y0[cal])>>21&0x000007ff); ODM_SetBBReg(pDM_Odm, 0x978, BIT(31), 0x1); ODM_SetBBReg(pDM_Odm, 0x97c, BIT(31), 0x0); ODM_Write4Byte(pDM_Odm, 0x90c, 0x00008000); ODM_Write4Byte(pDM_Odm, 0x984, 0x0046a911); - + ODM_SetBBReg(pDM_Odm, 0x82c, BIT(31), 0x1); // [31] = 1 --> Page C1 ODM_Write4Byte(pDM_Odm, 0xc80, 0x38008c10);// TX_Tone_idx[9:0], TxK_Mask[29] TX_Tone = 16 ODM_Write4Byte(pDM_Odm, 0xc84, 0x18008c10);// RX_Tone_idx[9:0], RxK_Mask[29] ODM_Write4Byte(pDM_Odm, 0xc88, 0x02140119); - if (pDM_Odm->SupportInterface == 1){ + if (pDM_Odm->SupportInterface == 1) { RXIQK_Loop = 2; // for 2% fail; - } - else{ + } else { RXIQK_Loop = 1; } - for(i = 0; i < RXIQK_Loop; i++){ + for (i = 0; i < RXIQK_Loop; i++) { if (pDM_Odm->SupportInterface == 1) - if(i == 0) + if (i == 0) ODM_Write4Byte(pDM_Odm, 0xc8c, 0x28161100); //Good else ODM_Write4Byte(pDM_Odm, 0xc8c, 0x28160d00); @@ -523,9 +516,9 @@ void _IQK_Tx_8821A( ODM_Write4Byte(pDM_Odm, 0xc8c, 0x28160d00); ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00100000);// cb8[20] ±N SI/PI ¨Ï¥ÎÅv¤Áµ¹ iqk_dpk module - + cal_retry = 0; - while(1){ + while(1) { // one shot ODM_Write4Byte(pDM_Odm, 0x980, 0xfa000000); ODM_Write4Byte(pDM_Odm, 0x980, 0xf8000000); @@ -533,17 +526,16 @@ void _IQK_Tx_8821A( ODM_delay_ms(10); //Delay 10ms ODM_Write4Byte(pDM_Odm, 0xcb8, 0x00000000); delay_count = 0; - while (1){ + while (1) { IQK_ready = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(10)); if ((~IQK_ready)||(delay_count>20)){ break; - } - else{ + } else { ODM_delay_ms(1); delay_count++; } } - + if (delay_count < 20){ // If 20ms No Result, then cal_retry++ // ============RXIQK Check============== RX_fail = ODM_GetBBReg(pDM_Odm, 0xd00, BIT(11)); @@ -564,33 +556,31 @@ void _IQK_Tx_8821A( Image_Power = (reg2<<32)+reg1; DbgPrint("After PW = %d\n", Image_Power); */ - + ODM_Write4Byte(pDM_Odm, 0xcb8, 0x06000000); RX_X0[i][cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; ODM_Write4Byte(pDM_Odm, 0xcb8, 0x08000000); RX_Y0[i][cal] = ODM_GetBBReg(pDM_Odm, 0xd00, 0x07ff0000)<<21; RX0IQKOK = TRUE; break; - } - else{ + } else { ODM_SetBBReg(pDM_Odm, 0xc10, 0x000003ff, 0x200>>1); ODM_SetBBReg(pDM_Odm, 0xc10, 0x03ff0000, 0x0>>1); RX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10) break; - + } - } - else{ + } else { RX0IQKOK = FALSE; cal_retry++; if (cal_retry == 10) break; } } - } - + } + if (TX0IQKOK) TX_Average++; if (RX0IQKOK) @@ -598,27 +588,27 @@ void _IQK_Tx_8821A( } break; default: - break; + break; } cal++; } // FillIQK Result - switch (Path){ + switch (Path) { case ODM_RF_PATH_A: { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("========Path_A =======\n")); if (TX_Average == 0) break; - - for (i = 0; i < TX_Average; i++){ + + for (i = 0; i < TX_Average; i++) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("TX_X0[%d] = %x ;; TX_Y0[%d] = %x\n", i, (TX_X0[i])>>21&0x000007ff, i, (TX_Y0[i])>>21&0x000007ff)); } - for (i = 0; i < TX_Average; i++){ - for (ii = i+1; ii >21) - (TX_X0[ii]>>21); - if (dx < 3 && dx > -3){ + if (dx < 3 && dx > -3) { dy = (TX_Y0[i]>>21) - (TX_Y0[ii]>>21); - if (dy < 3 && dy > -3){ + if (dy < 3 && dy > -3) { TX_X = ((TX_X0[i]>>21) + (TX_X0[ii]>>21))/2; TX_Y = ((TX_Y0[i]>>21) + (TX_Y0[ii]>>21))/2; TX_finish = 1; @@ -628,22 +618,22 @@ void _IQK_Tx_8821A( } if (TX_finish == 1) break; - } + } if (TX_finish == 1){ _IQK_TX_FillIQC_8821A(pDM_Odm, Path, TX_X, TX_Y); - } - else{ + } else { _IQK_TX_FillIQC_8821A(pDM_Odm, Path, 0x200, 0x0); } - + if (RX_Average == 0) break; - + for (i = 0; i < RX_Average; i++){ ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("RX_X0[0][%d] = %x ;; RX_Y0[0][%d] = %x\n", i, (RX_X0[0][i])>>21&0x000007ff, i, (RX_Y0[0][i])>>21&0x000007ff)); - if (RXIQK_Loop == 2) + if (RXIQK_Loop == 2) { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("RX_X0[1][%d] = %x ;; RX_Y0[1][%d] = %x\n", i, (RX_X0[1][i])>>21&0x000007ff, i, (RX_Y0[1][i])>>21&0x000007ff)); + } } for (i = 0; i < RX_Average; i++){ for (ii = i+1; ii ExtPA5G | pDM_Odm->ExtLNA5G<<1; - + ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("== FW IQK Start ==\n")); pDM_Odm->RFCalibrateInfo.IQK_StartTime = 0; pDM_Odm->RFCalibrateInfo.IQK_StartTime = ODM_GetCurrentTime( pDM_Odm); ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("== StartTime: %lld\n", pDM_Odm->RFCalibrateInfo.IQK_StartTime)); ODM_FillH2CCmd(pDM_Odm, ODM_H2C_IQ_CALIBRATION, 3, IQKcmd); - + } #endif - -VOID + +VOID phy_IQCalibrate_8821A( IN PDM_ODM_T pDM_Odm ) { u4Byte MACBB_backup[MACBB_REG_NUM_8821A], AFE_backup[AFE_REG_NUM_8821A], RFA_backup[RF_REG_NUM_8821A], RFB_backup[RF_REG_NUM_8821A]; - u4Byte Backup_MACBB_REG[MACBB_REG_NUM_8821A] = {0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0x838, 0x82c}; - u4Byte Backup_AFE_REG[AFE_REG_NUM_8821A] = {0xc5c, 0xc60, 0xc64, 0xc68}; - u4Byte Backup_RF_REG[RF_REG_NUM_8821A] = {0x65, 0x8f, 0x0}; + u4Byte Backup_MACBB_REG[MACBB_REG_NUM_8821A] = {0x520, 0x550, 0x808, 0xa04, 0x90c, 0xc00, 0x838, 0x82c}; + u4Byte Backup_AFE_REG[AFE_REG_NUM_8821A] = {0xc5c, 0xc60, 0xc64, 0xc68}; + u4Byte Backup_RF_REG[RF_REG_NUM_8821A] = {0x65, 0x8f, 0x0}; _IQK_BackupMacBB_8821A(pDM_Odm, MACBB_backup, Backup_MACBB_REG, MACBB_REG_NUM_8821A); _IQK_BackupAFE_8821A(pDM_Odm, AFE_backup, Backup_AFE_REG, AFE_REG_NUM_8821A); _IQK_BackupRF_8821A(pDM_Odm, RFA_backup, RFB_backup, Backup_RF_REG, RF_REG_NUM_8821A); - + _IQK_ConfigureMAC_8821A(pDM_Odm); _IQK_Tx_8821A(pDM_Odm, ODM_RF_PATH_A); @@ -763,7 +752,7 @@ phy_IQCalibrate_8821A( _IQK_RestoreMacBB_8821A(pDM_Odm, MACBB_backup, Backup_MACBB_REG, MACBB_REG_NUM_8821A); } -VOID +VOID PHY_ResetIQKResult_8821A( IN PDM_ODM_T pDM_Odm ) @@ -786,12 +775,12 @@ PHY_IQCalibrate_8821A( { #if !(DM_ODM_SUPPORT_TYPE & ODM_AP) PADAPTER pAdapter = pDM_Odm->Adapter; - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) - u4Byte counter = 0; + #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + u4Byte counter = 0; #endif -#endif +#endif #if (DM_ODM_SUPPORT_TYPE & ODM_WIN ) if (ODM_CheckPowerStatus(pAdapter) == FALSE) @@ -799,26 +788,24 @@ PHY_IQCalibrate_8821A( #endif if (pDM_Odm->mp_mode){ //(MP_DRIVER == 1) - #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) + #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) #if (MP_DRIVER == 1) - PMPT_CONTEXT pMptCtx = &(pAdapter->MptCtx); + PMPT_CONTEXT pMptCtx = &(pAdapter->MptCtx); if( pMptCtx->bSingleTone || pMptCtx->bCarrierSuppression) return; #endif #else// (DM_ODM_SUPPORT_TYPE == ODM_CE) - PMPT_CONTEXT pMptCtx = &(pAdapter->mppriv.MptCtx); + PMPT_CONTEXT pMptCtx = &(pAdapter->mppriv.MptCtx); if( pMptCtx->bSingleTone || pMptCtx->bCarrierSuppression) return; - #endif - + #endif + } pDM_Odm->IQKFWOffload = 0; - + //3 == FW IQK == - if(pDM_Odm->IQKFWOffload) - { - if ( ! pDM_Odm->RFCalibrateInfo.bIQKInProgress) - { + if(pDM_Odm->IQKFWOffload) { + if ( ! pDM_Odm->RFCalibrateInfo.bIQKInProgress) { ODM_AcquireSpinLock( pDM_Odm, RT_IQK_SPINLOCK); pDM_Odm->RFCalibrateInfo.bIQKInProgress = TRUE; ODM_ReleaseSpinLock( pDM_Odm, RT_IQK_SPINLOCK); @@ -850,7 +837,7 @@ PHY_IQCalibrate_8821A( } } //3 == Driver IQK == - else { + else { if ( ! pDM_Odm->RFCalibrateInfo.bIQKInProgress) { ODM_AcquireSpinLock(pDM_Odm, RT_IQK_SPINLOCK); pDM_Odm->RFCalibrateInfo.bIQKInProgress = TRUE; @@ -860,17 +847,14 @@ PHY_IQCalibrate_8821A( phy_IQCalibrate_8821A(pDM_Odm); pDM_Odm->RFCalibrateInfo.IQK_ProgressingTime = ODM_GetProgressingTime( pDM_Odm, pDM_Odm->RFCalibrateInfo.IQK_StartTime); ODM_RT_TRACE(pDM_Odm,ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("IQK ProgressingTime = %lld ms\n", pDM_Odm->RFCalibrateInfo.IQK_ProgressingTime)); - + ODM_AcquireSpinLock(pDM_Odm, RT_IQK_SPINLOCK); pDM_Odm->RFCalibrateInfo.bIQKInProgress = FALSE; ODM_ReleaseSpinLock(pDM_Odm, RT_IQK_SPINLOCK); - } - else - { + } else { ODM_RT_TRACE(pDM_Odm, ODM_COMP_CALIBRATION, ODM_DBG_LOUD, ("== Return the IQK CMD, because the IQK in Progress ==\n")); } } - + } #endif - diff --git a/hal/phydm/txbf/halcomtxbf.c b/hal/phydm/txbf/halcomtxbf.c index 395a21756..d4bc10ce7 100644 --- a/hal/phydm/txbf/halcomtxbf.c +++ b/hal/phydm/txbf/halcomtxbf.c @@ -17,8 +17,9 @@ halComTxbf_beamformInit( { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - if (pDM_Odm->SupportICType & ODM_RTL8822B) + if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Init(pDM_Odm); + } } /*Only used for MU BFer Entry when get GID management frame (self is as MU STA)*/ @@ -29,8 +30,9 @@ halComTxbf_ConfigGtab( { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - if (pDM_Odm->SupportICType & ODM_RTL8822B) + if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_ConfigGtab(pDM_Odm); + } } VOID @@ -167,7 +169,7 @@ phydm_beamformSetGetTxRate( #endif } -VOID +VOID halComTxbf_EnterWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter @@ -184,20 +186,24 @@ halComTxbf_EnterWorkItemCallback( #endif PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; u1Byte Idx = pTxbfInfo->TXBFIdx; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_Enter(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_Enter(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_Enter(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Enter(pDM_Odm, Idx); + } } -VOID +VOID halComTxbf_LeaveWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter @@ -218,18 +224,22 @@ halComTxbf_LeaveWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_Leave(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_Leave(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_Leave(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Leave(pDM_Odm, Idx); + } } -VOID +VOID halComTxbf_FwNdpaWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter @@ -249,14 +259,18 @@ halComTxbf_FwNdpaWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_FwTxBF(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_FwTxBF(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_FwTxBF(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_FwTxBF(pDM_Odm, Idx); + } } VOID @@ -277,14 +291,15 @@ halComTxbf_ClkWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & ODM_RTL8812) + if (pDM_Odm->SupportICType & ODM_RTL8812) { HalTxbfJaguar_Clk_8812A(pDM_Odm); + } } VOID -halComTxbf_RateWorkItemCallback( +halComTxbf_RateWorkItemCallback( #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) IN PADAPTER Adapter #else @@ -300,22 +315,24 @@ halComTxbf_RateWorkItemCallback( #endif PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; u1Byte BW = pTxbfInfo->BW; - u1Byte Rate = pTxbfInfo->Rate; - + u1Byte Rate = pTxbfInfo->Rate; + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & ODM_RTL8812) + if (pDM_Odm->SupportICType & ODM_RTL8812) { HalTxbf8812A_setNDPArate(pDM_Odm, BW, Rate); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_setNDPArate(pDM_Odm, BW, Rate); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_setNDPArate(pDM_Odm, BW, Rate); - + } } #if (DM_ODM_SUPPORT_TYPE == ODM_WIN) -VOID +VOID halComTxbf_FwNdpaTimerCallback( IN PRT_TIMER pTimer ) @@ -327,13 +344,14 @@ halComTxbf_FwNdpaTimerCallback( PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (*pDM_Odm->pbFwDwRsvdPageInProgress) + if (*pDM_Odm->pbFwDwRsvdPageInProgress) { ODM_SetTimer(pDM_Odm, &(pTxbfInfo->Txbf_FwNdpaTimer), 5); - else + } else { PlatformScheduleWorkItem(&(pTxbfInfo->Txbf_FwNdpaWorkItem)); + } } #endif @@ -359,14 +377,18 @@ halComTxbf_StatusWorkItemCallback( ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); - if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) + if (pDM_Odm->SupportICType & (ODM_RTL8812|ODM_RTL8821)) { HalTxbfJaguar_Status(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8192E) + } + else if (pDM_Odm->SupportICType & ODM_RTL8192E) { HalTxbf8192E_Status(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8814A) + } + else if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_Status(pDM_Odm, Idx); - else if (pDM_Odm->SupportICType & ODM_RTL8822B) + } + else if (pDM_Odm->SupportICType & ODM_RTL8822B) { HalTxbf8822B_Status(pDM_Odm, Idx); + } } VOID @@ -388,9 +410,9 @@ halComTxbf_ResetTxPathWorkItemCallback( u1Byte Idx = pTxbfInfo->TXBFIdx; - if (pDM_Odm->SupportICType & ODM_RTL8814A) + if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_ResetTxPath(pDM_Odm, Idx); - + } } VOID @@ -408,9 +430,10 @@ halComTxbf_GetTxRateWorkItemCallback( #else PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; #endif - - if (pDM_Odm->SupportICType & ODM_RTL8814A) + + if (pDM_Odm->SupportICType & ODM_RTL8814A) { HalTxbf8814A_GetTxRate(pDM_Odm); + } } @@ -426,7 +449,7 @@ HalComTxbf_Set( PHAL_TXBF_INFO pTxbfInfo = &pDM_Odm->BeamformingInfo.TxbfInfo; ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] setType = 0x%X\n", __func__, setType)); - + switch(setType){ case TXBF_SET_SOUNDING_ENTER: pTxbfInfo->TXBFIdx = *pU1Tmp; @@ -457,7 +480,7 @@ HalComTxbf_Set( case TXBF_SET_SOUNDING_CLK: phydm_beamformSetSoundingClk(pDM_Odm); break; - + case TXBF_SET_TX_PATH_RESET: pTxbfInfo->TXBFIdx = *pU1Tmp; phydm_beamformSetResetTxPath(pDM_Odm); @@ -466,7 +489,7 @@ HalComTxbf_Set( case TXBF_SET_GET_TX_RATE: phydm_beamformSetGetTxRate(pDM_Odm); break; - + } return TRUE; @@ -498,7 +521,7 @@ HalComTxbf_Get( *pBoolean = FALSE; } else if (getType == TXBF_GET_EXPLICIT_BEAMFORMER) { if (IS_HARDWARE_TYPE_OLDER_THAN_8812A(Adapter)) - *pBoolean = FALSE; + *pBoolean = FALSE; else if (/*IS_HARDWARE_TYPE_8822B(Adapter) ||*/ IS_HARDWARE_TYPE_8821B(Adapter) || IS_HARDWARE_TYPE_8192E(Adapter) || @@ -519,18 +542,18 @@ HalComTxbf_Get( } else if (getType == TXBF_GET_MU_MIMO_AP) { -#if (RTL8822B_SUPPORT == 1) +#if (RTL8822B_SUPPORT == 1) if (IS_HARDWARE_TYPE_8822B(Adapter)) *pBoolean = TRUE; else #endif *pBoolean = FALSE; } - + return TRUE; -} +} #endif -#endif +#endif diff --git a/hal/phydm/txbf/haltxbfjaguar.c b/hal/phydm/txbf/haltxbfjaguar.c index e1253710f..83671d869 100644 --- a/hal/phydm/txbf/haltxbfjaguar.c +++ b/hal/phydm/txbf/haltxbfjaguar.c @@ -17,8 +17,8 @@ HalTxbf8812A_setNDPArate( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - - ODM_Write1Byte(pDM_Odm, REG_NDPA_OPT_CTRL_8812A, (Rate << 2 | BW)); + + ODM_Write1Byte(pDM_Odm, REG_NDPA_OPT_CTRL_8812A, (Rate << 2 | BW)); } @@ -29,7 +29,7 @@ halTxbfJaguar_RfMode( ) { PDM_ODM_T pDM_Odm = (PDM_ODM_T)pDM_VOID; - + if (pDM_Odm->RFType == ODM_1T1R) return; @@ -133,9 +133,9 @@ halTxbfJaguar_DownloadNDPA( DLBcnCount++; } while (!(BcnValidReg & BIT0) && DLBcnCount < 5); - if (!(BcnValidReg & BIT0)) + if (!(BcnValidReg & BIT0)) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("%s Download RSVD page failed!\n", __func__)); - + } /*TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA*/ ODM_Write1Byte(pDM_Odm, REG_TDECTRL_8812A + 1, TxPageBndy); @@ -306,7 +306,7 @@ HalTxbfJaguar_Leave( PRT_BEAMFORMING_INFO pBeamformingInfo = &pDM_Odm->BeamformingInfo; RT_BEAMFORMER_ENTRY BeamformerEntry; RT_BEAMFORMEE_ENTRY BeamformeeEntry; - + if (Idx < BEAMFORMER_ENTRY_NUM) { BeamformerEntry = pBeamformingInfo->BeamformerEntry[Idx]; BeamformeeEntry = pBeamformingInfo->BeamformeeEntry[Idx]; @@ -318,7 +318,7 @@ HalTxbfJaguar_Leave( /*Clear P_AID of Beamformee*/ /*Clear MAC address of Beamformer*/ /*Clear Associated Bfmee Sel*/ - + if (BeamformerEntry.BeamformEntryCap == BEAMFORMING_CAP_NONE) { ODM_Write1Byte(pDM_Odm, REG_SND_PTCL_CTRL_8812A, 0xC8); if (Idx == 0) { @@ -346,7 +346,7 @@ HalTxbfJaguar_Leave( ODM_Write2Byte(pDM_Odm, REG_BFMEE_SEL_8812A + 2, ODM_Read2Byte(pDM_Odm, REG_BFMEE_SEL_8812A + 2) & 0x60); } } - + } @@ -440,14 +440,14 @@ HalTxbfJaguar_Clk_8812A( u2Byte u2btmp; u1Byte Count = 0, u1btmp; PADAPTER Adapter = pDM_Odm->Adapter; - + ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] Start!\n", __func__)); if (*(pDM_Odm->pbScanInProcess)) { ODM_RT_TRACE(pDM_Odm, PHYDM_COMP_TXBF, ODM_DBG_LOUD, ("[%s] return by Scan\n", __func__)); return; } -#if DEV_BUS_TYPE == RT_PCI_INTERFACE +#if DEV_BUS_TYPE == RT_PCI_INTERFACE /*Stop PCIe TxDMA*/ ODM_Write1Byte(pDM_Odm, REG_PCIE_CTRL_REG_8812A + 1, 0xFE); #endif @@ -521,7 +521,4 @@ HalTxbfJaguar_Clk_8812A( #endif - - #endif - diff --git a/hal/rtl8812a/rtl8812a_dm.c b/hal/rtl8812a/rtl8812a_dm.c index 8ab379917..36a7a3fa6 100644 --- a/hal/rtl8812a/rtl8812a_dm.c +++ b/hal/rtl8812a/rtl8812a_dm.c @@ -457,8 +457,11 @@ void rtl8812_init_dm_priv(IN PADAPTER Adapter) Init_ODM_ComInfo_8812(Adapter); ODM_InitAllTimers(podmpriv); + + pHalData->CurrentTxPwrIdx = 18; } + void rtl8812_deinit_dm_priv(IN PADAPTER Adapter) { PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); diff --git a/hal/rtl8812a/rtl8812a_hal_init.c b/hal/rtl8812a/rtl8812a_hal_init.c index f4c9b6826..4d56edf8b 100644 --- a/hal/rtl8812a/rtl8812a_hal_init.c +++ b/hal/rtl8812a/rtl8812a_hal_init.c @@ -1796,15 +1796,6 @@ Hal_EfusePowerSwitch8812A( } } -static VOID -rtl8812_EfusePowerSwitch( - IN PADAPTER pAdapter, - IN u8 bWrite, - IN u8 PwrState) -{ - Hal_EfusePowerSwitch8812A(pAdapter, bWrite, PwrState); -} - static BOOLEAN Hal_EfuseSwitchToBank8812A( IN PADAPTER pAdapter, @@ -1825,14 +1816,14 @@ Hal_EfuseReadEFuse8812A( ) { u8 *efuseTbl = NULL; + u8 rtemp8[1]; u16 eFuse_Addr = 0; - u8 offset = 0, wden = 0; + u8 offset, wren; u16 i, j; u16 **eFuseWord = NULL; u16 efuse_utilized = 0; u8 efuse_usage = 0; - u8 offset_2_0 = 0; - u8 efuseHeader = 0, efuseExtHdr = 0, efuseData = 0; + u8 u1temp = 0; /* */ /* Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. */ @@ -1864,99 +1855,105 @@ Hal_EfuseReadEFuse8812A( /* 1. Read the first byte to check if efuse is empty!!! */ /* */ /* */ - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - - if (efuseHeader != 0xFF) + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + if (*rtemp8 != 0xFF) { efuse_utilized++; - else { - RTW_INFO("EFUSE is empty\n"); - efuse_utilized = 0; + /* RTW_INFO("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr, *rtemp8); */ + eFuse_Addr++; + } else { + RTW_INFO("EFUSE is empty efuse_Addr-%d efuse_data=%x\n", eFuse_Addr, *rtemp8); goto exit; } - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Hal_EfuseReadEFuse8812A(): efuse_utilized: %d\n", efuse_utilized)); */ /* */ /* 2. Read real efuse content. Filter PG header and every section data. */ /* */ - while ((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) { + while ((*rtemp8 != 0xFF) && (eFuse_Addr < EFUSE_REAL_CONTENT_LEN_JAGUAR)) { /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr-1, *rtemp8)); */ /* Check PG header for section num. */ - if (EXT_HEADER(efuseHeader)) { /* extended header */ - offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader); - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("extended header offset_2_0=%X\n", offset_2_0)); */ + if ((*rtemp8 & 0x1F) == 0x0F) { /* extended header */ + u1temp = ((*rtemp8 & 0xE0) >> 5); + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("extended header u1temp=%x *rtemp&0xE0 0x%x\n", u1temp, *rtemp8 & 0xE0)); */ - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("extended header u1temp=%x\n", u1temp)); */ - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseExtHdr)); */ + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); - if (efuseExtHdr != 0xff) { - efuse_utilized++; - if (ALL_WORDS_DISABLED(efuseExtHdr)) { - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - if (efuseHeader != 0xff) - efuse_utilized++; - break; - } else { - offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0; - wden = (efuseExtHdr & 0x0F); - } + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("extended header efuse_Addr-%d efuse_data=%x\n", eFuse_Addr, *rtemp8)); */ + + if ((*rtemp8 & 0x0F) == 0x0F) { + eFuse_Addr++; + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + + if (*rtemp8 != 0xFF && (eFuse_Addr < EFUSE_REAL_CONTENT_LEN_JAGUAR)) + eFuse_Addr++; + continue; } else { - RTW_INFO("Error condition, extended = 0xff\n"); - /* We should handle this condition. */ - break; + offset = ((*rtemp8 & 0xF0) >> 1) | u1temp; + wren = (*rtemp8 & 0x0F); + eFuse_Addr++; } } else { - offset = ((efuseHeader >> 4) & 0x0f); - wden = (efuseHeader & 0x0f); + offset = ((*rtemp8 >> 4) & 0x0f); + wren = (*rtemp8 & 0x0f); } if (offset < EFUSE_MAX_SECTION_JAGUAR) { /* Get word enable value from PG header */ - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Offset-%X Worden=%X\n", offset, wden)); */ + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Offset-%d Worden=%x\n", offset, wren)); */ for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) { /* Check word enable condition in the section */ - if (!(wden & (0x01 << i))) { - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseData, bPseudoTest); - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseData)); */ + if (!(wren & 0x01)) { + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d\n", eFuse_Addr)); */ + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + eFuse_Addr++; efuse_utilized++; - eFuseWord[offset][i] = (efuseData & 0xff); + eFuseWord[offset][i] = (*rtemp8 & 0xff); - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseData, bPseudoTest); - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseData)); */ + /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d", eFuse_Addr)); */ + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); + eFuse_Addr++; + efuse_utilized++; - eFuseWord[offset][i] |= (((u16)efuseData << 8) & 0xff00); + eFuseWord[offset][i] |= (((u2Byte)*rtemp8 << 8) & 0xff00); - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; } + + wren >>= 1; + } } else { /* deal with error offset,skip error data */ RTW_PRINT("invalid offset:0x%02x\n", offset); for (i = 0; i < EFUSE_MAX_WORD_UNIT; i++) { /* Check word enable condition in the section */ - if (!(wden & 0x01)) { + if (!(wren & 0x01)) { eFuse_Addr++; efuse_utilized++; - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; eFuse_Addr++; efuse_utilized++; - if (!AVAILABLE_EFUSE_ADDR_8812(eFuse_Addr)) + if (eFuse_Addr >= EFUSE_REAL_CONTENT_LEN_JAGUAR) break; } } } /* Read next PG header */ - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + ReadEFuseByte(Adapter, eFuse_Addr, rtemp8, bPseudoTest); /* RTPRINT(FEEPROM, EFUSE_READ_ALL, ("Addr=%d rtemp 0x%x\n", eFuse_Addr, *rtemp8)); */ - if (efuseHeader != 0xFF) + if (*rtemp8 != 0xFF && (eFuse_Addr < EFUSE_REAL_CONTENT_LEN_JAGUAR)) { efuse_utilized++; + eFuse_Addr++; + } } /* */ @@ -1969,7 +1966,6 @@ Hal_EfuseReadEFuse8812A( } } - /* RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Hal_EfuseReadEFuse8812A(): efuse_utilized: %d\n", efuse_utilized)); */ /* */ /* 4. Copy from Efuse map to output pointer memory!!! */ @@ -1982,6 +1978,7 @@ Hal_EfuseReadEFuse8812A( /* */ efuse_usage = (u1Byte)((eFuse_Addr * 100) / EFUSE_REAL_CONTENT_LEN_JAGUAR); rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_BYTES, (u8 *)&eFuse_Addr); + RTW_INFO("%s: eFuse_Addr offset(%#x) !!\n", __FUNCTION__, eFuse_Addr); exit: if (efuseTbl) @@ -2445,7 +2442,7 @@ hal_EfuseGetCurrentSize_8812A(IN PADAPTER pAdapter, efuse_addr = (u16)(fakeEfuseUsedBytes); else rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); - /* RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), start_efuse_addr = %d\n", efuse_addr)); */ + RTW_INFO("%s(), start_efuse_addr = %d\n", __func__, efuse_addr); while (bContinual && efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && @@ -2475,10 +2472,10 @@ hal_EfuseGetCurrentSize_8812A(IN PADAPTER pAdapter, if (bPseudoTest) { fakeEfuseUsedBytes = efuse_addr; - /* RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), return %d\n", fakeEfuseUsedBytes)); */ + RTW_INFO("%s(), return %d\n", __func__, fakeEfuseUsedBytes); } else { rtw_hal_set_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); - /* RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), return %d\n", efuse_addr)); */ + RTW_INFO("%s(), return %d\n", __func__, efuse_addr); } return efuse_addr; @@ -2712,423 +2709,593 @@ rtl8812_Efuse_PgPacketRead(IN PADAPTER pAdapter, return ret; } -int -hal_EfusePgPacketWrite_8812A(IN PADAPTER pAdapter, - IN u8 offset, - IN u8 word_en, - IN u8 *data, - IN BOOLEAN bPseudoTest) + +BOOLEAN +hal_EfuseFixHeaderProcess( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN PPGPKT_STRUCT pFixPkt, + IN u16 *pAddr, + IN BOOLEAN bPseudoTest +) { - u8 WriteState = PG_STATE_HEADER; + u8 originaldata[8], badworden = 0; + u16 efuse_addr = *pAddr; + u32 PgWriteSuccess = 0; - int bContinual = _TRUE, bDataEmpty = _TRUE; - /* int bResult = _TRUE; */ - u16 efuse_addr = 0; - u8 efuse_data; + _rtw_memset((PVOID)originaldata, 0xff, 8); - u8 pg_header = 0, pg_header_temp = 0; + if (Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) { + /* check if data exist */ + badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pFixPkt->word_en, originaldata, bPseudoTest); - u8 tmp_word_cnts = 0, target_word_cnts = 0; - u8 tmp_header, match_word_en, tmp_word_en; + if (badworden != 0xf) { /* write fail */ + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pFixPkt->offset, badworden, originaldata, bPseudoTest); + if (!PgWriteSuccess) + return _FALSE; - PGPKT_STRUCT target_pkt; - PGPKT_STRUCT tmp_pkt; + else + efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); + } else + efuse_addr = efuse_addr + (pFixPkt->word_cnts * 2) + 1; + } else + efuse_addr = efuse_addr + (pFixPkt->word_cnts * 2) + 1; + *pAddr = efuse_addr; + return _TRUE; +} - u8 originaldata[sizeof(u8) * 8]; - u8 tmpindex = 0, badworden = 0x0F; +static u8 +hal_EfusePgPacketWrite2ByteHeader( + PADAPTER padapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + u8 bPseudoTest) +{ + u16 efuse_addr, efuse_max_available_len = 0; + u8 pg_header = 0, tmp_header = 0, pg_header_temp = 0; + u8 repeatcnt = 0; - static int repeat_times = 0; + /* RTW_INFO("%s\n", __FUNCTION__); */ + EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_BANK, &efuse_max_available_len, bPseudoTest); - BOOLEAN bExtendedHeader = _FALSE; - u8 efuseType = EFUSE_WIFI; + efuse_addr = *pAddr; - /* */ - /* Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. */ - /* So we have to prevent unexpected data string connection, which will cause */ - /* incorrect data auto-load from HW. The total size is equal or smaller than 498bytes */ - /* (i.e., offset 0~497, and dummy 1bytes) expected after CP test. */ - /* 2009.02.19. */ - /* */ - if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)) { - RTW_INFO("hal_EfusePgPacketWrite_8812A() error: %x >= %x\n", Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest), (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)); + if (efuse_addr >= efuse_max_available_len) { + RTW_INFO("%s: addr(%d) over available(%d)!!\n", __FUNCTION__, efuse_addr, efuse_max_available_len); return _FALSE; } - /* Init the 8 bytes content as 0xff */ - target_pkt.offset = offset; - target_pkt.word_en = word_en; - /* Initial the value to avoid compile warning */ - tmp_pkt.offset = 0; - tmp_pkt.word_en = 0; + while (efuse_addr < efuse_max_available_len) { + pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - /* RTW_INFO("hal_EfusePgPacketWrite_8812A target offset 0x%x word_en 0x%x\n", target_pkt.offset, target_pkt.word_en); */ + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("%s, Repeat over limit for pg_header!!\n", __FUNCTION__); + return _FALSE; + } - _rtw_memset((PVOID)target_pkt.data, 0xFF, sizeof(u8) * 8); + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); + } - efuse_WordEnableDataRead(word_en, data, target_pkt.data); - target_word_cnts = Efuse_CalculateWordCnts(target_pkt.word_en); + /*to write ext_header*/ + if (tmp_header == pg_header) { + efuse_addr++; + pg_header_temp = pg_header; + pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; - /* efuse_reg_ctrl(pAdapter,_TRUE); */ /* power on */ - /* RTW_INFO("EFUSE Power ON\n"); */ + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - /* */ - /* Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. */ - /* So we have to prevent unexpected data string connection, which will cause */ - /* incorrect data auto-load from HW. Dummy 1bytes is additional. */ - /* 2009.02.19. */ - /* */ - while (bContinual && (efuse_addr < (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR))) { - if (WriteState == PG_STATE_HEADER) { - bDataEmpty = _TRUE; - badworden = 0x0F; - /* ************ so ******************* */ - /* RTW_INFO("EFUSE PG_STATE_HEADER\n"); */ - if (efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && - (efuse_data != 0xFF)) { - if ((efuse_data & 0x1F) == 0x0F) { /* extended header */ - tmp_header = efuse_data; - efuse_addr++; - efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest); - if ((efuse_data & 0x0F) == 0x0F) { /* wren fail */ - u8 next = 0, next_next = 0, data = 0, i = 0; - u8 s = ((tmp_header & 0xF0) >> 4); - efuse_OneByteRead(pAdapter, efuse_addr + 1, &next, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr + 2, &next_next, bPseudoTest); - if (next == 0xFF && next_next == 0xFF) { /* Have enough space to make fake data to recover bad header. */ - switch (s) { - case 0x0: - case 0x2: - case 0x4: - case 0x6: - case 0x8: - case 0xA: - case 0xC: - for (i = 0; i < 3; ++i) { - efuse_OneByteWrite(pAdapter, efuse_addr, 0x27, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &data, bPseudoTest); - if (data == 0x27) - break; - } - break; - case 0xE: - for (i = 0; i < 3; ++i) { - efuse_OneByteWrite(pAdapter, efuse_addr, 0x17, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &data, bPseudoTest); - if (data == 0x17) - break; - } - break; - default: - break; - } - efuse_OneByteWrite(pAdapter, efuse_addr + 1, 0xFF, bPseudoTest); - efuse_OneByteWrite(pAdapter, efuse_addr + 2, 0xFF, bPseudoTest); - efuse_addr += 3; - } else - efuse_addr++; - continue; - } else { - tmp_pkt.offset = ((tmp_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); - tmp_pkt.word_en = efuse_data & 0x0F; - } + + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("%s, Repeat over limit for ext_header!!\n", __FUNCTION__); + return _FALSE; + } + + efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); + } + + if ((tmp_header & 0x0F) == 0x0F) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("Repeat over limit for word_en!!\n"); + return _FALSE; } else { - u8 i = 0, data = 0; - tmp_header = efuse_data; - tmp_pkt.offset = (tmp_header >> 4) & 0x0F; - tmp_pkt.word_en = tmp_header & 0x0F; - - if (tmp_pkt.word_en == 0xF) { - u8 next = 0; - efuse_OneByteRead(pAdapter, efuse_addr + 1, &next, bPseudoTest); - if (next == 0xFF) { /* Have enough space to make fake data to recover bad header. */ - tmp_header = (tmp_header & 0xF0) | 0x7; - for (i = 0; i < 3; ++i) { - efuse_OneByteWrite(pAdapter, efuse_addr, tmp_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &data, bPseudoTest); - if (data == tmp_header) - break; - } - efuse_OneByteWrite(pAdapter, efuse_addr + 1, 0xFF, bPseudoTest); - efuse_OneByteWrite(pAdapter, efuse_addr + 2, 0xFF, bPseudoTest); - efuse_addr += 2; - } - } + efuse_addr++; + continue; } - tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); + } else if (pg_header != tmp_header) { + PGPKT_STRUCT fixPkt; + + RTW_ERR("Error, efuse_PgPacketWrite2ByteHeader(), offset PG fail, need to cover the existed data!!\n"); + RTW_ERR("Error condition for offset PG fail, need to cover the existed data\n"); + fixPkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if (!hal_EfuseFixHeaderProcess(padapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return _FALSE; + } else + break; + } else if ((tmp_header & 0x1F) == 0x0F) {/*wrong extended header*/ + efuse_addr += 2; + continue; + } + } - /* RTW_INFO("section offset 0x%x worden 0x%x\n", tmp_pkt.offset, tmp_pkt.word_en); */ + *pAddr = efuse_addr; - /* ************ so-1 ******************* */ - if (tmp_pkt.offset != target_pkt.offset) { - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; -#endif - } else { /* write the same offset */ - /* RTW_INFO("hal_EfusePgPacketWrite_8812A section offset the same\n"); */ - /* ************ so-2 ******************* */ - for (tmpindex = 0 ; tmpindex < (tmp_word_cnts * 2) ; tmpindex++) { - if (efuse_OneByteRead(pAdapter, (efuse_addr + 1 + tmpindex) , &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) - bDataEmpty = _FALSE; - } - /* ************ so-2-1 ******************* */ - if (bDataEmpty == _FALSE) { - /* RTW_INFO("hal_EfusePgPacketWrite_8812A section offset the same and data is NOT empty\n"); */ + return _TRUE; +} - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; -#endif - } else { - /* ************ so-2-2 ******************* */ - /* RTW_INFO("hal_EfusePgPacketWrite_8812A section data empty\n"); */ - match_word_en = 0x0F; /* same bit as original wren */ - if (!((target_pkt.word_en & BIT0) | (tmp_pkt.word_en & BIT0))) - match_word_en &= (~BIT0); - if (!((target_pkt.word_en & BIT1) | (tmp_pkt.word_en & BIT1))) - match_word_en &= (~BIT1); - if (!((target_pkt.word_en & BIT2) | (tmp_pkt.word_en & BIT2))) - match_word_en &= (~BIT2); - if (!((target_pkt.word_en & BIT3) | (tmp_pkt.word_en & BIT3))) - match_word_en &= (~BIT3); - - /* ************ so-2-2-A ******************* */ - if ((match_word_en & 0x0F) != 0x0F) { - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, tmp_pkt.word_en , target_pkt.data, bPseudoTest); - - /* ************ so-2-2-A-1 ******************* */ - /* ############################ */ - if (0x0F != (badworden & 0x0F)) { - u8 reorg_offset = offset; - u8 reorg_worden = badworden; - Efuse_PgPacketWrite(pAdapter, reorg_offset, reorg_worden, target_pkt.data, bPseudoTest); - } - /* ############################ */ - - tmp_word_en = 0x0F; /* not the same bit as original wren */ - if ((target_pkt.word_en & BIT0) ^ (match_word_en & BIT0)) - tmp_word_en &= (~BIT0); - if ((target_pkt.word_en & BIT1) ^ (match_word_en & BIT1)) - tmp_word_en &= (~BIT1); - if ((target_pkt.word_en & BIT2) ^ (match_word_en & BIT2)) - tmp_word_en &= (~BIT2); - if ((target_pkt.word_en & BIT3) ^ (match_word_en & BIT3)) - tmp_word_en &= (~BIT3); - - /* ************ so-2-2-A-2 ******************* */ - if ((tmp_word_en & 0x0F) != 0x0F) { - /* reorganize other pg packet - * efuse_addr = efuse_addr + (2*tmp_word_cnts) +1; */ /* next pg packet addr */ - efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); - /* =========================== */ - target_pkt.offset = offset; - target_pkt.word_en = tmp_word_en; - /* =========================== */ - } else - bContinual = _FALSE; -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - } -#endif - } else { /* ************ so-2-2-B ******************* */ - /* reorganize other pg packet */ - efuse_addr = efuse_addr + (2 * tmp_word_cnts) + 1; /* next pg packet addr */ - /* =========================== */ - target_pkt.offset = offset; - /* target_pkt.word_en= target_pkt.word_en; */ - /* =========================== */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; -#endif - } - } - } - RTW_INFO("EFUSE PG_STATE_HEADER-1\n"); - } else { /* ************ s1: header == oxff ******************* */ - bExtendedHeader = _FALSE; - if (target_pkt.offset >= EFUSE_MAX_SECTION_BASE) { - pg_header = ((target_pkt.offset & 0x07) << 5) | 0x0F; +static u8 +hal_EfusePgPacketWrite1ByteHeader( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + u8 bPseudoTest) +{ + u8 bRet = _FALSE; + u8 pg_header = 0, tmp_header = 0; + u16 efuse_addr = *pAddr; + u8 repeatcnt = 0; + + RTW_INFO("%s\n", __func__); + pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; + + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { + RTW_INFO("retry %d times fail!!\n", repeatcnt); + return FALSE; + } + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); + efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + RTW_INFO("===> %s: Keep %d-th retrying, tmp_header = 0x%X\n", __func__, repeatcnt, tmp_header); + } - /* RTW_INFO("hal_EfusePgPacketWrite_8812A extended pg_header[2:0] |0x0F 0x%x\n", pg_header); */ + if (tmp_header != pg_header) { + PGPKT_STRUCT fixPkt; - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + RTW_INFO("Error, %s(), offset PG fail, need to cover the existed data!!\n", __func__); + RTW_INFO("pg_header(0x%X) != tmp_header(0x%X)\n", pg_header, tmp_header); + RTW_INFO("Error condition for fixed PG packet, need to cover the existed data: (Addr, Data) = (0x%X, 0x%X)\n", + efuse_addr, tmp_header); + fixPkt.offset = (tmp_header>>4) & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + return FALSE; + } - while (tmp_header == 0xFF) { - /* RTW_INFO("hal_EfusePgPacketWrite_8812A extended pg_header[2:0] wirte fail\n"); */ + *pAddr = efuse_addr; + + return _TRUE; +} + + +static u8 +hal_EfusePgPacketWriteData( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + u8 bPseudoTest) +{ + u16 efuse_addr; + u8 badworden; + + + efuse_addr = *pAddr; + badworden = rtl8812_Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); + if (badworden != 0x0F) { + RTW_INFO("%s: Fail!!\n", __FUNCTION__); + return _FALSE; + } + + /* RTW_INFO("%s: ok\n", __FUNCTION__); */ + return _TRUE; +} + +BOOLEAN efuse_PgPacketCheck( + PADAPTER pAdapter, + u8 efuseType, + BOOLEAN bPseudoTest +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + + if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)) { + RTW_INFO("%s()error: %x >= %x\n", __func__, Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest), (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)); + return _FALSE; + } + + return _TRUE; +} - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - efuse_addr++; +VOID +efuse_PgPacketConstruct( + IN u8 offset, + IN u8 word_en, + IN u8 *pData, + IN OUT PPGPKT_STRUCT pTargetPkt +) +{ + _rtw_memset((PVOID)pTargetPkt->data, 0xFF, sizeof(u8) * 8); + pTargetPkt->offset = offset; + pTargetPkt->word_en = word_en; + efuse_WordEnableDataRead(word_en, pData, pTargetPkt->data); + pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); + + RTW_INFO("efuse_PgPacketConstruct(), targetPkt, offset=%d, word_en=0x%x, word_cnts=%d\n", pTargetPkt->offset, pTargetPkt->word_en, pTargetPkt->word_cnts); +} + +u2Byte +Hal_EfusePgPacketExceptionHandle_8812A( + PADAPTER pAdapter, + u2Byte ErrOffset + ) +{ + BOOLEAN bPseudoTest = FALSE; + u8 next = 0, next_next = 0, data = 0, i = 0, header = 0; + u8 s = 0; + u2Byte offset = ErrOffset; + + efuse_OneByteRead(pAdapter, offset, &header, bPseudoTest); + + if (EXT_HEADER(header)) { + s = ((header & 0xF0) >> 4); + + /* Skip bad word enable to look two bytes ahead and determine if recoverable.*/ + offset += 1; + efuse_OneByteRead(pAdapter, offset+1, &next, bPseudoTest); + efuse_OneByteRead(pAdapter, offset+2, &next_next, bPseudoTest); + if (next == 0xFF && next_next == 0xFF) {/* Have enough space to make fake data to recover bad header.*/ + switch (s) { + case 0x0: case 0x2: case 0x4: case 0x6: + case 0x8: case 0xA: case 0xC: + for (i = 0; i < 3; ++i) { + efuse_OneByteWrite(pAdapter, offset, 0x27, bPseudoTest); + efuse_OneByteRead(pAdapter, offset, &data, bPseudoTest); + if (data == 0x27) break; - } - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); } + break; + case 0xE: + for (i = 0; i < 3; ++i) { + efuse_OneByteWrite(pAdapter, offset, 0x17, bPseudoTest); + efuse_OneByteRead(pAdapter, offset, &data, bPseudoTest); + if (data == 0x17) + break; - if (!bContinual) + break; + default: + break; + } + efuse_OneByteWrite(pAdapter, offset+1, 0xFF, bPseudoTest); + efuse_OneByteWrite(pAdapter, offset+2, 0xFF, bPseudoTest); + offset += 3; + ErrOffset = offset; + } + } else {/* 1-Byte header*/ + if (ALL_WORDS_DISABLED(header)) { + u8 next = 0; + + efuse_OneByteRead(pAdapter, offset+1, &next, bPseudoTest); + if (next == 0xFF) {/* Have enough space to make fake data to recover bad header.*/ + header = (header & 0xF0) | 0x7; + for (i = 0; i < 3; ++i) { + efuse_OneByteWrite(pAdapter, offset, header, bPseudoTest); + efuse_OneByteRead(pAdapter, offset, &data, bPseudoTest); + if (data == header) break; + } + efuse_OneByteWrite(pAdapter, offset+1, 0xFF, bPseudoTest); + efuse_OneByteWrite(pAdapter, offset+2, 0xFF, bPseudoTest); + offset += 2; + ErrOffset = offset; + } + } + } + } - if (tmp_header == pg_header) { - efuse_addr++; - pg_header_temp = pg_header; - pg_header = ((target_pkt.offset & 0x78) << 1) | target_pkt.word_en; + return ErrOffset; +} - /* RTW_INFO("hal_EfusePgPacketWrite_8812A extended pg_header[6:3] | worden 0x%x word_en 0x%x\n", pg_header, target_pkt.word_en); */ +BOOLEAN hal_EfuseCheckIfDatafollowed( + IN PADAPTER pAdapter, + IN u8 word_cnts, + IN u16 startAddr, + IN BOOLEAN bPseudoTest +) +{ + BOOLEAN bRet = FALSE; + u8 i, efuse_data; - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + for (i = 0; i < (word_cnts * 2) ; i++) { + if (efuse_OneByteRead(pAdapter, (startAddr + i) , &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) + bRet = TRUE; + } - while (tmp_header == 0xFF) { - repeat_times++; + return bRet; +} - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - break; - } - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - } +BOOLEAN +hal_EfuseWordEnMatched( + IN PPGPKT_STRUCT pTargetPkt, + IN PPGPKT_STRUCT pCurPkt, + IN u8 *pWden +) +{ + u8 match_word_en = 0x0F; /* default all words are disabled */ - if (!bContinual) - break; + /* check if the same words are enabled both target and current PG packet */ + if (((pTargetPkt->word_en & BIT0) == 0) && + ((pCurPkt->word_en & BIT0) == 0)) { + match_word_en &= ~BIT0; /* enable word 0 */ + } + if (((pTargetPkt->word_en & BIT1) == 0) && + ((pCurPkt->word_en & BIT1) == 0)) { + match_word_en &= ~BIT1; /* enable word 1 */ + } + if (((pTargetPkt->word_en & BIT2) == 0) && + ((pCurPkt->word_en & BIT2) == 0)) { + match_word_en &= ~BIT2; /* enable word 2 */ + } + if (((pTargetPkt->word_en & BIT3) == 0) && + ((pCurPkt->word_en & BIT3) == 0)) { + match_word_en &= ~BIT3; /* enable word 3 */ + } - if ((tmp_header & 0x0F) == 0x0F) { /* wren PG fail */ - repeat_times++; - - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ - break; - } else { - efuse_addr++; - continue; - } - } else if (pg_header != tmp_header) { /* offset PG fail */ - bExtendedHeader = _TRUE; - tmp_pkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); - tmp_pkt.word_en = tmp_header & 0x0F; - tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); - } - } else if ((tmp_header & 0x1F) == 0x0F) { /* wrong extended header */ - efuse_addr += 2; + *pWden = match_word_en; + + if (match_word_en != 0xf) + return TRUE; + else + return FALSE; +} + + +BOOLEAN +efuse_PgPacketPartialWrite( + IN PADAPTER pAdapter, + IN u8 efuseType, + IN OUT u16 *pAddr, + IN PPGPKT_STRUCT pTargetPkt, + IN BOOLEAN bPseudoTest +) +{ + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); + PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); + BOOLEAN bRet = _FALSE; + u8 i, efuse_data = 0, cur_header = 0; + u8 matched_wden = 0, badworden = 0; + u16 startAddr = 0; + PGPKT_STRUCT curPkt; + u16 max_sec_num = (efuseType == EFUSE_WIFI) ? pEfuseHal->MaxSecNum_WiFi : pEfuseHal->MaxSecNum_BT; + u16 efuse_max = pEfuseHal->BankSize; + u16 efuse_max_available_len = + (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; + + RTW_INFO("efuse_PgPacketPartialWrite()\n"); + + if (bPseudoTest) { + pEfuseHal->fakeEfuseBank = (efuseType == EFUSE_WIFI) ? 0 : pEfuseHal->fakeEfuseBank; + Efuse_GetCurrentSize(pAdapter, efuseType, _TRUE); + } + + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, bPseudoTest); + EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max, bPseudoTest); + + if (efuseType == EFUSE_WIFI) { + if (bPseudoTest) { +#ifdef HAL_EFUSE_MEMORY + startAddr = (u16)pEfuseHal->fakeEfuseUsedBytes; +#else + startAddr = (u16)fakeEfuseUsedBytes; +#endif + + } else + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&startAddr); + } else { + if (bPseudoTest) { +#ifdef HAL_EFUSE_MEMORY + startAddr = (u16)pEfuseHal->fakeBTEfuseUsedBytes; +#else + startAddr = (u16)fakeBTEfuseUsedBytes; +#endif + + } else + rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BT_BYTES, (u8 *)&startAddr); + } + + startAddr %= efuse_max; + RTW_INFO("%s: startAddr=%#X\n", __FUNCTION__, startAddr); + RTW_INFO("efuse_PgPacketPartialWrite(), startAddr = 0x%X\n", startAddr); + + while (1) { + if (startAddr >= efuse_max_available_len) { + bRet = _FALSE; + RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", + startAddr, efuse_max_available_len); + break; + } + + if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data != 0xFF)) { + if (EXT_HEADER(efuse_data)) { + cur_header = efuse_data; + startAddr++; + efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); + if (ALL_WORDS_DISABLED(efuse_data)) { + u16 recoveredAddr = startAddr; + + recoveredAddr = Hal_EfusePgPacketExceptionHandle_8812A(pAdapter, startAddr - 1); + + if (recoveredAddr == (startAddr - 1)) { + RTW_INFO("Error! All words disabled and the recovery failed, (Addr, Data) = (0x%X, 0x%X)\n", + startAddr, efuse_data); + pAdapter->LastError = ERR_INVALID_DATA; + break; + + } else { + startAddr = recoveredAddr; + RTW_INFO("Bad extension header but recovered => Keep going.\n"); continue; } } else { - pg_header = ((target_pkt.offset << 4) & 0xf0) | target_pkt.word_en; - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); + curPkt.offset = ((cur_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); + curPkt.word_en = efuse_data & 0x0F; } + } else { + if (ALL_WORDS_DISABLED(efuse_data)) { + u16 recoveredAddr = startAddr; - if (tmp_header == pg_header) { - /* ************ s1-1******************* */ - WriteState = PG_STATE_DATA; - } -#if (EFUSE_ERROE_HANDLE == 1) - else if (tmp_header == 0xFF) { /* ************ s1-3: if Write or read func doesn't work ******************* */ - /* efuse_addr doesn't change */ - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ + recoveredAddr = Hal_EfusePgPacketExceptionHandle_8812A(pAdapter, startAddr); + if (recoveredAddr != startAddr) { + efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); + RTW_INFO("Bad header but recovered => Read header again.\n"); } } -#endif - else { - /* ************ s1-2 : fixed the header procedure ******************* */ - if (!bExtendedHeader) { - tmp_pkt.offset = (tmp_header >> 4) & 0x0F; - tmp_pkt.word_en = tmp_header & 0x0F; - tmp_word_cnts = Efuse_CalculateWordCnts(tmp_pkt.word_en); - } - /* ************ s1-2-A :cover the exist data ******************* */ - _rtw_memset(originaldata, 0xff, sizeof(u8) * 8); - - if (Efuse_PgPacketRead(pAdapter, tmp_pkt.offset, originaldata, bPseudoTest)) { - /* check if data exist */ - /* efuse_reg_ctrl(pAdapter,_TRUE); */ /* power on */ - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, tmp_pkt.word_en, originaldata, bPseudoTest); - /* ############################ */ - if (0x0F != (badworden & 0x0F)) { - u8 reorg_offset = tmp_pkt.offset; - u8 reorg_worden = badworden; - Efuse_PgPacketWrite(pAdapter, reorg_offset, reorg_worden, originaldata, bPseudoTest); - efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); - } - /* ############################ */ - else { - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ - } - } - /* ************ s1-2-B: wrong address******************* */ - else { - efuse_addr = efuse_addr + (tmp_word_cnts * 2) + 1; /* Next pg_packet */ - } + cur_header = efuse_data; + curPkt.offset = (cur_header >> 4) & 0x0F; + curPkt.word_en = cur_header & 0x0F; + } + if (curPkt.offset > max_sec_num) { + pAdapter->LastError = ERR_OUT_OF_RANGE; + pEfuseHal->Status = ERR_OUT_OF_RANGE; + bRet = _FALSE; + break; + } -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ + curPkt.word_cnts = Efuse_CalculateWordCnts(curPkt.word_en); + /* if same header is found but no data followed */ + /* write some part of data followed by the header. */ + if ((curPkt.offset == pTargetPkt->offset) && + (!hal_EfuseCheckIfDatafollowed(pAdapter, curPkt.word_cnts, startAddr + 1, bPseudoTest)) && + hal_EfuseWordEnMatched(pTargetPkt, &curPkt, &matched_wden)) { + RTW_INFO("Need to partial write data by the previous wrote header\n"); + /* RT_ASSERT(_FALSE, ("Error, Need to partial write data by the previous wrote header!!\n")); */ + /* Here to write partial data */ + badworden = Efuse_WordEnableDataWrite(pAdapter, startAddr + 1, matched_wden, pTargetPkt->data, bPseudoTest); + if (badworden != 0x0F) { + u32 PgWriteSuccess = 0; + /* if write fail on some words, write these bad words again */ + + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); + + if (!PgWriteSuccess) { + bRet = _FALSE; /* write fail, return */ + break; } -#endif - - /* RTW_INFO("EFUSE PG_STATE_HEADER-2\n"); */ } - - } - - } - /* write data state */ - else if (WriteState == PG_STATE_DATA) { - /* ************ s1-1 ******************* */ - /* RTW_INFO("EFUSE PG_STATE_DATA\n"); */ - badworden = 0x0f; - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, target_pkt.word_en, target_pkt.data, bPseudoTest); - if ((badworden & 0x0F) == 0x0F) { - /* ************ s1-1-A ******************* */ - bContinual = _FALSE; - } else { - /* reorganize other pg packet */ /* ************ s1-1-B ******************* */ - efuse_addr = efuse_addr + (2 * target_word_cnts) + 1; /* next pg packet addr */ - - /* =========================== */ - target_pkt.offset = offset; - target_pkt.word_en = badworden; - target_word_cnts = Efuse_CalculateWordCnts(target_pkt.word_en); - /* =========================== */ -#if (EFUSE_ERROE_HANDLE == 1) - WriteState = PG_STATE_HEADER; - repeat_times++; - if (repeat_times > EFUSE_REPEAT_THRESHOLD_) { - bContinual = _FALSE; - /* bResult = _FALSE; */ + /* partial write ok, update the target packet for later use */ + for (i = 0; i < 4; i++) { + if ((matched_wden & (0x1 << i)) == 0) { /* this word has been written */ + pTargetPkt->word_en |= (0x1 << i); /* disable the word */ + } } -#endif - /* RTW_INFO("EFUSE PG_STATE_HEADER-3\n"); */ + pTargetPkt->word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); } + /* read from next header */ + startAddr = startAddr + (curPkt.word_cnts * 2) + 1; + } else { + /* not used header, 0xff */ + *pAddr = startAddr; + RTW_INFO("Started from unused header offset=%d\n", startAddr); + bRet = _TRUE; + break; } } + return bRet; +} - if (efuse_addr >= (EFUSE_REAL_CONTENT_LEN_JAGUAR - EFUSE_OOB_PROTECT_BYTES_JAGUAR)) - RTW_INFO("hal_EfusePgPacketWrite_8812A(): efuse_addr(%#x) Out of size!!\n", efuse_addr); - /* efuse_reg_ctrl(pAdapter,_FALSE); */ /* power off */ +BOOLEAN efuse_PgPacketWriteHeader( + PADAPTER pAdapter, + u8 efuseType, + u16 *pAddr, + PPGPKT_STRUCT pTargetPkt, + BOOLEAN bPseudoTest) +{ + BOOLEAN bRet = _FALSE; + + if (pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) + bRet = hal_EfusePgPacketWrite2ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + else + bRet = hal_EfusePgPacketWrite1ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); + + return bRet; +} + +int +hal_EfusePgPacketWrite_8812A(IN PADAPTER pAdapter, + u8 offset, + u8 word_en, + u8 *pData, + BOOLEAN bPseudoTest) +{ + u8 efuseType = EFUSE_WIFI; + PGPKT_STRUCT targetPkt; + u16 startAddr = 0; + RTW_INFO("===> efuse_PgPacketWrite[%s], offset: 0x%X\n", (efuseType == EFUSE_WIFI) ? "WIFI" : "BT", offset); + + /* 4 [1] Check if the remaining space is available to write. */ + if (!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) { + pAdapter->LastError = ERR_WRITE_PROTECT; + RTW_INFO("efuse_PgPacketCheck(), fail!!\n"); + return _FALSE; + } + + /* 4 [2] Construct a packet to write: (Data, Offset, and WordEnable) */ + efuse_PgPacketConstruct(offset, word_en, pData, &targetPkt); + + /* 4 [3] Fix headers without data or fix bad headers, and then return the address where to get started. */ + if (!efuse_PgPacketPartialWrite(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_INVALID_DATA; + RTW_INFO("efuse_PgPacketPartialWrite(), fail!!\n"); + return _FALSE; + } + + /* 4 [4] Write the (extension) header. */ + if (!efuse_PgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_IO_FAILURE; + RTW_INFO("efuse_PgPacketWriteHeader(), fail!!\n"); + return _FALSE; + } + + /* 4 [5] Write the data. */ + if (!hal_EfusePgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { + pAdapter->LastError = ERR_IO_FAILURE; + RTW_INFO("efuse_PgPacketWriteData(), fail!!\n"); + return _FALSE; + } + + RTW_INFO("<=== efuse_PgPacketWrite\n"); return _TRUE; } +static VOID +rtl8812_EfusePowerSwitch( + IN PADAPTER pAdapter, + IN u8 bWrite, + IN u8 PwrState) +{ + + Hal_EfusePowerSwitch8812A(pAdapter, bWrite, PwrState); + +} + static int rtl8812_Efuse_PgPacketWrite(IN PADAPTER pAdapter, IN u8 offset, @@ -3136,7 +3303,7 @@ rtl8812_Efuse_PgPacketWrite(IN PADAPTER pAdapter, IN u8 *data, IN BOOLEAN bPseudoTest) { - int ret; + int ret; ret = hal_EfusePgPacketWrite_8812A(pAdapter, offset, word_en, data, bPseudoTest); @@ -3242,110 +3409,6 @@ hal_EfusePartialWriteCheck( return bRet; } -static u8 -hal_EfusePgPacketWrite2ByteHeader( - PADAPTER padapter, - u8 efuseType, - u16 *pAddr, - PPGPKT_STRUCT pTargetPkt, - u8 bPseudoTest) -{ - u16 efuse_addr, efuse_max_available_len = 0; - u8 pg_header = 0, tmp_header = 0; - u8 repeatcnt = 0; - - - /* RTW_INFO("%s\n", __FUNCTION__); */ - EFUSE_GetEfuseDefinition(padapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_BANK, &efuse_max_available_len, bPseudoTest); - - efuse_addr = *pAddr; - if (efuse_addr >= efuse_max_available_len) { - RTW_INFO("%s: addr(%d) over available(%d)!!\n", __FUNCTION__, efuse_addr, efuse_max_available_len); - return _FALSE; - } - - pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; - /* RTW_INFO("%s: pg_header=0x%x\n", __FUNCTION__, pg_header); */ - - do { - efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - RTW_INFO("%s: Repeat over limit for pg_header!!\n", __FUNCTION__); - return _FALSE; - } - } while (1); - - if (tmp_header != pg_header) { - RTW_INFO(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header); - return _FALSE; - } - - /* to write ext_header */ - efuse_addr++; - pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; - - do { - efuse_OneByteWrite(padapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(padapter, efuse_addr, &tmp_header, bPseudoTest); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - RTW_INFO("%s: Repeat over limit for ext_header!!\n", __FUNCTION__); - return _FALSE; - } - } while (1); - - if (tmp_header != pg_header) { /* offset PG fail */ - RTW_INFO(KERN_ERR "%s: PG EXT Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header); - return _FALSE; - } - - *pAddr = efuse_addr; - - return _TRUE; -} - -static u8 -hal_EfusePgPacketWrite1ByteHeader( - PADAPTER pAdapter, - u8 efuseType, - u16 *pAddr, - PPGPKT_STRUCT pTargetPkt, - u8 bPseudoTest) -{ - u8 bRet = _FALSE; - u8 pg_header = 0, tmp_header = 0; - u16 efuse_addr = *pAddr; - u8 repeatcnt = 0; - - - /* RTW_INFO("%s\n", __FUNCTION__); */ - pg_header = ((pTargetPkt->offset << 4) & 0xf0) | pTargetPkt->word_en; - - do { - efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); - efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - if (tmp_header != 0xFF) - break; - if (repeatcnt++ > EFUSE_REPEAT_THRESHOLD_) { - RTW_INFO("%s: Repeat over limit for pg_header!!\n", __FUNCTION__); - return _FALSE; - } - } while (1); - - if (tmp_header != pg_header) { - RTW_INFO(KERN_ERR "%s: PG Header Fail!!(pg=0x%02X read=0x%02X)\n", __FUNCTION__, pg_header, tmp_header); - return _FALSE; - } - - *pAddr = efuse_addr; - - return _TRUE; -} - static u8 hal_EfusePgPacketWriteHeader( PADAPTER padapter, @@ -3364,30 +3427,6 @@ hal_EfusePgPacketWriteHeader( return bRet; } -static u8 -hal_EfusePgPacketWriteData( - PADAPTER pAdapter, - u8 efuseType, - u16 *pAddr, - PPGPKT_STRUCT pTargetPkt, - u8 bPseudoTest) -{ - u16 efuse_addr; - u8 badworden; - - - efuse_addr = *pAddr; - badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr + 1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); - if (badworden != 0x0F) { - RTW_INFO("%s: Fail!!\n", __FUNCTION__); - return _FALSE; - } - - /* RTW_INFO("%s: ok\n", __FUNCTION__); */ - return _TRUE; -} - - static u8 Hal_EfusePgPacketWrite_BT( PADAPTER pAdapter, @@ -6351,7 +6390,7 @@ u8 GetHalDefVar8812A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) break; case HAL_DEF_RX_STBC: - *(u8 *)pval = 1; + *(u8 *)pval = 2; break; case HAL_DEF_EXPLICIT_BEAMFORMER: diff --git a/hal/rtl8814a/Hal8814PwrSeq.c b/hal/rtl8814a/Hal8814PwrSeq.c index c11a36e96..6370cbe3a 100644 --- a/hal/rtl8814a/Hal8814PwrSeq.c +++ b/hal/rtl8814a/Hal8814PwrSeq.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -21,7 +21,7 @@ #include "Hal8814PwrSeq.h" #include -/* +/* drivers should parse below arrays and do the corresponding actions */ //3 Power on Array @@ -50,7 +50,7 @@ WLAN_PWR_CFG rtl8814A_card_disable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8 WLAN_PWR_CFG rtl8814A_card_enable_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8814A_TRANS_END_STEPS]= { RTL8814A_TRANS_CARDDIS_TO_CARDEMU - RTL8814A_TRANS_CARDEMU_TO_ACT + RTL8814A_TRANS_CARDEMU_TO_ACT RTL8814A_TRANS_END }; @@ -70,29 +70,26 @@ WLAN_PWR_CFG rtl8814A_resume_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_T RTL8814A_TRANS_END }; - - //3HWPDN Array WLAN_PWR_CFG rtl8814A_hwpdn_flow[RTL8814A_TRANS_ACT_TO_CARDEMU_STEPS+RTL8814A_TRANS_CARDEMU_TO_PDN_STEPS+RTL8814A_TRANS_END_STEPS]= { RTL8814A_TRANS_ACT_TO_CARDEMU - RTL8814A_TRANS_CARDEMU_TO_PDN + RTL8814A_TRANS_CARDEMU_TO_PDN RTL8814A_TRANS_END }; -//3 Enter LPS +//3 Enter LPS WLAN_PWR_CFG rtl8814A_enter_lps_flow[RTL8814A_TRANS_ACT_TO_LPS_STEPS+RTL8814A_TRANS_END_STEPS]= { //FW behavior - RTL8814A_TRANS_ACT_TO_LPS + RTL8814A_TRANS_ACT_TO_LPS RTL8814A_TRANS_END }; -//3 Leave LPS +//3 Leave LPS WLAN_PWR_CFG rtl8814A_leave_lps_flow[RTL8814A_TRANS_LPS_TO_ACT_STEPS+RTL8814A_TRANS_END_STEPS]= { //FW behavior RTL8814A_TRANS_LPS_TO_ACT RTL8814A_TRANS_END }; - diff --git a/hal/rtl8814a/rtl8814a_cmd.c b/hal/rtl8814a/rtl8814a_cmd.c index ef9e01fea..48c8d9b57 100644 --- a/hal/rtl8814a/rtl8814a_cmd.c +++ b/hal/rtl8814a/rtl8814a_cmd.c @@ -39,14 +39,14 @@ static u8 _is_fw_read_cmd_down(_adapter* padapter, u8 msgbox_num) //RTW_INFO(" _is_fw_read_cmd_down ,reg_1cc(%x),msg_box(%d)...\n",rtw_read8(padapter,REG_HMETFR),msgbox_num); - do{ + do { valid = rtw_read8(padapter,REG_HMETFR) & BIT(msgbox_num); - if(0 == valid ){ + if (0 == valid ){ read_down = _TRUE; } else rtw_msleep_os(1); - }while( (!read_down) && (retry_cnts--)); + } while( (!read_down) && (retry_cnts--)); return read_down; @@ -74,12 +74,11 @@ s32 FillH2CCmd_8814(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer) u32 h2c_cmd_ex = 0; s32 ret = _FAIL; - padapter = GET_PRIMARY_ADAPTER(padapter); + padapter = GET_PRIMARY_ADAPTER(padapter); pHalData = GET_HAL_DATA(padapter); - - if(padapter->bFWReady == _FALSE) - { + + if(padapter->bFWReady == _FALSE) { //RTW_INFO("FillH2CCmd_8814(): return H2C cmd because fw is not ready\n"); return ret; } @@ -97,29 +96,28 @@ s32 FillH2CCmd_8814(PADAPTER padapter, u8 ElementID, u32 CmdLen, u8 *pCmdBuffer) goto exit; //pay attention to if race condition happened in H2C cmd setting. - do{ + do { h2c_box_num = pHalData->LastHMEBoxNum; - if(!_is_fw_read_cmd_down(padapter, h2c_box_num)){ + if (!_is_fw_read_cmd_down(padapter, h2c_box_num)){ RTW_INFO(" fw read cmd failed...\n"); goto exit; } *(u8*)(&h2c_cmd) = ElementID; - if(CmdLen<=3) - { + if(CmdLen<=3) { _rtw_memcpy((u8*)(&h2c_cmd)+1, pCmdBuffer, CmdLen ); } - else{ + else { _rtw_memcpy((u8*)(&h2c_cmd)+1, pCmdBuffer,3); - ext_cmd_len = CmdLen-3; + ext_cmd_len = CmdLen-3; _rtw_memcpy((u8*)(&h2c_cmd_ex), pCmdBuffer+3,ext_cmd_len ); //Write Ext command msgbox_ex_addr = REG_HMEBOX_EXT0_8814A + (h2c_box_num *RTL8814_EX_MESSAGE_BOX_SIZE); #ifdef CONFIG_H2C_EF - for(cmd_idx=0;cmd_idxLastHMEBoxNum ,CmdLen,msgbox_addr,h2c_cmd,msgbox_ex_addr,h2c_cmd_ex); pHalData->LastHMEBoxNum = (h2c_box_num+1) % RTL8814_MAX_H2C_BOX_NUMS; - - }while(0); + + } while(0); ret = _SUCCESS; exit: - _exit_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); + _exit_critical_mutex(&(adapter_to_dvobj(padapter)->h2c_fwcmd_mutex), NULL); return ret; } @@ -170,7 +168,7 @@ void rtl8814_fw_update_beacon_cmd(_adapter *padapter) { u8 param[2] = {0}; u16 txpktbuf_bndy; - + SET_8814A_H2CCMD_BCNHWSEQ_EN(param, 1); SET_8814A_H2CCMD_BCNHWSEQ_BCN_NUMBER(param, 0); SET_8814A_H2CCMD_BCNHWSEQ_HWSEQ(param, 1); @@ -181,7 +179,7 @@ void rtl8814_fw_update_beacon_cmd(_adapter *padapter) FillH2CCmd_8814(padapter, 0xC2, 2, param); else FillH2CCmd_8814(padapter, H2C_BCNHWSEQ, 2, param); - + /*RTW_INFO("%s, %d, correct beacon HW sequence, FirmwareVersion=%d, H2C_BCNHWSEQ=%d\n", __func__, __LINE__, GET_HAL_DATA(padapter)->FirmwareVersion, H2C_BCNHWSEQ);*/ } @@ -194,29 +192,27 @@ u8 Get_VHT_ENI( { u8 Ret = 0; - if(WirelessMode == WIRELESS_11_24AC) - { - if(ratr_bitmap & 0xfff00000) // Mix , 2SS + if (WirelessMode == WIRELESS_11_24AC) { + if (ratr_bitmap & 0xfff00000) // Mix , 2SS Ret = 3; else // Mix, 1SS Ret = 2; } - else if(WirelessMode == WIRELESS_11_5AC) - { + else if (WirelessMode == WIRELESS_11_5AC) { Ret = 1; // VHT } return (Ret << 4); } -BOOLEAN -Get_RA_ShortGI_8814( +BOOLEAN +Get_RA_ShortGI_8814( PADAPTER Adapter, struct sta_info *psta, u8 shortGIrate, u32 ratr_bitmap ) -{ +{ BOOLEAN bShortGI; struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); @@ -224,13 +220,13 @@ Get_RA_ShortGI_8814( bShortGI = shortGIrate; #ifdef CONFIG_80211AC_VHT - if( bShortGI && + if ( bShortGI && IsSupportedVHT(psta->wireless_mode) && (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP) && TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX) ) { - if(ratr_bitmap & 0xC0000000) + if (ratr_bitmap & 0xC0000000) bShortGI = _FALSE; } #endif //CONFIG_80211AC_VHT @@ -245,19 +241,17 @@ Set_RA_LDPC_8814( BOOLEAN bLDPC ) { - if(psta == NULL) + if (psta == NULL) return; #ifdef CONFIG_80211AC_VHT - if(psta->wireless_mode == WIRELESS_11_5AC) - { - if(bLDPC && TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) + if (psta->wireless_mode == WIRELESS_11_5AC) { + if (bLDPC && TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) SET_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX); else CLEAR_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_TX); } - else if(IsSupportedHT(psta->wireless_mode) || IsSupportedVHT(psta->wireless_mode)) - { - if(bLDPC && TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) + else if(IsSupportedHT(psta->wireless_mode) || IsSupportedVHT(psta->wireless_mode)) { + if (bLDPC && TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) SET_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_ENABLE_TX); else CLEAR_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_ENABLE_TX); @@ -270,33 +264,31 @@ Set_RA_LDPC_8814( } -u8 +u8 Get_RA_LDPC_8814( struct sta_info *psta ) -{ +{ u8 bLDPC = 0; if (psta != NULL) { - if(psta->mac_id == 1) { + if (psta->mac_id == 1) { bLDPC = 0; } else { #ifdef CONFIG_80211AC_VHT - if(IsSupportedVHT(psta->wireless_mode)) + if (IsSupportedVHT(psta->wireless_mode)) { - if(TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) + if (TEST_FLAG(psta->vhtpriv.ldpc_cap, LDPC_VHT_CAP_TX)) bLDPC = 1; else bLDPC = 0; - } - else if(IsSupportedHT(psta->wireless_mode)) - { - if(TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) + } + else if (IsSupportedHT(psta->wireless_mode)) { + if (TEST_FLAG(psta->htpriv.ldpc_cap, LDPC_HT_CAP_TX)) bLDPC =1; else bLDPC =0; - } - else + } else #endif bLDPC = 0; } @@ -326,29 +318,27 @@ void rtl8814_set_raid_cmd(PADAPTER padapter, u64 bitmap, u8* arg, u8 bw) } - if(pHalData->fw_ractrl == _TRUE) - { + if (pHalData->fw_ractrl == _TRUE) { u8 H2CCommand[7] ={0}; shortGIrate = Get_RA_ShortGI_8814(padapter, psta, shortGIrate, bitmap); - + H2CCommand[0] = macid; H2CCommand[1] = (raid & 0x1F) | (shortGIrate?0x80:0x00) ; H2CCommand[2] = (psta->bw_mode & 0x3) |Get_RA_LDPC_8814(psta) |Get_VHT_ENI(0, psta->wireless_mode, bitmap); //DisableTXPowerTraining - if(pHalData->bDisableTXPowerTraining){ + if (pHalData->bDisableTXPowerTraining) { H2CCommand[2] |= BIT6; RTW_INFO("%s,Disable PWT by driver\n",__FUNCTION__); - } - else{ + } else { PDM_ODM_T pDM_OutSrc = &pHalData->odmpriv; - - if(pDM_OutSrc->bDisablePowerTraining){ + + if (pDM_OutSrc->bDisablePowerTraining){ H2CCommand[2] |= BIT6; RTW_INFO("%s, Disable PWT by DM\n",__FUNCTION__); } - } + } H2CCommand[3] = (u8)(bitmap & 0x000000ff); H2CCommand[4] = (u8)((bitmap & 0x0000ff00) >>8); @@ -360,11 +350,11 @@ void rtl8814_set_raid_cmd(PADAPTER padapter, u64 bitmap, u8* arg, u8 bw) FillH2CCmd_8814(padapter, H2C_MACID_CFG, 7, H2CCommand); - // For 3SS rate, extend H2C cmd + // For 3SS rate, extend H2C cmd H2CCommand[3] = (u8)((bitmap>>32) & 0x000000ff); H2CCommand[4] = (u8)(((bitmap>>32) & 0x0000ff00) >>8); FillH2CCmd_8814(padapter, H2C_RA_MASK_3SS, 5, H2CCommand); - + } if (shortGIrate==_TRUE) @@ -408,11 +398,9 @@ void rtl8814_set_FwPwrMode_cmd(PADAPTER padapter, u8 PSMode) break; } - if (Mode > PS_MODE_ACTIVE) - { + if (Mode > PS_MODE_ACTIVE) { #ifdef CONFIG_BT_COEXIST - if ((rtw_btcoex_IsBtControlLps(padapter) == _TRUE) && (_TRUE == pHalData->EEPROMBluetoothCoexist)) - { + if ((rtw_btcoex_IsBtControlLps(padapter) == _TRUE) && (_TRUE == pHalData->EEPROMBluetoothCoexist)) { PowerState = rtw_btcoex_RpwmVal(padapter); pwrModeByte5 = rtw_btcoex_LpsVal(padapter); } @@ -426,16 +414,14 @@ void rtl8814_set_FwPwrMode_cmd(PADAPTER padapter, u8 PSMode) #ifdef CONFIG_EXT_CLK Mode |= BIT(7);//supporting 26M XTAL CLK_Request feature. #endif //CONFIG_EXT_CLK - } - else - { + } else { PowerState = 0x0C;// AllON(0x0C), RFON(0x04), RFOFF(0x00) pwrModeByte5 = 0x40; } // 0: Active, 1: LPS, 2: WMMPS SET_8814A_H2CCMD_PWRMODE_PARM_MODE(u1H2CSetPwrMode, Mode); - + // 0:Min, 1:Max , 2:User define SET_8814A_H2CCMD_PWRMODE_PARM_RLBM(u1H2CSetPwrMode, RLBM); @@ -508,8 +494,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) pframe += 2; pktlen += 2; - if( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) - { + if ( (pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { //RTW_INFO("ie len=%d\n", cur_network->IELength); pktlen += cur_network->IELength - sizeof(NDIS_802_11_FIXED_IEs); _rtw_memcpy(pframe, cur_network->IEs+sizeof(NDIS_802_11_FIXED_IEs), pktlen); @@ -529,8 +514,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) // DS parameter set pframe = rtw_set_ie(pframe, _DSSET_IE_, 1, (unsigned char *)&(cur_network->Configuration.DSConfig), &pktlen); - if( (pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) - { + if ( (pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) { u32 ATIMWindow; // IBSS Parameter Set... //ATIMWindow = cur->Configuration.ATIMWindow; @@ -543,8 +527,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) // EXTERNDED SUPPORTED RATE - if (rate_len > 8) - { + if (rate_len > 8) { pframe = rtw_set_ie(pframe, _EXT_SUPPORTEDRATES_IE_, (rate_len - 8), (cur_network->SupportedRates + 8), &pktlen); } @@ -553,8 +536,7 @@ void ConstructBeacon(_adapter *padapter, u8 *pframe, u32 *pLength) _ConstructBeacon: - if ((pktlen + TXDESC_SIZE) > 512) - { + if ((pktlen + TXDESC_SIZE) > 512) { RTW_INFO("beacon frame too large\n"); return; } @@ -620,8 +602,7 @@ void ConstructNullFunctionData( fctrl = &pwlanhdr->frame_ctl; *(fctrl) = 0; - if (bForcePowerSave) - { + if (bForcePowerSave) { SetPwrMgt(fctrl); } @@ -678,7 +659,6 @@ void ConstructProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); WLAN_BSSID_EX *cur_network = &(pmlmeinfo->network); - //RTW_INFO("%s\n", __FUNCTION__); pwlanhdr = (struct rtw_ieee80211_hdr *)pframe; @@ -698,7 +678,7 @@ void ConstructProbeRsp(_adapter *padapter, u8 *pframe, u32 *pLength, u8 *StaAddr pktlen = sizeof(struct rtw_ieee80211_hdr_3addr); pframe += pktlen; - if(cur_network->IELength>MAX_IE_SZ) + if (cur_network->IELength>MAX_IE_SZ) return; _rtw_memcpy(pframe, cur_network->IEs, cur_network->IELength); @@ -758,8 +738,7 @@ static void ConstructGTKResponse( //------------------------------------------------------------------------- // Qos Header: leave space for it if necessary. //------------------------------------------------------------------------- - if(pStaQos->CurrentQosMode > QOS_DISABLE) - { + if(pStaQos->CurrentQosMode > QOS_DISABLE) { SET_80211_HDR_QOS_EN(pGTKRspPkt, 1); PlatformZeroMemory(&(Buffer[*pLength]), sQoSCtlLng); *pLength += sQoSCtlLng; @@ -777,8 +756,8 @@ static void ConstructGTKResponse( EncryptionHeadOverhead = 4; break; case _TKIP_: - EncryptionHeadOverhead = 8; - break; + EncryptionHeadOverhead = 8; + break; case _AES_: EncryptionHeadOverhead = 8; break; @@ -790,29 +769,28 @@ static void ConstructGTKResponse( default: EncryptionHeadOverhead = 0; } - - if(EncryptionHeadOverhead > 0) - { + + if (EncryptionHeadOverhead > 0) { _rtw_memset(&(pframe[*pLength]), 0,EncryptionHeadOverhead); *pLength += EncryptionHeadOverhead; //SET_80211_HDR_WEP(pGTKRspPkt, 1); //Suggested by CCW. //GTK's privacy bit is done by FW //SetPrivacy(fctrl); - } + } #endif //1 //------------------------------------------------------------------------- // Frame Body. //------------------------------------------------------------------------- - pGTKRspPkt = (u8*)(pframe+ *pLength); + pGTKRspPkt = (u8*)(pframe+ *pLength); // LLC header - _rtw_memcpy(pGTKRspPkt, LLCHeader, 8); + _rtw_memcpy(pGTKRspPkt, LLCHeader, 8); *pLength += 8; // GTK element pGTKRspPkt += 8; - + //GTK frame body after LLC, part 1 - _rtw_memcpy(pGTKRspPkt, GTKbody_a, 11); + _rtw_memcpy(pGTKRspPkt, GTKbody_a, 11); *pLength += 11; pGTKRspPkt += 11; //GTK frame body after LLC, part 2 @@ -833,8 +811,7 @@ CheckFwRsvdPageContent( HAL_DATA_TYPE* pHalData = GET_HAL_DATA(Adapter); u32 MaxBcnPageNum; - if(pHalData->FwRsvdPageStartOffset != 0) - { + if(pHalData->FwRsvdPageStartOffset != 0) { /*MaxBcnPageNum = PageNum_128(pMgntInfo->MaxBeaconSize); RT_ASSERT((MaxBcnPageNum <= pHalData->FwRsvdPageStartOffset), ("CheckFwRsvdPageContent(): The reserved page content has been"\ @@ -855,21 +832,17 @@ GetTxBufferRsvdPageNum8814(_adapter *Adapter, bool bWoWLANBoundary) u8 RsvdPageNum=0; u16 TxPageBndy= LAST_ENTRY_OF_TX_PKT_BUFFER_8814A; // default reseved 1 page for the IC type which is undefined. - if(bWoWLANBoundary) - { + if(bWoWLANBoundary) { rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY_WOWLAN, (u8 *)&TxPageBndy); - } - else - { + } else { rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u8 *)&TxPageBndy); } - + RsvdPageNum = LAST_ENTRY_OF_TX_PKT_BUFFER_8814A -TxPageBndy + 1; return RsvdPageNum; } - void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); @@ -882,8 +855,7 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) RTW_INFO("%s mstatus(%x)\n", __FUNCTION__,mstatus); - if(mstatus == 1) - { + if(mstatus == 1) { // We should set AID, correct TSF, HW seq enable before set JoinBssReport to Fw in 88/92C. // Suggested by filen. Added by tynli. rtw_write16(padapter, REG_BCN_PSR_RPT, (0xC000|pmlmeinfo->aid)); @@ -897,7 +869,7 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) pHalData->RegCR_1 |= BIT0; rtw_write8(padapter, REG_CR+1, pHalData->RegCR_1); /*RTW_INFO("%s-%d: enable SW BCN, REG_CR=0x%x\n", __func__, __LINE__, rtw_read32(padapter, REG_CR));*/ - + // Disable Hw protection for a time which revserd for Hw sending beacon. // Fix download reserved page packet fail that access collision with the protection time. // 2010.05.11. Added by tynli. @@ -905,9 +877,8 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) //SetBcnCtrlReg(padapter, BIT4, 0); rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)&(~BIT(3))); rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(4)); - - if(pHalData->RegFwHwTxQCtrl&BIT6) - { + + if(pHalData->RegFwHwTxQCtrl&BIT6) { RTW_INFO("HalDownloadRSVDPage(): There is an Adapter is sending beacon.\n"); bSendBeacon = _TRUE; } @@ -920,22 +891,20 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); DLBcnCount = 0; poll = 0; - do - { + do { // download rsvd page. rtw_hal_set_fw_rsvd_page(padapter, _FALSE); DLBcnCount++; - do - { + do { rtw_yield_os(); //rtw_mdelay_os(10); // check rsvd page download OK. rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8*)(&bcn_valid)); poll++; } while (!bcn_valid && (poll%10) != 0 && !RTW_CANNOT_RUN(padapter)); - + } while (!bcn_valid && DLBcnCount <= 100 && !RTW_CANNOT_RUN(padapter)); - + //RT_ASSERT(bcn_valid, ("HalDownloadRSVDPage88ES(): 1 Download RSVD page failed!\n")); if (RTW_CANNOT_RUN(padapter)) ; @@ -955,21 +924,17 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) // the beacon TCB in the following code. 2011.11.23. by tynli. // //if(bcn_valid && padapter->bEnterPnpSleep) - if(0) - { - if(bSendBeacon) - { + if(0) { + if(bSendBeacon) { rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); DLBcnCount = 0; poll = 0; - do - { + do { //SetFwRsvdPagePkt_8812(padapter, _TRUE); rtw_hal_set_fw_rsvd_page(padapter, _TRUE); DLBcnCount++; - - do - { + + do { rtw_yield_os(); //rtw_mdelay_os(10); // check rsvd page download OK. @@ -977,7 +942,7 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) poll++; } while (!bcn_valid && (poll%10) != 0 && !RTW_CANNOT_RUN(padapter)); } while (!bcn_valid && DLBcnCount <= 100 && !RTW_CANNOT_RUN(padapter)); - + //RT_ASSERT(bcn_valid, ("HalDownloadRSVDPage(): 2 Download RSVD page failed!\n")); if (RTW_CANNOT_RUN(padapter)) ; @@ -996,11 +961,10 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) // To make sure that if there exists an adapter which would like to send beacon. // If exists, the origianl value of 0x422[6] will be 1, we should check this to - // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause + // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bSendBeacon) - { + if(bSendBeacon) { rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl|BIT6)); pHalData->RegFwHwTxQCtrl |= BIT6; } @@ -1008,13 +972,12 @@ void rtl8814_set_FwJoinBssReport_cmd(PADAPTER padapter, u8 mstatus) // // Update RSVD page location H2C to Fw. // - if(bcn_valid) - { + if(bcn_valid) { rtw_hal_set_hwreg(padapter, HW_VAR_BCN_VALID, NULL); RTW_INFO("Set RSVD page location to Fw.\n"); //FillH2CCmd88E(Adapter, H2C_88E_RSVDPAGE, H2C_RSVDPAGE_LOC_LENGTH, pMgntInfo->u1RsvdPageLoc); } - + // Do not enable HW DMA BCN or it will cause Pcie interface hang by timing issue. 2011.11.24. by tynli. //if(!padapter->bEnterPnpSleep) { @@ -1047,18 +1010,16 @@ void rtl8814_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state) case P2P_PS_ENABLE: RTW_INFO("P2P_PS_ENABLE \n"); // update CTWindow value. - if( pwdinfo->ctwindow > 0 ) - { + if( pwdinfo->ctwindow > 0 ) { SET_8814A_H2CCMD_P2P_PS_OFFLOAD_CTWINDOW_EN(p2p_ps_offload, 1); - rtw_write8(padapter, REG_P2P_CTWIN, pwdinfo->ctwindow); + rtw_write8(padapter, REG_P2P_CTWIN, pwdinfo->ctwindow); } // hw only support 2 set of NoA - for( i=0 ; inoa_num ; i++) - { + for ( i = 0 ; inoa_num ; i++) { // To control the register setting for which NOA rtw_write8(padapter, REG_NOA_DESC_SEL, (i << 4)); - if(i == 0) { + if (i == 0) { SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA0_EN(p2p_ps_offload, 1); } else { SET_8814A_H2CCMD_P2P_PS_OFFLOAD_NOA1_EN(p2p_ps_offload, 1); @@ -1078,21 +1039,17 @@ void rtl8814_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state) rtw_write8(padapter, REG_NOA_DESC_COUNT, pwdinfo->noa_count[i]); } - if( (pwdinfo->opp_ps == 1) || (pwdinfo->noa_num > 0) ) - { + if( (pwdinfo->opp_ps == 1) || (pwdinfo->noa_num > 0) ) { // rst p2p circuit: reg 0x5F0 rtw_write8(padapter, REG_P2P_RST_8814A, BIT(0)); //rst p2p 0 circuit NOA 0 SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ENABLE(p2p_ps_offload, 1); - if(pwdinfo->role == P2P_ROLE_GO) - { + if (pwdinfo->role == P2P_ROLE_GO) { // 1: Owner, 0: Client SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ROLE(p2p_ps_offload, 1); SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ALLSTASLEEP(p2p_ps_offload, 0); - } - else - { + } else { // 1: Owner, 0: Client SET_8814A_H2CCMD_P2P_PS_OFFLOAD_ROLE(p2p_ps_offload, 0); } @@ -1125,7 +1082,7 @@ void rtl8814_set_p2p_ps_offload_cmd(_adapter* padapter, u8 p2p_ps_state) ask FW to Reset sync register at Beacon early interrupt */ u8 rtl8814_reset_tsf(_adapter *padapter, u8 reset_port ) -{ +{ u8 buf[2]; u8 res=_SUCCESS; @@ -1180,7 +1137,7 @@ static void rtl8814_set_FwRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvdpage SET_H2CCMD_RSVDPAGE_LOC_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocNullData); SET_H2CCMD_RSVDPAGE_LOC_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocQosNull); SET_H2CCMD_RSVDPAGE_LOC_BT_QOS_NULL_DATA(u1H2CRsvdPageParm, rsvdpageloc->LocBTQosNull); - + RTW_INFO_DUMP("u1H2CRsvdPageParm:", u1H2CRsvdPageParm, H2C_RSVDPAGE_LOC_LEN); FillH2CCmd_8814(padapter, H2C_RSVD_PAGE, H2C_RSVDPAGE_LOC_LEN, u1H2CRsvdPageParm); } @@ -1191,7 +1148,7 @@ static void rtl8814_set_FwAoacRsvdPage_cmd(PADAPTER padapter, PRSVDPAGE_LOC rsvd struct pwrctrl_priv *pwrpriv = adapter_to_pwrctl(padapter); struct mlme_priv *pmlmepriv = &padapter->mlmepriv; u8 res = 0, count = 0; -#ifdef CONFIG_WOWLAN +#ifdef CONFIG_WOWLAN u8 u1H2CAoacRsvdPageParm[H2C_AOAC_RSVDPAGE_LOC_LEN]={0}; RTW_INFO("8192EAOACRsvdPageLoc: RWC=%d ArpRsp=%d NbrAdv=%d GtkRsp=%d GtkInfo=%d ProbeReq=%d NetworkList=%d\n", @@ -1258,7 +1215,7 @@ void rtl8814_iqk_done(_adapter* padapter) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); struct submit_ctx *iqk_sctx = &pHalData->iqk_sctx; - + rtw_sctx_done(&iqk_sctx); } @@ -1299,7 +1256,7 @@ C2HTxFeedbackHandler_8814( s32 _C2HContentParsing8814( IN PADAPTER Adapter, - IN u8 c2hCmdId, + IN u8 c2hCmdId, IN u8 c2hCmdLen, IN u8 *tmpBuf ) @@ -1402,7 +1359,7 @@ C2HPacketHandler_8814( c2hCmdSeq = Buffer[1]; c2hCmdLen = Length -2; tmpBuf = Buffer+2; - + //RTW_INFO("[C2H packet], c2hCmdId=0x%x, c2hCmdSeq=0x%x, c2hCmdLen=%d\n", c2hCmdId, c2hCmdSeq, c2hCmdLen); #ifdef CONFIG_BT_COEXIST @@ -1424,7 +1381,7 @@ C2HPacketHandler_8814( #endif /* CONFIG_BT_COEXIST */ { /* handle directly */ -#ifdef CONFIG_BEAMFORMING +#ifdef CONFIG_BEAMFORMING if (c2hCmdId == C2H_TXBF) { /* enqueue */ c2h_evt = (struct c2h_evt_hdr_88xx *)rtw_zmalloc(16); @@ -1465,16 +1422,14 @@ void ConstructBtNullFunctionData( pwlanhdr = (struct rtw_ieee80211_hdr*)pframe; - if (NULL == StaAddr) - { + if (NULL == StaAddr) { _rtw_memcpy(bssid, adapter_mac_addr(padapter), ETH_ALEN); StaAddr = bssid; } - + fctrl = &pwlanhdr->frame_ctl; *(fctrl) = 0; - if (bForcePowerSave) - { + if (bForcePowerSave) { SetPwrMgt(fctrl); } @@ -1509,7 +1464,7 @@ void ConstructBtNullFunctionData( static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) { PHAL_DATA_TYPE pHalData; - struct xmit_frame *pcmdframe; + struct xmit_frame *pcmdframe; struct pkt_attrib *pattrib; struct xmit_priv *pxmitpriv; struct mlme_ext_priv *pmlmeext; @@ -1554,10 +1509,9 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) // When we count the first page size, we need to reserve description size for the RSVD // packet, it will be filled in front of the packet in TXPKTBUF. CurtPktPageNum = (u8)PageNum(TxDescLen + BeaconLength, PageSize); - + //If we don't add 1 more page, the WOWLAN function has a problem. Baron thinks it's a bug of firmware - if (CurtPktPageNum == 1) - { + if (CurtPktPageNum == 1) { CurtPktPageNum += 1; } TotalPageNum += CurtPktPageNum; @@ -1565,13 +1519,12 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) BufIndex += (CurtPktPageNum*PageSize); // Jump to lastest page - if (BufIndex < (MaxRsvdPageBufSize - PageSize)) - { + if (BufIndex < (MaxRsvdPageBufSize - PageSize)) { BufIndex = TxDescOffset + (MaxRsvdPageBufSize - PageSize); TotalPageNum = BCNQ_PAGE_NUM_8814-1; - + } - + //3 (6) BT Qos null data RsvdPageLoc.LocBTQosNull = TotalPageNum; ConstructBtNullFunctionData( @@ -1582,7 +1535,7 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) _TRUE, 0, 0, _FALSE); rtl8814a_fill_fake_txdesc(padapter, &ReservedPagePacket[BufIndex-TxDescLen], BTQosNullLength, _FALSE, _TRUE, _FALSE); - //RTW_INFO("%s(): HW_VAR_SET_TX_CMD: BT QOS NULL DATA %p %d\n", + //RTW_INFO("%s(): HW_VAR_SET_TX_CMD: BT QOS NULL DATA %p %d\n", // __FUNCTION__, &ReservedPagePacket[BufIndex-TxDescLen], (BTQosNullLength+TxDescLen)); CurtPktPageNum = (u8)PageNum(TxDescLen + BTQosNullLength,PageSize); @@ -1590,14 +1543,11 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) TotalPageNum += CurtPktPageNum; TotalPacketLen = BufIndex + BTQosNullLength; - if(TotalPacketLen > MaxRsvdPageBufSize) - { + if(TotalPacketLen > MaxRsvdPageBufSize) { RTW_INFO("%s(): ERROR: The rsvd page size is not enough!!TotalPacketLen %d, MaxRsvdPageBufSize %d\n",__FUNCTION__, TotalPacketLen,MaxRsvdPageBufSize); goto error; - } - else - { + } else { // update attribute pattrib = &pcmdframe->attrib; update_mgntframe_attrib(padapter, pattrib); @@ -1611,13 +1561,13 @@ static void SetFwRsvdPagePkt_BTCoex(PADAPTER padapter) } RTW_INFO("%s: Set RSVD page location to Fw ,TotalPacketLen(%d), TotalPageNum(%d)\n", __FUNCTION__,TotalPacketLen,TotalPageNum); - if(check_fwstate(pmlmepriv, _FW_LINKED)) { + if (check_fwstate(pmlmepriv, _FW_LINKED)) { rtl8814_set_FwRsvdPage_cmd(padapter, &RsvdPageLoc); #ifdef CONFIG_WOWLAN rtl8814_set_FwAoacRsvdPage_cmd(padapter, &RsvdPageLoc); #endif - } - + } + return; error: @@ -1673,24 +1623,22 @@ void rtl8812a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter) DLBcnCount = 0; poll = 0; - do - { + do { SetFwRsvdPagePkt_BTCoex(padapter); DLBcnCount++; - do - { + do { rtw_yield_os(); //rtw_mdelay_os(10); // check rsvd page download OK. rtw_hal_get_hwreg(padapter, HW_VAR_BCN_VALID, (u8*)(&bcn_valid)); poll++; } while (!bcn_valid && (poll%10) != 0 && !RTW_CANNOT_RUN(padapter)); - + } while (!bcn_valid && DLBcnCount <= 100 && !RTW_CANNOT_RUN(padapter)); if (RTW_CANNOT_RUN(padapter)) ; - else if(!bcn_valid) + else if (!bcn_valid) RTW_INFO(ADPT_FMT": 1 DL RSVD page failed! DLBcnCount:%u, poll:%u\n", ADPT_ARG(padapter) ,DLBcnCount, poll); else { @@ -1711,8 +1659,7 @@ void rtl8812a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter) // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bRecover) - { + if (bRecover) { rtw_write8(padapter, REG_FWHW_TXQ_CTRL+2, pHalData->RegFwHwTxQCtrl | BIT(6)); pHalData->RegFwHwTxQCtrl |= BIT(6); } @@ -1727,4 +1674,3 @@ void rtl8812a_download_BTCoex_AP_mode_rsvd_page(PADAPTER padapter) } #endif // CONFIG_BT_COEXIST - diff --git a/hal/rtl8814a/rtl8814a_dm.c b/hal/rtl8814a/rtl8814a_dm.c index 808739596..92ee51e80 100644 --- a/hal/rtl8814a/rtl8814a_dm.c +++ b/hal/rtl8814a/rtl8814a_dm.c @@ -46,18 +46,15 @@ dm_CheckProtection( PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); u1Byte CurRate, RateThreshold; - if(pMgntInfo->pHTInfo->bCurBW40MHz) + if (pMgntInfo->pHTInfo->bCurBW40MHz) RateThreshold = MGN_MCS1; else RateThreshold = MGN_MCS3; - if(Adapter->TxStats.CurrentInitTxRate <= RateThreshold) - { + if(Adapter->TxStats.CurrentInitTxRate <= RateThreshold) { pMgntInfo->bDmDisableProtect = TRUE; DbgPrint("Forced disable protect: %x\n", Adapter->TxStats.CurrentInitTxRate); - } - else - { + } else { pMgntInfo->bDmDisableProtect = FALSE; DbgPrint("Enable protect: %x\n", Adapter->TxStats.CurrentInitTxRate); } @@ -70,7 +67,7 @@ dm_CheckStatistics( ) { #if 0 - if(!Adapter->MgntInfo.bMediaConnect) + if (!Adapter->MgntInfo.bMediaConnect) return; //2008.12.10 tynli Add for getting Current_Tx_Rate_Reg flexibly. @@ -98,14 +95,13 @@ static void dm_CheckPbcGPIO(_adapter *padapter) #endif /* CONFIG_BT_COEXIST */ #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) - + tmp1byte = rtw_read8(padapter, REG_GPIO_EXT_CTRL_8814A); //DBG_871X("CheckPbcGPIO - %x\n", tmp1byte); if (tmp1byte == 0xff) return ; - else if (tmp1byte & BIT3) - { + else if (tmp1byte & BIT3) { // Here we only set bPbcPressed to TRUE. After trigger PBC, the variable will be set to FALSE DBG_871X("CheckPbcGPIO - PBC is pressed\n"); bPbcPressed = _TRUE; @@ -113,8 +109,7 @@ static void dm_CheckPbcGPIO(_adapter *padapter) #endif - if( _TRUE == bPbcPressed) - { + if ( _TRUE == bPbcPressed) { // Here we only set bPbcPressed to true // After trigger PBC, the variable will be set to false DBG_871X("CheckPbcGPIO - PBC is pressed\n"); @@ -145,7 +140,6 @@ dm_InterruptMigration( BOOLEAN IntMtToSet = _FALSE; BOOLEAN ACIntToSet = _FALSE; - // Retrieve current interrupt migration and Tx four ACs IMR settings first. bCurrentIntMt = pHalData->bInterruptMigration; bCurrentACIntDisable = pHalData->bDisableTxInt; @@ -154,22 +148,21 @@ dm_InterruptMigration( // Currently we use busy traffic for reference instead of RxIntOK counts to prevent non-linear Rx statistics // when interrupt migration is set before. 2010.03.05. // - if(!Adapter->registrypriv.wifi_spec && + if (!Adapter->registrypriv.wifi_spec && (check_fwstate(pmlmepriv, _FW_LINKED)== _TRUE) && pmlmepriv->LinkDetectInfo.bHigherBusyTraffic) { IntMtToSet = _TRUE; // To check whether we should disable Tx interrupt or not. - if(pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic) + if (pmlmepriv->LinkDetectInfo.bHigherBusyRxTraffic) ACIntToSet = _TRUE; } //Update current settings. - if( bCurrentIntMt != IntMtToSet ){ + if ( bCurrentIntMt != IntMtToSet ) { DBG_8192C("%s(): Update interrrupt migration(%d)\n",__FUNCTION__,IntMtToSet); - if(IntMtToSet) - { + if(IntMtToSet) { // // Set interrrupt migration timer and corresponging Tx/Rx counter. // timer 25ns*0xfa0=100us for 0xf packets. @@ -177,9 +170,7 @@ dm_InterruptMigration( // rtw_write32(Adapter, REG_INT_MIG, 0xff000fa0);// 0x306:Rx, 0x307:Tx pHalData->bInterruptMigration = IntMtToSet; - } - else - { + } else { // Reset all interrupt migration settings. rtw_write32(Adapter, REG_INT_MIG, 0); pHalData->bInterruptMigration = IntMtToSet; @@ -232,7 +223,7 @@ dm_InitGPIOSetting( //============================================================ static void Init_ODM_ComInfo_8814(PADAPTER Adapter) { - PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T pDM_Odm = &(pHalData->odmpriv); u32 SupportAbility = 0; @@ -243,20 +234,20 @@ static void Init_ODM_ComInfo_8814(PADAPTER Adapter) ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_IC_TYPE, ODM_RTL8814A); fab_ver = ODM_TSMC; - if(IS_A_CUT(pHalData->VersionID)) + if (IS_A_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_A; - else if(IS_B_CUT(pHalData->VersionID)) + else if (IS_B_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_B; - else if(IS_C_CUT(pHalData->VersionID)) + else if (IS_C_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_C; - else if(IS_D_CUT(pHalData->VersionID)) + else if (IS_D_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_D; - else if(IS_E_CUT(pHalData->VersionID)) + else if (IS_E_CUT(pHalData->VersionID)) cut_ver = ODM_CUT_E; else cut_ver = ODM_CUT_A; - ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_FAB_VER,fab_ver); + ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_FAB_VER,fab_ver); ODM_CmnInfoInit(pDM_Odm,ODM_CMNINFO_CUT_VER,cut_ver); ODM_CmnInfoInit(pDM_Odm, ODM_CMNINFO_RF_ANTENNA_TYPE, pHalData->TRxAntDivType); @@ -268,13 +259,13 @@ static void Init_ODM_ComInfo_8814(PADAPTER Adapter) #else SupportAbility = ODM_RF_CALIBRATION| ODM_RF_TX_PWR_TRACK - ; + ; /*if(pHalData->AntDivCfg) SupportAbility |= ODM_BB_ANT_DIV;*/ - #endif + #endif ODM_CmnInfoUpdate(pDM_Odm,ODM_CMNINFO_ABILITY,SupportAbility); - + } static void Update_ODM_ComInfo_8814(PADAPTER Adapter) @@ -301,7 +292,7 @@ static void Update_ODM_ComInfo_8814(PADAPTER Adapter) SupportAbility |= ODM_BB_ADAPTIVITY; } - if(pHalData->AntDivCfg) + if (pHalData->AntDivCfg) SupportAbility |= ODM_BB_ANT_DIV; #if (MP_DRIVER==1) @@ -372,7 +363,7 @@ rtl8814_HalDmWatchDog( #ifdef CONFIG_P2P_PS // Fw is under p2p powersaving mode, driver should stop dynamic mechanism. // modifed by thomas. 2011.06.11. - if(Adapter->wdinfo.p2p_ps_mode) + if (Adapter->wdinfo.p2p_ps_mode) bFwPSAwake = _FALSE; #endif //CONFIG_P2P_PS @@ -381,7 +372,7 @@ rtl8814_HalDmWatchDog( // // Calculate Tx/Rx statistics. // - dm_CheckStatistics(Adapter); + dm_CheckStatistics(Adapter); rtw_hal_check_rxfifo_full(Adapter); // // Dynamically switch RTS/CTS protection. @@ -396,12 +387,11 @@ rtl8814_HalDmWatchDog( //if(Adapter->HalFunc.TxCheckStuckHandler(Adapter)) // PlatformScheduleWorkItem(&(GET_HAL_DATA(Adapter)->HalResetWorkItem)); #endif - + } //ODM - if (rtw_is_hw_init_completed(Adapter)) - { + if (rtw_is_hw_init_completed(Adapter)) { u8 bLinked=_FALSE; u8 bsta_state=_FALSE; u8 bBtDisabled = _TRUE; @@ -410,16 +400,16 @@ rtl8814_HalDmWatchDog( pHalData->odmpriv.SupportAbility = 0; #endif - if(rtw_linked_check(Adapter)){ + if (rtw_linked_check(Adapter)) { bLinked = _TRUE; if (check_fwstate(&Adapter->mlmepriv, WIFI_STATION_STATE)) bsta_state = _TRUE; } - + #ifdef CONFIG_CONCURRENT_MODE - if(pbuddy_adapter && rtw_linked_check(pbuddy_adapter)){ + if (pbuddy_adapter && rtw_linked_check(pbuddy_adapter)){ bLinked = _TRUE; - if(pbuddy_adapter && check_fwstate(&pbuddy_adapter->mlmepriv, WIFI_STATION_STATE)) + if (pbuddy_adapter && check_fwstate(&pbuddy_adapter->mlmepriv, WIFI_STATION_STATE)) bsta_state = _TRUE; } #endif //CONFIG_CONCURRENT_MODE @@ -433,7 +423,7 @@ rtl8814_HalDmWatchDog( ODM_CmnInfoUpdate(&pHalData->odmpriv, ODM_CMNINFO_BT_ENABLED, ((bBtDisabled == _TRUE)?_FALSE:_TRUE)); ODM_DMWatchdog(&pHalData->odmpriv); - + } skip_dm: @@ -463,7 +453,7 @@ void rtl8814_init_dm_priv(IN PADAPTER Adapter) } Init_ODM_ComInfo_8814(Adapter); - ODM_InitAllTimers(podmpriv ); + ODM_InitAllTimers(podmpriv ); PHYDM_InitDebugSetting(podmpriv); pHalData->CurrentTxPwrIdx = 18; @@ -475,7 +465,7 @@ void rtl8814_deinit_dm_priv(IN PADAPTER Adapter) PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T podmpriv = &pHalData->odmpriv; //_rtw_spinlock_free(&pHalData->odm_stainfo_lock); - ODM_CancelAllTimers(podmpriv); + ODM_CancelAllTimers(podmpriv); } @@ -486,17 +476,15 @@ void rtl8814_deinit_dm_priv(IN PADAPTER Adapter) void AntDivCompare8814(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src) { //PADAPTER Adapter = pDM_Odm->Adapter ; - + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(0 != pHalData->AntDivCfg ) - { + if (0 != pHalData->AntDivCfg ) { //DBG_8192C("update_network=> orgRSSI(%d)(%d),newRSSI(%d)(%d)\n",dst->Rssi,query_rx_pwr_percentage(dst->Rssi), // src->Rssi,query_rx_pwr_percentage(src->Rssi)); //select optimum_antenna for before linked =>For antenna diversity - if(dst->Rssi >= src->Rssi )//keep org parameter - { + if (dst->Rssi >= src->Rssi ) { //keep org parameter src->Rssi = dst->Rssi; - src->PhyInfo.Optimum_antenna = dst->PhyInfo.Optimum_antenna; + src->PhyInfo.Optimum_antenna = dst->PhyInfo.Optimum_antenna; } } } @@ -504,26 +492,24 @@ void AntDivCompare8814(PADAPTER Adapter, WLAN_BSSID_EX *dst, WLAN_BSSID_EX *src) // Add new function to reset the state of antenna diversity before link. u8 AntDivBeforeLink8814(PADAPTER Adapter ) { - - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); PDM_ODM_T pDM_Odm =&pHalData->odmpriv; SWAT_T *pDM_SWAT_Table = &pDM_Odm->DM_SWAT_Table; struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); - + // Condition that does not need to use antenna diversity. - if(pHalData->AntDivCfg==0) - { + if (pHalData->AntDivCfg==0) { //DBG_8192C("odm_AntDivBeforeLink8192C(): No AntDiv Mechanism.\n"); return _FALSE; } - if(check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) - { + if (check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) { return _FALSE; } - if(pDM_SWAT_Table->SWAS_NoLink_State == 0){ + if (pDM_SWAT_Table->SWAS_NoLink_State == 0) { //switch channel pDM_SWAT_Table->SWAS_NoLink_State = 1; pDM_SWAT_Table->CurAntenna = (pDM_SWAT_Table->CurAntenna==MAIN_ANT)?AUX_ANT:MAIN_ANT; @@ -532,13 +518,10 @@ u8 AntDivBeforeLink8814(PADAPTER Adapter ) rtw_antenna_select_cmd(Adapter, pDM_SWAT_Table->CurAntenna, _FALSE); //DBG_8192C("%s change antenna to ANT_( %s ).....\n",__FUNCTION__, (pDM_SWAT_Table->CurAntenna==MAIN_ANT)?"MAIN":"AUX"); return _TRUE; - } - else - { + } else { pDM_SWAT_Table->SWAS_NoLink_State = 0; return _FALSE; - } + } } #endif //CONFIG_ANTENNA_DIVERSITY - diff --git a/hal/rtl8814a/rtl8814a_hal_init.c b/hal/rtl8814a/rtl8814a_hal_init.c index 65e82269a..0d11da69f 100644 --- a/hal/rtl8814a/rtl8814a_hal_init.c +++ b/hal/rtl8814a/rtl8814a_hal_init.c @@ -35,7 +35,7 @@ Hal_InitEfuseVars_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); pu2Byte ptr; - + #define INIT_EFUSE(var,value) ptr = (pu2Byte)&var; *ptr = value RTW_INFO("====> %s \n", __func__); @@ -59,16 +59,16 @@ Hal_InitEfuseVars_8814A( RTW_INFO("====>pEfuseHal->PhysicalLen_WiFi %d \n", pEfuseHal->PhysicalLen_WiFi); INIT_EFUSE(pEfuseHal->LogicalLen_WiFi , EFUSE_MAP_LEN_8814A); RTW_INFO("====>pEfuseHal->LogicalLen_WiFi %d \n", pEfuseHal->LogicalLen_WiFi); - INIT_EFUSE(pEfuseHal->BankNum_WiFi , pEfuseHal->PhysicalLen_WiFi/pEfuseHal->BankSize); - INIT_EFUSE(pEfuseHal->TotalAvailBytes_WiFi, (pEfuseHal->PhysicalLen_WiFi - (pEfuseHal->TotalBankNum * pEfuseHal->OOBProtectBytes))); + INIT_EFUSE(pEfuseHal->BankNum_WiFi , pEfuseHal->PhysicalLen_WiFi/pEfuseHal->BankSize); + INIT_EFUSE(pEfuseHal->TotalAvailBytes_WiFi, (pEfuseHal->PhysicalLen_WiFi - (pEfuseHal->TotalBankNum * pEfuseHal->OOBProtectBytes))); //2 BT - INIT_EFUSE(pEfuseHal->MaxSecNum_BT , 0); + INIT_EFUSE(pEfuseHal->MaxSecNum_BT , 0); INIT_EFUSE(pEfuseHal->PhysicalLen_BT , 0); INIT_EFUSE(pEfuseHal->LogicalLen_BT , 0); INIT_EFUSE(pEfuseHal->BankNum_BT , 0); - INIT_EFUSE(pEfuseHal->TotalAvailBytes_BT, 0); - + INIT_EFUSE(pEfuseHal->TotalAvailBytes_BT, 0); + RTW_INFO("%s <====\n", __func__); } @@ -84,18 +84,16 @@ s32 InitLLTTable8814A( tmp1byte = rtw_read8(Adapter, REG_AUTO_LLT_8814A); rtw_write8(Adapter, REG_AUTO_LLT_8814A, tmp1byte|BIT0); - while(tmp1byte & BIT0) - { + while (tmp1byte & BIT0) { tmp1byte = rtw_read8(Adapter, REG_AUTO_LLT_8814A); rtw_mdelay_os(100); testcnt++; - if(testcnt > 100) - { + if (testcnt > 100) { Status = _FAIL; break; - } + } } - return Status; + return Status; } #ifdef CONFIG_WOWLAN @@ -113,7 +111,7 @@ SetBcnCtrlReg( ) { HAL_DATA_TYPE* pHalData = GET_HAL_DATA(Adapter); - + pHalData->RegBcnCtrlVal |= SetBits; pHalData->RegBcnCtrlVal &= ~ClearBits; @@ -133,22 +131,19 @@ _FWDownloadEnable_8814A( u8 tmp; u16 u2Tmp = 0; - if(enable) - { + if (enable) { // MCU firmware download enable. u2Tmp = rtw_read16(Adapter, REG_8051FW_CTRL_8814A); u2Tmp &= 0x3000; u2Tmp &= (~BIT12); u2Tmp |= BIT13; u2Tmp |= BIT0; - rtw_write16(Adapter, REG_8051FW_CTRL_8814A, u2Tmp); + rtw_write16(Adapter, REG_8051FW_CTRL_8814A, u2Tmp); // Clear Rom DL enable // tmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A+2); //modify by gw 20130826(advice by hw) - // rtw_write8(Adapter, REG_8051FW_CTRL_8814A+2, tmp&0xf7);//clear bit3 - } - else - { + // rtw_write8(Adapter, REG_8051FW_CTRL_8814A+2, tmp&0xf7);//clear bit3 + } else { // MCU firmware download enable. tmp = rtw_read8(Adapter, REG_8051FW_CTRL_8814A); rtw_write8(Adapter, REG_8051FW_CTRL_8814A, tmp&0xfe); @@ -175,7 +170,7 @@ _BlockWrite_8814A( #ifdef CONFIG_USB_HCI blockSize_p1 = MAX_REG_BOLCK_SIZE; // Use 196-byte write to download FW // Small block size will increase USB init speed. But prevent FW download fail - // use 4-Byte instead of 196-Byte to write FW. + // use 4-Byte instead of 196-Byte to write FW. #endif //3 Phase #1 @@ -185,7 +180,7 @@ _BlockWrite_8814A( if(blockCount_p1) RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P1] ::buffSize( %d) blockSize_p1( %d) blockCount_p1( %d), remainSize_p1( %d)\n",buffSize ,blockSize_p1,blockCount_p1, remainSize_p1)); - for(i = 0 ; i < blockCount_p1 ; i++){ + for(i = 0 ; i < blockCount_p1 ; i++) { #if (DEV_BUS_TYPE == RT_USB_INTERFACE) rtw_writeN(Adapter, (FW_START_ADDRESS + i * blockSize_p1), blockSize_p1,(bufferPtr + i * blockSize_p1)); #else @@ -194,32 +189,31 @@ _BlockWrite_8814A( } //3 Phase #2 - if(remainSize_p1){ + if (remainSize_p1) { offset = blockCount_p1 * blockSize_p1; blockCount_p2=remainSize_p1/blockSize_p2; remainSize_p2=remainSize_p1%blockSize_p2; - if(blockCount_p2) + if (blockCount_p2) RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P2] ::buffSize_p2( %d) blockSize_p2( %d) blockCount_p2( %d) remainSize_p2( %d)\n",(buffSize-offset), blockSize_p2 ,blockCount_p2, remainSize_p2)); #if (DEV_BUS_TYPE == RT_USB_INTERFACE) - for(i = 0 ; i < blockCount_p2 ; i++){ + for (i = 0 ; i < blockCount_p2 ; i++){ rtw_writeN(Adapter, (FW_START_ADDRESS + offset+i*blockSize_p2), blockSize_p2,(bufferPtr + offset+i*blockSize_p2)); } #endif } - + //3 Phase #3 - if(remainSize_p2) - { - offset=(blockCount_p1 * blockSize_p1)+(blockCount_p2*blockSize_p2); + if (remainSize_p2) { + offset=(blockCount_p1 * blockSize_p1)+(blockCount_p2*blockSize_p2); blockCount_p3 = remainSize_p2 /blockSize_p3; RT_TRACE(COMP_INIT,DBG_LOUD,("_BlockWrite_8814A[P3] ::buffSize_p3( %d) blockSize_p3( %d) blockCount_p3( %d) \n",(buffSize-offset),blockSize_p3, blockCount_p3)); - - for(i = 0 ; i < blockCount_p3 ; i++){ + + for (i = 0 ; i < blockCount_p3 ; i++) { rtw_write8(Adapter, (FW_START_ADDRESS + offset + i), *(bufferPtr +offset+ i)); } } @@ -238,7 +232,7 @@ _PageWrite_8814A( value8 = (rtw_read8(Adapter, REG_8051FW_CTRL_8814A+2)& 0xF8 ) | u8Page ; rtw_write8(Adapter,REG_8051FW_CTRL_8814A+2,value8); - + _BlockWrite_8814A(Adapter,buffer,size); } @@ -252,8 +246,7 @@ _FillDummy_8814A( u8 remain = (u8)(FwLen%4); remain = (remain==0)?0:(4-remain); - while(remain>0) - { + while (remain>0) { pFwBuf[FwLen] = 0; FwLen++; remain--; @@ -274,27 +267,27 @@ _WriteFW_8814A( u8* bufferPtr = (u8*)buffer; #ifdef CONFIG_PCI_HCI - // 20100120 Joseph: Add for 88CE normal chip. + // 20100120 Joseph: Add for 88CE normal chip. // Fill in zero to make firmware image to dword alignment. _FillDummy_8814A(bufferPtr, &size); #endif //CONFIG_PCI_HCI - - pageNums = size / MAX_PAGE_SIZE ; - - //RT_ASSERT((pageNums <= 8), ("Page numbers should not greater then 8 \n")); - - remainSize = size % MAX_PAGE_SIZE; - - for(page = 0; page < pageNums; page++){ + + pageNums = size / MAX_PAGE_SIZE ; + + //RT_ASSERT((pageNums <= 8), ("Page numbers should not greater then 8 \n")); + + remainSize = size % MAX_PAGE_SIZE; + + for (page = 0; page < pageNums; page++) { offset = page *MAX_PAGE_SIZE; - _PageWrite_8814A(Adapter,page, (bufferPtr+offset),MAX_PAGE_SIZE); + _PageWrite_8814A(Adapter,page, (bufferPtr+offset),MAX_PAGE_SIZE); rtw_udelay_os(2); } - if(remainSize){ + if (remainSize) { offset = pageNums *MAX_PAGE_SIZE; page = pageNums; _PageWrite_8814A(Adapter,page, (bufferPtr+offset),remainSize); - } + } RT_TRACE(COMP_INIT, DBG_LOUD, ("_WriteFW_8814A Done- for Normal chip.\n")); } @@ -323,7 +316,7 @@ _3081Enable8814A( //add by ylb 20130814 for 3081 download FW static -BOOLEAN +BOOLEAN IDDMADownLoadFW_3081( IN PADAPTER Adapter, IN u32 source, @@ -338,75 +331,59 @@ IDDMADownLoadFW_3081( u1Byte tmp; //check if ddma ch0 is idle cnt=20; - while(rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) - { + while (rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) { rtw_udelay_os(1000); cnt--; - if(cnt==0) - { + if (cnt==0) { RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); return _FALSE; } } ch0ctrl |= length & DDMA_LEN_MASK; - + //check if chksum continuous - if(fs == _FALSE){ + if (fs == _FALSE) { ch0ctrl |= DDMA_CH_CHKSUM_CNT; - } + } rtw_write32(Adapter,REG_DDMA_CH0SA, source); rtw_write32(Adapter,REG_DDMA_CH0DA, dest); rtw_write32(Adapter,REG_DDMA_CH0CTRL, ch0ctrl); cnt=20; - while(rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) - { + while (rtw_read32(Adapter, REG_DDMA_CH0CTRL)&DDMA_CH_OWN) { rtw_udelay_os(1000); cnt--; - if(cnt==0) - { + if (cnt==0) { RTW_INFO("IDDMADownLoadFW_3081, line%d: CNT fail\n", __LINE__); return _FALSE; } } - - //check checksum - if(ls == _TRUE) - { + + //check checksum + if (ls == _TRUE) { tmp = rtw_read8(Adapter,REG_8051FW_CTRL_8814A); - if(0==(rtw_read32(Adapter,REG_DDMA_CH0CTRL)&DDMA_CHKSUM_FAIL)) - {//chksum ok + if (0==(rtw_read32(Adapter,REG_DDMA_CH0CTRL)&DDMA_CHKSUM_FAIL)) { //chksum ok RTW_INFO("Check sum OK\n"); //imem - if(dest < OCPBASE_DMEM_3081) - { + if (dest < OCPBASE_DMEM_3081) { tmp |= IMEM_DL_RDY; rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp|IMEM_CHKSUM_OK); RTW_INFO("imem check sum tmp %d\n",tmp); - } - //dmem - else - { + } else { //dmem tmp |= DMEM_DL_RDY; rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp|DMEM_CHKSUM_OK); RTW_INFO("dmem check sum tmp %d\n",tmp); - } - } - else - {//chksum fail + } + } else {//chksum fail RTW_INFO("Check sum fail\n"); ch0ctrl=rtw_read32(Adapter,REG_DDMA_CH0CTRL); rtw_write32(Adapter, REG_DDMA_CH0CTRL,ch0ctrl|DDMA_RST_CHKSUM_STS); //imem - if(dest < OCPBASE_DMEM_3081) - { + if (dest < OCPBASE_DMEM_3081) { tmp &= (~IMEM_DL_RDY); rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp&~IMEM_CHKSUM_OK); - } - //dmem - else - { + } else { //dmem tmp &= (~DMEM_DL_RDY); rtw_write8(Adapter,REG_8051FW_CTRL_8814A, tmp&~DMEM_CHKSUM_OK); } @@ -416,10 +393,9 @@ IDDMADownLoadFW_3081( return _TRUE; } - //add by ylb 20130814 for 3081 download FW static -BOOLEAN +BOOLEAN WaitDownLoadRSVDPageOK_3081( IN PADAPTER Adapter ) @@ -427,38 +403,33 @@ WaitDownLoadRSVDPageOK_3081( u8 BcnValidReg=0,TxBcReg=0; u8 count=0, DLBcnCount=0; BOOLEAN bRetValue = _FALSE; - + #if defined(CONFIG_PCI_HCI) //Polling Beacon Queue to send Beacon TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A+3); count=0; - while(( count <20) && (TxBcReg & BIT4)) - { + while (( count <20) && (TxBcReg & BIT4)) { count++; rtw_udelay_os(10); TxBcReg = rtw_read8(Adapter, REG_MGQ_TXBD_NUM_8814A+3); } - + rtw_write8(Adapter, REG_MGQ_TXBD_NUM_8814A+3, TxBcReg|BIT4); #endif //#if defined(CONFIG_PCI_HCI) // check rsvd page download OK. BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1); count=0; - while(!(BcnValidReg & BIT7) && count <20) - { + while (!(BcnValidReg & BIT7) && count <20) { count++; rtw_udelay_os(50); BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1); } - + //Set 1 to Clear BIT7 by SW - if(BcnValidReg & BIT7) - { + if (BcnValidReg & BIT7) { rtw_write8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1, (BcnValidReg|BIT7)); bRetValue = _TRUE; - } - else - { + } else { RTW_INFO("WaitDownLoadRSVDPageOK_3081(): Download RSVD page failed!\n"); bRetValue = _FALSE; } @@ -466,7 +437,6 @@ WaitDownLoadRSVDPageOK_3081( return bRetValue; } - VOID SetDownLoadFwRsvdPagePkt_8814A( IN PADAPTER Adapter, @@ -478,12 +448,12 @@ SetDownLoadFwRsvdPagePkt_8814A( struct xmit_frame *pcmdframe; struct xmit_priv *pxmitpriv; struct pkt_attrib *pattrib; - //The desc lengh in Tx packet buffer of 8814A is 40 bytes. + //The desc lengh in Tx packet buffer of 8814A is 40 bytes. u16 BufIndex=0, TxDescOffset = TXDESC_OFFSET; u32 TotalPacketLen = len; BOOLEAN bDLOK = FALSE; u8 *ReservedPagePacket; - + pHalData = GET_HAL_DATA(Adapter); pxmitpriv = &Adapter->xmitpriv; @@ -501,24 +471,23 @@ SetDownLoadFwRsvdPagePkt_8814A( BufIndex = TxDescOffset; TotalPacketLen = len + BufIndex; - + _rtw_memcpy(&ReservedPagePacket[BufIndex], buffer, len); //RTW_INFO("SetFwRsvdPagePkt_8814A(): HW_VAR_SET_TX_CMD: BCN, %p, %d\n", &ReservedPagePacket[BufIndex], len); - + //RTW_INFO("SetFwRsvdPagePkt(): TotalPacketLen=%d \n", TotalPacketLen); - + // update attribute pattrib = &pcmdframe->attrib; update_mgntframe_attrib(Adapter, pattrib); pattrib->qsel = QSLT_BEACON; pattrib->pktlen = pattrib->last_txcmdsz = TotalPacketLen - TxDescOffset; - + dump_mgntframe(Adapter, pcmdframe); //ReturnGenTempBuffer(pAdapter, pGenBufReservedPagePacket); } - VOID HalROMDownloadFWRSVDPage8814A( IN PADAPTER Adapter, @@ -526,15 +495,15 @@ HalROMDownloadFWRSVDPage8814A( IN u32 Len ) { - u8 u1bTmp=0, tmpReg422=0; + u8 u1bTmp=0, tmpReg422=0; u8 BcnValidReg=0,TxBcReg=0; BOOLEAN bSendBeacon=_FALSE, bDownLoadRSVDPageOK = _FALSE; u8* pbuffer = buffer; - + BOOLEAN fs = _TRUE, ls = _FALSE; u8 FWHeaderSize = 64, PageSize = 128 ; u16 RsvdPageNum = 0; - u32 dmem_pkt_size = 0, iram_pkt_size = 0 ,MaxRsvdPageBufSize = 0; + u32 dmem_pkt_size = 0, iram_pkt_size = 0 ,MaxRsvdPageBufSize = 0; u32 last_block_size = 0, filesize_ram_block = 0, pkt_offset = 0; u32 txpktbuf_bndy = 0; u32 BeaconHeaderInTxPacketBuf = 0, MEMOffsetInTxPacketBuf = 0; @@ -549,13 +518,12 @@ HalROMDownloadFWRSVDPage8814A( // 2010.05.11. Added by tynli. SetBcnCtrlReg(Adapter, 0, BIT3); SetBcnCtrlReg(Adapter, BIT4, 0); - + // Set FWHW_TXQ_CTRL 0x422[6]=0 to tell Hw the packet is not a real beacon frame. tmpReg422 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2); rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2, tmpReg422&(~BIT6)); - if(tmpReg422&BIT6) - { + if (tmpReg422&BIT6) { RTW_INFO("HalROMDownloadFWRSVDPage8814A(): There is an Adapter is sending beacon.\n"); bSendBeacon = _TRUE; } @@ -563,30 +531,29 @@ HalROMDownloadFWRSVDPage8814A( //Set The head page of packet of Bcnq rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u16*)&txpktbuf_bndy); rtw_write16(Adapter,REG_FIFOPAGE_CTRL_2_8814A, txpktbuf_bndy); - + /* RTW_INFO("HalROMDownloadFWRSVDPage8814A: txpktbuf_bndy=%d\n", txpktbuf_bndy); */ - + // Clear beacon valid check bit. BcnValidReg = rtw_read8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1); rtw_write8(Adapter, REG_FIFOPAGE_CTRL_2_8814A+1, (BcnValidReg|BIT7)); - + // Return Beacon TCB. //ReturnBeaconQueueTcb_8814A(Adapter); - + dmem_pkt_size = (u32)GET_FIRMWARE_HDR_TOTAL_DMEM_SZ_3081(pbuffer); - iram_pkt_size = (u32)GET_FIRMWARE_HDR_IRAM_SZ_3081(pbuffer); + iram_pkt_size = (u32)GET_FIRMWARE_HDR_IRAM_SZ_3081(pbuffer); dmem_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; iram_pkt_size += (u32)FW_CHKSUM_DUMMY_SZ; - - if(dmem_pkt_size + iram_pkt_size + FWHeaderSize != Len) - { + + if (dmem_pkt_size + iram_pkt_size + FWHeaderSize != Len) { RTW_INFO("ERROR: Fw Hdr size do not match the real fw size!!\n"); RTW_INFO("dmem_pkt_size = %d, iram_pkt_size = %d,FWHeaderSize = %d, Len = %d!!\n",dmem_pkt_size,iram_pkt_size,FWHeaderSize,Len); return; } RTW_INFO("dmem_pkt_size = %d, iram_pkt_size = %d,FWHeaderSize = %d, Len = %d!!\n",dmem_pkt_size,iram_pkt_size,FWHeaderSize,Len); - - // download rsvd page. + + // download rsvd page. //RsvdPageNum = GetTxBufferRsvdPageNum8814A(Adapter, _FALSE); #ifdef CONFIG_BCN_IC /* TODO: check tx buffer and DMA size */ @@ -595,28 +562,23 @@ HalROMDownloadFWRSVDPage8814A( MaxRsvdPageBufSize = MAX_XMIT_EXTBUF_SZ-TXDESC_OFFSET;//RsvdPageNum*PageSize - 40 -16 /*modified for usb*/;//TX_INFO_SIZE_8814AE; #endif RTW_INFO("MaxRsvdPageBufSize %d, Total len %d\n",MaxRsvdPageBufSize,Len); - + BeaconHeaderInTxPacketBuf = txpktbuf_bndy * PageSize; - MEMOffsetInTxPacketBuf = OCPBASE_TXBUF_3081 + BeaconHeaderInTxPacketBuf + 40;//TX_INFO_SIZE_8814AE; + MEMOffsetInTxPacketBuf = OCPBASE_TXBUF_3081 + BeaconHeaderInTxPacketBuf + 40;//TX_INFO_SIZE_8814AE; //download DMEM - while(dmem_pkt_size > 0) - { - if(dmem_pkt_size > MaxRsvdPageBufSize) - { + while (dmem_pkt_size > 0) { + if (dmem_pkt_size > MaxRsvdPageBufSize) { filesize_ram_block = MaxRsvdPageBufSize; ls = _FALSE; last_block_size = dmem_pkt_size -MaxRsvdPageBufSize; - if(last_block_size < MaxRsvdPageBufSize) - { - if(((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 + if (last_block_size < MaxRsvdPageBufSize) { + if (((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 filesize_ram_block -=4; } - } - else - { + } else { filesize_ram_block = dmem_pkt_size; - ls = _TRUE; + ls = _TRUE; } fs = (pkt_offset == 0 ? _TRUE: _FALSE); // Return Beacon TCB. @@ -624,69 +586,61 @@ HalROMDownloadFWRSVDPage8814A( //RTW_INFO("%d packet offset %d dmem_pkt_size %d\n", __LINE__,pkt_offset, dmem_pkt_size); SetDownLoadFwRsvdPagePkt_8814A(Adapter, pbuffer+FWHeaderSize+pkt_offset, filesize_ram_block); bDownLoadRSVDPageOK = WaitDownLoadRSVDPageOK_3081(Adapter); - if(!bDownLoadRSVDPageOK) - { + if (!bDownLoadRSVDPageOK) { RTW_INFO("ERROR: DMEM bDownLoadRSVDPageOK is false!!\n"); return; - } - - IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_DMEM_3081+pkt_offset,filesize_ram_block,fs,ls); - dmem_pkt_size -= filesize_ram_block; + } + + IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_DMEM_3081+pkt_offset,filesize_ram_block,fs,ls); + dmem_pkt_size -= filesize_ram_block; pkt_offset += filesize_ram_block; - } - + } + //download IRAM pkt_offset = 0; - while(iram_pkt_size > 0) - { - if(iram_pkt_size > MaxRsvdPageBufSize) - { + while (iram_pkt_size > 0) { + if (iram_pkt_size > MaxRsvdPageBufSize) { filesize_ram_block = MaxRsvdPageBufSize; ls = _FALSE; last_block_size = iram_pkt_size -MaxRsvdPageBufSize; - if(last_block_size < MaxRsvdPageBufSize) - { - if(((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 + if (last_block_size < MaxRsvdPageBufSize) { + if (((last_block_size + 40) & 0x3F) == 0) // Multiples of 64 filesize_ram_block -=4; } - } - else - { + } else { filesize_ram_block = iram_pkt_size; ls = _TRUE; } - + fs = (pkt_offset == 0 ? _TRUE: _FALSE); // Return Beacon TCB. //ReturnBeaconQueueTcb_8814A(Adapter); //RTW_INFO("%d packet offset %d iram_pkt_size %d\n", __LINE__,pkt_offset, iram_pkt_size); SetDownLoadFwRsvdPagePkt_8814A(Adapter, pbuffer+Len-iram_pkt_size, filesize_ram_block); - + bDownLoadRSVDPageOK = WaitDownLoadRSVDPageOK_3081(Adapter); - if(!bDownLoadRSVDPageOK) - { + if (!bDownLoadRSVDPageOK) { RTW_INFO("ERROR: IRAM bDownLoadRSVDPageOK is false!!\n"); return; } - - IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_IMEM_3081+pkt_offset,filesize_ram_block,fs,ls); - - iram_pkt_size -= filesize_ram_block; + + IDDMADownLoadFW_3081(Adapter,MEMOffsetInTxPacketBuf,OCPBASE_IMEM_3081+pkt_offset,filesize_ram_block,fs,ls); + + iram_pkt_size -= filesize_ram_block; pkt_offset += filesize_ram_block; } - - // Enable Bcn + + // Enable Bcn SetBcnCtrlReg(Adapter, BIT3, 0); SetBcnCtrlReg(Adapter, 0, BIT4); // To make sure that if there exists an adapter which would like to send beacon. // If exists, the origianl value of 0x422[6] will be 1, we should check this to - // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause + // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bSendBeacon) - { + if (bSendBeacon) { rtw_write8(Adapter, REG_FWHW_TXQ_CTRL_8814A+2, tmpReg422); } @@ -699,10 +653,8 @@ HalROMDownloadFWRSVDPage8814A( } u1bTmp=rtw_read8(Adapter, REG_8051FW_CTRL_8814A); //add by gw for flags to show the fw download ok 20130826 - if( u1bTmp&DMEM_CHKSUM_OK) - { - if(u1bTmp&IMEM_CHKSUM_OK) - { + if ( u1bTmp&DMEM_CHKSUM_OK) { + if (u1bTmp&IMEM_CHKSUM_OK) { u1Byte tem; tem=rtw_read8(Adapter, REG_8051FW_CTRL_8814A+1); rtw_write8(Adapter, REG_8051FW_CTRL_8814A+1,(tem|BIT6)); @@ -719,23 +671,22 @@ _FWFreeToGo8814A( u32 value32; // polling CheckSum report - do{ + do { rtw_mdelay_os(50); value32 = rtw_read32(Adapter, REG_8051FW_CTRL_8814A); - + } while ((counter++ < 100) && (!(value32 & CPU_DL_READY))); if (counter >= 100) { - RT_TRACE(COMP_INIT, DBG_SERIOUS, ("_FWFreeToGo8814A:: FW init fail ! REG_8051FW_CTRL_8814A:0x%08x .\n", value32)); + RT_TRACE(COMP_INIT, DBG_SERIOUS, ("_FWFreeToGo8814A:: FW init fail ! REG_8051FW_CTRL_8814A:0x%08x .\n", value32)); return _FAIL; } RT_TRACE(COMP_INIT, DBG_LOUD, ("_FWFreeToGo8814A:: FW init ok ! REG_8051FW_CTRL_8814A:0x%08x .\n", value32)); - + return _SUCCESS; } - #ifdef CONFIG_FILE_FWIMG extern char *rtw_fw_file_path; u8 FwBuffer8814[FW_SIZE]; @@ -754,8 +705,8 @@ FirmwareDownload8814A( s32 rtStatus = _SUCCESS; u8 write_fw = 0; u32 fwdl_start_time; - PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); - + PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); + u8 *pFwImageFileName; u8 *pucMappedFile = NULL; PRT_FIRMWARE_8814 pFirmware = NULL; @@ -763,30 +714,25 @@ FirmwareDownload8814A( u8 *pFirmwareBuf; u32 FirmwareLen; - RT_TRACE(_module_hal_init_c_, _drv_info_, ("+%s\n", __FUNCTION__)); pFirmware = (PRT_FIRMWARE_8814)rtw_zmalloc(sizeof(RT_FIRMWARE_8814)); - if(!pFirmware) - { + if (!pFirmware) { rtStatus = _FAIL; goto exit; } #ifdef CONFIG_FILE_FWIMG - if(rtw_is_file_readable(rtw_fw_file_path) == _TRUE) - { + if (rtw_is_file_readable(rtw_fw_file_path) == _TRUE) { RTW_INFO("%s accquire FW from file:%s\n", __FUNCTION__, rtw_fw_file_path); pFirmware->eFWSource = FW_SOURCE_IMG_FILE; - } - else + } else #endif //CONFIG_FILE_FWIMG { RTW_INFO("%s fw source from Header\n", __FUNCTION__); pFirmware->eFWSource = FW_SOURCE_HEADER_FILE; } - switch(pFirmware->eFWSource) - { + switch (pFirmware->eFWSource) { case FW_SOURCE_IMG_FILE: #ifdef CONFIG_FILE_FWIMG rtStatus = rtw_retrieve_from_file(rtw_fw_file_path, FwBuffer8814, FW_SIZE); @@ -832,7 +778,7 @@ FirmwareDownload8814A( RTW_INFO ("%s: fw_ver=%d fw_subver=%d sig=0x%x\n", __FUNCTION__, pHalData->FirmwareVersion, pHalData->FirmwareSubVersion, pHalData->FirmwareSignature); fwdl_start_time = rtw_get_current_time(); - + _FWDownloadEnable_8814A(Adapter, _TRUE); _3081Disable8814A(Adapter);//add by gw 2013026 for disable mcu core @@ -842,8 +788,8 @@ FirmwareDownload8814A( _3081Enable8814A(Adapter);//add by gw 2013026 for Enable mcu core _FWDownloadEnable_8814A(Adapter, _FALSE); - - rtStatus = _FWFreeToGo8814A(Adapter); + + rtStatus = _FWFreeToGo8814A(Adapter); if (_SUCCESS != rtStatus) goto fwdl_stat; @@ -860,18 +806,16 @@ FirmwareDownload8814A( #ifdef CONFIG_WOWLAN if (adapter_to_pwrctl(Adapter)->wowlan_mode) - InitializeFirmwareVars8814(Adapter); + InitializeFirmwareVars8814(Adapter); else - RTW_ERR("%s: wowland_mode:%d wowlan_wake_reason:%d\n", - __func__, adapter_to_pwrctl(Adapter)->wowlan_mode, + RTW_ERR("%s: wowland_mode:%d wowlan_wake_reason:%d\n", + __func__, adapter_to_pwrctl(Adapter)->wowlan_mode, adapter_to_pwrctl(Adapter)->wowlan_wake_reason); #endif return rtStatus; } - - void InitializeFirmwareVars8814(PADAPTER padapter) { PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); @@ -913,14 +857,13 @@ SetFwBTFwPatchCmd( FillH2CCmd_8812(Adapter, H2C_BT_FW_PATCH, 6 , u1BTFwPatchParm); } - int _CheckWLANFwPatchBTFwReady_8821A( PADAPTER Adapter ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u32 count=0; u8 u1bTmp; int ret = _FAIL; - + #if (DEV_BUS_TYPE == RT_SDIO_INTERFACE) u32 txpktbuf_bndy; #endif @@ -931,7 +874,7 @@ int _CheckWLANFwPatchBTFwReady_8821A( PADAPTER Adapter ) do{ u1bTmp = rtw_read8(Adapter, REG_FW_DRV_MSG_8812); if((u1bTmp&BIT6) || (u1bTmp&BIT7)) - { + { ret = _SUCCESS; break; } @@ -964,29 +907,28 @@ int _CheckWLANFwPatchBTFwReady_8821A( PADAPTER Adapter ) {// for WMM txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY_8821; } - + ret = InitLLTTable8812A(Adapter, txpktbuf_bndy); if(_SUCCESS != ret){ RTW_INFO("_CheckWLANFwPatchBTFwReady_8821A(): Failed to init LLT!\n"); } - + // Init Tx boundary. rtw_write8(Adapter, REG_TDECTRL+1, (u8)txpktbuf_bndy); #endif SetBcnCtrlReg(Adapter, BIT3, 0); SetBcnCtrlReg(Adapter, 0, BIT4); - + rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, (pHalData->RegFwHwTxQCtrl|BIT6)); pHalData->RegFwHwTxQCtrl |= BIT6; u1bTmp = rtw_read8(Adapter, REG_CR+1); rtw_write8(Adapter, REG_CR+1, (u1bTmp&(~BIT0))); - + return ret; } - int _WriteBTFWtoTxPktBuf8812( PADAPTER Adapter, PVOID buffer, @@ -1082,18 +1024,17 @@ int _WriteBTFWtoTxPktBuf8812( // 2. Adjust LLT table to an even boundary. //--------------------------------------------------------- #if 0//(DEV_BUS_TYPE == RT_SDIO_INTERFACE) - txpktbuf_bndy = 10; // rsvd page start address should be an even value. + txpktbuf_bndy = 10; // rsvd page start address should be an even value. rtStatus = InitLLTTable8723BS(Adapter, txpktbuf_bndy); if(_SUCCESS != rtStatus){ RTW_INFO("_CheckWLANFwPatchBTFwReady_8723B(): Failed to init LLT!\n"); return _FAIL; } - + // Init Tx boundary. - rtw_write8(Adapter, REG_DWBCN0_CTRL_8723B+1, (u8)txpktbuf_bndy); + rtw_write8(Adapter, REG_DWBCN0_CTRL_8723B+1, (u8)txpktbuf_bndy); #endif - //--------------------------------------------------------- // 3. Write Fw to Tx packet buffer by reseverd page. //--------------------------------------------------------- @@ -1117,8 +1058,7 @@ int _WriteBTFWtoTxPktBuf8812( // Acquice TX spin lock before GetFwBuf and send the packet to prevent system deadlock. // Advertised by Roger. Added by tynli. 2010.02.22. PlatformAcquireSpinLock(Adapter, RT_TX_SPINLOCK); - if(MgntGetFWBuffer(Adapter, &pTcb, &pBuf)) - { + if(MgntGetFWBuffer(Adapter, &pTcb, &pBuf)) { PlatformMoveMemory(pBuf->Buffer.VirtualAddress, ReservedPagePacket, TotalPktLen); CmdSendPacket(Adapter, pTcb, pBuf, TotalPktLen, DESC_PACKET_TYPE_NORMAL, _FALSE); } @@ -1156,8 +1096,7 @@ int _WriteBTFWtoTxPktBuf8812( #if 1 // check rsvd page download OK. BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); - while(!(BcnValidReg & BIT(0)) && count <200) - { + while (!(BcnValidReg & BIT(0)) && count <200) { count++; //PlatformSleepUs(10); rtw_msleep_os(1); @@ -1168,19 +1107,17 @@ int _WriteBTFWtoTxPktBuf8812( //RTW_INFO("##0x208:%08x,0x210=%08x\n",rtw_read32(Adapter, REG_TDECTRL),rtw_read32(Adapter, 0x210)); rtw_write8(Adapter, REG_TDECTRL+2,BcnValidReg); - - }while((!(BcnValidReg&BIT(0))) && DLBcnCount<5); + } while ((!(BcnValidReg&BIT(0))) && DLBcnCount<5); #endif - if(DLBcnCount >=5){ + if(DLBcnCount >=5) { RTW_INFO(" check rsvd page download OK DLBcnCount =%d \n",DLBcnCount); rtStatus = _FAIL; goto exit; } - if(!(BcnValidReg&BIT(0))) - { + if(!(BcnValidReg&BIT(0))) { RTW_INFO("_WriteFWtoTxPktBuf(): 1 Download RSVD page failed!\n"); rtStatus = _FAIL; goto exit; @@ -1190,7 +1127,6 @@ int _WriteBTFWtoTxPktBuf8812( // 4. Set Tx boundary to the initial value //--------------------------------------------------------- - //--------------------------------------------------------- // 5. Reset beacon setting to the initial value. // After _CheckWLANFwPatchBTFwReady(). @@ -1198,8 +1134,7 @@ int _WriteBTFWtoTxPktBuf8812( exit: - if(pGenBufReservedPagePacket) - { + if(pGenBufReservedPagePacket) { RTW_INFO("_WriteBTFWtoTxPktBuf8723B => rtw_mfree pGenBufReservedPagePacket!\n"); rtw_mfree((u8*)pGenBufReservedPagePacket, TotalPktLen); } @@ -1218,86 +1153,78 @@ int ReservedPage_Compare(PADAPTER Adapter,PRT_MP_FIRMWARE pFirmware,u32 BTPatchS RTW_INFO("%s can't be executed due to the failed malloc.\n", __FUNCTION__); Adapter->mppriv.bTxBufCkFail=_TRUE; return _FALSE; - } - + } + temp=rtw_read8(Adapter,0x209); - + address_start=(temp*128)/8; - + rtw_write32(Adapter,0x140,0x00000000); rtw_write32(Adapter,0x144,0x00000000); rtw_write32(Adapter,0x148,0x00000000); rtw_write8(Adapter,0x106,0x69); - - for(i=0;i<(BTPatchSize/8);i++) - { - rtw_write32(Adapter,0x140,address_start+5+i) ; - + for(i=0;i<(BTPatchSize/8);i++) { + rtw_write32(Adapter,0x140,address_start+5+i) ; + //polling until reg 0x140[23]=1; - do{ + do { u1bTmp = rtw_read32(Adapter, 0x140); - if(u1bTmp&BIT(23)) - { + if(u1bTmp&BIT(23)) { ret = _SUCCESS; break; } count++; RTW_INFO("0x140=%x, wait for 10 ms (%d) times.\n",u1bTmp, count); rtw_msleep_os(10); // 10ms - }while(!(u1bTmp&BIT(23)) && count < 50); - + } while(!(u1bTmp&BIT(23)) && count < 50); + myBTFwBuffer[i*8+0]=rtw_read8(Adapter, 0x144); myBTFwBuffer[i*8+1]=rtw_read8(Adapter, 0x145); - myBTFwBuffer[i*8+2]=rtw_read8(Adapter, 0x146); + myBTFwBuffer[i*8+2]=rtw_read8(Adapter, 0x146); myBTFwBuffer[i*8+3]=rtw_read8(Adapter, 0x147); myBTFwBuffer[i*8+4]=rtw_read8(Adapter, 0x148); myBTFwBuffer[i*8+5]=rtw_read8(Adapter, 0x149); myBTFwBuffer[i*8+6]=rtw_read8(Adapter, 0x14a); myBTFwBuffer[i*8+7]=rtw_read8(Adapter, 0x14b); } - - rtw_write32(Adapter,0x140,address_start+5+BTPatchSize/8) ; + + rtw_write32(Adapter,0x140,address_start+5+BTPatchSize/8) ; lastBTsz=BTPatchSize%8; - + //polling until reg 0x140[23]=1; u1bTmp=0; count=0; - do{ + do { u1bTmp = rtw_read32(Adapter, 0x140); - if(u1bTmp&BIT(23)) - { + if(u1bTmp&BIT(23)) { ret = _SUCCESS; break; } count++; RTW_INFO("0x140=%x, wait for 10 ms (%d) times.\n",u1bTmp, count); rtw_msleep_os(10); // 10ms - }while(!(u1bTmp&BIT(23)) && count < 50); + } while (!(u1bTmp&BIT(23)) && count < 50); - for(i=0;iszFwBuffer[i]) - { + for(i=0;iszFwBuffer[i]) { RTW_INFO(" In direct myBTFwBuffer[%d]=%x , pFirmware->szFwBuffer=%x\n",i, myBTFwBuffer[i],pFirmware->szFwBuffer[i]); Adapter->mppriv.bTxBufCkFail=_TRUE; break; } } - if (myBTFwBuffer != NULL) - { + if (myBTFwBuffer != NULL) { rtw_mfree(myBTFwBuffer, BTPatchSize); } - + return _TRUE; } @@ -1324,15 +1251,13 @@ s32 FirmwareDownloadBT(PADAPTER padapter, PRT_MP_FIRMWARE pFirmware) } #ifdef CONFIG_FILE_FWIMG - if (rtw_is_file_readable(rtw_fw_mp_bt_file_path) == _TRUE) - { + if (rtw_is_file_readable(rtw_fw_mp_bt_file_path) == _TRUE) { RTW_INFO("%s: accquire MP BT FW from file:%s\n", __FUNCTION__, rtw_fw_mp_bt_file_path); rtStatus = rtw_retrieve_from_file(rtw_fw_mp_bt_file_path, FwBuffer, 0x8000); BTFirmwareLen = rtStatus>=0?rtStatus:0; pBTFirmwareBuf = FwBuffer; - } - else + } else #endif // CONFIG_FILE_FWIMG { #ifdef CONFIG_EMBEDDED_FWIMG @@ -1354,21 +1279,16 @@ s32 FirmwareDownloadBT(PADAPTER padapter, PRT_MP_FIRMWARE pFirmware) RTW_INFO("%s: download_time is %d\n", __FUNCTION__, download_time); // Download BT patch Fw. - for (i = (download_time-1); i >= 0; i--) - { - if (i == (download_time - 1)) - { + for (i = (download_time-1); i >= 0; i--) { + if (i == (download_time - 1)) { rtStatus = _WriteBTFWtoTxPktBuf8812(padapter, pBTFirmwareBuf+(4096*i), (BTFirmwareLen-(4096*i)), 1); RTW_INFO("%s: start %d, len %d, time 1\n", __FUNCTION__, 4096*i, BTFirmwareLen-(4096*i)); - } - else - { + } else { rtStatus = _WriteBTFWtoTxPktBuf8812(padapter, pBTFirmwareBuf+(4096*i), 4096, (download_time-i)); RTW_INFO("%s: start %d, len 4096, time %d\n", __FUNCTION__, 4096*i, download_time-i); } - if (rtStatus != _SUCCESS) - { + if (rtStatus != _SUCCESS) { RTW_INFO("%s: BT Firmware download to Tx packet buffer fail!\n", __FUNCTION__); padapter->bBTFWReady = _FALSE; return rtStatus; @@ -1409,7 +1329,7 @@ SetFwRelatedForWoWLAN8812( // 1. Before WoWLAN we need to re-download WoWLAN Fw. // status = FirmwareDownload8812(padapter, bHostIsGoingtoSleep); - if(status != _SUCCESS) { + if (status != _SUCCESS) { RTW_INFO("SetFwRelatedForWoWLAN8812(): Re-Download Firmware failed!!\n"); return; } else { @@ -1425,7 +1345,7 @@ SetFwRelatedForWoWLAN8812( //=========================================================== // Efuse related code //=========================================================== -BOOLEAN +BOOLEAN hal_GetChnlGroup8814A( IN u8 Channel, OUT u8* pGroup @@ -1433,8 +1353,7 @@ hal_GetChnlGroup8814A( { BOOLEAN bIn24G=_TRUE; - if(Channel <= 14) - { + if (Channel <= 14) { bIn24G=_TRUE; if (1 <= Channel && Channel <= 2 ) *pGroup = 0; @@ -1442,16 +1361,13 @@ hal_GetChnlGroup8814A( else if (6 <= Channel && Channel <= 8 ) *pGroup = 2; else if (9 <= Channel && Channel <= 11) *pGroup = 3; else if (12 <= Channel && Channel <= 14) *pGroup = 4; - else - { + else { RT_DISP(FPHY, PHY_TXPWR_EFUSE, ("==>hal_GetChnlGroupJaguar in 2.4 G, but Channel %d in Group not found \n", Channel)); } - } - else - { + } else { bIn24G=_FALSE; - if (36 <= Channel && Channel <= 42) *pGroup = 0; // 36 38 40 + if (36 <= Channel && Channel <= 42) *pGroup = 0; // 36 38 40 else if (44 <= Channel && Channel <= 48) *pGroup = 1; // 44 46 48 else if (50 <= Channel && Channel <= 58) *pGroup = 2; // 52 54 56 else if (60 <= Channel && Channel <= 64) *pGroup = 3; // 60 62 64 @@ -1465,8 +1381,7 @@ hal_GetChnlGroup8814A( else if (157 <= Channel && Channel <= 161) *pGroup = 11; // 157 159 161 else if (165 <= Channel && Channel <= 171) *pGroup = 12; // 165 167 169 else if (173 <= Channel && Channel <= 177) *pGroup = 13; // 173 175 177 - else - { + else { RT_DISP(FPHY, PHY_TXPWR_EFUSE, ("==>hal_GetChnlGroupJaguar in 5G, but Channel %d in Group not found \n",Channel)); } @@ -1475,7 +1390,6 @@ hal_GetChnlGroup8814A( return bIn24G; } - static void hal_ReadPowerValueFromPROM8814A( IN PADAPTER Adapter, @@ -1487,58 +1401,46 @@ hal_ReadPowerValueFromPROM8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u32 rfPath, eeAddr=EEPROM_TX_PWR_INX_8814, group,TxCount=0; - + _rtw_memset(pwrInfo24G, 0, sizeof(TxPowerInfo24G)); _rtw_memset(pwrInfo5G, 0, sizeof(TxPowerInfo5G)); /* RTW_INFO("hal_ReadPowerValueFromPROM8814A(): PROMContent[0x%x]=0x%x\n", (eeAddr+1), PROMContent[eeAddr+1]); */ - if(0xFF == PROMContent[eeAddr+1]) //YJ,add,120316 + if (0xFF == PROMContent[eeAddr+1]) //YJ,add,120316 AutoLoadFail = _TRUE; - if(AutoLoadFail) - { + if (AutoLoadFail) { RTW_INFO("hal_ReadPowerValueFromPROM8814A(): Use Default value!\n"); - for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) - { + for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { // 2.4G default value - for(group = 0 ; group < MAX_CHNL_GROUP_24G; group++) - { + for(group = 0 ; group < MAX_CHNL_GROUP_24G; group++) { pwrInfo24G->IndexCCK_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; pwrInfo24G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; } - for(TxCount=0;TxCountBW20_Diff[rfPath][0] = EEPROM_DEFAULT_24G_HT20_DIFF; pwrInfo24G->OFDM_Diff[rfPath][0] = EEPROM_DEFAULT_24G_OFDM_DIFF; - } - else - { + } else { pwrInfo24G->BW20_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo24G->BW40_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo24G->CCK_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo24G->OFDM_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; } - } + } // 5G default value - for(group = 0 ; group < MAX_CHNL_GROUP_5G; group++) - { + for(group = 0 ; group < MAX_CHNL_GROUP_5G; group++) { pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_5G_INDEX; } - - for(TxCount=0;TxCountOFDM_Diff[rfPath][0] = EEPROM_DEFAULT_5G_OFDM_DIFF; pwrInfo5G->BW20_Diff[rfPath][0] = EEPROM_DEFAULT_5G_HT20_DIFF; pwrInfo5G->BW80_Diff[rfPath][0] = EEPROM_DEFAULT_DIFF; pwrInfo5G->BW160_Diff[rfPath][0] = EEPROM_DEFAULT_DIFF; - } - else - { + } else { pwrInfo5G->OFDM_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo5G->BW20_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; pwrInfo5G->BW40_Diff[rfPath][TxCount]= EEPROM_DEFAULT_DIFF; @@ -1546,98 +1448,87 @@ hal_ReadPowerValueFromPROM8814A( pwrInfo5G->BW160_Diff[rfPath][TxCount] = EEPROM_DEFAULT_DIFF; } - } - + } } - - //pHalData->bNOPG = _TRUE; + //pHalData->bNOPG = _TRUE; return; } - for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) - { + for (rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { // 2.4G default value - for(group = 0 ; group < MAX_CHNL_GROUP_24G; group++) - { + for (group = 0 ; group < MAX_CHNL_GROUP_24G; group++) { pwrInfo24G->IndexCCK_Base[rfPath][group] = PROMContent[eeAddr++]; - if(pwrInfo24G->IndexCCK_Base[rfPath][group] == 0xFF) - { + if (pwrInfo24G->IndexCCK_Base[rfPath][group] == 0xFF) { pwrInfo24G->IndexCCK_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; } - /* RTW_INFO("8814-2G RF-%d-G-%d CCK-Addr-%x BASE=%x\n", + /* RTW_INFO("8814-2G RF-%d-G-%d CCK-Addr-%x BASE=%x\n", rfPath, group, eeAddr-1, pwrInfo24G->IndexCCK_Base[rfPath][group]); */ } - for(group = 0 ; group < MAX_CHNL_GROUP_24G-1; group++) - { + for (group = 0 ; group < MAX_CHNL_GROUP_24G-1; group++) { pwrInfo24G->IndexBW40_Base[rfPath][group] = PROMContent[eeAddr++]; - if(pwrInfo24G->IndexBW40_Base[rfPath][group] == 0xFF) + if (pwrInfo24G->IndexBW40_Base[rfPath][group] == 0xFF) pwrInfo24G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_24G_INDEX; - /* RTW_INFO("8814-2G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", + /* RTW_INFO("8814-2G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", rfPath, group, eeAddr-1, pwrInfo24G->IndexBW40_Base[rfPath][group]); */ } - for(TxCount=0;TxCountBW40_Diff[rfPath][TxCount] = 0; { - pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo24G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW20_Diff[rfPath][TxCount]); */ { - pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo24G->OFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->OFDM_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->OFDM_Diff[rfPath][TxCount]); */ pwrInfo24G->CCK_Diff[rfPath][TxCount] = 0; eeAddr++; - } - else - { + } else { { - pwrInfo24G->BW40_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo24G->BW40_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo24G->BW40_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->BW40_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW40_Diff[rfPath][TxCount]); */ { - pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo24G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo24G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW20_Diff[rfPath][TxCount]); */ eeAddr++; - { - pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo24G->OFDM_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo24G->OFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->OFDM_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->BW20_Diff[rfPath][TxCount]); */ { - pwrInfo24G->CCK_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo24G->CCK_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo24G->CCK_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number pwrInfo24G->CCK_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-2G RF-%d-SS-%d CCK-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-2G RF-%d-SS-%d CCK-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo24G->CCK_Diff[rfPath][TxCount]); */ eeAddr++; @@ -1645,109 +1536,101 @@ hal_ReadPowerValueFromPROM8814A( } //5G default value - for(group = 0 ; group < MAX_CHNL_GROUP_5G; group++) - { + for (group = 0 ; group < MAX_CHNL_GROUP_5G; group++) { pwrInfo5G->IndexBW40_Base[rfPath][group] = PROMContent[eeAddr++]; - if(pwrInfo5G->IndexBW40_Base[rfPath][group] == 0xFF) - pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_DIFF; + if (pwrInfo5G->IndexBW40_Base[rfPath][group] == 0xFF) + pwrInfo5G->IndexBW40_Base[rfPath][group] = EEPROM_DEFAULT_DIFF; - /* RTW_INFO("8814-5G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", + /* RTW_INFO("8814-5G RF-%d-G-%d BW40-Addr-%x BASE=%x\n", rfPath, TxCount, eeAddr-1, pwrInfo5G->IndexBW40_Base[rfPath][group]); */ } - - for(TxCount=0;TxCountBW40_Diff[rfPath][TxCount]= 0; - + + for (TxCount=0;TxCountBW40_Diff[rfPath][TxCount]= 0; { - pwrInfo5G->BW20_Diff[rfPath][0] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo5G->BW20_Diff[rfPath][0] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo5G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW20_Diff[rfPath][TxCount]); */ { - pwrInfo5G->OFDM_Diff[rfPath][0] = (PROMContent[eeAddr]&0x0f); + pwrInfo5G->OFDM_Diff[rfPath][0] = (PROMContent[eeAddr]&0x0f); if(pwrInfo5G->OFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][TxCount]); */ eeAddr++; - } - else - { + } else { { - pwrInfo5G->BW40_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo5G->BW40_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo5G->BW40_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW40_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW40_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW40-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW40_Diff[rfPath][TxCount]); */ - + { - pwrInfo5G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); + pwrInfo5G->BW20_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0x0f); if(pwrInfo5G->BW20_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW20_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW20-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW20_Diff[rfPath][TxCount]); */ - + eeAddr++; } - } + } { pwrInfo5G->OFDM_Diff[rfPath][1] = (PROMContent[eeAddr]&0xf0)>>4; pwrInfo5G->OFDM_Diff[rfPath][2] = (PROMContent[eeAddr]&0x0f); } - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, 2, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][2]); */ - eeAddr++; + eeAddr++; pwrInfo5G->OFDM_Diff[rfPath][3] = (PROMContent[eeAddr]&0x0f); - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, 3, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][3]); */ eeAddr++; - - for(TxCount=1;TxCountOFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; - /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", + for (TxCount=1;TxCountOFDM_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number + pwrInfo5G->OFDM_Diff[rfPath][TxCount] |= 0xF0; + + /* RTW_INFO("8814-5G RF-%d-SS-%d LGOD-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->OFDM_Diff[rfPath][TxCount]); */ - } - - for(TxCount=0;TxCountBW80_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; + pwrInfo5G->BW80_Diff[rfPath][TxCount] = (PROMContent[eeAddr]&0xf0)>>4; if(pwrInfo5G->BW80_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW80_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW80_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW80-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW80-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW80_Diff[rfPath][TxCount]); */ - + { - pwrInfo5G->BW160_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0x0f); + pwrInfo5G->BW160_Diff[rfPath][TxCount]= (PROMContent[eeAddr]&0x0f); if(pwrInfo5G->BW160_Diff[rfPath][TxCount] & BIT3) //4bit sign number to 8 bit sign number - pwrInfo5G->BW160_Diff[rfPath][TxCount] |= 0xF0; + pwrInfo5G->BW160_Diff[rfPath][TxCount] |= 0xF0; } - /* RTW_INFO("8814-5G RF-%d-SS-%d BW160-Addr-%x DIFF=%d\n", + /* RTW_INFO("8814-5G RF-%d-SS-%d BW160-Addr-%x DIFF=%d\n", rfPath, TxCount, eeAddr, pwrInfo5G->BW160_Diff[rfPath][TxCount]); */ eeAddr++; } @@ -1772,8 +1655,7 @@ HALBT_InitHalVars( #endif //CONFIG_BT_COEXIST } - -VOID +VOID BT_InitHalVars( IN PADAPTER Adapter ) @@ -1794,7 +1676,6 @@ BT_InitHalVars( #endif } - VOID hal_EfuseParseBTCoexistInfo8814A( IN PADAPTER Adapter, @@ -1805,10 +1686,9 @@ hal_EfuseParseBTCoexistInfo8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 tempval=0x0; - if(!AutoLoadFail) - { + if (!AutoLoadFail) { tempval = hwinfo[EEPROM_RF_BOARD_OPTION_8814]; - if( ((tempval & 0xe0)>>5) == 0x1)// [7:5] + if ( ((tempval & 0xe0)>>5) == 0x1)// [7:5] pHalData->EEPROMBluetoothCoexist = 1; else pHalData->EEPROMBluetoothCoexist = 0; @@ -1816,9 +1696,7 @@ hal_EfuseParseBTCoexistInfo8814A( tempval = hwinfo[EEPROM_RF_BT_SETTING_8814]; pHalData->EEPROMBluetoothAntNum = Ant_x1; - } - else - { + } else { pHalData->EEPROMBluetoothCoexist = 0; pHalData->EEPROMBluetoothType = BT_RTL8814A; pHalData->EEPROMBluetoothAntNum = Ant_x1; @@ -1829,20 +1707,19 @@ hal_EfuseParseBTCoexistInfo8814A( VOID hal_ReadPROMVersion8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(AutoloadFail){ - pHalData->EEPROMVersion = EEPROM_Default_Version; - } - else{ + if (AutoloadFail) { + pHalData->EEPROMVersion = EEPROM_Default_Version; + } else { pHalData->EEPROMVersion = *(u8 *)&PROMContent[EEPROM_VERSION_8814]; - if(pHalData->EEPROMVersion == 0xFF) - pHalData->EEPROMVersion = EEPROM_Default_Version; + if (pHalData->EEPROMVersion == 0xFF) + pHalData->EEPROMVersion = EEPROM_Default_Version; } } @@ -1852,7 +1729,7 @@ hal_ReadTxPowerInfo8814A( IN u8* PROMContent, IN BOOLEAN AutoLoadFail ) -{ +{ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); TxPowerInfo24G pwrInfo24G; TxPowerInfo5G pwrInfo5G; @@ -1861,55 +1738,50 @@ hal_ReadTxPowerInfo8814A( hal_ReadPowerValueFromPROM8814A(Adapter, &pwrInfo24G,&pwrInfo5G, PROMContent, AutoLoadFail); //if(!AutoLoadFail) - // pHalData->bTXPowerDataReadFromEEPORM = _TRUE; + // pHalData->bTXPowerDataReadFromEEPORM = _TRUE; - for(rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) - { + for (rfPath = 0 ; rfPath < MAX_RF_PATH ; rfPath++) { for (ch = 0 ; ch < CENTER_CH_2G_NUM ; ch++) { hal_GetChnlGroup8814A(ch+1, &group); - if(ch == 14-1) - { + if (ch == 14-1) { pHalData->Index24G_CCK_Base[rfPath][ch] = pwrInfo24G.IndexCCK_Base[rfPath][5]; pHalData->Index24G_BW40_Base[rfPath][ch] = pwrInfo24G.IndexBW40_Base[rfPath][group]; - } - else - { + } else { pHalData->Index24G_CCK_Base[rfPath][ch] = pwrInfo24G.IndexCCK_Base[rfPath][group]; pHalData->Index24G_BW40_Base[rfPath][ch] = pwrInfo24G.IndexBW40_Base[rfPath][group]; } - //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); + //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); //RTW_INFO("Index24G_CCK_Base[%d][%d] = 0x%x\n",rfPath,ch ,pHalData->Index24G_CCK_Base[rfPath][ch]); //RTW_INFO("Index24G_BW40_Base[%d][%d] = 0x%x\n",rfPath,ch,pHalData->Index24G_BW40_Base[rfPath][ch]); - } + } for (ch = 0 ; ch < CENTER_CH_5G_ALL_NUM; ch++) { hal_GetChnlGroup8814A(center_ch_5g_all[ch], &group); - + pHalData->Index5G_BW40_Base[rfPath][ch] = pwrInfo5G.IndexBW40_Base[rfPath][group]; - //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); + //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); //RTW_INFO("Index5G_BW40_Base[%d][%d] = 0x%x\n",rfPath,ch,pHalData->Index5G_BW40_Base[rfPath][ch]); } for (ch = 0 ; ch < CENTER_CH_5G_80M_NUM; ch++) { u8 upper, lower; - + hal_GetChnlGroup8814A(center_ch_5g_80m[ch], &group); upper = pwrInfo5G.IndexBW40_Base[rfPath][group]; lower = pwrInfo5G.IndexBW40_Base[rfPath][group+1]; - + pHalData->Index5G_BW80_Base[rfPath][ch] = (upper + lower) / 2; - - //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); + + //RTW_INFO("======= Path %d, ChannelIndex %d, Group %d=======\n",rfPath,ch, group); //RTW_INFO("Index5G_BW80_Base[%d][%d] = 0x%x\n",rfPath,ch,pHalData->Index5G_BW80_Base[rfPath][ch]); } - for(TxCount=0;TxCountCCK_24G_Diff[rfPath][TxCount]=pwrInfo24G.CCK_Diff[rfPath][TxCount]; pHalData->OFDM_24G_Diff[rfPath][TxCount]=pwrInfo24G.OFDM_Diff[rfPath][TxCount]; pHalData->BW20_24G_Diff[rfPath][TxCount]=pwrInfo24G.BW20_Diff[rfPath][TxCount]; pHalData->BW40_24G_Diff[rfPath][TxCount]=pwrInfo24G.BW40_Diff[rfPath][TxCount]; - + pHalData->OFDM_5G_Diff[rfPath][TxCount]=pwrInfo5G.OFDM_Diff[rfPath][TxCount]; pHalData->BW20_5G_Diff[rfPath][TxCount]=pwrInfo5G.BW20_Diff[rfPath][TxCount]; pHalData->BW40_5G_Diff[rfPath][TxCount]=pwrInfo5G.BW40_Diff[rfPath][TxCount]; @@ -1926,22 +1798,19 @@ hal_ReadTxPowerInfo8814A( RTW_INFO("BW20_5G_Diff[%d][%d]= %d\n",rfPath,TxCount,pHalData->BW20_5G_Diff[rfPath][TxCount]); RTW_INFO("BW40_5G_Diff[%d][%d]= %d\n",rfPath,TxCount,pHalData->BW40_5G_Diff[rfPath][TxCount]); RTW_INFO("BW80_5G_Diff[%d][%d]= %d\n",rfPath,TxCount,pHalData->BW80_5G_Diff[rfPath][TxCount]); -#endif +#endif } } - + // 2010/10/19 MH Add Regulator recognize for CU. - if(!AutoLoadFail) - { + if (!AutoLoadFail) { struct registry_priv *registry_par = &Adapter->registrypriv; - + pHalData->EEPROMRegulatory = (PROMContent[EEPROM_RF_BOARD_OPTION_8814]&0x7); //bit0~2 - if(PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) + if (PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) pHalData->EEPROMRegulatory = (EEPROM_DEFAULT_BOARD_OPTION&0x7); //bit0~2 - } - else - { + } else { pHalData->EEPROMRegulatory = 0; } @@ -1951,23 +1820,19 @@ hal_ReadTxPowerInfo8814A( VOID hal_ReadBoardType8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(!AutoloadFail) - { + if (!AutoloadFail) { pHalData->InterfaceSel = (PROMContent[EEPROM_RF_BOARD_OPTION_8814]&0xE0)>>5; - if(PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) + if (PROMContent[EEPROM_RF_BOARD_OPTION_8814] == 0xFF) pHalData->InterfaceSel = (EEPROM_DEFAULT_BOARD_OPTION&0xE0)>>5; - } - else - { + } else { pHalData->InterfaceSel = 0; } RT_TRACE(COMP_INIT, DBG_LOUD, ("Board Type: 0x%2x\n", pHalData->InterfaceSel)); @@ -1975,7 +1840,7 @@ hal_ReadBoardType8814A( VOID hal_Read_TRX_antenna_8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8 *PROMContent, IN BOOLEAN AutoloadFail ) @@ -2006,7 +1871,7 @@ hal_Read_TRX_antenna_8814A( trx_antenna = RF_2T4R; RTW_INFO("AutoloadFail, default to 2T4R\n"); } - + /* if driver doesn't set rf_config, use the value of EEPROM */ if (Adapter->registrypriv.rf_config == RF_MAX_TYPE) { @@ -2028,14 +1893,14 @@ hal_Read_TRX_antenna_8814A( Adapter->registrypriv.rf_config = RF_2T4R; #endif /* CONFIG_USB_HCI */ } - + RTW_INFO("Final rf_config: %d\n", Adapter->registrypriv.rf_config); } VOID hal_ReadThermalMeter_8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) @@ -2043,8 +1908,8 @@ hal_ReadThermalMeter_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); pHalData->EEPROMThermalMeter = 0xff; - - if(!AutoloadFail) + + if (!AutoloadFail) pHalData->EEPROMThermalMeter = PROMContent[EEPROM_THERMAL_METER_8814]; #if 0 /* ToDo: check with RF */ @@ -2072,12 +1937,10 @@ void hal_ReadRemoteWakeup_8814A( struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); u8 tmpvalue; - if(AutoLoadFail){ + if (AutoLoadFail) { pwrctl->bHWPowerdown = _FALSE; pwrctl->bSupportRemoteWakeup = _FALSE; - } - else - { + } else { // decide hw if support remote wakeup function // if hw supported, 8051 (SIE) will generate WeakUP signal( D+/D- toggle) when autoresume /* todo: wowlan should check the efuse again @@ -2134,7 +1997,7 @@ void hal_GetRxGainOffset_8814A( pHalData->RxGainOffset[2] = 0; pHalData->RxGainOffset[3] = 0; - if ((pregistrypriv->reg_rxgain_offset_2g != 0 && pregistrypriv->reg_rxgain_offset_5gl != 0) && + if ((pregistrypriv->reg_rxgain_offset_2g != 0 && pregistrypriv->reg_rxgain_offset_5gl != 0) && (pregistrypriv->reg_rxgain_offset_5gm != 0 && pregistrypriv->reg_rxgain_offset_5gh != 0)) { pHalData->RxGainOffset[0] = pregistrypriv->reg_rxgain_offset_2g; pHalData->RxGainOffset[1] = pregistrypriv->reg_rxgain_offset_5gl; @@ -2159,7 +2022,6 @@ void hal_GetRxGainOffset_8814A( RTW_INFO("hal_GetRxGainOffset_8814A(): RegRxGainOffset_5GH = 0x%x!!\n", pHalData->RxGainOffset[3]); } - void Hal_EfuseParseKFreeData_8814A( IN PADAPTER Adapter, IN u8 *PROMContent, @@ -2228,7 +2090,6 @@ void Hal_EfuseParseKFreeData_8814A( #endif /*CONFIG_RF_GAIN_OFFSET */ } - VOID hal_EfuseParseXtal_8814A( IN PADAPTER pAdapter, @@ -2238,14 +2099,11 @@ hal_EfuseParseXtal_8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - if(!AutoLoadFail) - { + if (!AutoLoadFail) { pHalData->CrystalCap = hwinfo[EEPROM_XTAL_8814]; - if(pHalData->CrystalCap == 0xFF) + if (pHalData->CrystalCap == 0xFF) pHalData->CrystalCap = EEPROM_Default_CrystalCap_8814; /* what value should 8814 set? */ - } - else - { + } else { pHalData->CrystalCap = EEPROM_Default_CrystalCap_8814; } RTW_INFO("CrystalCap: 0x%2x\n", pHalData->CrystalCap); @@ -2259,11 +2117,11 @@ hal_ReadAntennaDiversity8814A( ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - - pHalData->TRxAntDivType = NO_ANTDIV; + + pHalData->TRxAntDivType = NO_ANTDIV; pHalData->AntDivCfg = 0; - - RTW_INFO("SWAS: bHwAntDiv = %x, TRxAntDivType = %x\n", + + RTW_INFO("SWAS: bHwAntDiv = %x, TRxAntDivType = %x\n", pHalData->AntDivCfg, pHalData->TRxAntDivType); } @@ -2272,93 +2130,79 @@ hal_ReadPAType_8814A( IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail, - OUT u8* pPAType, + OUT u8* pPAType, OUT u8* pLNAType ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 LNAType_AB, LNAType_CD; - if( ! AutoloadFail ) - { + if( ! AutoloadFail ) { u8 RFEType = PROMContent[EEPROM_RFE_OPTION_8814]; - if (GetRegAmplifierType2G(Adapter) == 0) // AUTO - { + if (GetRegAmplifierType2G(Adapter) == 0) { // AUTO *pPAType = EF1Byte( *(u8*)&PROMContent[EEPROM_PA_TYPE_8814] ); LNAType_AB = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_AB_2G_8814] ); LNAType_CD = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_CD_2G_8814] ); - + if (*pPAType == 0xFF && RFEType == 0xFF) - pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - else + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + else pHalData->ExternalPA_2G = (*pPAType & BIT4) ? 1 : 0; if (LNAType_AB == 0xFF) pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; else - pHalData->ExternalLNA_2G = (LNAType_AB & BIT3) ? 1 : 0; + pHalData->ExternalLNA_2G = (LNAType_AB & BIT3) ? 1 : 0; *pLNAType = (LNAType_AB & BIT3) << 1 | (LNAType_AB & BIT7) >> 2 | (LNAType_CD & BIT3) << 3 | (LNAType_CD & BIT7); - } - else - { - pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; + } else { + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; } - if (GetRegAmplifierType5G(Adapter) == 0) // AUTO - { + if (GetRegAmplifierType5G(Adapter) == 0) { // AUTO LNAType_AB = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_AB_5G_8814] ); LNAType_CD = EF1Byte( *(u8*)&PROMContent[EEPROM_LNA_TYPE_CD_5G_8814] ); - + if (*pPAType == 0xFF && RFEType == 0xFF) - pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - else - pHalData->ExternalPA_5G = (*pPAType & BIT0) ? 1 : 0; + pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + else + pHalData->ExternalPA_5G = (*pPAType & BIT0) ? 1 : 0; if (LNAType_AB == 0xFF) pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; else - pHalData->ExternalLNA_5G = (LNAType_AB & BIT3) ? 1 : 0; + pHalData->ExternalLNA_5G = (LNAType_AB & BIT3) ? 1 : 0; (*pLNAType) |= ((LNAType_AB & BIT3) >> 3 | (LNAType_AB & BIT7) >> 6 | (LNAType_CD & BIT3) >> 1 | (LNAType_CD & BIT7) >> 4); + } else { + pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; + pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; } - else - { - pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; - pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; - } - } - else - { - pHalData->ExternalPA_2G = EEPROM_Default_PAType; - pHalData->ExternalPA_5G = 0xFF; - pHalData->ExternalLNA_2G = EEPROM_Default_LNAType; - pHalData->ExternalLNA_5G = 0xFF; - - if (GetRegAmplifierType2G(Adapter) == 0) - { - pHalData->ExternalPA_2G = 0; - pHalData->ExternalLNA_2G = 0; - } - else - { - pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; - pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; - } - if (GetRegAmplifierType5G(Adapter) == 0) - { - pHalData->ExternalPA_5G = 0; - pHalData->ExternalLNA_5G = 0; + } else { + pHalData->ExternalPA_2G = EEPROM_Default_PAType; + pHalData->ExternalPA_5G = 0xFF; + pHalData->ExternalLNA_2G = EEPROM_Default_LNAType; + pHalData->ExternalLNA_5G = 0xFF; + + if (GetRegAmplifierType2G(Adapter) == 0) { + pHalData->ExternalPA_2G = 0; + pHalData->ExternalLNA_2G = 0; + } else { + pHalData->ExternalPA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_PA) ? 1 : 0; + pHalData->ExternalLNA_2G = (GetRegAmplifierType2G(Adapter)&ODM_BOARD_EXT_LNA) ? 1 : 0; } - else - { - pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; - pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; + + if (GetRegAmplifierType5G(Adapter) == 0) { + pHalData->ExternalPA_5G = 0; + pHalData->ExternalLNA_5G = 0; + } else { + pHalData->ExternalPA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_PA_5G) ? 1 : 0; + pHalData->ExternalLNA_5G = (GetRegAmplifierType5G(Adapter)&ODM_BOARD_EXT_LNA_5G) ? 1 : 0; } } RTW_INFO("PAType is 0x%x, LNAType is 0x%x\n", *pPAType, *pLNAType); @@ -2371,7 +2215,7 @@ VOID hal_ReadAmplifierType_8814A( ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - switch(pHalData->RFEType) + switch (pHalData->RFEType) { case 1: /* 8814AU */ pHalData->ExternalPA_5G = pHalData->ExternalLNA_5G = _TRUE; @@ -2421,37 +2265,34 @@ VOID hal_ReadAmplifierType_8814A( VOID hal_ReadRFEType_8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(!AutoloadFail) - { + if (!AutoloadFail) { if ((GetRegRFEType(Adapter) != 64) || 0xFF == PROMContent[EEPROM_RFE_OPTION_8814] || PROMContent[EEPROM_RFE_OPTION_8814] & BIT7) { - if(GetRegRFEType(Adapter) != 64) + if (GetRegRFEType(Adapter) != 64) pHalData->RFEType = GetRegRFEType(Adapter); - else if(IS_HARDWARE_TYPE_8814AE(Adapter)) + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) pHalData->RFEType = 0; - else if(IS_HARDWARE_TYPE_8814AU(Adapter)) + else if (IS_HARDWARE_TYPE_8814AU(Adapter)) pHalData->RFEType = 1; hal_ReadAmplifierType_8814A(Adapter); - + } else { /* bit7==0 means RFE type defined by 0xCA[6:0] */ pHalData->RFEType = PROMContent[EEPROM_RFE_OPTION_8814] & 0x7F; hal_ReadAmplifierType_8814A(Adapter); } - } - else - { - if(GetRegRFEType(Adapter) != 64) + } else { + if (GetRegRFEType(Adapter) != 64) pHalData->RFEType = GetRegRFEType(Adapter); - else if(IS_HARDWARE_TYPE_8814AE(Adapter)) + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) pHalData->RFEType = 0; - else if(IS_HARDWARE_TYPE_8814AU(Adapter)) + else if (IS_HARDWARE_TYPE_8814AU(Adapter)) pHalData->RFEType = 1; hal_ReadAmplifierType_8814A(Adapter); @@ -2469,45 +2310,40 @@ hal_EfusePowerSwitch8814A( u16 tmpV16; u8 EFUSE_ACCESS_ON_8814A = 0x69; u8 EFUSE_ACCESS_OFF_8814A = 0x00; - - if (PwrState == _TRUE) - { - rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON_8814A); - + + if (PwrState == _TRUE) { + rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_ON_8814A); + // Reset: 0x0000h[28], default valid tmpV16 = PlatformEFIORead2Byte(pAdapter,REG_SYS_FUNC_EN); - if( !(tmpV16 & FEN_ELDR) ){ + if ( !(tmpV16 & FEN_ELDR) ){ tmpV16 |= FEN_ELDR ; rtw_write16(pAdapter,REG_SYS_FUNC_EN,tmpV16); } - + // Clock: Gated(0x0008h[5]) 8M(0x0008h[1]) clock from ANA, default valid tmpV16 = PlatformEFIORead2Byte(pAdapter,REG_SYS_CLKR); - if( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ) - { + if ( (!(tmpV16 & LOADER_CLK_EN) ) ||(!(tmpV16 & ANA8M) ) ) { tmpV16 |= (LOADER_CLK_EN |ANA8M ) ; rtw_write16(pAdapter,REG_SYS_CLKR,tmpV16); } - if(bWrite == _TRUE) - { + if (bWrite == _TRUE) { // Enable LDO 2.5V before read/write action tempval = rtw_read8(pAdapter, EFUSE_TEST+3); tempval &= 0x0F; tempval |= (VOLTAGE_V25 << 4); rtw_write8(pAdapter, EFUSE_TEST+3, (tempval | 0x80)); } - } - else - { + } else { rtw_write8(pAdapter, REG_EFUSE_ACCESS, EFUSE_ACCESS_OFF_8814A); - - if(bWrite == _TRUE){ + + if (bWrite == _TRUE) { // Disable LDO 2.5V after read/write action tempval = rtw_read8(pAdapter, EFUSE_TEST+3); rtw_write8(pAdapter, EFUSE_TEST+3, (tempval & 0x7F)); } - } + } } static VOID @@ -2516,7 +2352,7 @@ rtl8814_EfusePowerSwitch( IN u8 bWrite, IN u8 PwrState) { - hal_EfusePowerSwitch8814A(pAdapter, bWrite, PwrState); + hal_EfusePowerSwitch8814A(pAdapter, bWrite, PwrState); } static VOID @@ -2541,22 +2377,19 @@ hal_EfuseReadEFuse8814A( // // Do NOT excess total size of EFuse table. Added by Roger, 2008.11.10. // - if((_offset + _size_byte)>EFUSE_MAP_LEN_8814A) - {// total E-Fuse table is 512bytes + if ((_offset + _size_byte)>EFUSE_MAP_LEN_8814A) { // total E-Fuse table is 512bytes RTW_INFO("Hal_EfuseReadEFuse8814A(): Invalid offset(%#x) with read bytes(%#x)!!\n", _offset, _size_byte); goto exit; } efuseTbl = (u8*)rtw_zmalloc(EFUSE_MAP_LEN_8814A); - if(efuseTbl == NULL) - { + if (efuseTbl == NULL) { RTW_INFO("%s: alloc efuseTbl fail!\n", __FUNCTION__); goto exit; } eFuseWord= (u16 **)rtw_malloc2d(EFUSE_MAX_SECTION_8814A, EFUSE_MAX_WORD_UNIT_8814A, 2); - if(eFuseWord == NULL) - { + if (eFuseWord == NULL) { RTW_INFO("%s: alloc eFuseWord fail!\n", __FUNCTION__); goto exit; } @@ -2568,16 +2401,13 @@ hal_EfuseReadEFuse8814A( // // 1. Read the first byte to check if efuse is empty!!! - // // - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); + // + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - if(efuseHeader != 0xFF) - { + if (efuseHeader != 0xFF) { efuse_utilized++; - } - else - { + } else { RTW_INFO("EFUSE is empty\n"); efuse_utilized = 0; goto exit; @@ -2587,67 +2417,54 @@ hal_EfuseReadEFuse8814A( // // 2. Read real efuse content. Filter PG header and every section data. // - while((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) - { + while ((efuseHeader != 0xFF) && AVAILABLE_EFUSE_ADDR_8814A(eFuse_Addr)) { //RTPRINT(FEEPROM, EFUSE_READ_ALL, ("efuse_Addr-%d efuse_data=%x\n", eFuse_Addr-1, *rtemp8)); - + // Check PG header for section num. - if(EXT_HEADER(efuseHeader)) //extended header - { + if (EXT_HEADER(efuseHeader)) { //extended header + offset_2_0 = GET_HDR_OFFSET_2_0(efuseHeader); //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("extended header offset_2_0=%X\n", offset_2_0)); - efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); + efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseExtHdr, bPseudoTest); //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("efuse[%X]=%X\n", eFuse_Addr-1, efuseExtHdr)); - if(efuseExtHdr != 0xff) - { + if (efuseExtHdr != 0xff) { efuse_utilized++; - if(ALL_WORDS_DISABLED(efuseExtHdr)) - { + if (ALL_WORDS_DISABLED(efuseExtHdr)) { efuse_OneByteRead(Adapter, eFuse_Addr++, &efuseHeader, bPseudoTest); - if(efuseHeader != 0xff) - { + if (efuseHeader != 0xff) { efuse_utilized++; } break; - } - else - { + } else { offset = ((efuseExtHdr & 0xF0) >> 1) | offset_2_0; wden = (efuseExtHdr & 0x0F); } - } - else - { + } else { RTW_INFO("Error condition, extended = 0xff\n"); // We should handle this condition. break; } - } - else - { + } else { offset = ((efuseHeader >> 4) & 0x0f); wden = (efuseHeader & 0x0f); } - - if(offset < EFUSE_MAX_SECTION_8814A) - { + + if (offset < EFUSE_MAX_SECTION_8814A) { // Get word enable value from PG header //RT_DISP(FEEPROM, EFUSE_READ_ALL, ("Offset-%X Worden=%X\n", offset, wden)); - for(i=0; i> 8) & 0xff); } @@ -2705,8 +2519,7 @@ hal_EfuseReadEFuse8814A( // // 4. Copy from Efuse map to output pointer memory!!! // - for(i=0; i<_size_byte; i++) - { + for (i = 0; i<_size_byte; i++) { pbuf[i] = efuseTbl[_offset+i]; } @@ -2717,10 +2530,10 @@ hal_EfuseReadEFuse8814A( rtw_hal_set_hwreg(Adapter, HW_VAR_EFUSE_BYTES, (u8 *)&eFuse_Addr); exit: - if(efuseTbl) + if (efuseTbl) rtw_mfree(efuseTbl, EFUSE_MAP_LEN_8814A); - if(eFuseWord) + if (eFuseWord) rtw_mfree2d((void *)eFuseWord, EFUSE_MAX_SECTION_8814A, EFUSE_MAX_WORD_UNIT_8814A, sizeof(u16)); } @@ -2829,14 +2642,13 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, u16 readbackAddr = 0; u16 start_addr = efuse_addr; u8 badworden = 0x0F; - u8 readbackData[PGPKT_DATA_SIZE]; + u8 readbackData[PGPKT_DATA_SIZE]; _rtw_memset((PVOID)readbackData, 0xff, PGPKT_DATA_SIZE); - + RTW_INFO("word_en = %x efuse_addr=%x\n", word_en, efuse_addr); - if ( ! (word_en&BIT0)) - { + if ( ! (word_en&BIT0)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[0], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[1], bPseudoTest); @@ -2844,20 +2656,19 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 0); // Use 10K Read, Suggested by Morris & Victor - + efuse_OneByteRead(pAdapter,readbackAddr, &readbackData[0], bPseudoTest); efuse_OneByteRead(pAdapter,readbackAddr+1, &readbackData[1], bPseudoTest); if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 1); // Restored to 1.5K Read, Suggested by Morris & Victor - - if((data[0]!=readbackData[0])||(data[1]!=readbackData[1])){ + + if ((data[0]!=readbackData[0])||(data[1]!=readbackData[1])) { badworden &= (~BIT0); } } - if ( ! (word_en&BIT1)) - { + if ( ! (word_en&BIT1)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[2], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[3], bPseudoTest); @@ -2877,8 +2688,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, badworden &=( ~BIT1); } } - if ( ! (word_en&BIT2)) - { + if ( ! (word_en&BIT2)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[4], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[5], bPseudoTest); @@ -2887,7 +2697,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 0); // Use 10K Read, Suggested by Morris & Victor - efuse_OneByteRead(pAdapter,readbackAddr, &readbackData[4], bPseudoTest); + efuse_OneByteRead(pAdapter,readbackAddr, &readbackData[4], bPseudoTest); efuse_OneByteRead(pAdapter,readbackAddr+1, &readbackData[5], bPseudoTest); if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || @@ -2898,8 +2708,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, badworden &=( ~BIT2); } } - if ( ! (word_en&BIT3)) - { + if ( ! (word_en&BIT3)) { readbackAddr = start_addr; efuse_OneByteWrite(pAdapter,start_addr++, data[6], bPseudoTest); efuse_OneByteWrite(pAdapter,start_addr++, data[7], bPseudoTest); @@ -2915,7 +2724,7 @@ hal_EfuseWordEnableDataWrite8814A( IN PADAPTER pAdapter, IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 1); // Restored to 1.5K Read, Suggested by Morris & Victor - if((data[6]!=readbackData[6])||(data[7]!=readbackData[7])){ + if ((data[6]!=readbackData[6])||(data[7]!=readbackData[7])){ badworden &=( ~BIT3); } } @@ -2942,37 +2751,30 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest int bContinual = _TRUE; u16 efuse_addr = 0; - u8 hoffset=0, hworden=0; + u8 hoffset=0, hworden=0; u8 efuse_data, word_cnts=0; - + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); RTW_INFO("=======> %s() \n", __func__); - if(bPseudoTest) - { + if (bPseudoTest) { efuse_addr = (u16)(fakeEfuseUsedBytes); - } - else - { + } else { rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); } //RTPRINT(FEEPROM, EFUSE_PG, ("hal_EfuseGetCurrentSize_8723A(), start_efuse_addr = %d\n", efuse_addr)); while ( bContinual && efuse_OneByteRead(pAdapter, efuse_addr , &efuse_data, bPseudoTest) && - (efuse_addr < EFUSE_REAL_CONTENT_LEN_8814A)) - { - if (efuse_data != 0xFF) - { - if ((efuse_data&0x1F) == 0x0F) //extended header - { + (efuse_addr < EFUSE_REAL_CONTENT_LEN_8814A)) { + if (efuse_data != 0xFF) { + if ((efuse_data&0x1F) == 0x0F) { //extended header hoffset = efuse_data; efuse_addr++; efuse_OneByteRead(pAdapter, efuse_addr, &efuse_data, bPseudoTest); - if((efuse_data & 0x0F) == 0x0F) - { + if((efuse_data & 0x0F) == 0x0F) { efuse_addr++; continue; } else { @@ -2981,26 +2783,21 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest } } else { hoffset = (efuse_data>>4) & 0x0F; - hworden = efuse_data & 0x0F; + hworden = efuse_data & 0x0F; } word_cnts = Efuse_CalculateWordCnts(hworden); //read next header efuse_addr = efuse_addr + (word_cnts*2)+1; - } - else - { + } else { bContinual = _FALSE ; } } - if(bPseudoTest) - { + if (bPseudoTest) { fakeEfuseUsedBytes = efuse_addr; pEfuseHal->fakeEfuseUsedBytes = efuse_addr; RTW_INFO ("%s(), return %d \n", __func__, pEfuseHal->fakeEfuseUsedBytes ); - } - else - { + } else { pEfuseHal->EfuseUsedBytes = efuse_addr; pEfuseHal->EfuseUsedPercentage = (u1Byte)((pEfuseHal->EfuseUsedBytes*100)/pEfuseHal->PhysicalLen_WiFi); rtw_hal_set_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8 *)&efuse_addr); @@ -3009,7 +2806,7 @@ static u16 hal_EfuseGetCurrentSize_8814A( PADAPTER pAdapter, BOOLEAN bPseudoTest } return efuse_addr; - + } static u16 @@ -3025,108 +2822,96 @@ rtl8814_EfuseGetCurrentSize( return ret; } - static int hal_EfusePgPacketRead_8814A( IN PADAPTER pAdapter, IN u8 offset, IN u8 *data, IN BOOLEAN bPseudoTest) -{ +{ HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); PEFUSE_HAL pEfuseHal = &(pHalData->EfuseHal); - u8 ReadState = PG_STATE_HEADER; - + u8 ReadState = PG_STATE_HEADER; + int bContinual = _TRUE; - int bDataEmpty = _TRUE ; + int bDataEmpty = _TRUE ; u8 efuse_data,word_cnts=0; u16 efuse_addr = 0; - u8 hoffset=0,hworden=0; + u8 hoffset=0,hworden=0; u8 tmpidx=0; u8 tmpdata[8]; u8 tmp_header = 0; - - if(data==NULL) return _FALSE; - if(offset>=EFUSE_MAX_SECTION_JAGUAR) return _FALSE; - + + if (data==NULL) return _FALSE; + if (offset>=EFUSE_MAX_SECTION_JAGUAR) return _FALSE; + _rtw_memset((PVOID)data, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); _rtw_memset((PVOID)tmpdata, 0xff, sizeof(u8)*PGPKT_DATA_SIZE); - + // // Efuse has been pre-programmed dummy 5Bytes at the end of Efuse by CP. // Skip dummy parts to prevent unexpected data read from Efuse. // By pass right now. 2009.02.19. // - while(bContinual && (efuse_addr < pEfuseHal->PhysicalLen_WiFi) ) - { + while (bContinual && (efuse_addr < pEfuseHal->PhysicalLen_WiFi) ) { //------- Header Read ------------- - if(ReadState & PG_STATE_HEADER) - { - if(efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest)&&(efuse_data!=0xFF)) - { - if(ALL_WORDS_DISABLED(efuse_data)) - { + if (ReadState & PG_STATE_HEADER) { + if (efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest)&&(efuse_data!=0xFF)) { + if (ALL_WORDS_DISABLED(efuse_data)) { tmp_header = efuse_data; efuse_addr++; efuse_OneByteRead(pAdapter, efuse_addr ,&efuse_data, bPseudoTest); - if((efuse_data & 0x0F) != 0x0F) - { + if ((efuse_data & 0x0F) != 0x0F) { hoffset = ((tmp_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); - hworden = efuse_data & 0x0F; - } - else - { + hworden = efuse_data & 0x0F; + } else { efuse_addr++; break; } - - } - else - { + + } else { hoffset = (efuse_data>>4) & 0x0F; - hworden = efuse_data & 0x0F; + hworden = efuse_data & 0x0F; } word_cnts = Efuse_CalculateWordCnts(hworden); bDataEmpty = _TRUE ; - if(hoffset==offset){ - for(tmpidx = 0;tmpidx< word_cnts*2 ;tmpidx++){ - if(efuse_OneByteRead(pAdapter, efuse_addr+1+tmpidx ,&efuse_data, bPseudoTest) ){ + if (hoffset==offset) { + for (tmpidx = 0;tmpidx< word_cnts*2 ;tmpidx++) { + if (efuse_OneByteRead(pAdapter, efuse_addr+1+tmpidx ,&efuse_data, bPseudoTest) ) { tmpdata[tmpidx] = efuse_data; - if(efuse_data!=0xff){ + if (efuse_data!=0xff) { bDataEmpty = _FALSE; } - } + } } - if(bDataEmpty==_FALSE){ - ReadState = PG_STATE_DATA; - }else{//read next header + if (bDataEmpty==_FALSE) { + ReadState = PG_STATE_DATA; + } else { //read next header efuse_addr = efuse_addr + (word_cnts*2)+1; - ReadState = PG_STATE_HEADER; + ReadState = PG_STATE_HEADER; } } - else{//read next header + else { //read next header efuse_addr = efuse_addr + (word_cnts*2)+1; - ReadState = PG_STATE_HEADER; + ReadState = PG_STATE_HEADER; } - - } - else{ + + } else { bContinual = _FALSE ; } - } + } //------- Data section Read ------------- - else if(ReadState & PG_STATE_DATA) - { + else if (ReadState & PG_STATE_DATA) { efuse_WordEnableDataRead(hworden,tmpdata,data); efuse_addr = efuse_addr + (word_cnts*2)+1; - ReadState = PG_STATE_HEADER; + ReadState = PG_STATE_HEADER; } - - } - - if( (data[0]==0xff) &&(data[1]==0xff) && (data[2]==0xff) && (data[3]==0xff) && + + } + + if ( (data[0]==0xff) &&(data[1]==0xff) && (data[2]==0xff) && (data[3]==0xff) && (data[4]==0xff) &&(data[5]==0xff) && (data[6]==0xff) && (data[7]==0xff)) return _FALSE; else @@ -3155,8 +2940,7 @@ efuse_PgPacketCheck( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_8814A-EFUSE_PROTECT_BYTES_BANK_8814A)) - { + if (Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest) >= (EFUSE_REAL_CONTENT_LEN_8814A-EFUSE_PROTECT_BYTES_BANK_8814A)) { RTW_INFO("%s()error: %x >= %x\n", __func__, Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest), (EFUSE_REAL_CONTENT_LEN_8814A-EFUSE_PROTECT_BYTES_BANK_8814A)); return _FALSE; } @@ -3191,14 +2975,13 @@ efuse_PgPacketExceptionHandle( RTW_INFO("===> efuse_PgPacketExceptionHandle(), ErrOffset = 0x%X\n", ErrOffset); // ErrOffset is the offset of bad (extension) header. - //if (IS_HARDWARE_TYPE_8812AU(pAdapter)) + //if (IS_HARDWARE_TYPE_8812AU(pAdapter)) //ErrOffset = Hal_EfusePgPacketExceptionHandle_8812A(pAdapter, ErrOffset); RTW_INFO("<=== efuse_PgPacketExceptionHandle(), recovered! Jump to Offset = 0x%X\n", ErrOffset); - - return ErrOffset; -} + return ErrOffset; +} BOOLEAN hal_EfuseCheckIfDatafollowed( @@ -3210,10 +2993,9 @@ hal_EfuseCheckIfDatafollowed( { BOOLEAN bRet=FALSE; u8 i, efuse_data; - - for(i=0; i<(word_cnts*2) ; i++) - { - if(efuse_OneByteRead(pAdapter, (startAddr+i) ,&efuse_data, bPseudoTest)&&(efuse_data != 0xFF)) + + for (i = 0; i<(word_cnts*2) ; i++) { + if (efuse_OneByteRead(pAdapter, (startAddr+i) ,&efuse_data, bPseudoTest)&&(efuse_data != 0xFF)) bRet = TRUE; } @@ -3253,13 +3035,12 @@ hal_EfuseWordEnMatched( *pWden = match_word_en; - if(match_word_en != 0xf) + if (match_word_en != 0xf) return TRUE; else return FALSE; } - BOOLEAN efuse_PgPacketPartialWrite( IN PADAPTER pAdapter, @@ -3278,7 +3059,7 @@ efuse_PgPacketPartialWrite( PGPKT_STRUCT curPkt; u16 max_sec_num = (efuseType == EFUSE_WIFI) ? pEfuseHal->MaxSecNum_WiFi : pEfuseHal->MaxSecNum_BT; u16 efuse_max = pEfuseHal->BankSize; - u16 efuse_max_available_len = + u16 efuse_max_available_len = (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; if (bPseudoTest) { @@ -3288,68 +3069,55 @@ efuse_PgPacketPartialWrite( //EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_AVAILABLE_EFUSE_BYTES_TOTAL, &efuse_max_available_len, bPseudoTest); //EFUSE_GetEfuseDefinition(pAdapter, efuseType, TYPE_EFUSE_CONTENT_LEN_BANK, &efuse_max, bPseudoTest); - - if(efuseType == EFUSE_WIFI) - { - if(bPseudoTest) - { + + if (efuseType == EFUSE_WIFI) { + if (bPseudoTest) { #ifdef HAL_EFUSE_MEMORY startAddr = (u16)pEfuseHal->fakeEfuseUsedBytes; #else startAddr = (u16)fakeEfuseUsedBytes; #endif - } - else - { + } else { rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BYTES, (u8*)&startAddr); } - } - else - { - if(bPseudoTest) - { + } else { + if (bPseudoTest) { #ifdef HAL_EFUSE_MEMORY startAddr = (u16)pEfuseHal->fakeBTEfuseUsedBytes; #else startAddr = (u16)fakeBTEfuseUsedBytes; #endif - } - else - { + } else { rtw_hal_get_hwreg(pAdapter, HW_VAR_EFUSE_BT_BYTES, (u8*)&startAddr); } } - + startAddr %= efuse_max; RTW_INFO("%s: startAddr=%#X\n", __FUNCTION__, startAddr); RTW_INFO("efuse_PgPacketPartialWrite(), startAddr = 0x%X\n", startAddr); while(1) { - if(startAddr >= efuse_max_available_len) - { + if(startAddr >= efuse_max_available_len) { bRet = _FALSE; - RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", + RTW_INFO("startAddr(%d) >= efuse_max_available_len(%d)\n", startAddr, efuse_max_available_len); break; } - - if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data!=0xFF)) - { - if(EXT_HEADER(efuse_data)) - { + + if (efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest) && (efuse_data!=0xFF)) { + if (EXT_HEADER(efuse_data)) { cur_header = efuse_data; startAddr++; efuse_OneByteRead(pAdapter, startAddr, &efuse_data, bPseudoTest); - if (ALL_WORDS_DISABLED(efuse_data)) - { - u16 recoveredAddr = startAddr; + if (ALL_WORDS_DISABLED(efuse_data)) { + u16 recoveredAddr = startAddr; recoveredAddr = efuse_PgPacketExceptionHandle(pAdapter, startAddr-1); if (recoveredAddr == (startAddr-1)) { - RTW_INFO("Error! All words disabled and the recovery failed, (Addr, Data) = (0x%X, 0x%X)\n", + RTW_INFO("Error! All words disabled and the recovery failed, (Addr, Data) = (0x%X, 0x%X)\n", startAddr, efuse_data); pAdapter->LastError = ERR_INVALID_DATA; break; @@ -3358,15 +3126,11 @@ efuse_PgPacketPartialWrite( RTW_INFO("Bad extension header but recovered => Keep going.\n"); continue; } - } - else - { + } else { curPkt.offset = ((cur_header & 0xE0) >> 5) | ((efuse_data & 0xF0) >> 1); curPkt.word_en = efuse_data & 0x0F; } - } - else - { + } else { if (ALL_WORDS_DISABLED(efuse_data)) { u16 recoveredAddr = startAddr; recoveredAddr = efuse_PgPacketExceptionHandle(pAdapter, startAddr); @@ -3375,8 +3139,8 @@ efuse_PgPacketPartialWrite( RTW_INFO("Bad header but recovered => Read header again.\n"); } } - - cur_header = efuse_data; + + cur_header = efuse_data; curPkt.offset = (cur_header>>4) & 0x0F; curPkt.word_en = cur_header & 0x0F; } @@ -3384,14 +3148,14 @@ efuse_PgPacketPartialWrite( if (curPkt.offset > max_sec_num) { pAdapter->LastError = ERR_OUT_OF_RANGE; pEfuseHal->Status = ERR_OUT_OF_RANGE; - bRet = _FALSE; + bRet = _FALSE; break; } - + curPkt.word_cnts = Efuse_CalculateWordCnts(curPkt.word_en); // if same header is found but no data followed // write some part of data followed by the header. - if( (curPkt.offset == pTargetPkt->offset) && + if ( (curPkt.offset == pTargetPkt->offset) && (!hal_EfuseCheckIfDatafollowed(pAdapter, curPkt.word_cnts, startAddr+1, bPseudoTest)) && hal_EfuseWordEnMatched(pTargetPkt, &curPkt, &matched_wden) ) { @@ -3399,45 +3163,38 @@ efuse_PgPacketPartialWrite( //RT_ASSERT(_FALSE, ("Error, Need to partial write data by the previous wrote header!!\n")); // Here to write partial data badworden = Efuse_WordEnableDataWrite(pAdapter, startAddr+1, matched_wden, pTargetPkt->data, bPseudoTest); - if(badworden != 0x0F) - { + if(badworden != 0x0F) { u32 PgWriteSuccess=0; // if write fail on some words, write these bad words again PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); - - if(!PgWriteSuccess) - { + + if(!PgWriteSuccess) { bRet = _FALSE; // write fail, return break; - } + } } - // partial write ok, update the target packet for later use - for(i=0; i<4; i++) - { - if((matched_wden & (0x1<word_en |= (0x1<word_cnts = Efuse_CalculateWordCnts(pTargetPkt->word_en); } // read from next header - startAddr = startAddr + (curPkt.word_cnts*2) +1; - } - else - { + startAddr = startAddr + (curPkt.word_cnts*2) +1; + } else { // not used header, 0xff *pAddr = startAddr; RTW_INFO("Started from unused header offset=%d\n", startAddr); bRet = _TRUE; break; } - } + } return bRet; } - BOOLEAN hal_EfuseFixHeaderProcess( IN PADAPTER pAdapter, @@ -3450,35 +3207,29 @@ hal_EfuseFixHeaderProcess( u8 originaldata[8], badworden=0; u16 efuse_addr=*pAddr; u32 PgWriteSuccess=0; - + _rtw_memset((PVOID)originaldata, 0xff, 8); - - if(Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) - { //check if data exist + + if (Efuse_PgPacketRead(pAdapter, pFixPkt->offset, originaldata, bPseudoTest)) { + //check if data exist badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pFixPkt->word_en, originaldata, bPseudoTest); - if(badworden != 0xf) // write fail - { + if (badworden != 0xf) { // write fail PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pFixPkt->offset, badworden, originaldata, bPseudoTest); - if(!PgWriteSuccess) + if (!PgWriteSuccess) return _FALSE; else efuse_addr = Efuse_GetCurrentSize(pAdapter, efuseType, bPseudoTest); - } - else - { + } else { efuse_addr = efuse_addr + (pFixPkt->word_cnts*2) +1; } - } - else - { + } else { efuse_addr = efuse_addr + (pFixPkt->word_cnts*2) +1; } *pAddr = efuse_addr; return _TRUE; } - BOOLEAN efuse_PgPacketWrite2ByteHeader( IN PADAPTER pAdapter, @@ -3493,23 +3244,19 @@ efuse_PgPacketWrite2ByteHeader( u16 efuse_addr=*pAddr; u8 pg_header=0, tmp_header=0, pg_header_temp=0; u8 repeatcnt=0; - u16 efuse_max_available_len = + u16 efuse_max_available_len = (efuseType == EFUSE_WIFI) ? pEfuseHal->TotalAvailBytes_WiFi : pEfuseHal->TotalAvailBytes_BT; RTW_INFO("Wirte 2byte header\n"); - - while(efuse_addr < efuse_max_available_len) - { + while (efuse_addr < efuse_max_available_len) { pg_header = ((pTargetPkt->offset & 0x07) << 5) | 0x0F; RTW_INFO("pg_header = 0x%x\n", pg_header); efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - while(tmp_header == 0xFF || pg_header != tmp_header) - { - if(repeatcnt++ > pEfuseHal->DataRetry) - { + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->DataRetry) { RTW_INFO("Repeat over limit for pg_header!!\n"); return _FALSE; } @@ -3517,10 +3264,9 @@ efuse_PgPacketWrite2ByteHeader( efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); } - + //to write ext_header - if(tmp_header == pg_header) - { + if (tmp_header == pg_header) { efuse_addr++; pg_header_temp = pg_header; pg_header = ((pTargetPkt->offset & 0x78) << 1) | pTargetPkt->word_en; @@ -3528,52 +3274,42 @@ efuse_PgPacketWrite2ByteHeader( efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); - while(tmp_header == 0xFF || pg_header != tmp_header) - { - if(repeatcnt++ > pEfuseHal->DataRetry) - { + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->DataRetry) { RTW_INFO("Repeat over limit for ext_header!!\n"); return _FALSE; - } + } efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); efuse_OneByteRead(pAdapter, efuse_addr, &tmp_header, bPseudoTest); } - if((tmp_header & 0x0F) == 0x0F) //word_en PG fail - { - if(repeatcnt++ > pEfuseHal->DataRetry) - { + if ((tmp_header & 0x0F) == 0x0F) { //word_en PG fail + if (repeatcnt++ > pEfuseHal->DataRetry) { RTW_INFO("Repeat over limit for word_en!!\n"); return _FALSE; - } - else - { + } else { efuse_addr++; continue; } } - else if(pg_header != tmp_header) //offset PG fail - { + else if (pg_header != tmp_header) { //offset PG fail PGPKT_STRUCT fixPkt; //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWrite2ByteHeader(), offset PG fail, need to cover the existed data!!\n")); RTW_INFO("Error condition for offset PG fail, need to cover the existed data\n"); fixPkt.offset = ((pg_header_temp & 0xE0) >> 5) | ((tmp_header & 0xF0) >> 1); - fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); - if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) return _FALSE; - } - else - { + } else { bRet = _TRUE; break; } } - else if ((tmp_header & 0x1F) == 0x0F) //wrong extended header - { + else if ((tmp_header & 0x1F) == 0x0F) { //wrong extended header efuse_addr+=2; - continue; + continue; } } @@ -3584,7 +3320,7 @@ efuse_PgPacketWrite2ByteHeader( BOOLEAN efuse_PgPacketWrite1ByteHeader( - IN PADAPTER pAdapter, + IN PADAPTER pAdapter, IN u8 efuseType, IN OUT u16* pAddr, IN PPGPKT_STRUCT pTargetPkt, @@ -3602,8 +3338,7 @@ efuse_PgPacketWrite1ByteHeader( if (IS_HARDWARE_TYPE_8723BE(pAdapter)) efuse_OneByteWrite(pAdapter, 0x1FF, 00, _FALSE); // increase current - - + efuse_OneByteWrite(pAdapter, efuse_addr, pg_header, bPseudoTest); if (IS_HARDWARE_TYPE_8723B(pAdapter) || IS_HARDWARE_TYPE_8188E(pAdapter) || @@ -3616,11 +3351,8 @@ efuse_PgPacketWrite1ByteHeader( IS_HARDWARE_TYPE_8192E(pAdapter) || IS_HARDWARE_TYPE_8703B(pAdapter) || IS_HARDWARE_TYPE_8188F(pAdapter)) PHY_SetMacReg(pAdapter, EFUSE_TEST, BIT26, 1); // Restored to 1.5K Read, Suggested by Morris & Victor - - while(tmp_header == 0xFF || pg_header != tmp_header) - { - if(repeatcnt++ > pEfuseHal->HeaderRetry) - { + while (tmp_header == 0xFF || pg_header != tmp_header) { + if (repeatcnt++ > pEfuseHal->HeaderRetry) { RTW_INFO("retry %d times fail!!\n", repeatcnt); return _FALSE; } @@ -3628,34 +3360,29 @@ efuse_PgPacketWrite1ByteHeader( efuse_OneByteRead(pAdapter,efuse_addr, &tmp_header, bPseudoTest); RTW_INFO("===> efuse_PgPacketWrite1ByteHeader: Keep %d-th retrying, tmp_header = 0x%X\n", repeatcnt, tmp_header); } - - if(pg_header == tmp_header) - { + + if (pg_header == tmp_header) { bRet = _TRUE; - } - else - { + } else { PGPKT_STRUCT fixPkt; //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWrite1ByteHeader(), offset PG fail, need to cover the existed data!!\n")); RTW_INFO(" pg_header(0x%X) != tmp_header(0x%X)\n", pg_header, tmp_header); RTW_INFO("Error condition for fixed PG packet, need to cover the existed data: (Addr, Data) = (0x%X, 0x%X)\n", efuse_addr, tmp_header); fixPkt.offset = (tmp_header>>4) & 0x0F; - fixPkt.word_en = tmp_header & 0x0F; + fixPkt.word_en = tmp_header & 0x0F; fixPkt.word_cnts = Efuse_CalculateWordCnts(fixPkt.word_en); - if(!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) + if (!hal_EfuseFixHeaderProcess(pAdapter, efuseType, &fixPkt, &efuse_addr, bPseudoTest)) return _FALSE; } - + *pAddr = efuse_addr; return bRet; } - - BOOLEAN efuse_PgPacketWriteHeader( - IN PADAPTER pAdapter, + IN PADAPTER pAdapter, IN u8 efuseType, IN OUT u16* pAddr, IN PPGPKT_STRUCT pTargetPkt, @@ -3663,12 +3390,9 @@ efuse_PgPacketWriteHeader( { BOOLEAN bRet=_FALSE; - if(pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) - { + if (pTargetPkt->offset >= EFUSE_MAX_SECTION_BASE) { bRet = efuse_PgPacketWrite2ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); - } - else - { + } else { bRet = efuse_PgPacketWrite1ByteHeader(pAdapter, efuseType, pAddr, pTargetPkt, bPseudoTest); } @@ -3677,7 +3401,7 @@ efuse_PgPacketWriteHeader( BOOLEAN efuse_PgPacketWriteData( - IN PADAPTER pAdapter, + IN PADAPTER pAdapter, IN u8 efuseType, IN u16* pAddr, IN PPGPKT_STRUCT pTargetPkt, @@ -3690,18 +3414,15 @@ efuse_PgPacketWriteData( badworden = 0x0f; badworden = Efuse_WordEnableDataWrite(pAdapter, efuse_addr+1, pTargetPkt->word_en, pTargetPkt->data, bPseudoTest); - if(badworden == 0x0F) - { + if (badworden == 0x0F) { RTW_INFO("efuse_PgPacketWriteData ok!!\n"); return _TRUE; - } - else - { // Reorganize other pg packet + } else { // Reorganize other pg packet //RT_ASSERT(_FALSE, ("Error, efuse_PgPacketWriteData(), wirte data fail!!\n")); RTW_INFO("efuse_PgPacketWriteData Fail!!\n"); - + PgWriteSuccess = Efuse_PgPacketWrite(pAdapter, pTargetPkt->offset, badworden, pTargetPkt->data, bPseudoTest); - if(!PgWriteSuccess) + if (!PgWriteSuccess) return _FALSE; else return _TRUE; @@ -3710,7 +3431,6 @@ efuse_PgPacketWriteData( return bRet; } - int hal_EfusePgPacketWrite_8814A(IN PADAPTER pAdapter, IN u8 offset, @@ -3721,12 +3441,11 @@ hal_EfusePgPacketWrite_8814A(IN PADAPTER pAdapter, u8 efuseType = EFUSE_WIFI; PGPKT_STRUCT targetPkt; u16 startAddr = 0; - + RTW_INFO("===> efuse_PgPacketWrite[%s], offset: 0x%X\n", (efuseType == EFUSE_WIFI) ? "WIFI" : "BT", offset); - //4 [1] Check if the remaining space is available to write. - if(!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) - { + //4 [1] Check if the remaining space is available to write. + if (!efuse_PgPacketCheck(pAdapter, efuseType, bPseudoTest)) { pAdapter->LastError = ERR_WRITE_PROTECT; RTW_INFO("efuse_PgPacketCheck(), fail!!\n"); return _FALSE; @@ -3737,24 +3456,21 @@ hal_EfusePgPacketWrite_8814A(IN PADAPTER pAdapter, //4 [3] Fix headers without data or fix bad headers, and then return the address where to get started. - if(!efuse_PgPacketPartialWrite(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) - { + if (!efuse_PgPacketPartialWrite(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { pAdapter->LastError = ERR_INVALID_DATA; RTW_INFO("efuse_PgPacketPartialWrite(), fail!!\n"); return _FALSE; } //4 [4] Write the (extension) header. - if(!efuse_PgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) - { + if (!efuse_PgPacketWriteHeader(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { pAdapter->LastError = ERR_IO_FAILURE; RTW_INFO("efuse_PgPacketWriteHeader(), fail!!\n"); return _FALSE; } //4 [5] Write the data. - if(!efuse_PgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) - { + if(!efuse_PgPacketWriteData(pAdapter, efuseType, &startAddr, &targetPkt, bPseudoTest)) { pAdapter->LastError = ERR_IO_FAILURE; RTW_INFO("efuse_PgPacketWriteData(), fail!!\n"); return _FALSE; @@ -3802,7 +3518,7 @@ void ReadRFType8814A(PADAPTER padapter) // pHalData->bRFPathRxEnable[0] = pHalData->bRFPathRxEnable[1] = _TRUE; //} - if (IsSupported24G(padapter->registrypriv.wireless_mode) && + if (IsSupported24G(padapter->registrypriv.wireless_mode) && IsSupported5G(padapter->registrypriv.wireless_mode)) pHalData->BandSet = BAND_ON_BOTH; else if (IsSupported5G(padapter->registrypriv.wireless_mode)) @@ -3843,7 +3559,7 @@ GetEEPROMSize8814A( curRCR = rtw_read16(Adapter, REG_SYS_EEPROM_CTRL); size = (curRCR & EEPROMSEL) ? 6 : 4; // 6: EEPROM used is 93C46, 4: boot from E-Fuse. - + RTW_INFO("EEPROM type is %s\n", size==4 ? "E-FUSE" : "93C46"); //return size; return 4; // <20120713, Kordan> The default value of HW is 6 ?!! @@ -3875,26 +3591,20 @@ void InitPGData8814A(PADAPTER padapter) u16 val16; PHAL_DATA_TYPE pHalData = GET_HAL_DATA(padapter); - if (_FALSE == pHalData->bautoload_fail_flag) - { + if (_FALSE == pHalData->bautoload_fail_flag) { // autoload OK. - if (is_boot_from_eeprom(padapter)) - { + if (is_boot_from_eeprom(padapter)) { // Read all Content from EEPROM or EFUSE. //for (i = 0; i < HWSET_MAX_SIZE_JAGUAR; i += 2) { //val16 = EF2Byte(ReadEEprom(pAdapter, (u16) (i>>1))); //*((u16*)(&PROMContent[i])) = val16; } - } - else - { + } else { // Read EFUSE real map to shadow. EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); } - } - else - { + } else { // update to default value 0xFF if (!is_boot_from_eeprom(padapter)) EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); @@ -3927,21 +3637,21 @@ static void read_chip_version_8814a(PADAPTER Adapter) if(Adapter->registrypriv.special_rf_path == 1) pHalData->VersionID.RFType = RF_TYPE_1T1R; //RF_1T1R; - + vdr = (value32 & EXT_VENDOR_ID) >> EXT_VENDOR_ID_SHIFT; if(vdr == 0x00) pHalData->VersionID.VendorType = CHIP_VENDOR_TSMC; else if(vdr == 0x01) pHalData->VersionID.VendorType = CHIP_VENDOR_SMIC; else if(vdr == 0x02) - pHalData->VersionID.VendorType = CHIP_VENDOR_UMC; + pHalData->VersionID.VendorType = CHIP_VENDOR_UMC; pHalData->VersionID.CUTVersion = (value32 & CHIP_VER_RTL_MASK)>>CHIP_VER_RTL_SHIFT; // IC version (CUT) pHalData->MultiFunc = RT_MULTI_FUNC_NONE; rtw_hal_config_rftype(Adapter); - + #if 1 dump_chip_info(pHalData->VersionID); #endif @@ -3958,20 +3668,18 @@ hal_PatchwithJaguar_8814( struct mlme_ext_priv *pmlmeext = &(Adapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - if( (MediaStatus == RT_MEDIA_CONNECT) && + if( (MediaStatus == RT_MEDIA_CONNECT) && (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP )) { rtw_write8(Adapter, rVhtlen_Use_Lsig_Jaguar, 0x1); rtw_write8(Adapter, REG_TCR+3, BIT2); - } - else - { + } else { rtw_write8(Adapter, rVhtlen_Use_Lsig_Jaguar, 0x3F); rtw_write8(Adapter, REG_TCR+3, BIT0|BIT1|BIT2); } - /*if( (MediaStatus == RT_MEDIA_CONNECT) && + /*if( (MediaStatus == RT_MEDIA_CONNECT) && ((pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_BCUTAP) || (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_REALTEK_JAGUAR_CCUTAP))) { @@ -4015,8 +3723,7 @@ void UpdateHalRAMask8814A(PADAPTER padapter, struct sta_info *psta, u32 mac_id, mask &= rate_bitmap; #ifdef CONFIG_BT_COEXIST - if (pHalData->EEPROMBluetoothCoexist == 1) - { + if (pHalData->EEPROMBluetoothCoexist == 1) { rate_bitmap = rtw_btcoex_GetRaMask(padapter); mask &= ~rate_bitmap; } @@ -4063,9 +3770,9 @@ void InitDefaultValue8814A(PADAPTER padapter) pwrctrlpriv = adapter_to_pwrctl(padapter); // init default value - pHalData->fw_ractrl = _FALSE; + pHalData->fw_ractrl = _FALSE; if (!pwrctrlpriv->bkeepfwalive) - pHalData->LastHMEBoxNum = 0; + pHalData->LastHMEBoxNum = 0; init_hal_spec_8814a(padapter); @@ -4090,13 +3797,12 @@ _InitBeaconParameters_8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u16 val16; - u8 val8; + u8 val8; val8 = DIS_TSF_UDT; val16 = val8 | (val8 << 8); // port0 and port1 #ifdef CONFIG_BT_COEXIST - if (pHalData->EEPROMBluetoothCoexist == 1) - { + if (pHalData->EEPROMBluetoothCoexist == 1) { // Enable prot0 beacon function for PSTDMA val16 |= EN_BCN_FUNCTION; } @@ -4129,9 +3835,9 @@ _BeaconFunctionEnable( { rtw_write8(Adapter, REG_BCN_CTRL, (BIT4 | BIT3 | BIT1)); //SetBcnCtrlReg(Adapter, (BIT4 | BIT3 | BIT1), 0x00); - //RT_TRACE(COMP_BEACON, DBG_LOUD, ("_BeaconFunctionEnable 0x550 0x%x\n", rtw_read8(Adapter, 0x550))); + //RT_TRACE(COMP_BEACON, DBG_LOUD, ("_BeaconFunctionEnable 0x550 0x%x\n", rtw_read8(Adapter, 0x550))); - rtw_write8(Adapter, REG_RD_CTRL+1, 0x6F); + rtw_write8(Adapter, REG_RD_CTRL+1, 0x6F); } void SetBeaconRelatedRegisters8814A(PADAPTER padapter) @@ -4141,24 +3847,24 @@ void SetBeaconRelatedRegisters8814A(PADAPTER padapter) struct mlme_ext_priv *pmlmeext = &(padapter->mlmeextpriv); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); u32 bcn_ctrl_reg = REG_BCN_CTRL; - //reset TSF, enable update TSF, correcting TSF On Beacon - + //reset TSF, enable update TSF, correcting TSF On Beacon + //REG_BCN_INTERVAL //REG_BCNDMATIM //REG_ATIMWND //REG_TBTT_PROHIBIT //REG_DRVERLYINT - //REG_BCN_MAX_ERR + //REG_BCN_MAX_ERR //REG_BCNTCFG //(0x510) //REG_DUAL_TSF_RST - //REG_BCN_CTRL //(0x550) + //REG_BCN_CTRL //(0x550) //BCN interval #ifdef CONFIG_CONCURRENT_MODE - if (padapter->iface_type == IFACE_PORT1){ + if (padapter->iface_type == IFACE_PORT1) { bcn_ctrl_reg = REG_BCN_CTRL_1; } -#endif +#endif rtw_write16(padapter, REG_BCN_INTERVAL, pmlmeinfo->bcn_interval); rtw_write8(padapter, REG_ATIMWND, 0x02);// 2ms @@ -4166,12 +3872,12 @@ void SetBeaconRelatedRegisters8814A(PADAPTER padapter) rtw_write8(padapter, REG_SLOT, 0x09); - value32 =rtw_read32(padapter, REG_TCR); + value32 =rtw_read32(padapter, REG_TCR); value32 &= ~TSFRST; - rtw_write32(padapter, REG_TCR, value32); + rtw_write32(padapter, REG_TCR, value32); value32 |= TSFRST; - rtw_write32(padapter, REG_TCR, value32); + rtw_write32(padapter, REG_TCR, value32); // NOTE: Fix test chip's bug (about contention windows's randomness) rtw_write8(padapter, REG_RXTSF_OFFSET_CCK, 0x50); @@ -4182,7 +3888,7 @@ void SetBeaconRelatedRegisters8814A(PADAPTER padapter) ResumeTxBeacon(padapter); //rtw_write8(padapter, 0x422, rtw_read8(padapter, 0x422)|BIT(6)); - + //rtw_write8(padapter, 0x541, 0xff); //rtw_write8(padapter, 0x542, rtw_read8(padapter, 0x541)|BIT(0)); @@ -4212,8 +3918,8 @@ SetBeamformingCLK_8812( { RTW_INFO(" <==%s return by Scan\n", __FUNCTION__); return; - } - + } + // Stop Usb TxDMA rtw_write_port_cancel(Adapter); @@ -4223,12 +3929,10 @@ SetBeamformingCLK_8812( #endif // Wait TXFF empty - for(Count = 0; Count < 100; Count++) - { + for (Count = 0; Count < 100; Count++){ u2btmp = rtw_read16(Adapter, REG_TXPKT_EMPTY); u2btmp = u2btmp & 0xfff; - if(u2btmp != 0xfff) - { + if (u2btmp != 0xfff) { rtw_mdelay_os(10); continue; } @@ -4242,31 +3946,29 @@ SetBeamformingCLK_8812( rtw_write8(Adapter, REG_TXPAUSE, 0xFF); // Wait TX State Machine OK - for(Count = 0; Count < 100; Count++) - { + for (Count = 0; Count < 100; Count++) { if (rtw_read32(Adapter, REG_SCH_TXCMD_8812A) != 0) continue; - else + else break; } RTW_INFO(" Tx Status count %d\n", Count); - + // Stop RX DMA path u1btmp = rtw_read8(Adapter, REG_RXDMA_CONTROL_8812A); rtw_write8(Adapter, REG_RXDMA_CONTROL_8812A, u1btmp | BIT2); - for(Count = 0; Count < 100; Count++) - { + for (Count = 0; Count < 100; Count++) { u1btmp = rtw_read8(Adapter, REG_RXDMA_CONTROL_8812A); - if(u1btmp & BIT1) + if (u1btmp & BIT1) break; else rtw_mdelay_os(10); } RTW_INFO(" Rx Empty count %d \n", Count); - + // Disable clock rtw_write8(Adapter, REG_SYS_CLKR+1, 0xf0); // Disable 320M @@ -4302,12 +4004,12 @@ SetBeamformRfMode_8812( BeamformCap = beamforming_get_beamform_cap(pBeamInfo); - if(BeamformCap == pBeamInfo->beamforming_cap) + if (BeamformCap == pBeamInfo->beamforming_cap) return; - else + else pBeamInfo->beamforming_cap = BeamformCap; - if(GET_RF_TYPE(Adapter) == RF_1T1R) + if (GET_RF_TYPE(Adapter) == RF_1T1R) return; bSelfBeamformer = BeamformCap & BEAMFORMER_CAP; @@ -4316,8 +4018,7 @@ SetBeamformRfMode_8812( PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_WeLut_Jaguar, 0x80000,0x1); // RF Mode table write enable PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_WeLut_Jaguar, 0x80000,0x1); // RF Mode table write enable - if(bSelfBeamformer) - { + if (bSelfBeamformer) { // Paath_A PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableAddr, 0x78000,0x3); // Select RX mode PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableData0, 0xfffff,0x3F7FF); // Set Table data @@ -4326,9 +4027,7 @@ SetBeamformRfMode_8812( PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_ModeTableAddr, 0x78000, 0x3); // Select RX mode PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_ModeTableData0, 0xfffff,0x3F7FF); // Set Table data PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_ModeTableData1, 0xfffff,0xE26BF); // Enable TXIQGEN in RX mode - } - else - { + } else { // Paath_A PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableAddr, 0x78000, 0x3); // Select RX mode PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_ModeTableData0, 0xfffff,0x3F7FF); // Set Table data @@ -4342,14 +4041,12 @@ SetBeamformRfMode_8812( PHY_SetRFReg(Adapter, ODM_RF_PATH_A, RF_WeLut_Jaguar, 0x80000,0x0); // RF Mode table write disable PHY_SetRFReg(Adapter, ODM_RF_PATH_B, RF_WeLut_Jaguar, 0x80000,0x0); // RF Mode table write disable - if(bSelfBeamformer) + if (bSelfBeamformer) PHY_SetBBReg(Adapter, rTxPath_Jaguar, bMaskByte1, 0x33); else PHY_SetBBReg(Adapter, rTxPath_Jaguar, bMaskByte1, 0x11); } - - VOID SetBeamformEnter_8812( IN PADAPTER Adapter, @@ -4368,46 +4065,41 @@ SetBeamformEnter_8812( if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) STAid = BeamformEntry.mac_id; - else + else STAid = BeamformEntry.p_aid; // Sounding protocol control rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xCB); // MAC addresss/Partial AID of Beamformer - if(Idx == 0) - { - for(i = 0; i < 6 ; i++) + if (Idx == 0) { + for (i = 0; i < 6 ; i++) rtw_write8(Adapter, (REG_BFMER0_INFO_8812A+i), BeamformEntry.mac_addr[i]); /* CSI report use legacy ofdm so don't need to fill P_AID.*/ /*rtw_write16(Adapter, REG_BFMER0_INFO_8812A+6, BeamformEntry.P_AID);*/ - } - else - { - for(i = 0; i < 6 ; i++) + } else { + for (i = 0; i < 6 ; i++) rtw_write8(Adapter, (REG_BFMER1_INFO_8812A+i), BeamformEntry.mac_addr[i]); /* CSI report use legacy ofdm so don't need to fill P_AID.*/ /*rtw_write16(Adapter, REG_BFMER1_INFO_8812A+6, BeamformEntry.P_AID);*/ } - // CSI report parameters of Beamformee + // CSI report parameters of Beamformee if( (BeamformEntry.beamforming_entry_cap & BEAMFORMEE_CAP_VHT_SU) || (BeamformEntry.beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) ) { - if(pHalData->rf_type == RF_2T2R) + if (pHalData->rf_type == RF_2T2R) CSI_Param = 0x01090109; else CSI_Param = 0x01080108; - } - else - { - if(pHalData->rf_type == RF_2T2R) + } else { + if (pHalData->rf_type == RF_2T2R) CSI_Param = 0x03090309; else CSI_Param = 0x03080308; - } + } - if(pHalData->rf_type == RF_2T2R) + if (pHalData->rf_type == RF_2T2R) rtw_write32(Adapter, 0x9B4, 0x00000000); // Nc =2 else rtw_write32(Adapter, 0x9B4, 0x01081008); // Nc =1 @@ -4417,27 +4109,22 @@ SetBeamformEnter_8812( rtw_write32(Adapter, REG_CSI_RPT_PARAM_BW80_8812A, CSI_Param); // P_AID of Beamformee & enable NDPA transmission & enable NDPA interrupt - if(Idx == 0) - { - rtw_write16(Adapter, REG_TXBF_CTRL_8812A, STAid); + if (Idx == 0) { + rtw_write16(Adapter, REG_TXBF_CTRL_8812A, STAid); rtw_write8(Adapter, REG_TXBF_CTRL_8812A+3, rtw_read8(Adapter, REG_TXBF_CTRL_8812A+3)|BIT4|BIT6|BIT7); - } - else - { + } else { rtw_write16(Adapter, REG_TXBF_CTRL_8812A+2, STAid | BIT12 | BIT14 | BIT15); - } + } // CSI report parameters of Beamformee - if(Idx == 0) + if (Idx == 0) { // Get BIT24 & BIT25 u8 tmp = rtw_read8(Adapter, REG_BFMEE_SEL_8812A+3) & 0x3; - + rtw_write8(Adapter, REG_BFMEE_SEL_8812A+3, tmp | 0x60); rtw_write16(Adapter, REG_BFMEE_SEL_8812A, STAid | BIT9); - } - else - { + } else { // Set BIT25 rtw_write16(Adapter, REG_BFMEE_SEL_8812A+2, STAid | (0xE2 << 8)); } @@ -4448,7 +4135,6 @@ SetBeamformEnter_8812( beamforming_notify(Adapter); } - VOID SetBeamformLeave_8812( IN PADAPTER Adapter, @@ -4463,20 +4149,17 @@ SetBeamformLeave_8812( * Clear MAC addresss of Beamformer * Clear Associated Bfmee Sel */ - if(pBeamInfo->beamforming_cap == BEAMFORMING_CAP_NONE) - rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); + if (pBeamInfo->beamforming_cap == BEAMFORMING_CAP_NONE) + rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); - if(Idx == 0) - { - rtw_write16(Adapter, REG_TXBF_CTRL_8812A, 0); + if (Idx == 0) { + rtw_write16(Adapter, REG_TXBF_CTRL_8812A, 0); rtw_write32(Adapter, REG_BFMER0_INFO_8812A, 0); rtw_write16(Adapter, REG_BFMER0_INFO_8812A+4, 0); rtw_write16(Adapter, REG_BFMEE_SEL_8812A, 0); - } - else - { + } else { rtw_write16(Adapter, REG_TXBF_CTRL_8812A+2, rtw_read16(Adapter, REG_TXBF_CTRL_8812A+2) & 0xF000); rtw_write32(Adapter, REG_BFMER1_INFO_8812A, 0); @@ -4486,7 +4169,6 @@ SetBeamformLeave_8812( } } - VOID SetBeamformStatus_8812( IN PADAPTER Adapter, @@ -4501,10 +4183,10 @@ SetBeamformStatus_8812( if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE) || check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) BeamCtrlVal = BeamformEntry.mac_id; - else + else BeamCtrlVal = BeamformEntry.p_aid; - if(Idx == 0) + if (Idx == 0) BeamCtrlReg = REG_TXBF_CTRL_8812A; else { @@ -4512,17 +4194,15 @@ SetBeamformStatus_8812( BeamCtrlVal |= BIT12 | BIT14|BIT15; } - if(BeamformEntry.beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) + if (BeamformEntry.beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) { - if(BeamformEntry.sound_bw == CHANNEL_WIDTH_20) + if (BeamformEntry.sound_bw == CHANNEL_WIDTH_20) BeamCtrlVal |= BIT9; - else if(BeamformEntry.sound_bw == CHANNEL_WIDTH_40) + else if (BeamformEntry.sound_bw == CHANNEL_WIDTH_40) BeamCtrlVal |= BIT10; - else if(BeamformEntry.sound_bw == CHANNEL_WIDTH_80) + else if (BeamformEntry.sound_bw == CHANNEL_WIDTH_80) BeamCtrlVal |= BIT11; - } - else - { + } else { BeamCtrlVal &= ~(BIT9|BIT10|BIT11); } @@ -4531,7 +4211,6 @@ SetBeamformStatus_8812( RTW_INFO("%s Idx %d BeamCtrlReg %x BeamCtrlVal %x\n", __FUNCTION__, Idx, BeamCtrlReg, BeamCtrlVal); } - VOID SetBeamformFwTxBFCmd_8812( IN PADAPTER Adapter @@ -4544,26 +4223,23 @@ SetBeamformFwTxBFCmd_8812( struct mlme_priv *pmlmepriv = &(Adapter->mlmepriv); struct beamforming_info *pBeamInfo = GET_BEAMFORM_INFO(pmlmepriv); - for(Idx = 0; Idx < BEAMFORMING_ENTRY_NUM; Idx++) - { - if(pBeamInfo->beamforming_entry[Idx].beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) - { - if(Idx == 0) - { - if(pBeamInfo->beamforming_entry[Idx].bSound) + for(Idx = 0; Idx < BEAMFORMING_ENTRY_NUM; Idx++) { + if(pBeamInfo->beamforming_entry[Idx].beamforming_entry_state == BEAMFORMING_ENTRY_STATE_PROGRESSED) { + if(Idx == 0) { + if (pBeamInfo->beamforming_entry[Idx].bSound) PageNum0 = 0xFE; else PageNum0 = 0xFF; //stop sounding Period0 = (u8)(pBeamInfo->beamforming_entry[Idx].sound_period); - } + } else if(Idx == 1) { - if(pBeamInfo->beamforming_entry[Idx].bSound) + if (pBeamInfo->beamforming_entry[Idx].bSound) PageNum1 = 0xFE; else PageNum1 = 0xFF; //stop sounding Period1 = (u8)(pBeamInfo->beamforming_entry[Idx].sound_period); - } + } } } @@ -4571,19 +4247,18 @@ SetBeamformFwTxBFCmd_8812( u1TxBFParm[1] = PageNum1; u1TxBFParm[2] = (Period1 << 4) | Period0; FillH2CCmd_8812(Adapter, H2C_8812_TxBF, 3, u1TxBFParm); - + RTW_INFO("%s PageNum0 = %d Period0 = %d\n", __FUNCTION__, PageNum0, Period0); RTW_INFO("PageNum1 = %d Period1 %d\n", PageNum1, Period1); } - VOID SetBeamformDownloadNDPA_8812( IN PADAPTER Adapter, IN u8 Idx ) { - u8 u1bTmp=0, tmpReg422=0, Head_Page; + u8 u1bTmp=0, tmpReg422=0, Head_Page; u8 BcnValidReg=0, count=0, DLBcnCount=0; BOOLEAN bSendBeacon=_FALSE; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); @@ -4593,13 +4268,13 @@ SetBeamformDownloadNDPA_8812( //pHalData->bFwDwRsvdPageInProgress = _TRUE; - if(Idx == 0) + if (Idx == 0) Head_Page = 0xFE; else Head_Page = 0xFE; rtw_hal_get_def_var(Adapter, HAL_DEF_TX_PAGE_BOUNDARY, (u16 *)&TxPageBndy); - + //Set REG_CR bit 8. DMA beacon by SW. u1bTmp = rtw_read8(Adapter, REG_CR+1); rtw_write8(Adapter, REG_CR+1, (u1bTmp|BIT0)); @@ -4611,40 +4286,38 @@ SetBeamformDownloadNDPA_8812( tmpReg422 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL+2); rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, tmpReg422&(~BIT6)); - if(tmpReg422&BIT6) - { + if (tmpReg422&BIT6) { RTW_INFO("SetBeamformDownloadNDPA_8812(): There is an Adapter is sending beacon.\n"); bSendBeacon = _TRUE; } // TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA rtw_write8(Adapter,REG_TDECTRL+1, Head_Page); - + do - { + { // Clear beacon valid check bit. BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); rtw_write8(Adapter, REG_TDECTRL+2, (BcnValidReg|BIT0)); - + // download NDPA rsvd page. - if(pBeamEntry->beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) + if (pBeamEntry->beamforming_entry_cap & BEAMFORMER_CAP_VHT_SU) beamforming_send_vht_ndpa_packet(Adapter,pBeamEntry->mac_addr,pBeamEntry->aid,pBeamEntry->sound_bw, BCN_QUEUE_INX); - else + else beamforming_send_ht_ndpa_packet(Adapter,pBeamEntry->mac_addr,pBeamEntry->sound_bw, BCN_QUEUE_INX); // check rsvd page download OK. BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); count=0; - while(!(BcnValidReg & BIT0) && count <20) - { + while(!(BcnValidReg & BIT0) && count <20) { count++; rtw_udelay_os(10); BcnValidReg = rtw_read8(Adapter, REG_TDECTRL+2); } DLBcnCount++; - }while(!(BcnValidReg&BIT0) && DLBcnCount<5); - - if(!(BcnValidReg&BIT0)) + } while (!(BcnValidReg&BIT0) && DLBcnCount<5); + + if (!(BcnValidReg&BIT0)) RTW_INFO("%s Download RSVD page failed!\n", __FUNCTION__); // TDECTRL[15:8] 0x209[7:0] = 0xF6 Beacon Head for TXDMA @@ -4652,11 +4325,10 @@ SetBeamformDownloadNDPA_8812( // To make sure that if there exists an adapter which would like to send beacon. // If exists, the origianl value of 0x422[6] will be 1, we should check this to - // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause + // prevent from setting 0x422[6] to 0 after download reserved page, or it will cause // the beacon cannot be sent by HW. // 2010.06.23. Added by tynli. - if(bSendBeacon) - { + if (bSendBeacon) { rtw_write8(Adapter, REG_FWHW_TXQ_CTRL+2, tmpReg422); } @@ -4685,7 +4357,6 @@ SetBeamformFwTxBF_8812( SetBeamformFwTxBFCmd_8812(Adapter); } - VOID SetBeamformPatch_8812( IN PADAPTER Adapter, @@ -4694,13 +4365,13 @@ SetBeamformPatch_8812( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct beamforming_info *pBeamInfo = GET_BEAMFORM_INFO(&(Adapter->mlmepriv)); - + if(pBeamInfo->beamforming_cap == BEAMFORMING_CAP_NONE) return; - + /*if(Operation == SCAN_OPT_BACKUP_BAND0) { - rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); + rtw_write8(Adapter, REG_SND_PTCL_CTRL_8812A, 0xC8); } else if(Operation == SCAN_OPT_RESTORE) { @@ -4731,7 +4402,7 @@ static void hw_var_set_monitor(PADAPTER Adapter, u8 variable, u8 *val) rcr_bits |= RCR_APPFCS; #if 0 - /* + /* CRC and ICV packet will drop in recvbuf2recvframe() We no turn on it. */ @@ -4758,7 +4429,7 @@ static void hw_var_set_monitor(PADAPTER Adapter, u8 variable, u8 *val) static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) { - u8 val8; + u8 val8; u8 mode = *((u8 *)val); u32 value_rcr; static u8 isMonitor = _FALSE; @@ -4785,37 +4456,35 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) { // disable Port1 TSF update rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|DIS_TSF_UDT); - + // set net_type val8 = rtw_read8(Adapter, MSR)&0x03; val8 |= (mode<<2); rtw_write8(Adapter, MSR, val8); - + RTW_INFO("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); - if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) - { - if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) - { + if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) { + if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) { StopTxBeacon(Adapter); #ifdef CONFIG_PCI_HCI UpdateInterruptMask8814AE(Adapter, 0, 0, RT_BCN_INT_MASKS, 0); #else //CONFIG_PCI_HCI - #ifdef CONFIG_INTERRUPT_BASED_TXBCN + #ifdef CONFIG_INTERRUPT_BASED_TXBCN - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT rtw_write8(Adapter, REG_DRVERLYINT, 0x05);//restore early int time to 5ms - UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); + UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); #endif // CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,0, (IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812)); #endif// CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR - + #endif //CONFIG_INTERRUPT_BASED_TXBCN #endif //CONFIG_PCI_HCI } - + rtw_write8(Adapter,REG_BCN_CTRL_1, 0x11);//disable atim wnd and disable beacon function //rtw_write8(Adapter,REG_BCN_CTRL_1, 0x18); } @@ -4834,12 +4503,12 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #ifdef CONFIG_PCI_HCI UpdateInterruptMask8814AE(Adapter, RT_BCN_INT_MASKS, 0, 0, 0); #else - #ifdef CONFIG_INTERRUPT_BASED_TXBCN + #ifdef CONFIG_INTERRUPT_BASED_TXBCN #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT UpdateInterruptMask8814AU(Adapter,_TRUE ,IMR_BCNDMAINT0_8812, 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,(IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812), 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR @@ -4847,7 +4516,7 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #endif ResumeTxBeacon(Adapter); - + rtw_write8(Adapter, REG_BCN_CTRL_1, 0x12); #ifdef RTL8814AE_SW_BCN @@ -4865,16 +4534,16 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) //enable to rx data frame rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); - //Beacon Control related register for first time - rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms + //Beacon Control related register for first time + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms //rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); rtw_write8(Adapter, REG_ATIMWND_1, 0x0a); // 10ms for port1 rtw_write16(Adapter, REG_BCNTCFG, 0x00); rtw_write16(Adapter, REG_TBTT_PROHIBIT, 0xff04); rtw_write16(Adapter, REG_TSFTR_SYN_OFFSET, 0x7fff);// +32767 (~32ms) - - //reset TSF2 + + //reset TSF2 rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)); //enable BCN1 Function for if2 @@ -4883,13 +4552,13 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #ifdef CONFIG_CONCURRENT_MODE if(check_buddy_fwstate(Adapter, WIFI_FW_NULL_STATE)) - rtw_write8(Adapter, REG_BCN_CTRL, + rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL) & ~EN_BCN_FUNCTION); #endif //BCN1 TSF will sync to BCN0 TSF with offset(0x518) if if1_sta linked //rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(5)); //rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(3)); - + //dis BCN0 ATIM WND if if1 is station rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|DIS_ATIM); @@ -4908,18 +4577,18 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) { // disable Port0 TSF update rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|DIS_TSF_UDT); - + // set net_type val8 = rtw_read8(Adapter, MSR)&0x0c; val8 |= mode; rtw_write8(Adapter, MSR, val8); - + RTW_INFO("%s()-%d mode = %d\n", __FUNCTION__, __LINE__, mode); - + if((mode == _HW_STATE_STATION_) || (mode == _HW_STATE_NOLINK_)) { #ifdef CONFIG_CONCURRENT_MODE - if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) + if(!check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) #endif // CONFIG_CONCURRENT_MODE { StopTxBeacon(Adapter); @@ -4928,18 +4597,18 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #else #ifdef CONFIG_INTERRUPT_BASED_TXBCN #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - rtw_write8(Adapter, REG_DRVERLYINT, 0x05);//restore early int time to 5ms - UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); + rtw_write8(Adapter, REG_DRVERLYINT, 0x05);//restore early int time to 5ms + UpdateInterruptMask8814AU(Adapter,_TRUE, 0, IMR_BCNDMAINT0_8812); #endif//CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,0, (IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812)); #endif //CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR - + #endif //CONFIG_INTERRUPT_BASED_TXBCN #endif } - + rtw_write8(Adapter,REG_BCN_CTRL, 0x19);//disable atim wnd //rtw_write8(Adapter,REG_BCN_CTRL, 0x18); } @@ -4957,15 +4626,15 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) #ifdef CONFIG_PCI_HCI UpdateInterruptMask8814AE(Adapter, RT_BCN_INT_MASKS, 0, 0, 0); #else - #ifdef CONFIG_INTERRUPT_BASED_TXBCN + #ifdef CONFIG_INTERRUPT_BASED_TXBCN #ifdef CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT UpdateInterruptMask8814AU(Adapter,_TRUE ,IMR_BCNDMAINT0_8812, 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT - #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR + #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR UpdateInterruptMask8814AU(Adapter,_TRUE ,(IMR_TXBCN0ERR_8812|IMR_TXBCN0OK_8812), 0); #endif//CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR - + #endif //CONFIG_INTERRUPT_BASED_TXBCN #endif @@ -4990,8 +4659,8 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) rtw_write16(Adapter, REG_RXFLTMAP2, 0xFFFF); //Beacon Control related register for first time - rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms - + rtw_write8(Adapter, REG_BCNDMATIM, 0x02); // 2ms + //rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); rtw_write8(Adapter, REG_ATIMWND, 0x0a); // 10ms rtw_write16(Adapter, REG_BCNTCFG, 0x00); @@ -5000,14 +4669,14 @@ static void hw_var_set_opmode(PADAPTER Adapter, u8 variable, u8* val) //reset TSF rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(0)); - + //enable BCN0 Function for if1 //don't enable update TSF0 for if1 (due to TSF update when beacon/probe rsp are received) rtw_write8(Adapter, REG_BCN_CTRL, (DIS_TSF_UDT|EN_BCN_FUNCTION | EN_TXBCN_RPT|DIS_BCNQ_SUB)); #ifdef CONFIG_CONCURRENT_MODE if(check_buddy_fwstate(Adapter, WIFI_FW_NULL_STATE)) - rtw_write8(Adapter, REG_BCN_CTRL_1, + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1) & ~EN_BCN_FUNCTION); #endif @@ -5031,8 +4700,7 @@ static void hw_var_set_macaddr(PADAPTER Adapter, u8 variable, u8* val) u32 reg_macid; #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) - { + if (Adapter->iface_type == IFACE_PORT1) { reg_macid = REG_MACID1; } else @@ -5041,11 +4709,10 @@ static void hw_var_set_macaddr(PADAPTER Adapter, u8 variable, u8* val) reg_macid = REG_MACID; } - for(idx = 0 ; idx < 6; idx++) - { + for (idx = 0 ; idx < 6; idx++) { rtw_write8(GET_PRIMARY_ADAPTER(Adapter), (reg_macid+idx), val[idx]); } - + } static void hw_var_set_bssid(PADAPTER Adapter, u8 variable, u8* val) @@ -5054,8 +4721,7 @@ static void hw_var_set_bssid(PADAPTER Adapter, u8 variable, u8* val) u32 reg_bssid; #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) - { + if (Adapter->iface_type == IFACE_PORT1) { reg_bssid = REG_BSSID1; } else @@ -5064,8 +4730,7 @@ static void hw_var_set_bssid(PADAPTER Adapter, u8 variable, u8* val) reg_bssid = REG_BSSID; } - for(idx = 0 ; idx < 6; idx++) - { + for (idx = 0 ; idx < 6; idx++) { rtw_write8(Adapter, (reg_bssid+idx), val[idx]); } @@ -5076,30 +4741,25 @@ static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) u32 bcn_ctrl_reg; u8 val8; #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) - { + if(Adapter->iface_type == IFACE_PORT1) { bcn_ctrl_reg = REG_BCN_CTRL_1; - } + } else -#endif - { +#endif + { bcn_ctrl_reg = REG_BCN_CTRL; } - if(*((u8 *)val)) - { + if(*((u8 *)val)) { rtw_write8(Adapter, bcn_ctrl_reg, (EN_BCN_FUNCTION | EN_TXBCN_RPT)); - } - else - { - + } else { + u8 val8; val8 = rtw_read8(Adapter, bcn_ctrl_reg); val8 &= ~(EN_BCN_FUNCTION | EN_TXBCN_RPT); - + #ifdef CONFIG_BT_COEXIST - if (GET_HAL_DATA(Adapter)->EEPROMBluetoothCoexist == 1) - { + if (GET_HAL_DATA(Adapter)->EEPROMBluetoothCoexist == 1) { // Always enable port0 beacon function for PSTDMA if (REG_BCN_CTRL == bcn_ctrl_reg) val8 |= EN_BCN_FUNCTION; @@ -5108,7 +4768,7 @@ static void hw_var_set_bcn_func(PADAPTER Adapter, u8 variable, u8* val) rtw_write8(Adapter, bcn_ctrl_reg, val8); } - + } @@ -5123,29 +4783,26 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) //tsf = pmlmeext->TSFValue - ((u32)pmlmeext->TSFValue % (pmlmeinfo->bcn_interval*1024)) -1024; //us tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)|BIT(6))); StopTxBeacon(Adapter); } - if(Adapter->iface_type == IFACE_PORT1) - { + if(Adapter->iface_type == IFACE_PORT1) { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); - + rtw_write32(Adapter, REG_TSFTR1, tsf); rtw_write32(Adapter, REG_TSFTR1+4, tsf>>32); - //enable related TSF function - rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(3)); + rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)|BIT(3)); // Update buddy port's TSF if it is SoftAP for beacon TX issue! if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE && check_buddy_fwstate(Adapter, WIFI_AP_STATE) - ) { + ) { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(3))); @@ -5160,26 +4817,23 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) RTW_INFO("ERROR! %s()-%d: Reset port0 TSF fail\n", __FUNCTION__, __LINE__); -#endif // CONFIG_TSF_RESET_OFFLOAD - } +#endif // CONFIG_TSF_RESET_OFFLOAD + } - - } - else - { + } else { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(3))); - + rtw_write32(Adapter, REG_TSFTR, tsf); rtw_write32(Adapter, REG_TSFTR+4, tsf>>32); //enable related TSF function rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)|BIT(3)); - + // Update buddy port's TSF if it is SoftAP for beacon TX issue! if ( (pmlmeinfo->state&0x03) == WIFI_FW_STATION_STATE && check_buddy_fwstate(Adapter, WIFI_AP_STATE) - ) { + ) { //disable related TSF function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); @@ -5194,13 +4848,11 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) RTW_INFO("ERROR! %s()-%d: Reset port1 TSF fail\n", __FUNCTION__, __LINE__); #endif // CONFIG_TSF_RESET_OFFLOAD - } + } } - - - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + + if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause &= (~STOP_BCNQ); //rtw_write8(Adapter, REG_TXPAUSE, (rtw_read8(Adapter, REG_TXPAUSE)&(~BIT(6)))); ResumeTxBeacon(Adapter); @@ -5212,13 +4864,11 @@ static void hw_var_set_correct_tsf(PADAPTER Adapter, u8 variable, u8* val) static void hw_var_set_mlme_disconnect(PADAPTER Adapter, u8 variable, u8* val) { #ifdef CONFIG_CONCURRENT_MODE - - if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) + + if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) rtw_write16(Adapter, REG_RXFLTMAP2, 0x00); - - if(Adapter->iface_type == IFACE_PORT1) - { + if(Adapter->iface_type == IFACE_PORT1) { //reset TSF1 rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)); @@ -5227,9 +4877,7 @@ static void hw_var_set_mlme_disconnect(PADAPTER Adapter, u8 variable, u8* val) // disable Port1's beacon function rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(3))); - } - else - { + } else { //reset TSF rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(0)); @@ -5280,21 +4928,19 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) || (check_buddy_fwstate(Adapter, WIFI_AP_STATE) == _TRUE) #endif ) - { - rcr_clear_bit = RCR_CBSSID_BCN; + { + rcr_clear_bit = RCR_CBSSID_BCN; } #ifdef CONFIG_TDLS // TDLS will clear RCR_CBSSID_DATA bit for connection. - else if (Adapter->tdlsinfo.link_established == _TRUE) - { + else if (Adapter->tdlsinfo.link_established == _TRUE) { rcr_clear_bit = RCR_CBSSID_BCN; } #endif // CONFIG_TDLS value_rcr = rtw_read32(Adapter, REG_RCR); - if(*((u8 *)val))//under sitesurvey - { + if (*((u8 *)val)) { //under sitesurvey value_rcr &= ~(rcr_clear_bit); rtw_write32(Adapter, REG_RCR, value_rcr); @@ -5310,10 +4956,8 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) if (ap_num) StopTxBeacon(Adapter); - } - else//sitesurvey done - { - if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) + } else { //sitesurvey done + if(check_fwstate(pmlmepriv, (_FW_LINKED|WIFI_AP_STATE)) #ifdef CONFIG_CONCURRENT_MODE || check_buddy_fwstate(Adapter, (_FW_LINKED|WIFI_AP_STATE)) #endif @@ -5352,11 +4996,11 @@ static void hw_var_set_mlme_sitesurvey(PADAPTER Adapter, u8 variable, u8* val) #if defined(CONFIG_USB_HCI) || defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) tx_beacon_hdl(iface, NULL); #endif - #endif + #endif } } } - } + } } static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) @@ -5367,82 +5011,70 @@ static void hw_var_set_mlme_join(PADAPTER Adapter, u8 variable, u8* val) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct mlme_priv *pmlmepriv = &Adapter->mlmepriv; - if(type == 0) // prepare to join - { - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && - check_buddy_fwstate(Adapter, _FW_LINKED)) + if (type == 0) { // prepare to join + if (check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + check_buddy_fwstate(Adapter, _FW_LINKED)) { StopTxBeacon(Adapter); } - + //enable to rx data frame.Accept all data frame //rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); rtw_write16(Adapter, REG_RXFLTMAP2,0xFFFF); - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) - { - rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_BCN); - } - else - { + if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE)) { + rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_BCN); + } else { rtw_write32(Adapter, REG_RCR, rtw_read32(Adapter, REG_RCR)|RCR_CBSSID_DATA|RCR_CBSSID_BCN); - } + } - if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) - { + if(check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) { RetryLimit = (pHalData->CustomerID == RT_CID_CCX) ? 7 : 48; - } - else // Ad-hoc Mode - { + } else { // Ad-hoc Mode RetryLimit = 0x7; } } - else if(type == 1) //joinbss_event call back when join res < 0 - { - if(check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) + else if (type == 1) { //joinbss_event call back when join res < 0 + if (check_buddy_mlmeinfo_state(Adapter, _HW_STATE_NOLINK_)) rtw_write16(Adapter, REG_RXFLTMAP2,0x00); - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + if (check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && check_buddy_fwstate(Adapter, _FW_LINKED)) { - ResumeTxBeacon(Adapter); - + ResumeTxBeacon(Adapter); + //reset TSF 1/2 after ResumeTxBeacon - rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); - + rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); + } } - else if(type == 2) //sta add event call back - { - + else if (type == 2) { //sta add event call back + //enable update TSF - if(Adapter->iface_type == IFACE_PORT1) + if (Adapter->iface_type == IFACE_PORT1) rtw_write8(Adapter, REG_BCN_CTRL_1, rtw_read8(Adapter, REG_BCN_CTRL_1)&(~BIT(4))); - else + else rtw_write8(Adapter, REG_BCN_CTRL, rtw_read8(Adapter, REG_BCN_CTRL)&(~BIT(4))); - - - if(check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) - { + + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) { //fixed beacon issue for 8191su........... rtw_write8(Adapter,0x542 ,0x02); RetryLimit = 0x7; } - - if(check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && + if (check_buddy_mlmeinfo_state(Adapter, WIFI_FW_AP_STATE) && check_buddy_fwstate(Adapter, _FW_LINKED)) { - ResumeTxBeacon(Adapter); - + ResumeTxBeacon(Adapter); + //reset TSF 1/2 after ResumeTxBeacon rtw_write8(Adapter, REG_DUAL_TSF_RST, BIT(1)|BIT(0)); } - + } rtw_write16(Adapter, REG_RL, RetryLimit << RETRY_LIMIT_SHORT_SHIFT | RetryLimit << RETRY_LIMIT_LONG_SHIFT); - + #endif //CONFIG_CONCURRENT_MODE } @@ -5457,7 +5089,7 @@ static void rtw_store_all_sta_hwseq(_adapter *padapter) struct sta_priv *pstapriv = &padapter->stapriv; struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); struct macid_ctl_t *macid_ctl = dvobj_to_macidctl(dvobj); - + /* save each HW sequence of mac id from report fifo */ for (index = 0; index < macid_ctl->num && index < NUM_STA; index++) { if (rtw_macid_is_used(macid_ctl, index)) { @@ -5468,14 +5100,14 @@ static void rtw_store_all_sta_hwseq(_adapter *padapter) /* RTW_INFO("mac_id:%d is used, hw_seq[index]=%d\n", index, hw_seq[index]); */ } } - + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); for (index = 0; index < NUM_STA; index++) { psta = NULL; - + phead = &(pstapriv->sta_hash[index]); plist = get_next(phead); - + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); plist = get_next(plist); @@ -5486,7 +5118,7 @@ static void rtw_store_all_sta_hwseq(_adapter *padapter) } _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); - + } static void rtw_restore_all_sta_hwseq(_adapter *padapter) @@ -5500,25 +5132,25 @@ static void rtw_restore_all_sta_hwseq(_adapter *padapter) struct sta_priv *pstapriv = &padapter->stapriv; struct dvobj_priv *dvobj = adapter_to_dvobj(padapter); struct macid_ctl_t *macid_ctl = dvobj_to_macidctl(dvobj); - + _enter_critical_bh(&pstapriv->sta_hash_lock, &irqL); for (index = 0; index < NUM_STA; index++) { psta = NULL; - + phead = &(pstapriv->sta_hash[index]); plist = get_next(phead); - + while ((rtw_end_of_queue_search(phead, plist)) == _FALSE) { psta = LIST_CONTAINOR(plist, struct sta_info, hash_list); plist = get_next(plist); - + hw_seq[psta->mac_id] = psta->hwseq; /* RTW_INFO(" psta->mac_id=%d, psta->hwseq=%d\n", psta->mac_id, psta->hwseq); */ } } _exit_critical_bh(&pstapriv->sta_hash_lock, &irqL); - + /* restore each HW sequence of mac id to report fifo */ for (index = 0; index < macid_ctl->num && index < NUM_STA; index++) { if (rtw_macid_is_used(macid_ctl, index)) { @@ -5529,18 +5161,18 @@ static void rtw_restore_all_sta_hwseq(_adapter *padapter) /* RTW_INFO("mac_id:%d is used, hw_seq[index]=%d\n", index, hw_seq[index]); */ } } - + } void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) { - PHAL_DATA_TYPE pHalData; + PHAL_DATA_TYPE pHalData; PDM_ODM_T podmpriv; u8 val8; u16 val16; u32 val32; - pHalData = GET_HAL_DATA(padapter); + pHalData = GET_HAL_DATA(padapter); podmpriv = &pHalData->odmpriv; switch (variable) @@ -5576,13 +5208,10 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) input_b = BrateCfg; /* apply force and allow mask */ - if(pHalData->CurrentBandType == BAND_ON_2_4G) - { + if(pHalData->CurrentBandType == BAND_ON_2_4G) { BrateCfg |= rrsr_2g_force_mask; BrateCfg &= rrsr_2g_allow_mask; - } - else // 5G - { + } else { // 5G BrateCfg |= rrsr_5g_force_mask; BrateCfg &= rrsr_5g_allow_mask; } @@ -5626,8 +5255,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) //tsf = pmlmeext->TSFValue - ((u32)pmlmeext->TSFValue % (pmlmeinfo->bcn_interval*1024)) -1024; //us tsf = pmlmeext->TSFValue - rtw_modular64(pmlmeext->TSFValue, (pmlmeinfo->bcn_interval*1024)) -1024; //us - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + if (((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause |= STOP_BCNQ;BIT(6) //rtw_write8(padapter, REG_TXPAUSE, (rtw_read8(padapter, REG_TXPAUSE)|BIT(6))); StopTxBeacon(padapter); @@ -5642,10 +5270,8 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) //enable related TSF function rtw_write8(padapter, REG_BCN_CTRL, rtw_read8(padapter, REG_BCN_CTRL)|BIT(3)); - - - if(((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) - { + + if (((pmlmeinfo->state&0x03) == WIFI_FW_ADHOC_STATE) || ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE)) { //pHalData->RegTxPause &= (~STOP_BCNQ); //rtw_write8(padapter, REG_TXPAUSE, (rtw_read8(padapter, REG_TXPAUSE)&(~BIT(6)))); ResumeTxBeacon(padapter); @@ -5705,9 +5331,8 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) u8 RetryLimit = 0x30; u8 type = *(u8*)pval; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - - if (type == 0) // prepare to join - { + + if (type == 0) { // prepare to join //enable to rx data frame.Accept all data frame //rtw_write32(padapter, REG_RCR, rtw_read32(padapter, REG_RCR)|RCR_ADF); rtw_write16(padapter, REG_RXFLTMAP2, 0xFFFF); @@ -5719,12 +5344,9 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) val32 |= RCR_CBSSID_DATA|RCR_CBSSID_BCN; rtw_write32(padapter, REG_RCR, val32); - if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) - { + if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) { RetryLimit = (pHalData->CustomerID == RT_CID_CCX) ? 7 : 48; - } - else // Ad-hoc Mode - { + } else { // Ad-hoc Mode RetryLimit = 0x7; } } @@ -5739,8 +5361,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) val8 &= ~BIT(4); rtw_write8(padapter, REG_BCN_CTRL, val8); - if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) - { + if (check_fwstate(pmlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) { RetryLimit = 0x7; } } @@ -5751,8 +5372,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) #endif // !CONFIG_CONCURRENT_MODE #ifdef CONFIG_BT_COEXIST - if (_TRUE == pHalData->EEPROMBluetoothCoexist) - { + if (_TRUE == pHalData->EEPROMBluetoothCoexist) { switch (*pval) { case 0: @@ -5765,9 +5385,9 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) break; case 2: // sta add event callback - // rtw_btcoex_MediaStatusNotify(padapter, RT_MEDIA_CONNECT); + // rtw_btcoex_MediaStatusNotify(padapter, RT_MEDIA_CONNECT); break; - } + } } #endif break; @@ -5798,10 +5418,9 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) pmlmeinfo = &pmlmeext->mlmext_info; bcn_interval = *((u16*)pval); - if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) - { + if ((pmlmeinfo->state&0x03) == WIFI_FW_AP_STATE) { RTW_INFO("%s==> bcn_interval:%d, eraly_int:%d\n", __FUNCTION__, bcn_interval, bcn_interval>>1); - rtw_write8(padapter, REG_DRVERLYINT, bcn_interval>>1);// 50ms for sdio + rtw_write8(padapter, REG_DRVERLYINT, bcn_interval>>1); // 50ms for sdio } } #endif // CONFIG_INTERRUPT_BASED_TXBCN_EARLY_INT @@ -5841,16 +5460,12 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) u32 ulContent = 0; u32 ulEncAlgo = CAM_AES; - for (i=0; i HW_VAR_ANTENNA_DIVERSITY_SELECT , Ant_(%s)\n",(Optimum_antenna==2)?"A":"B"); - if (pHalData->CurAntenna != Optimum_antenna) - { + if (pHalData->CurAntenna != Optimum_antenna) { Ant = (Optimum_antenna==2) ? MAIN_ANT : AUX_ANT; ODM_UpdateRxIdleAnt(podmpriv, Ant); @@ -6010,7 +5624,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_FIFO_CLEARN_UP: { struct pwrctrl_priv *pwrpriv; - u8 trycnt = 100; + u8 trycnt = 100; pwrpriv = adapter_to_pwrctl(padapter); @@ -6020,8 +5634,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) // keep sn rtw_store_all_sta_hwseq(padapter); - if (pwrpriv->bkeepfwalive != _TRUE) - { + if (pwrpriv->bkeepfwalive != _TRUE) { // RX DMA stop val32 = rtw_read32(padapter, REG_RXPKT_NUM); val32 |= RW_RELEASE_EN; @@ -6032,8 +5645,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) if (val32) break; } while (--trycnt); - if (trycnt == 0) - { + if (trycnt == 0) { RTW_INFO("[HW_VAR_FIFO_CLEARN_UP] Stop RX DMA failed......\n"); } @@ -6044,7 +5656,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) } } break; - + case HW_VAR_RESTORE_HW_SEQ: rtw_restore_all_sta_hwseq(padapter); break; @@ -6124,8 +5736,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) { u32 usNavUpper = *((u32*)pval); - if (usNavUpper > HAL_NAV_UPPER_UNIT * 0xFF) - { + if (usNavUpper > HAL_NAV_UPPER_UNIT * 0xFF) { RTW_INFO("%s: [HW_VAR_NAV_UPPER] set value(0x%08X us) is larger than (%d * 0xFF)!\n", __FUNCTION__, usNavUpper, HAL_NAV_UPPER_UNIT); break; @@ -6140,8 +5751,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_BCN_VALID: #ifdef CONFIG_CONCURRENT_MODE - if (padapter->iface_type == IFACE_PORT1) - { + if (padapter->iface_type == IFACE_PORT1) { /* BCN_VALID, BIT31 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear, Clear by sw */ val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A+3); val8 |= BIT(7); @@ -6160,8 +5770,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_DL_BCN_SEL: #if 0 /* for MBSSID, so far we don't need this */ #ifdef CONFIG_CONCURRENT_MODE - if (IS_HARDWARE_TYPE_8821(padapter) && padapter->iface_type == IFACE_PORT1) - { + if (IS_HARDWARE_TYPE_8821(padapter) && padapter->iface_type == IFACE_PORT1) { // SW_BCN_SEL - Port1 val8 = rtw_read8(padapter, REG_AUTO_LLT_8814A); val8 |= BIT(2); @@ -6195,7 +5804,7 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) rtw_write8(padapter, REG_SIFS_CTX+1, SIFS_Timer); // SIFS for OFDM consecutive tx like CTS data! rtw_write8(padapter, REG_SIFS_TRX+1, SIFS_Timer); - + rtw_write8(padapter,REG_SPEC_SIFS+1, SIFS_Timer); rtw_write8(padapter,REG_MAC_SPEC_SIFS+1, SIFS_Timer); @@ -6211,11 +5820,11 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) R2T_SIFS = 0xa; #ifdef CONFIG_80211AC_VHT if (wireless_mode & WIRELESS_11_5AC && - //MgntLinkStatusQuery(Adapter) && - TEST_FLAG(pmlmepriv->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_RX) && + //MgntLinkStatusQuery(Adapter) && + TEST_FLAG(pmlmepriv->vhtpriv.ldpc_cap, LDPC_VHT_ENABLE_RX) && TEST_FLAG(pmlmepriv->vhtpriv.stbc_cap, STBC_VHT_ENABLE_RX)) - { - if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) + { + if (pmlmeinfo->assoc_AP_vendor == HT_IOT_PEER_ATHEROS) R2T_SIFS = 0x8; else R2T_SIFS = 0xa; @@ -6231,10 +5840,8 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) break; case HW_VAR_DL_RSVD_PAGE: #ifdef CONFIG_BT_COEXIST - if (pHalData->EEPROMBluetoothCoexist == 1) - { - if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) - { + if (pHalData->EEPROMBluetoothCoexist == 1) { + if (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE) == _TRUE) { rtl8814a_download_BTCoex_AP_mode_rsvd_page(padapter); } } @@ -6245,46 +5852,46 @@ void SetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_HW_REG_TIMER_INIT: { HAL_HW_TIMER_TYPE TimerType = (*(PHAL_HW_TIMER_TYPE)pval)>>16; - + rtw_write8(padapter, 0x164, 1); if (TimerType == HAL_TIMER_TXBF) rtw_write32(padapter, 0x15C, (*(pu2Byte)pval)); else if (TimerType == HAL_TIMER_EARLYMODE) - rtw_write32(padapter, 0x160, 0x05000190); + rtw_write32(padapter, 0x160, 0x05000190); break; - } + } case HW_VAR_HW_REG_TIMER_START: { HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; - + if (TimerType == HAL_TIMER_TXBF) rtw_write8(padapter, 0x15F, 0x5); else if (TimerType == HAL_TIMER_EARLYMODE) - rtw_write8(padapter, 0x163, 0x5); - break; - } + rtw_write8(padapter, 0x163, 0x5); + break; + } case HW_VAR_HW_REG_TIMER_RESTART: { HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; - + if (TimerType == HAL_TIMER_TXBF) { rtw_write8(padapter, 0x15F, 0x0); rtw_write8(padapter, 0x15F, 0x5); } else if (TimerType == HAL_TIMER_EARLYMODE) { rtw_write8(padapter, 0x163, 0x0); - rtw_write8(padapter, 0x163, 0x5); + rtw_write8(padapter, 0x163, 0x5); } break; - } + } case HW_VAR_HW_REG_TIMER_STOP: { HAL_HW_TIMER_TYPE TimerType = *(PHAL_HW_TIMER_TYPE)pval; - + if (TimerType == HAL_TIMER_TXBF) rtw_write8(padapter, 0x15F, 0); else if (TimerType == HAL_TIMER_EARLYMODE) - rtw_write8(padapter, 0x163, 0x0); + rtw_write8(padapter, 0x163, 0x0); break; } #endif/*#if (BEAMFORMING_SUPPORT == 1) - for PHYDM TxBF*/ @@ -6472,8 +6079,7 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_BCN_VALID: #ifdef CONFIG_CONCURRENT_MODE - if (padapter->iface_type == IFACE_PORT1) - { + if (padapter->iface_type == IFACE_PORT1) { /* BCN_VALID, BIT31 of REG_FIFOPAGE_CTRL_2_8814A, write 1 to clear */ val8 = rtw_read8(padapter, REG_FIFOPAGE_CTRL_2_8814A+3); *pval = (BIT(7) & val8) ? _TRUE:_FALSE; @@ -6489,14 +6095,11 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) case HW_VAR_FWLPS_RF_ON: //When we halt NIC, we should check if FW LPS is leave. - if(adapter_to_pwrctl(padapter)->rf_pwrstate == rf_off) - { + if(adapter_to_pwrctl(padapter)->rf_pwrstate == rf_off) { // If it is in HW/SW Radio OFF or IPS state, we do not check Fw LPS Leave, // because Fw is unload. *pval = _TRUE; - } - else - { + } else { u32 valRCR; valRCR = rtw_read32(padapter, REG_RCR); valRCR &= 0x00070000; @@ -6505,7 +6108,7 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) else *pval = _TRUE; } - + break; #ifdef CONFIG_ANTENNA_DIVERSITY @@ -6515,7 +6118,7 @@ void GetHwReg8814A(PADAPTER padapter, u8 variable, u8 *pval) #endif //CONFIG_ANTENNA_DIVERSITY case HW_VAR_EFUSE_BYTES: // To get EFUE total used bytes, added by Roger, 2008.12.22. - *(u16*)pval = pHalData->EfuseUsedBytes; + *(u16*)pval = pHalData->EfuseUsedBytes; break; case HW_VAR_APFM_ON_MAC: @@ -6557,7 +6160,7 @@ u8 SetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) pHalData->EfuseUsedBytes = *((u16*)pval); break; case HAL_DEF_EFUSE_USAGE: - pHalData->EfuseUsedPercentage = *((u8*)pval); + pHalData->EfuseUsedPercentage = *((u8*)pval); break; default: bResult = SetHalDefVar(padapter, variable, pval); @@ -6568,7 +6171,7 @@ u8 SetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) } /* - * Description: + * Description: * Query setting of specified variable. */ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) @@ -6576,13 +6179,12 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) PHAL_DATA_TYPE pHalData; u8 bResult; - pHalData = GET_HAL_DATA(padapter); bResult = _SUCCESS; switch (variable) { - + #ifdef CONFIG_ANTENNA_DIVERSITY case HAL_DEF_IS_SUPPORT_ANT_DIV: @@ -6632,7 +6234,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) break; case HAL_DEF_RX_STBC: - *(u8*)pval = 1; + *(u8*)pval = 4; break; case HAL_DEF_EXPLICIT_BEAMFORMER: @@ -6640,7 +6242,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) *((PBOOLEAN)pval) = _TRUE; else *((PBOOLEAN)pval) = _FALSE; - break; + break; case HAL_DEF_EXPLICIT_BEAMFORMEE: *((PBOOLEAN)pval) = _TRUE; break; @@ -6652,8 +6254,8 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) u32 cmd ; u32 ra_info1, ra_info2; u32 rate_mask1, rate_mask2; - u8 curr_tx_rate,curr_tx_sgi,hight_rate,lowest_rate; - + u8 curr_tx_rate,curr_tx_sgi,hight_rate,lowest_rate; + RTW_INFO("============ RA status check Mac_id:%d ===================\n", mac_id); cmd = 0x40000100 |mac_id; @@ -6663,7 +6265,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) curr_tx_rate = ra_info1&0x7F; curr_tx_sgi = (ra_info1>>7)&0x01; RTW_INFO("[ ra_info1:0x%08x ] =>cur_tx_rate= %s,cur_sgi:%d, PWRSTS = 0x%02x \n", - ra_info1, + ra_info1, HDATA_RATE(curr_tx_rate), curr_tx_sgi, (ra_info1>>8) & 0x07); @@ -6676,21 +6278,21 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) rate_mask1 = rtw_read32(padapter,REG_RSVD7_8812); rate_mask2 = rtw_read32(padapter,REG_RSVD8_8812); hight_rate = ra_info2&0xFF; - lowest_rate = (ra_info2>>8) & 0xFF; + lowest_rate = (ra_info2>>8) & 0xFF; RTW_INFO("[ ra_info1:0x%08x ] =>RSSI=%d, BW_setting=0x%02x, DISRA=0x%02x, VHT_EN=0x%02x\n", ra_info1, ra_info1&0xFF, (ra_info1>>8) & 0xFF, (ra_info1>>16) & 0xFF, (ra_info1>>24) & 0xFF); - + RTW_INFO("[ ra_info2:0x%08x ] =>hight_rate=%s, lowest_rate=%s, SGI=0x%02x, RateID=%d\n", ra_info2, HDATA_RATE(hight_rate), HDATA_RATE(lowest_rate), (ra_info2>>16) & 0xFF, (ra_info2>>24) & 0xFF); - RTW_INFO("rate_mask2=0x%08x, rate_mask1=0x%08x\n", rate_mask2, rate_mask1); + RTW_INFO("rate_mask2=0x%08x, rate_mask1=0x%08x\n", rate_mask2, rate_mask1); } #else //0 RTW_INFO("%s,%d, 8814 need to fix \n", __FUNCTION__,__LINE__); @@ -6702,12 +6304,9 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) break; case HAL_DEF_TX_PAGE_BOUNDARY: - if (!padapter->registrypriv.wifi_spec) - { + if (!padapter->registrypriv.wifi_spec) { *(u16*)pval = TX_PAGE_BOUNDARY_8814A; - } - else - { + } else { *(u16*)pval = WMM_NORMAL_TX_PAGE_BOUNDARY_8814A; } break; @@ -6723,7 +6322,7 @@ u8 GetHalDefVar8814A(PADAPTER padapter, HAL_DEF_VARIABLE variable, void *pval) *((u16*)(pval)) = pHalData->EfuseUsedBytes; break; case HAL_DEF_EFUSE_USAGE: - *((u32*)(pval)) = (pHalData->EfuseUsedPercentage<<16)|(pHalData->EfuseUsedBytes); + *((u32*)(pval)) = (pHalData->EfuseUsedPercentage<<16)|(pHalData->EfuseUsedBytes); break; case HAL_DEF_RX_DMA_SZ_WOW: *((u32 *)pval) = RX_DMA_BOUNDARY_8814A + 1; @@ -6748,7 +6347,7 @@ s32 c2h_id_filter_ccx_8814a(u8 *buf) s32 ret = _FALSE; if (c2h_evt->id == C2H_CCX_TX_RPT) ret = _TRUE; - + return ret; } @@ -6774,8 +6373,7 @@ void rtl8812a_combo_card_WifiOnlyHwInit(PADAPTER pdapter) { u8 u1Tmp; RTW_INFO("%s !\n", __FUNCTION__); - if(IS_HARDWARE_TYPE_8812(pdapter)) - { + if(IS_HARDWARE_TYPE_8812(pdapter)) { //0x790[5:0]=0x5 u1Tmp = rtw_read8(pdapter,0x790); u1Tmp = (u1Tmp & 0xb0) | 0x05 ; @@ -6793,7 +6391,7 @@ void rtl8812a_combo_card_WifiOnlyHwInit(PADAPTER pdapter) // coex parameters //pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x778, 0x3); rtw_write8(pdapter,0x778,0x3); - + // enable counter statistics //pBtCoexist->fBtcWrite1Byte(pBtCoexist, 0x76e, 0xc); rtw_write8(pdapter,0x76e,0xc); @@ -6819,7 +6417,7 @@ void rtl8812a_combo_card_WifiOnlyHwInit(PADAPTER pdapter) rtw_write8(pdapter,0x7, u1Tmp); } - + } #endif //CONFIG_BT_COEXIST @@ -6858,7 +6456,6 @@ void rtl8814_set_hal_ops(struct hal_ops *pHalFunc) pHalFunc->read_rfreg = &PHY_QueryRFReg8814A; pHalFunc->write_rfreg = &PHY_SetRFReg8814A; - // Efuse related function pHalFunc->EfusePowerSwitch = &rtl8814_EfusePowerSwitch; pHalFunc->ReadEFuse = &rtl8814_ReadEFuse; @@ -6893,5 +6490,3 @@ void rtl8814_set_hal_ops(struct hal_ops *pHalFunc) pHalFunc->fw_dl = &FirmwareDownload8814A; pHalFunc->hal_get_tx_buff_rsvd_page_num = &GetTxBufferRsvdPageNum8814; } - - diff --git a/hal/rtl8814a/rtl8814a_phycfg.c b/hal/rtl8814a/rtl8814a_phycfg.c index 8b3caa31d..f0a247a7e 100644 --- a/hal/rtl8814a/rtl8814a_phycfg.c +++ b/hal/rtl8814a/rtl8814a_phycfg.c @@ -72,23 +72,20 @@ PHY_SetBBReg8814A( #if(SIC_ENABLE == 1) SIC_SetBBReg(Adapter, RegAddr, BitMask, Data); - return; + return; #endif - if(BitMask!= bMaskDWord) - {//if not "double word" write + if (BitMask!= bMaskDWord) { //if not "double word" write OriginalValue = rtw_read32(Adapter, RegAddr); BitShift = PHY_CalculateBitShift(BitMask); Data = ((OriginalValue) & (~BitMask)) |( ((Data << BitShift)) & BitMask); } rtw_write32(Adapter, RegAddr, Data); - + //RTW_INFO("BBW MASK=0x%x Addr[0x%x]=0x%x\n", BitMask, RegAddr, Data); } - - static u32 phy_RFRead_8814A( IN PADAPTER Adapter, @@ -98,10 +95,10 @@ phy_RFRead_8814A( ) { u32 DataAndAddr = 0; - u32 Readback_Value, Direct_Addr; - + u32 Readback_Value, Direct_Addr; + RegAddr &= 0xff; - switch(eRFPath){ + switch (eRFPath) { case ODM_RF_PATH_A: Direct_Addr = 0x2800+RegAddr*4; break; @@ -118,11 +115,11 @@ phy_RFRead_8814A( Direct_Addr = 0x2800+RegAddr*4; break; } - + BitMask &= bRFRegOffsetMask; - - Readback_Value = PHY_QueryBBReg(Adapter, Direct_Addr, BitMask); + + Readback_Value = PHY_QueryBBReg(Adapter, Direct_Addr, BitMask); //RTW_INFO("RFR-%d Addr[0x%x]=0x%x\n", eRFPath, RegAddr, Readback_Value); return Readback_Value; @@ -154,9 +151,9 @@ phy_RFWrite_8814A( //PHY_RFShadowWrite(Adapter, eRFPath, Offset, Data); // Put write addr in [27:20] and write data in [19:00] - DataAndAddr = ((Offset<<20) | (Data&0x000fffff)) & 0x0fffffff; + DataAndAddr = ((Offset<<20) | (Data&0x000fffff)) & 0x0fffffff; - // Write Operation + // Write Operation PHY_SetBBReg(Adapter, pPhyReg->rf3wireOffset, bMaskDWord, DataAndAddr); //RTW_INFO("RFW-%d Addr[0x%x]=0x%x\n", eRFPath, pPhyReg->rf3wireOffset, DataAndAddr); } @@ -170,12 +167,12 @@ PHY_QueryRFReg8814A( IN u32 BitMask ) { - u32 Readback_Value; + u32 Readback_Value; #if (DISABLE_BB_RF == 1) return 0; #endif - + Readback_Value = phy_RFRead_8814A(Adapter, eRFPath, RegAddr, BitMask); return (Readback_Value); @@ -196,7 +193,7 @@ PHY_SetRFReg8814A( return; #endif - if(BitMask == 0) + if (BitMask == 0) return; RegAddr &= 0xff; @@ -208,9 +205,8 @@ PHY_SetRFReg8814A( BitShift = PHY_CalculateBitShift(BitMask); Data = ((Original_Value) & (~BitMask)) | (Data<< BitShift); } - - phy_RFWrite_8814A(Adapter, eRFPath, RegAddr, Data); + phy_RFWrite_8814A(Adapter, eRFPath, RegAddr, Data); } @@ -246,7 +242,7 @@ phy_InitBBRFRegisterDefinition( IN PADAPTER Adapter ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); // RF Interface Sowrtware Control pHalData->PHYRegDef[ODM_RF_PATH_A].rfintfs = rFPGA0_XAB_RFInterfaceSW; // 16 LSBs if read 32-bit from 0x870 @@ -260,16 +256,13 @@ phy_InitBBRFRegisterDefinition( pHalData->PHYRegDef[ODM_RF_PATH_A].rfintfe = rFPGA0_XA_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x860 (16-bit for 0x862) pHalData->PHYRegDef[ODM_RF_PATH_B].rfintfe = rFPGA0_XB_RFInterfaceOE; // 16 MSBs if read 32-bit from 0x864 (16-bit for 0x866) - if(IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) - { + if (IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) { pHalData->PHYRegDef[ODM_RF_PATH_A].rf3wireOffset = rA_LSSIWrite_Jaguar; //LSSI Parameter pHalData->PHYRegDef[ODM_RF_PATH_B].rf3wireOffset = rB_LSSIWrite_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_A].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 pHalData->PHYRegDef[ODM_RF_PATH_B].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 - } - else - { + } else { pHalData->PHYRegDef[ODM_RF_PATH_A].rf3wireOffset = rFPGA0_XA_LSSIParameter; //LSSI Parameter pHalData->PHYRegDef[ODM_RF_PATH_B].rf3wireOffset = rFPGA0_XB_LSSIParameter; @@ -277,35 +270,30 @@ phy_InitBBRFRegisterDefinition( pHalData->PHYRegDef[ODM_RF_PATH_B].rfHSSIPara2 = rFPGA0_XB_HSSIParameter2; //wire control parameter2 } - if(IS_HARDWARE_TYPE_8814A(Adapter)) - { + if (IS_HARDWARE_TYPE_8814A(Adapter)) { pHalData->PHYRegDef[ODM_RF_PATH_C].rf3wireOffset = rC_LSSIWrite_Jaguar2; //LSSI Parameter pHalData->PHYRegDef[ODM_RF_PATH_D].rf3wireOffset = rD_LSSIWrite_Jaguar2; pHalData->PHYRegDef[ODM_RF_PATH_C].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 pHalData->PHYRegDef[ODM_RF_PATH_D].rfHSSIPara2 = rHSSIRead_Jaguar; //wire control parameter2 } - - if(IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) - { - // Tranceiver Readback LSSI/HSPI mode + + if (IS_HARDWARE_TYPE_JAGUAR_AND_JAGUAR2(Adapter)) { + // Tranceiver Readback LSSI/HSPI mode pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBack = rA_SIRead_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBack = rB_SIRead_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBackPi = rA_PIRead_Jaguar; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBackPi = rB_PIRead_Jaguar; - } - else - { - // Tranceiver Readback LSSI/HSPI mode + } else { + // Tranceiver Readback LSSI/HSPI mode pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBack = rFPGA0_XA_LSSIReadBack; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBack = rFPGA0_XB_LSSIReadBack; pHalData->PHYRegDef[ODM_RF_PATH_A].rfLSSIReadBackPi = TransceiverA_HSPI_Readback; pHalData->PHYRegDef[ODM_RF_PATH_B].rfLSSIReadBackPi = TransceiverB_HSPI_Readback; } - if(IS_HARDWARE_TYPE_8814A(Adapter)) - { - // Tranceiver Readback LSSI/HSPI mode + if (IS_HARDWARE_TYPE_8814A(Adapter)) { + // Tranceiver Readback LSSI/HSPI mode pHalData->PHYRegDef[ODM_RF_PATH_C].rfLSSIReadBack = rC_SIRead_Jaguar2; pHalData->PHYRegDef[ODM_RF_PATH_D].rfLSSIReadBack = rD_SIRead_Jaguar2; pHalData->PHYRegDef[ODM_RF_PATH_C].rfLSSIReadBackPi = rC_PIRead_Jaguar2; @@ -330,9 +318,9 @@ PHY_BBConfig8814( // . APLL_EN,,APLL_320_GATEB,APLL_320BIAS, auto config by hw fsm after pfsm_go (0x4 bit 8) set TmpU1B = PlatformEFIORead1Byte(Adapter, REG_SYS_FUNC_EN_8814A); - if(IS_HARDWARE_TYPE_8814AU(Adapter)) + if (IS_HARDWARE_TYPE_8814AU(Adapter)) TmpU1B |= FEN_USBA; - else if(IS_HARDWARE_TYPE_8814AE(Adapter)) + else if (IS_HARDWARE_TYPE_8814AE(Adapter)) TmpU1B |= FEN_PCIEA; PlatformEFIOWrite1Byte(Adapter, REG_SYS_FUNC_EN, TmpU1B); @@ -344,7 +332,7 @@ PHY_BBConfig8814( PlatformEFIOWrite1Byte(Adapter, REG_RF_CTRL0_8814A , 0x07);//RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a //7. 0x20[7:0] = 0x07 PathB RF Power On //8. 0x21[7:0] = 0x07 PathC RF Power On - PlatformEFIOWrite2Byte(Adapter, REG_RF_CTRL1_8814A , 0x0707);//RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a + PlatformEFIOWrite2Byte(Adapter, REG_RF_CTRL1_8814A , 0x0707);//RF_SDMRSTB,RF_RSTB,RF_EN same with 8723a //9. 0x76[7:0] = 0x07 PathD RF Power On PlatformEFIOWrite1Byte(Adapter, REG_RF_CTRL3_8814A , 0x7); @@ -354,7 +342,7 @@ PHY_BBConfig8814( rtStatus = phy_BB8814A_Config_ParaFile(Adapter); hal_set_crystal_cap(Adapter, pHalData->CrystalCap); - + switch (Adapter->registrypriv.rf_config) { case RF_1T1R: case RF_2T4R: @@ -376,8 +364,8 @@ PHY_BBConfig8814( RTW_INFO("%s, unknown rf_config: %d\n", __func__, Adapter->registrypriv.rf_config); break; } - - return rtStatus; + + return rtStatus; } int phy_BB8814A_Config_ParaFile( @@ -461,22 +449,22 @@ phy_ADC_CLK_8814A( BB_REG_8FC = PHY_QueryBBReg( Adapter, 0x8fc, bMaskDWord); BB_REG_808 = PHY_QueryBBReg( Adapter, 0x808, bMaskDWord); PHY_SetBBReg(Adapter, 0x520, bMaskByte2, 0x3f); - + //1 Step 2. Backup RXIQC & RXIQC = 0 - for(Search_index = 0; Search_index<4; Search_index++){ + for (Search_index = 0; Search_index<4; Search_index++){ RXIQC[Search_index] = PHY_QueryBBReg( Adapter, RXIQC_REG[0][Search_index], bMaskDWord); PHY_SetBBReg(Adapter, RXIQC_REG[0][Search_index], bMaskDWord, 0x0); PHY_SetBBReg(Adapter, RXIQC_REG[1][Search_index], bMaskDWord, 0x0); } PHY_SetBBReg(Adapter, 0xa14, 0x00000300, 0x3); Search_index = 0; - + //1 Step 3. Monitor MAC IDLE PHY_SetBBReg(Adapter, 0x8fc, bMaskDWord, 0x0); - while(MAC_Active){ + while (MAC_Active) { MAC_Active = PHY_QueryBBReg( Adapter, 0xfa0, bMaskDWord) & (0x803e0008); Search_index++; - if(Search_index>1000){ + if (Search_index>1000) { break; } } @@ -487,56 +475,56 @@ phy_ADC_CLK_8814A( PHY_SetBBReg(Adapter, 0x764, BIT(10)|BIT(9), 0x3); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x1); - // 0xc1c/0xe1c/0x181c/0x1a1c[4] must=1 to ensure table can be written when bbrstb=0 - // 0xc60/0xe60/0x1860/0x1a60[15] always = 1 after this line - // 0xc60/0xe60/0x1860/0x1a60[14] always = 0 bcz its error in A-cut + // 0xc1c/0xe1c/0x181c/0x1a1c[4] must=1 to ensure table can be written when bbrstb=0 + // 0xc60/0xe60/0x1860/0x1a60[15] always = 1 after this line + // 0xc60/0xe60/0x1860/0x1a60[14] always = 0 bcz its error in A-cut // power_off/clk_off @ anapar_state=idle mode - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x15800002); //0xc60 0x15808002 + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x15800002); //0xc60 0x15808002 PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x01808003); //0xc60 0x01808003 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x15800002); //0xe60 0x15808002 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x01808003); //0xe60 0x01808003 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x15800002); //0x1860 0x15808002 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x01808003); //0x1860 0x01808003 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x15800002); //0x1a60 0x15808002 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x01808003); //0x1a60 0x01808003 - + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x15800002); //0xe60 0x15808002 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x01808003); //0xe60 0x01808003 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x15800002); //0x1860 0x15808002 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x01808003); //0x1860 0x01808003 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x15800002); //0x1a60 0x15808002 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x01808003); //0x1a60 0x01808003 + PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x0); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x0); - PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D080058); //0xc5c 0x00080058 // [19] =1 to turn off ADC - PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D080058); //0xe5c 0x00080058 // [19] =1 to turn off ADC - PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D080058); //0x185c 0x00080058 // [19] =1 to turn off ADC - PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D080058); //0x1a5c 0x00080058 // [19] =1 to turn off ADC - - // power_on/clk_off + PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D080058); //0xc5c 0x00080058 // [19] =1 to turn off ADC + PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D080058); //0xe5c 0x00080058 // [19] =1 to turn off ADC + PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D080058); //0x185c 0x00080058 // [19] =1 to turn off ADC + PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D080058); //0x1a5c 0x00080058 // [19] =1 to turn off ADC + + // power_on/clk_off //PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x1); - PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D000058); //0xc5c 0x0D000058 // [19] =0 to turn on ADC - PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D000058); //0xe5c 0x0D000058 // [19] =0 to turn on ADC - PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D000058); //0x185c 0x0D000058 // [19] =0 to turn on ADC - PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D000058); //0x1a5c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0xc5c, bMaskDWord, 0x0D000058); //0xc5c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0xe5c, bMaskDWord, 0x0D000058); //0xe5c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0x185c, bMaskDWord, 0x0D000058); //0x185c 0x0D000058 // [19] =0 to turn on ADC + PHY_SetBBReg(Adapter, 0x1a5c, bMaskDWord, 0x0D000058); //0x1a5c 0x0D000058 // [19] =0 to turn on ADC // power_on/clk_on @ anapar_state=BT mode - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808002 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808002 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808002 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808002 - PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x1); + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808002 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808002 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808002 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808002 + PHY_SetBBReg(Adapter, 0x764, BIT(10), 0x1); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x1); - // recover original setting @ anapar_state=BT mode - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808036 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808036 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808036 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808036 + // recover original setting @ anapar_state=BT mode + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05808032); //0xc60 0x05808036 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05808032); //0xe60 0x05808036 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05808032); //0x1860 0x05808036 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05808032); //0x1a60 0x05808036 - PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05800002); //0xc60 0x05800002 + PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x05800002); //0xc60 0x05800002 PHY_SetBBReg(Adapter, 0xc60, bMaskDWord, 0x07808003); //0xc60 0x07808003 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05800002); //0xe60 0x05800002 - PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x07808003); //0xe60 0x07808003 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05800002); //0x1860 0x05800002 - PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x07808003); //0x1860 0x07808003 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05800002); //0x1a60 0x05800002 - PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x07808003); //0x1a60 0x07808003 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x05800002); //0xe60 0x05800002 + PHY_SetBBReg(Adapter, 0xe60, bMaskDWord, 0x07808003); //0xe60 0x07808003 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x05800002); //0x1860 0x05800002 + PHY_SetBBReg(Adapter, 0x1860, bMaskDWord, 0x07808003); //0x1860 0x07808003 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x05800002); //0x1a60 0x05800002 + PHY_SetBBReg(Adapter, 0x1a60, bMaskDWord, 0x07808003); //0x1a60 0x07808003 PHY_SetBBReg(Adapter, 0x764, BIT(10)|BIT(9), 0x0); PHY_SetBBReg(Adapter, 0x804, BIT(2), 0x0); @@ -546,7 +534,7 @@ phy_ADC_CLK_8814A( PHY_SetBBReg(Adapter, 0x520, bMaskDWord, MAC_REG_520); PHY_SetBBReg(Adapter, 0x8fc, bMaskDWord, BB_REG_8FC); PHY_SetBBReg(Adapter, 0x808, bMaskDWord, BB_REG_808); - for(Search_index = 0; Search_index<4; Search_index++){ + for (Search_index = 0; Search_index<4; Search_index++) { PHY_SetBBReg(Adapter, RXIQC_REG[0][Search_index], bMaskDWord, RXIQC[Search_index]); PHY_SetBBReg(Adapter, RXIQC_REG[1][Search_index], bMaskDWord, 0x01000000); } @@ -566,7 +554,6 @@ PHY_ConfigBB_8814A( } - //2 3.3 RF Config s32 @@ -581,12 +568,11 @@ PHY_RFConfig8814A( if (rtw_is_surprise_removed(Adapter)) return _FAIL; - switch(pHalData->rf_chip) - { + switch (pHalData->rf_chip) { case RF_PSEUDO_11N: RTW_INFO("%s(): RF_PSEUDO_11N\n",__FUNCTION__); break; - default: + default: rtStatus = PHY_RF6052_Config_8814A(Adapter); break; } @@ -651,11 +637,10 @@ phy_SetRFPowerState_8814E( BOOLEAN bResult = TRUE; u8 i, QueueID; PRT_POWER_SAVE_CONTROL pPSC = GET_POWER_SAVE_CONTROL(pMgntInfo); - + pHalData->SetRFPowerStateInProgress = TRUE; - switch( eRFPowerState ) - { + switch ( eRFPowerState ) { // // SW radio on/IPS site survey call will execute all flow // HW radio on @@ -670,20 +655,17 @@ phy_SetRFPowerState_8814E( { // The current RF state is OFF and the RF OFF level is halting the NIC, re-initialize the NIC. s32 rtstatus; u32 InitializeCount = 0; - do - { + do { InitializeCount++; rtstatus = NicIFEnableNIC( Adapter ); }while( (rtstatus != _SUCCESS) &&(InitializeCount <10) ); RT_ASSERT(rtstatus == _SUCCESS,("Nic Initialize Fail\n")); RT_CLEAR_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); - } - else - { // This is the normal case, we just turn on the RF. + } else { // This is the normal case, we just turn on the RF. phy_SetRTL8814ERfOn(Adapter); } - - // Turn on RF we are still linked, which might happen when + + // Turn on RF we are still linked, which might happen when // we quickly turn off and on HW RF. 2006.05.12, by rcnjko. if( pMgntInfo->bMediaConnect == TRUE ) Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); @@ -694,51 +676,42 @@ phy_SetRFPowerState_8814E( // Card Disable/SW radio off/HW radio off/IPS enter call case eRfOff: - { + { // Make sure BusyQueue is empty befor turn off RFE pwoer. - for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) - { - if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) - { + for (QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) { + if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) { QueueID++; continue; } - else if(IsLowPowerState(Adapter)) - { - RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, + else if(IsLowPowerState(Adapter)) { + RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 but lower power state!\n", (i+1), QueueID)); break; - } - else - { - RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, + } else { + RT_TRACE((COMP_POWER|COMP_RF), DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 before doze!\n", (i+1), QueueID)); PlatformStallExecution(10); i++; } - - if(i >= MAX_DOZE_WAITING_TIMES_9x) - { + + if (i >= MAX_DOZE_WAITING_TIMES_9x) { RT_TRACE((COMP_POWER|COMP_RF), DBG_WARNING, ("\n\n\n SetZebraRFPowerState8185B(): eRfOff: %d times TcbBusyQueue[%d] != 0 !!!\n\n\n", MAX_DOZE_WAITING_TIMES_9x, QueueID)); break; } } - if(pPSC->RegRfPsLevel & RT_RF_OFF_LEVL_HALT_NIC) - { // Disable all components. + if (pPSC->RegRfPsLevel & RT_RF_OFF_LEVL_HALT_NIC) { // Disable all components. NicIFDisableNIC(Adapter); if(IS_HARDWARE_TYPE_8814AE(Adapter)) NicIFEnableInterrupt(Adapter); RT_SET_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); - } - else - { // Normal case. + } else { // Normal case. //If Rf off reason is from IPS, Led should blink with no link, by Maddest 071015 if(pMgntInfo->RfOffReason==RF_CHANGE_BY_IPS ) - Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); } } break; @@ -748,14 +721,13 @@ phy_SetRFPowerState_8814E( bResult = FALSE; RT_ASSERT(FALSE, ("phy_SetRFPowerState_8814E(): unknow state to set: 0x%X!!!\n", eRFPowerState)); break; - } + } - if(bResult) - { + if (bResult) { // Update current RF state variable. pHalData->eRFPowerState = eRFPowerState; } - + pHalData->SetRFPowerStateInProgress = FALSE; return bResult; @@ -774,23 +746,21 @@ phy_SetRFPowerState_8814U( BOOLEAN bResult = TRUE; u8 i, QueueID; PRT_USB_DEVICE pDevice = GET_RT_USB_DEVICE(Adapter); - - if(pHalData->SetRFPowerStateInProgress == TRUE) + + if (pHalData->SetRFPowerStateInProgress == TRUE) return FALSE; - + pHalData->SetRFPowerStateInProgress = TRUE; RT_TRACE(COMP_INIT, DBG_LOUD, ("======> phy_SetRFPowerState_8814U .\n")); - switch( eRFPowerState ) - { + switch ( eRFPowerState ) { case eRfOn: - if((pHalData->eRFPowerState == eRfOff) && + if ((pHalData->eRFPowerState == eRfOff) && RT_IN_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC)) { // The current RF state is OFF and the RF OFF level is halting the NIC, re-initialize the NIC. - RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814U-eRfOn .\n")); + RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814U-eRfOn .\n")); - if(!Adapter->bInHctTest) - { + if (!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. NicIFEnableNIC(Adapter); @@ -798,8 +768,8 @@ phy_SetRFPowerState_8814U( } } break; - - // + + // // In current solution, RFSleep=RFOff in order to save power under 802.11 power save. // By Bruce, 2008-01-16. // @@ -808,7 +778,7 @@ phy_SetRFPowerState_8814U( // ToDo: } break; - + case eRfOff: // HW setting had been configured. // Both of these RF configures are the same, configuring twice may cause HW abnormal. @@ -816,85 +786,76 @@ phy_SetRFPowerState_8814U( break; rtw_write8(Adapter, 0xf015, 0x40); //page added for usb3 bus // Make sure BusyQueue is empty befor turn off RFE pwoer. - for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) - { - if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) - { + for (QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) { + if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) { QueueID++; continue; - } - else - { + } else { RT_TRACE(COMP_POWER, DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 before doze!\n", (i+1), QueueID)); PlatformSleepUs(10); i++; } - - if(i >= MAX_DOZE_WAITING_TIMES_9x) - { + + if(i >= MAX_DOZE_WAITING_TIMES_9x) { RT_TRACE(COMP_POWER, DBG_LOUD, ("\n\n\n SetZebraRFPowerState8185B(): eRfOff: %d times TcbBusyQueue[%d] != 0 !!!\n\n\n", MAX_DOZE_WAITING_TIMES_9x, QueueID)); break; } - } + } - // + // //RF Off/Sleep sequence. Designed/tested from SD4 Scott, SD1 Grent and Jonbon. - // Added by + // Added by // - //================================================================== + //================================================================== // CU will call card disable flow to set RF off, such that we call halt directly // and set the PS_LEVEL to HALT_NIC or we might call halt twice in N6usbHalt in some cases. - // 2010.03.05. Added by tynli. + // 2010.03.05. Added by tynli. if(pMgntInfo->RfOffReason & RF_CHANGE_BY_IPS || pMgntInfo->RfOffReason & RF_CHANGE_BY_HW || pMgntInfo->RfOffReason & RF_CHANGE_BY_SW) { //for HW/Sw radio off and IPS flow - //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); - if(!Adapter->bInHctTest) - { + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); + if(!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. NicIFDisableNIC(Adapter); RT_SET_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); } - } + } break; default: bResult = FALSE; RT_ASSERT(FALSE, ("phy_SetRFPowerState_8814U(): unknow state to set: 0x%X!!!\n", eRFPowerState)); break; - } - - if(bResult) - { + } + + if (bResult) { // Update current RF state variable. pHalData->eRFPowerState = eRFPowerState; - - switch(pHalData->rf_chip ) - { - default: - switch(pHalData->eRFPowerState) - { + + switch (pHalData->rf_chip ) { + default: + switch (pHalData->eRFPowerState) { case eRfOff: // //If Rf off reason is from IPS, Led should blink with no link, by Maddest 071015 // if(pMgntInfo->RfOffReason==RF_CHANGE_BY_IPS ) - Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); break; - + case eRfOn: - // Turn on RF we are still linked, which might happen when + // Turn on RF we are still linked, which might happen when // we quickly turn off and on HW RF. 2006.05.12, by rcnjko. if( pMgntInfo->bMediaConnect == TRUE ) - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); else // Turn off LED if RF is not ON. Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); break; - + default: // do nothing. break; @@ -903,7 +864,7 @@ phy_SetRFPowerState_8814U( break; }// Switch rf_chip } - + pHalData->SetRFPowerStateInProgress = FALSE; RT_TRACE(COMP_INIT, DBG_LOUD, ("<====== phy_SetRFPowerState_8814U .\n")); return bResult; @@ -922,23 +883,21 @@ phy_SetRFPowerState_8814Sdio( BOOLEAN bResult = TRUE; u8 i, QueueID; PRT_SDIO_DEVICE pDevice = GET_RT_SDIO_DEVICE(Adapter); - + if(pHalData->SetRFPowerStateInProgress == TRUE) return FALSE; - + pHalData->SetRFPowerStateInProgress = TRUE; RT_TRACE(COMP_INIT, DBG_LOUD, ("======> phy_SetRFPowerState_8814Sdio .\n")) - - switch( eRFPowerState ) - { + + switch ( eRFPowerState ) { case eRfOn: if((pHalData->eRFPowerState == eRfOff) && RT_IN_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC)) { // The current RF state is OFF and the RF OFF level is halting the NIC, re-initialize the NIC. - RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814Sdio-eRfOn .\n")); + RT_TRACE(COMP_RF, DBG_LOUD, ("======> phy_SetRFPowerState_8814Sdio-eRfOn .\n")); - if(!Adapter->bInHctTest) - { + if(!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. NicIFEnableNIC(Adapter); @@ -955,8 +914,8 @@ phy_SetRFPowerState_8814Sdio( pHalData->bIQKInitialized = _TRUE; } break; - - // + + // // In current solution, RFSleep=RFOff in order to save power under 802.11 power save. // By Bruce, 2008-01-16. // @@ -965,7 +924,7 @@ phy_SetRFPowerState_8814Sdio( // ToDo: } break; - + case eRfOff: // HW setting had been configured. // Both of these RF configures are the same, configuring twice may cause HW abnormal. @@ -973,87 +932,78 @@ phy_SetRFPowerState_8814Sdio( break; // Make sure BusyQueue is empty befor turn off RFE pwoer. - for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) - { - if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) - { + for(QueueID = 0, i = 0; QueueID < MAX_TX_QUEUE; ) { + if(RTIsListEmpty(&Adapter->TcbBusyQueue[QueueID])) { //DbgPrint("QueueID = %d", QueueID); QueueID++; continue; - } - else - { + } else { RT_TRACE(COMP_POWER, DBG_LOUD, ("eRf Off/Sleep: %d times TcbBusyQueue[%d] !=0 before doze!\n", (i+1), QueueID)); PlatformSleepUs(10); i++; } - - if(i >= MAX_DOZE_WAITING_TIMES_9x) - { + + if(i >= MAX_DOZE_WAITING_TIMES_9x) { RT_TRACE(COMP_POWER, DBG_LOUD, ("\n\n\n SetZebraRFPowerState8185B(): eRfOff: %d times TcbBusyQueue[%d] != 0 !!!\n\n\n", MAX_DOZE_WAITING_TIMES_9x, QueueID)); break; } - } + } - // + // //RF Off/Sleep sequence. Designed/tested from SD4 Scott, SD1 Grent and Jonbon. - // Added by + // Added by // - //================================================================== + //================================================================== // CU will call card disable flow to set RF off, such that we call halt directly // and set the PS_LEVEL to HALT_NIC or we might call halt twice in N6usbHalt in some cases. - // 2010.03.05. Added by tynli. + // 2010.03.05. Added by tynli. if(pMgntInfo->RfOffReason & RF_CHANGE_BY_IPS || pMgntInfo->RfOffReason & RF_CHANGE_BY_HW || pMgntInfo->RfOffReason & RF_CHANGE_BY_SW) { //for HW/Sw radio off and IPS flow - //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); - if(!Adapter->bInHctTest) - { + //RT_TRACE(COMP_INIT, DBG_LOUD, ("======> CardDisableWithoutHWSM -eRfOff.\n")); + if(!Adapter->bInHctTest) { // 2010/09/01 MH For 92CU, we do not make sure the RF B short initialize sequence // So disable the different RF on/off sequence for hidden AP. - NicIFDisableNIC(Adapter); - + NicIFDisableNIC(Adapter); + RT_SET_PS_LEVEL(Adapter, RT_RF_OFF_LEVL_HALT_NIC); } - } + } break; default: bResult = FALSE; RT_ASSERT(FALSE, ("phy_SetRFPowerState_8814Sdio(): unknow state to set: 0x%X!!!\n", eRFPowerState)); break; - } - - if(bResult) - { + } + + if(bResult) { // Update current RF state variable. pHalData->eRFPowerState = eRFPowerState; - - switch(pHalData->rf_chip ) - { - default: - switch(pHalData->eRFPowerState) - { + + switch (pHalData->rf_chip ) { + default: + switch(pHalData->eRFPowerState) { case eRfOff: // //If Rf off reason is from IPS, Led should blink with no link, by Maddest 071015 // if(pMgntInfo->RfOffReason==RF_CHANGE_BY_IPS ) - Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter,LED_CTL_NO_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_POWER_OFF); break; - + case eRfOn: - // Turn on RF we are still linked, which might happen when + // Turn on RF we are still linked, which might happen when // we quickly turn off and on HW RF. 2006.05.12, by rcnjko. if( pMgntInfo->bMediaConnect == TRUE ) - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_LINK); else // Turn off LED if RF is not ON. - Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); + Adapter->HalFunc.LedControlHandler(Adapter, LED_CTL_NO_LINK); break; - + default: // do nothing. break; @@ -1062,7 +1012,7 @@ phy_SetRFPowerState_8814Sdio( break; }// Switch rf_chip } - + pHalData->SetRFPowerStateInProgress = FALSE; return bResult; @@ -1074,7 +1024,7 @@ phy_SetRFPowerState_8814Sdio( BOOLEAN PHY_SetRFPowerState8814A( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN rt_rf_power_state eRFPowerState ) { @@ -1082,8 +1032,7 @@ PHY_SetRFPowerState8814A( BOOLEAN bResult = FALSE; RT_TRACE(COMP_RF, DBG_LOUD, ("---------> PHY_SetRFPowerState8814(): eRFPowerState(%d)\n", eRFPowerState)); - if(eRFPowerState == pHalData->eRFPowerState) - { + if(eRFPowerState == pHalData->eRFPowerState) { RT_TRACE(COMP_RF, DBG_LOUD, ("<--------- PHY_SetRFPowerState8814(): discard the request for eRFPowerState(%d) is the same.\n", eRFPowerState)); return bResult; } @@ -1094,7 +1043,7 @@ PHY_SetRFPowerState8814A( #elif (DEV_BUS_TYPE == RT_SDIO_INTERFACE) bResult = phy_SetRFPowerState_8814Sdio(Adapter, eRFPowerState); #endif - + RT_TRACE(COMP_RF, DBG_LOUD, ("<--------- PHY_SetRFPowerState8814(): bResult(%d)\n", bResult)); return bResult; @@ -1145,39 +1094,37 @@ PHY_SetTxPowerLevel8814( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - u8 jaguar2Rates[][4] = { {MGN_1M, MGN_2M, MGN_5_5M, MGN_11M}, - {MGN_6M, MGN_9M, MGN_12M, MGN_18M}, - {MGN_24M, MGN_36M, MGN_48M, MGN_54M}, + u8 jaguar2Rates[][4] = { {MGN_1M, MGN_2M, MGN_5_5M, MGN_11M}, + {MGN_6M, MGN_9M, MGN_12M, MGN_18M}, + {MGN_24M, MGN_36M, MGN_48M, MGN_54M}, {MGN_MCS0, MGN_MCS1, MGN_MCS2, MGN_MCS3}, - {MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7}, + {MGN_MCS4, MGN_MCS5, MGN_MCS6, MGN_MCS7}, {MGN_MCS8, MGN_MCS9, MGN_MCS10, MGN_MCS11}, {MGN_MCS12, MGN_MCS13, MGN_MCS14, MGN_MCS15}, - {MGN_MCS16, MGN_MCS17, MGN_MCS18, MGN_MCS19}, + {MGN_MCS16, MGN_MCS17, MGN_MCS18, MGN_MCS19}, {MGN_MCS20, MGN_MCS21, MGN_MCS22, MGN_MCS23}, - {MGN_VHT1SS_MCS0, MGN_VHT1SS_MCS1, MGN_VHT1SS_MCS2, MGN_VHT1SS_MCS3}, - {MGN_VHT1SS_MCS4, MGN_VHT1SS_MCS5, MGN_VHT1SS_MCS6, MGN_VHT1SS_MCS7}, - {MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9, MGN_VHT2SS_MCS0, MGN_VHT2SS_MCS1}, - {MGN_VHT2SS_MCS2, MGN_VHT2SS_MCS3, MGN_VHT2SS_MCS4, MGN_VHT2SS_MCS5}, + {MGN_VHT1SS_MCS0, MGN_VHT1SS_MCS1, MGN_VHT1SS_MCS2, MGN_VHT1SS_MCS3}, + {MGN_VHT1SS_MCS4, MGN_VHT1SS_MCS5, MGN_VHT1SS_MCS6, MGN_VHT1SS_MCS7}, + {MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9, MGN_VHT2SS_MCS0, MGN_VHT2SS_MCS1}, + {MGN_VHT2SS_MCS2, MGN_VHT2SS_MCS3, MGN_VHT2SS_MCS4, MGN_VHT2SS_MCS5}, {MGN_VHT2SS_MCS6, MGN_VHT2SS_MCS7, MGN_VHT2SS_MCS8, MGN_VHT2SS_MCS9}, - {MGN_VHT3SS_MCS0, MGN_VHT3SS_MCS1, MGN_VHT3SS_MCS2, MGN_VHT3SS_MCS3}, - {MGN_VHT3SS_MCS4, MGN_VHT3SS_MCS5, MGN_VHT3SS_MCS6, MGN_VHT3SS_MCS7}, - {MGN_VHT3SS_MCS8, MGN_VHT3SS_MCS9, 0, 0}}; + {MGN_VHT3SS_MCS0, MGN_VHT3SS_MCS1, MGN_VHT3SS_MCS2, MGN_VHT3SS_MCS3}, + {MGN_VHT3SS_MCS4, MGN_VHT3SS_MCS5, MGN_VHT3SS_MCS6, MGN_VHT3SS_MCS7}, + {MGN_VHT3SS_MCS8, MGN_VHT3SS_MCS9, 0, 0}}; - - for( path = ODM_RF_PATH_A; path <= ODM_RF_PATH_D; ++path ) - { + + for ( path = ODM_RF_PATH_A; path <= ODM_RF_PATH_D; ++path ) { PHY_SetTxPowerLevelByPath(Adapter, Channel, (u8)path); } #if 0 //todo H2C_TXPOWER_INDEX_OFFLOAD ? - if(Adapter->MgntInfo.bScanInProgress == FALSE && pHalData->RegFWOffload == 2) - { + if (Adapter->MgntInfo.bScanInProgress == FALSE && pHalData->RegFWOffload == 2) { HalDownloadTxPowerLevel8814(Adapter, value); } #endif //0 } /************************************************************************************************************** - * Description: + * Description: * The low-level interface to get the FINAL Tx Power Index , called by both MP and Normal Driver. * * <20120830, Kordan> @@ -1186,8 +1133,8 @@ u8 PHY_GetTxPowerIndex_8814A( IN PADAPTER pAdapter, IN u8 RFPath, - IN u8 Rate, - IN u8 BandWidth, + IN u8 Rate, + IN u8 BandWidth, IN u8 Channel, struct txpwr_idx_comp *tic ) @@ -1200,7 +1147,7 @@ PHY_GetTxPowerIndex_8814A( s8 tpt_offset = 0; /* RTW_INFO( "===>%s\n", __FUNCTION__ ); */ - + txPower = (s8) PHY_GetTxPowerIndexBase( pAdapter, RFPath, Rate, BandWidth, Channel, &bIn24G ); powerDiffByRate = PHY_GetTxPowerByRate( pAdapter, (u8)(!bIn24G), RFPath, tx_num, Rate ); @@ -1209,10 +1156,10 @@ PHY_GetTxPowerIndex_8814A( tpt_offset = PHY_GetTxPowerTrackingOffset(pAdapter, RFPath, Rate); powerDiffByRate = powerDiffByRate > limit ? limit : powerDiffByRate; - /*RTW_INFO("Rate-0x%x: (TxPower, PowerDiffByRate Path-%c) = (0x%X, %d)\n", Rate, ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), txPower, powerDiffByRate);*/ + RTW_INFO("Rate-0x%x: (TxPower, PowerDiffByRate Path-%c) = (0x%X, %d)\n", Rate, ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), txPower, powerDiffByRate); txPower += powerDiffByRate; - + //txPower += PHY_GetTxPowerTrackingOffset( pAdapter, RFPath, Rate ); #if 0 //todo ? #if CCX_SUPPORT @@ -1229,17 +1176,17 @@ PHY_GetTxPowerIndex_8814A( tic->ebias = 0; } - if(txPower > MAX_POWER_INDEX) + if (txPower > MAX_POWER_INDEX) txPower = MAX_POWER_INDEX; - //if (Adapter->registrypriv.mp_mode==0 && + //if (Adapter->registrypriv.mp_mode==0 && //(pHalData->bautoload_fail_flag || pHalData->EfuseMap[EFUSE_INIT_MAP][EEPROM_TX_PWR_INX_JAGUAR] == 0xFF)) //txPower = 0x12; - /*RTW_INFO("Final Tx Power(RF-%c, Channel: %d) = %d(0x%X)\n", ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), Channel, - txPower, txPower);*/ + RTW_INFO("Final Tx Power(RF-%c, Channel: %d) = %d(0x%X)\n", ((RFPath==0)?'A':(RFPath==1)?'B':(RFPath==2)?'C':'D'), Channel, + txPower, txPower); - return (u8) txPower; + return (u8) txPower; } @@ -1247,7 +1194,7 @@ VOID PHY_SetTxPowerIndex_8814A( IN PADAPTER Adapter, IN u32 PowerIndex, - IN u8 RFPath, + IN u8 RFPath, IN u8 Rate ) { @@ -1273,7 +1220,7 @@ PHY_UpdateTxPowerDbm8814A( } -u32 +u32 PHY_GetTxBBSwing_8814A( IN PADAPTER Adapter, IN BAND_TYPE Band, @@ -1288,92 +1235,70 @@ PHY_GetTxBBSwing_8814A( u32 out = 0x200; const s8 AUTO = -1; - RT_TRACE(COMP_MP, DBG_LOUD, ("===> PHY_GetTxBBSwing_8814A, bbSwing_2G: %d, bbSwing_5G: %d\n", + RT_TRACE(COMP_MP, DBG_LOUD, ("===> PHY_GetTxBBSwing_8814A, bbSwing_2G: %d, bbSwing_5G: %d\n", (s4Byte)bbSwing_2G, (s4Byte)bbSwing_5G)); - if ( pHalData->bautoload_fail_flag ) - { - if ( Band == BAND_ON_2_4G ) - { + if ( pHalData->bautoload_fail_flag ) { + if ( Band == BAND_ON_2_4G ) { pRFCalibrateInfo->BBSwingDiff2G = bbSwing_2G; if (bbSwing_2G == 0) out = 0x200; // 0 dB else if (bbSwing_2G == -3) out = 0x16A; // -3 dB else if (bbSwing_2G == -6) out = 0x101; // -6 dB else if (bbSwing_2G == -9) out = 0x0B6; // -9 dB - else - { - if ( pHalData->ExternalPA_2G ) - { + else { + if ( pHalData->ExternalPA_2G ) { pRFCalibrateInfo->BBSwingDiff2G = -3; out = 0x16A; - } - else - { + } else { pRFCalibrateInfo->BBSwingDiff2G = 0; out = 0x200; } } - } - else if ( Band == BAND_ON_5G ) - { + } + else if ( Band == BAND_ON_5G ) { pRFCalibrateInfo->BBSwingDiff5G = bbSwing_5G; - if(bbSwing_5G == 0) out = 0x200; // 0 dB + if (bbSwing_5G == 0) out = 0x200; // 0 dB else if (bbSwing_5G == -3) out = 0x16A; // -3 dB else if (bbSwing_5G == -6) out = 0x101; // -6 dB else if (bbSwing_5G == -9) out = 0x0B6; // -9 dB - else - { - if (pHalData->ExternalPA_5G) - { + else { + if (pHalData->ExternalPA_5G) { pRFCalibrateInfo->BBSwingDiff5G = -3; out = 0x16A; - } - else - { + } else { pRFCalibrateInfo->BBSwingDiff5G = 0; out = 0x200; } } - } - else - { + } else { pRFCalibrateInfo->BBSwingDiff2G = -3; - pRFCalibrateInfo->BBSwingDiff5G = -3; + pRFCalibrateInfo->BBSwingDiff5G = -3; out = 0x16A; // -3 dB } - } - else - { + } else { u32 swing = 0, onePathSwing = 0; - if (Band == BAND_ON_2_4G) - { - if (GetRegTxBBSwing_2G(Adapter) == AUTO) - { + if (Band == BAND_ON_2_4G) { + if (GetRegTxBBSwing_2G(Adapter) == AUTO) { EFUSE_ShadowRead(Adapter, 1, EEPROM_TX_BBSWING_2G_8814, (u32 *)&swing); - if (swing == 0xFF) - { + if (swing == 0xFF) { if(bbSwing_2G == 0) swing = 0x00; // 0 dB else if (bbSwing_2G == -3) swing = 0x55; // -3 dB else if (bbSwing_2G == -6) swing = 0xAA; // -6 dB else if (bbSwing_2G == -9) swing = 0xFF; // -9 dB - else swing = 0x00; + else swing = 0x00; } - } + } else if (bbSwing_2G == 0) swing = 0x00; // 0 dB else if (bbSwing_2G == -3) swing = 0x55; // -3 dB else if (bbSwing_2G == -6) swing = 0xAA; // -6 dB else if (bbSwing_2G == -9) swing = 0xFF; // -9 dB else swing = 0x00; - } - else - { - if (GetRegTxBBSwing_5G(Adapter) == AUTO) - { + } else { + if (GetRegTxBBSwing_5G(Adapter) == AUTO) { EFUSE_ShadowRead(Adapter, 1, EEPROM_TX_BBSWING_5G_8814, (u32 *)&swing); - if (swing == 0xFF) - { - if(bbSwing_5G == 0) swing = 0x00; // 0 dB + if (swing == 0xFF) { + if (bbSwing_5G == 0) swing = 0x00; // 0 dB else if (bbSwing_5G == -3) swing = 0x55; // -3 dB else if (bbSwing_5G == -6) swing = 0xAA; // -6 dB else if (bbSwing_5G == -9) swing = 0xFF; // -9 dB @@ -1389,40 +1314,36 @@ PHY_GetTxBBSwing_8814A( if (RFPath == ODM_RF_PATH_A) onePathSwing = (swing & 0x3) >> 0; // 0xC6/C7[1:0] - else if(RFPath == ODM_RF_PATH_B) + else if (RFPath == ODM_RF_PATH_B) onePathSwing = (swing & 0xC) >> 2; // 0xC6/C7[3:2] - else if(RFPath == ODM_RF_PATH_C) + else if (RFPath == ODM_RF_PATH_C) onePathSwing = (swing & 0x30) >> 4; // 0xC6/C7[5:4] - else if(RFPath == ODM_RF_PATH_D) + else if (RFPath == ODM_RF_PATH_D) onePathSwing = (swing & 0xC0) >> 6; // 0xC6/C7[7:6] - if (onePathSwing == 0x0) - { - if (Band == BAND_ON_2_4G) + if (onePathSwing == 0x0) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = 0; else pRFCalibrateInfo->BBSwingDiff5G = 0; out = 0x200; // 0 dB - } - else if (onePathSwing == 0x1) - { - if (Band == BAND_ON_2_4G) + } + else if (onePathSwing == 0x1) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = -3; else pRFCalibrateInfo->BBSwingDiff5G = -3; out = 0x16A; // -3 dB - } - else if (onePathSwing == 0x2) - { - if (Band == BAND_ON_2_4G) + } + else if (onePathSwing == 0x2) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = -6; else pRFCalibrateInfo->BBSwingDiff5G = -6; out = 0x101; // -6 dB - } - else if (onePathSwing == 0x3) - { - if (Band == BAND_ON_2_4G) + } + else if (onePathSwing == 0x3) { + if (Band == BAND_ON_2_4G) pRFCalibrateInfo->BBSwingDiff2G = -9; else pRFCalibrateInfo->BBSwingDiff5G = -9; @@ -1441,28 +1362,21 @@ phy_SetBwRegAdc_8814A( IN PADAPTER Adapter, IN u8 Band, IN CHANNEL_WIDTH CurrentBW -) +) { - switch(CurrentBW) - { + switch (CurrentBW) { case CHANNEL_WIDTH_20: - if(Band == BAND_ON_5G) - { + if(Band == BAND_ON_5G) { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x0); // 0x8ac[28, 21,20,16, 9:6,1,0]=10'b10_0011_0000 - } - else - { + } else { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x0); // 0x8ac[28, 21,20,16, 9:6,1,0]=10'b10_0101_0000 } break; case CHANNEL_WIDTH_40: - if(Band == BAND_ON_5G) - { + if(Band == BAND_ON_5G) { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x1); // 0x8ac[17, 11, 10, 7:6,1,0]=7'b100_0001 - } - else - { + } else { PHY_SetBBReg(Adapter, rRFMOD_Jaguar, BIT(1)|BIT(0), 0x1); // 0x8ac[17, 11, 10, 7:6,1,0]=7'b101_0001 } break; @@ -1483,20 +1397,19 @@ phy_SetBwRegAgc_8814A( IN PADAPTER Adapter, IN u8 Band, IN CHANNEL_WIDTH CurrentBW -) +) { u32 AgcValue = 7; - switch(CurrentBW) - { + switch (CurrentBW) { case CHANNEL_WIDTH_20: - if(Band == BAND_ON_5G) + if (Band == BAND_ON_5G) AgcValue = 6; else AgcValue = 6; break; case CHANNEL_WIDTH_40: - if(Band == BAND_ON_5G) + if (Band == BAND_ON_5G) AgcValue = 8; else AgcValue = 7; @@ -1511,7 +1424,7 @@ phy_SetBwRegAgc_8814A( break; } - PHY_SetBBReg(Adapter, rAGC_table_Jaguar, 0xf000, AgcValue); // 0x82C[15:12] = AgcValue + PHY_SetBBReg(Adapter, rAGC_table_Jaguar, 0xf000, AgcValue); // 0x82C[15:12] = AgcValue } @@ -1520,31 +1433,27 @@ phy_SwBand8814A( IN PADAPTER pAdapter, IN u8 channelToSW) { - u8 u1Btmp; + u8 u1Btmp; BOOLEAN ret_value = _TRUE; u8 Band = BAND_ON_5G, BandToSW; u1Btmp = rtw_read8(pAdapter, REG_CCK_CHECK_8814A); - if(u1Btmp & BIT7) + if (u1Btmp & BIT7) Band = BAND_ON_5G; else Band = BAND_ON_2_4G; // Use current channel to judge Band Type and switch Band if need. - if(channelToSW > 14) - { + if (channelToSW > 14) { BandToSW = BAND_ON_5G; - } - else - { + } else { BandToSW = BAND_ON_2_4G; } - if(BandToSW != Band) - { + if(BandToSW != Band) { PHY_SwitchWirelessBand8814A(pAdapter,BandToSW); } - + return ret_value; } @@ -1559,9 +1468,8 @@ PHY_SetRFEReg8814A( u8 u1tmp = 0; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(bInit) - { - switch(pHalData->RFEType){ + if (bInit) { + switch (pHalData->RFEType) { case 2:case 1: PHY_SetBBReg(Adapter, 0x1994, 0xf, 0xf); // 0x1994[3:0] = 0xf u1tmp = PlatformEFIORead1Byte(Adapter, REG_GPIO_IO_SEL_8814A); @@ -1574,9 +1482,8 @@ PHY_SetRFEReg8814A( break; } } - else if(Band == BAND_ON_2_4G) - { - switch(pHalData->RFEType){ + else if (Band == BAND_ON_2_4G) { + switch (pHalData->RFEType){ case 2: PHY_SetBBReg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x72707270); // 0xCB0 = 0x72707270 PHY_SetBBReg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x72707270); // 0xEB0 = 0x72707270 @@ -1600,11 +1507,9 @@ PHY_SetRFEReg8814A( PHY_SetBBReg(Adapter, rC_RFE_Pinmux_Jaguar, bMaskDWord, 0x77777777); // 0x18B4 = 0x77777777 PHY_SetBBReg(Adapter, 0x1ABC, 0x0ff00000, 0x77); // 0x1ABC[27:20] = 0x77 break; - + } - } - else - { + } else { switch(pHalData->RFEType){ case 2: PHY_SetBBReg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173717); // 0xCB0 = 0x33173717 @@ -1613,7 +1518,7 @@ PHY_SetRFEReg8814A( PHY_SetBBReg(Adapter, rD_RFE_Pinmux_Jaguar, bMaskDWord, 0x77177717); // 0x1AB4 = 0x77177717 PHY_SetBBReg(Adapter, 0x1ABC, 0x0ff00000, 0x37); // 0x1ABC[27:20] = 0x37 break; - + case 1: PHY_SetBBReg(Adapter, rA_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173317); // 0xCB0 = 0x33173317 PHY_SetBBReg(Adapter, rB_RFE_Pinmux_Jaguar, bMaskDWord, 0x33173317); // 0xEB0 = 0x33173317 @@ -1634,7 +1539,7 @@ PHY_SetRFEReg8814A( } } -VOID +VOID phy_SetBBSwingByBand_8814A( IN PADAPTER Adapter, IN u8 Band, @@ -1643,29 +1548,28 @@ phy_SetBBSwingByBand_8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - s8 BBDiffBetweenBand = 0; + s8 BBDiffBetweenBand = 0; PDM_ODM_T pDM_Odm = &pHalData->odmpriv; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); - - PHY_SetBBReg(Adapter, rA_TxScale_Jaguar, 0xFFE00000, + + PHY_SetBBReg(Adapter, rA_TxScale_Jaguar, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_A)); // 0xC1C[31:21] - PHY_SetBBReg(Adapter, rB_TxScale_Jaguar, 0xFFE00000, + PHY_SetBBReg(Adapter, rB_TxScale_Jaguar, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_B)); // 0xE1C[31:21] - PHY_SetBBReg(Adapter, rC_TxScale_Jaguar2, 0xFFE00000, + PHY_SetBBReg(Adapter, rC_TxScale_Jaguar2, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_C)); // 0x181C[31:21] - PHY_SetBBReg(Adapter, rD_TxScale_Jaguar2, 0xFFE00000, + PHY_SetBBReg(Adapter, rD_TxScale_Jaguar2, 0xFFE00000, PHY_GetTxBBSwing_8814A(Adapter, (BAND_TYPE)Band, ODM_RF_PATH_D)); // 0x1A1C[31:21] - + // <20121005, Kordan> When TxPowerTrack is ON, we should take care of the change of BB swing. // That is, reset all info to trigger Tx power tracking. - - if (Band != PreviousBand) - { + + if (Band != PreviousBand) { BBDiffBetweenBand = (pRFCalibrateInfo->BBSwingDiff2G - pRFCalibrateInfo->BBSwingDiff5G); BBDiffBetweenBand = (Band == BAND_ON_2_4G) ? BBDiffBetweenBand : (-1 * BBDiffBetweenBand); - pRFCalibrateInfo->DefaultOfdmIndex += BBDiffBetweenBand*2; + pRFCalibrateInfo->DefaultOfdmIndex += BBDiffBetweenBand*2; } - + ODM_ClearTxPowerTrackingState(pDM_Odm); } @@ -1678,7 +1582,7 @@ PHY_SwitchWirelessBand8814A( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 PreBand = pHalData->CurrentBandType, tepReg = 0; - + RTW_INFO("==>PHY_SwitchWirelessBand8814() %s\n", ((Band==0)?"2.4G":"5G")); pHalData->CurrentBandType =(BAND_TYPE)Band; @@ -1686,14 +1590,13 @@ PHY_SwitchWirelessBand8814A( /*clear 0x1000[16], When this bit is set to 0, CCK and OFDM are disabled, and clock are gated. Otherwise, CCK and OFDM are enabled. */ tepReg = rtw_read8(Adapter, REG_SYS_CFG3_8814A+2); rtw_write8(Adapter, REG_SYS_CFG3_8814A+2, tepReg & (~BIT0)); - + // STOP Tx/Rx - //PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x00); + //PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x00); - if(Band == BAND_ON_2_4G) - {// 2.4G band + if (Band == BAND_ON_2_4G) { // 2.4G band - // AGC table select + // AGC table select PHY_SetBBReg(Adapter, rAGC_table_Jaguar2, 0x1F, 0); // 0x958[4:0] = 5b'00000 PHY_SetRFEReg8814A(Adapter, FALSE, Band); @@ -1701,8 +1604,7 @@ PHY_SwitchWirelessBand8814A( // cck_enable //PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x3); - if(Adapter->registrypriv.mp_mode == 0) - { + if (Adapter->registrypriv.mp_mode == 0) { // 0x80C & 0xa04 should use same antenna. PHY_SetBBReg(Adapter, rTxPath_Jaguar, 0xf0, 0x2); PHY_SetBBReg(Adapter, rCCK_RX_Jaguar, 0x0f000000, 0x5); @@ -1710,28 +1612,24 @@ PHY_SwitchWirelessBand8814A( PHY_SetBBReg(Adapter, rOFDMCCKEN_Jaguar, bOFDMEN_Jaguar|bCCKEN_Jaguar, 0x3); - // CCK_CHECK_en rtw_write8(Adapter, REG_CCK_CHECK_8814A, 0x0); /* after 5G swicth 2G , set A82[2] = 0 */ PHY_SetBBReg(Adapter, 0xa80, BIT18, 0x0); - - } - else //5G band - { + + } else { //5G band // CCK_CHECK_en rtw_write8(Adapter, REG_CCK_CHECK_8814A, 0x80); /* Enable CCK Tx function, even when CCK is off */ PHY_SetBBReg(Adapter, 0xa80, BIT18, 0x1); - - // AGC table select + + // AGC table select // Postpone to channel switch //PHY_SetBBReg(Adapter, rAGC_table_Jaguar2, 0x1F, 1); // 0x958[4:0] = 5b'00001 PHY_SetRFEReg8814A(Adapter, FALSE, Band); - if(Adapter->registrypriv.mp_mode == 0) - { + if (Adapter->registrypriv.mp_mode == 0) { PHY_SetBBReg(Adapter, rTxPath_Jaguar, 0xf0, 0x0); PHY_SetBBReg(Adapter, rCCK_RX_Jaguar, 0x0f000000, 0xF); } @@ -1746,13 +1644,13 @@ PHY_SwitchWirelessBand8814A( /* set 0x1000[16], When this bit is set to 0, CCK and OFDM are disabled, and clock are gated. Otherwise, CCK and OFDM are enabled.*/ tepReg = rtw_read8(Adapter, REG_SYS_CFG3_8814A+2); rtw_write8(Adapter, REG_SYS_CFG3_8814A+2, tepReg | BIT0); - + RTW_INFO("<==PHY_SwitchWirelessBand8814():Switch Band OK.\n"); - return _SUCCESS; + return _SUCCESS; } -u8 +u8 phy_GetSecondaryChnl_8814A( IN PADAPTER Adapter ) @@ -1761,40 +1659,37 @@ phy_GetSecondaryChnl_8814A( PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); //RTW_INFO("SCMapping: Case: pHalData->CurrentChannelBW %d, pHalData->nCur80MhzPrimeSC %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur80MhzPrimeSC,pHalData->nCur40MhzPrimeSC); - if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) - { - if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOf40 = VHT_DATA_SC_40_LOWER_OF_80MHZ; - else if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOf40 = VHT_DATA_SC_40_UPPER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); - - if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + + if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOf20 = VHT_DATA_SC_20_LOWEST_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOf20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOf20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOf20 = VHT_DATA_SC_20_UPPERST_OF_80MHZ; - else - { - if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + else { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOf20 = VHT_DATA_SC_40_LOWER_OF_80MHZ; - else if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOf20 = VHT_DATA_SC_40_UPPER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); - } + } } - else if(pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) - { + else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { RTW_INFO("SCMapping: pHalData->CurrentChannelBW %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur40MhzPrimeSC); - if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOf20 = VHT_DATA_SC_20_UPPER_OF_80MHZ; - else if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + else if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOf20 = VHT_DATA_SC_20_LOWER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); @@ -1809,13 +1704,12 @@ VOID phy_SetBwRegMac_8814A( IN PADAPTER Adapter, CHANNEL_WIDTH CurrentBW -) +) { u16 RegRfMod_BW, u2tmp = 0; RegRfMod_BW = PlatformEFIORead2Byte(Adapter, REG_TRXPTCL_CTL_8814A); - switch(CurrentBW) - { + switch (CurrentBW) { case CHANNEL_WIDTH_20: PlatformEFIOWrite2Byte(Adapter, REG_TRXPTCL_CTL_8814A, (RegRfMod_BW & 0xFE7F)); // BIT 7 = 0, BIT 8 = 0 break; @@ -1874,7 +1768,7 @@ void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter,u4Byte ulAntennaRx) case ANTENNA_AB: case ANTENNA_AC: - case ANTENNA_AD: + case ANTENNA_AD: case ANTENNA_BC: case ANTENNA_BD: case ANTENNA_CD: @@ -1908,7 +1802,7 @@ void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter,u4Byte ulAntennaRx) RTW_INFO("Unknown Rx antenna.\n"); break; } - } else if(pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { + } else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { if (pHalData->bSWToBW40M == FALSE) { pHalData->BackUp_BB_REG_4_2nd_CCA[0] = PHY_QueryBBReg(pAdapter, rPwed_TH_Jaguar, 0x007c0000); pHalData->BackUp_BB_REG_4_2nd_CCA[1] = PHY_QueryBBReg(pAdapter, rCCAonSec_Jaguar, 0x0000ff00); @@ -1956,11 +1850,11 @@ void PHY_Set_SecCCATH_by_RXANT_8814A(PADAPTER pAdapter,u4Byte ulAntennaRx) PHY_SetBBReg(pAdapter, rCCAonSec_Jaguar, 0x0FFF0000, 0x7aa); /* 838[27:24]=6, RF80_secondary40, 838[23:20]=6, RF80_secondary20, 838[19:16]=6, RF80_primary*/ PHY_SetBBReg(pAdapter, rL1_Weight_Jaguar, 0x0000F000, 0x7); /* 840[15:12]=7, L1_square_Pk_weight_80M*/ } - + } -VOID PHY_SetRXSC_by_TXSC_8814A(PADAPTER Adapter, u1Byte SubChnlNum) +VOID PHY_SetRXSC_by_TXSC_8814A(PADAPTER Adapter, u1Byte SubChnlNum) { PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); @@ -1979,7 +1873,7 @@ VOID PHY_SetRXSC_by_TXSC_8814A(PADAPTER Adapter, u1Byte SubChnlNum) PHY_SetBBReg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); else if (SubChnlNum == 10) PHY_SetBBReg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x2); - } else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { + } else if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_40) { if (SubChnlNum == 1) PHY_SetBBReg(Adapter, rRFMOD_Jaguar, 0x00000003c, 0x1); else if (SubChnlNum == 2) @@ -1999,7 +1893,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) /*RTW_INFO("%s(),RFE Type =%d, CurrentCh = %d ,ChannelBW =%d\n", __func__, pHalData->RFEType, pHalData->CurrentChannel, pHalData->CurrentChannelBW);*/ /*RTW_INFO("%s(),Before RrNBI_Setting_Jaguar= %x\n", __func__, PHY_QueryBBReg(Adapter, rNBI_Setting_Jaguar, bMaskDWord));*/ - + if (pHalData->RFEType == 0) { switch (pHalData->CurrentChannelBW) { case CHANNEL_WIDTH_40: @@ -2052,7 +1946,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) Reset_NBI_CSI = FALSE; } break; - + default: break; } @@ -2096,7 +1990,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) break; } } - + if (Reset_NBI_CSI) { PHY_SetBBReg(Adapter, rNBI_Setting_Jaguar, 0x000fe000, 0xfc >> 1); PHY_SetBBReg(Adapter, rCSI_Mask_Setting1_Jaguar, BIT(0), 0); @@ -2105,7 +1999,7 @@ VOID phy_SpurCalibration_8814A(PADAPTER Adapter) PHY_SetBBReg(Adapter, rCSI_Fix_Mask6_Jaguar, bMaskDWord, 0); PHY_SetBBReg(Adapter, rCSI_Fix_Mask7_Jaguar, bMaskDWord, 0); } - + phydm_spur_nbi_setting_8814a(pDM_Odm); /*RTW_INFO("%s(),After RrNBI_Setting_Jaguar= %x\n", __func__, PHY_QueryBBReg(Adapter, rNBI_Setting_Jaguar, bMaskDWord));*/ } @@ -2177,7 +2071,7 @@ VOID phy_SetBwMode8814A(PADAPTER Adapter) SubChnlNum = phy_GetSecondaryChnl_8814A(Adapter); rtw_write8(Adapter, REG_DATA_SC_8814A, SubChnlNum); - if(pHalData->rf_chip == RF_PSEUDO_11N) + if (pHalData->rf_chip == RF_PSEUDO_11N) { RTW_INFO("phy_SetBwMode8814A: return for PSEUDO \n"); return; @@ -2189,8 +2083,7 @@ VOID phy_SetBwMode8814A(PADAPTER Adapter) phy_SetBwRegAgc_8814A(Adapter, pHalData->CurrentBandType, pHalData->CurrentChannelBW); //3 Set Reg848 RegA00 - switch(pHalData->CurrentChannelBW) - { + switch (pHalData->CurrentChannelBW) { case CHANNEL_WIDTH_20: break; @@ -2211,14 +2104,14 @@ VOID phy_SetBwMode8814A(PADAPTER Adapter) RTW_INFO("%s():unknown Bandwidth:%#X\n", __func__, pHalData->CurrentChannelBW); break; } - + #if (MP_DRIVER == 1) if (Adapter->registrypriv.mp_mode == 1) { /* 2 Set Reg 0x8AC */ PHY_SetRXSC_by_TXSC_8814A(Adapter, (SubChnlNum & 0xf)); PHY_Set_SecCCATH_by_RXANT_8814A(Adapter, pHalData->AntennaRxPath); } -#endif +#endif /* 3 Set RF related register */ PHY_RF6052SetBandwidth8814A(Adapter, pHalData->CurrentChannelBW); @@ -2227,7 +2120,6 @@ if (Adapter->registrypriv.mp_mode == 1) { } - //1 6. Channel setting API // Add for KFree Feature Requested by RF David. @@ -2240,24 +2132,20 @@ phy_SetKfreeToRF_8814A( IN u8 Data ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(GetDefaultAdapter(Adapter)); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(GetDefaultAdapter(Adapter)); PDM_ODM_T pDM_Odm = &pHalData->odmpriv; BOOLEAN bOdd; PODM_RF_CAL_T pRFCalibrateInfo = &(pDM_Odm->RFCalibrateInfo); - if((Data%2) != 0) //odd -> positive - { + if ((Data%2) != 0) { //odd -> positive Data = Data - 1; PHY_SetRFReg(Adapter, eRFPath, rRF_TxGainOffset, BIT19, 1); bOdd = TRUE; - } - else // even -> negative - { + } else { // even -> negative PHY_SetRFReg(Adapter, eRFPath, rRF_TxGainOffset, BIT19, 0); bOdd = FALSE; } RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): RF_0x55[19]= %d\n", bOdd)); - switch(Data) - { + switch (Data) { case 2: PHY_SetRFReg(Adapter, eRFPath, rRF_TxGainOffset, BIT14, 1); pRFCalibrateInfo->KfreeOffset[eRFPath] = 0; @@ -2307,14 +2195,13 @@ phy_SetKfreeToRF_8814A( break; } - if(bOdd == FALSE) // that means Kfree offset is negative, we need to record it. - { + if (bOdd == FALSE) { // that means Kfree offset is negative, we need to record it. pRFCalibrateInfo->KfreeOffset[eRFPath] = (-1)*pRFCalibrateInfo->KfreeOffset[eRFPath]; RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); } else RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): KfreeOffset = %d\n", pRFCalibrateInfo->KfreeOffset[eRFPath])); - + } @@ -2330,60 +2217,50 @@ phy_ConfigKFree8814A( u8 targetval_C = 0xFF; u8 targetval_D = 0xFF; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + //RTW_INFO("===>phy_ConfigKFree8814A()\n"); - - if (Adapter->registrypriv.RegPwrTrimEnable == 2) - { + + if (Adapter->registrypriv.RegPwrTrimEnable == 2) { //RTW_INFO("phy_ConfigKFree8814A(): RegPwrTrimEnable == 2, Disable \n"); return; } - else if (Adapter->registrypriv.RegPwrTrimEnable == 1 || Adapter->registrypriv.RegPwrTrimEnable == 0) - { + else if (Adapter->registrypriv.RegPwrTrimEnable == 1 || Adapter->registrypriv.RegPwrTrimEnable == 0) { RTW_INFO("phy_ConfigKFree8814A(): RegPwrTrimEnable == TRUE \n"); - if (bandType == BAND_ON_2_4G) // 2G - { + if (bandType == BAND_ON_2_4G) { // 2G RTW_INFO("phy_ConfigKFree8814A(): bandType == BAND_ON_2_4G, channelToSW= %d \n", channelToSW); - if (channelToSW <= 14 && channelToSW >= 1) - { + if (channelToSW <= 14 && channelToSW >= 1) { efuse_OneByteRead(Adapter, 0x3F4, &targetval_A, FALSE); // for Path A and B efuse_OneByteRead(Adapter, 0x3F5, &targetval_B, FALSE); // for Path C and D } - + } - else if (bandType == BAND_ON_5G) - { + else if (bandType == BAND_ON_5G) { RTW_INFO("phy_ConfigKFree8814A(): bandType == BAND_ON_5G, channelToSW= %d \n", channelToSW); - if (channelToSW >= 36 && channelToSW < 50) // 5GLB_1 - { + if (channelToSW >= 36 && channelToSW < 50) { // 5GLB_1 efuse_OneByteRead(Adapter, 0x3E0, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3E1, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3E2, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3E3, &targetval_D, FALSE); } - else if (channelToSW >= 50 && channelToSW <= 64) // 5GLB_2 - { + else if (channelToSW >= 50 && channelToSW <= 64) { // 5GLB_2 efuse_OneByteRead(Adapter, 0x3E4, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3E5, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3E6, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3E7, &targetval_D, FALSE); } - else if (channelToSW >= 100 && channelToSW <= 118) // 5GMB_1 - { + else if (channelToSW >= 100 && channelToSW <= 118) { // 5GMB_1 efuse_OneByteRead(Adapter, 0x3E8, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3E9, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3EA, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3EB, &targetval_D, FALSE); } - else if (channelToSW >= 120 && channelToSW <= 140) // 5GMB_2 - { + else if (channelToSW >= 120 && channelToSW <= 140) { // 5GMB_2 efuse_OneByteRead(Adapter, 0x3EC, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3ED, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3EE, &targetval_C, FALSE); efuse_OneByteRead(Adapter, 0x3EF, &targetval_D, FALSE); } - else if (channelToSW >= 149 && channelToSW <= 165) // 5GHB - { + else if (channelToSW >= 149 && channelToSW <= 165) { // 5GHB efuse_OneByteRead(Adapter, 0x3F0, &targetval_A, FALSE); efuse_OneByteRead(Adapter, 0x3F1, &targetval_B, FALSE); efuse_OneByteRead(Adapter, 0x3F2, &targetval_C, FALSE); @@ -2394,12 +2271,10 @@ phy_ConfigKFree8814A( RTW_INFO("phy_ConfigKFree8814A(): targetval_B= %#x \n", targetval_B); RTW_INFO("phy_ConfigKFree8814A(): targetval_C= %#x \n", targetval_C); RTW_INFO("phy_ConfigKFree8814A(): targetval_D= %#x \n", targetval_D); - + // Make sure the targetval is defined - if ((Adapter->registrypriv.RegPwrTrimEnable == 1) && ((targetval_A != 0xFF) || (pHalData->RfKFreeEnable == TRUE))) - { - if (bandType == BAND_ON_2_4G) // 2G - { + if ((Adapter->registrypriv.RegPwrTrimEnable == 1) && ((targetval_A != 0xFF) || (pHalData->RfKFreeEnable == TRUE))) { + if (bandType == BAND_ON_2_4G) { // 2G RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_A: %#x \n", targetval_A&0x0F)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_A, targetval_A&0x0F); RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_B: %#x \n", (targetval_A&0xF0)>>4)); @@ -2409,8 +2284,7 @@ phy_ConfigKFree8814A( RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_D: %#x \n", (targetval_B&0xF0)>>4)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_D, (targetval_B&0xF0)>>4); } - else if(bandType == BAND_ON_5G) - { + else if(bandType == BAND_ON_5G) { RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_A: %#x \n", targetval_A&0x1F)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_A, targetval_A&0x1F); RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_B: %#x \n", targetval_B&0x1F)); @@ -2420,9 +2294,7 @@ phy_ConfigKFree8814A( RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): PATH_D: %#x \n", targetval_D&0x1F)); phy_SetKfreeToRF_8814A(Adapter, ODM_RF_PATH_D, targetval_D&0x1F); } - } - else - { + } else { RT_TRACE(COMP_MP, DBG_LOUD, ("phy_ConfigKFree8814A(): targetval not defined, Don't execute KFree Process.\n")); return; } @@ -2431,7 +2303,7 @@ phy_ConfigKFree8814A( } VOID -phy_SwChnl8814A( +phy_SwChnl8814A( IN PADAPTER pAdapter ) { @@ -2442,20 +2314,18 @@ phy_SwChnl8814A( #endif u8 channelToSW = pHalData->CurrentChannel; u32 RFValToWR , RFTmpVal, BitShift, BitMask; - + //RTW_INFO("[BW:CHNL], phy_SwChnl8814A(), switch to channel %d !!\n", channelToSW); - if (phy_SwBand8814A(pAdapter, channelToSW) == FALSE) - { + if (phy_SwBand8814A(pAdapter, channelToSW) == FALSE) { RTW_INFO("error Chnl %d", channelToSW); } - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + if(pHalData->rf_chip == RF_PSEUDO_11N) { RT_TRACE(COMP_MLME, DBG_LOUD, ("phy_SwChnl8814A: return for PSEUDO\n")); return; } - + #ifdef CONFIG_RF_GAIN_OFFSET /* Add for KFree Feature Requested by RF David. */ if (kfree_data->flag & KFREE_FLAG_ON) { @@ -2474,34 +2344,30 @@ phy_SwChnl8814A( } #endif - if(pHalData->RegFWOffload == 2) - { + if (pHalData->RegFWOffload == 2) { FillH2CCmd_8814(pAdapter, H2C_CHNL_SWITCH_OFFLOAD, 1, &channelToSW); - } - else - { - // fc_area - if (36 <= channelToSW && channelToSW <= 48) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x494); - else if (50 <= channelToSW && channelToSW <= 64) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x453); - else if (100 <= channelToSW && channelToSW <= 116) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x452); - else if (118 <= channelToSW) - PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x412); + } else { + // fc_area + if (36 <= channelToSW && channelToSW <= 48) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x494); + else if (50 <= channelToSW && channelToSW <= 64) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x453); + else if (100 <= channelToSW && channelToSW <= 116) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x452); + else if (118 <= channelToSW) + PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x412); else PHY_SetBBReg(pAdapter, rFc_area_Jaguar, 0x1ffe0000, 0x96a); - for(eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) - { + for (eRFPath = 0; eRFPath < pHalData->NumTotalRFPath; eRFPath++) { // RF_MOD_AG if (36 <= channelToSW && channelToSW <= 64) RFValToWR = 0x101; //5'b00101 - else if (100 <= channelToSW && channelToSW <= 140) + else if (100 <= channelToSW && channelToSW <= 140) RFValToWR = 0x301; //5'b01101 - else if (140 < channelToSW) + else if (140 < channelToSW) RFValToWR = 0x501; //5'b10101 - else + else RFValToWR = 0x000; //5'b00000 // Channel to switch @@ -2528,7 +2394,7 @@ phy_SwChnl8814A( phy_SpurCalibration_8814A(pAdapter); phy_ModifyInitialGain_8814A(pAdapter); } - + /* 2.4G CCK TX DFIR */ if (channelToSW >= 1 && channelToSW <= 11) { PHY_SetBBReg(pAdapter, rCCK0_TxFilter1, bMaskDWord, 0x1a1b0030); @@ -2554,29 +2420,28 @@ PHY_SwChnlTimerCallback8814A( { PADAPTER pAdapter = (PADAPTER)pTimer->Adapter; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - + RT_TRACE(COMP_SCAN, DBG_LOUD, ("==>PHY_SwChnlTimerCallback8814A(), switch to channel %d\n", pHalData->CurrentChannel)); - + if (rtw_is_drv_stopped(padapter)) return; - - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + + if(pHalData->rf_chip == RF_PSEUDO_11N) { pHalData->SwChnlInProgress=FALSE; - return; //return immediately if it is peudo-phy + return; //return immediately if it is peudo-phy } PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=TRUE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + phy_SwChnl8814A(pAdapter); PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=FALSE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + RT_TRACE(COMP_SCAN, DBG_LOUD, ("<==PHY_SwChnlTimerCallback8814()\n")); } @@ -2590,33 +2455,31 @@ PHY_SwChnlWorkItemCallback8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); RT_TRACE(COMP_SCAN, DBG_LOUD, ("==>PHY_SwChnlWorkItemCallback8814A(), switch to channel %d\n", pHalData->CurrentChannel)); - if(pAdapter->bInSetPower && RT_USB_CANNOT_IO(pAdapter)) - { + if(pAdapter->bInSetPower && RT_USB_CANNOT_IO(pAdapter)) { RT_TRACE(COMP_SCAN, DBG_LOUD, ("<== PHY_SwChnlWorkItemCallback8814A() SwChnlInProgress FALSE driver sleep or unload\n")); - - pHalData->SwChnlInProgress = FALSE; + + pHalData->SwChnlInProgress = FALSE; return; } - + if (rtw_is_drv_stopped(padapter)) return; - - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + + if(pHalData->rf_chip == RF_PSEUDO_11N) { pHalData->SwChnlInProgress=FALSE; - return; //return immediately if it is peudo-phy + return; //return immediately if it is peudo-phy } PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=TRUE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + phy_SwChnl8814A(pAdapter); - PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); + PlatformAcquireSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); pHalData->SwChnlInProgress=FALSE; PlatformReleaseSpinLock(pAdapter, RT_CHANNEL_AND_BANDWIDTH_SPINLOCK); - + RT_TRACE(COMP_P2P, DBG_LOUD, ("PHY_SwChnlWorkItemCallback8814A(), switch to channel %d\n", pHalData->CurrentChannel)); RT_TRACE(COMP_SCAN, DBG_LOUD, ("<==PHY_SwChnlWorkItemCallback8814A()\n")); } @@ -2635,7 +2498,7 @@ HAL_HandleSwChnl8814A( // Call after initialization phy_SwChnl8814A(Adapter); -#if (MP_DRIVER == 1) +#if (MP_DRIVER == 1) // <20120712, Kordan> IQK on each channel, asked by James. PHY_IQCalibrate_8814A(pAdapter, FALSE); #endif @@ -2653,32 +2516,29 @@ phy_SwChnlAndSetBwMode8814A( PDM_ODM_T pDM_Odm = &pHalData->odmpriv; //RTW_INFO("phy_SwChnlAndSetBwMode8814A(): bSwChnl %d, bSetChnlBW %d \n", pHalData->bSwChnl, pHalData->bSetChnlBW); - if ( Adapter->bNotifyChannelChange ) - { - RTW_INFO( "[%s] bSwChnl=%d, ch=%d, bSetChnlBW=%d, bw=%d\n", - __FUNCTION__, + if ( Adapter->bNotifyChannelChange ) { + RTW_INFO( "[%s] bSwChnl=%d, ch=%d, bSetChnlBW=%d, bw=%d\n", + __FUNCTION__, pHalData->bSwChnl, pHalData->CurrentChannel, pHalData->bSetChnlBW, pHalData->CurrentChannelBW); } - + if (RTW_CANNOT_RUN(Adapter)) { pHalData->bSwChnlAndSetBWInProgress= FALSE; return; } - if (pHalData->bSwChnl) - { + if (pHalData->bSwChnl) { phy_SwChnl8814A(Adapter); pHalData->bSwChnl = FALSE; - } + } - if (pHalData->bSetChnlBW) - { + if (pHalData->bSetChnlBW) { phy_SetBwMode8814A(Adapter); pHalData->bSetChnlBW = FALSE; - } + } if (Adapter->registrypriv.mp_mode == 0) { ODM_ClearTxPowerTrackingState(pDM_Odm); @@ -2690,19 +2550,19 @@ phy_SwChnlAndSetBwMode8814A( } else PHY_IQCalibrate_8814A(pDM_Odm, _FALSE); #if 0 //todo -#if (AUTO_CHNL_SEL_NHM == 1) - if(IS_AUTO_CHNL_SUPPORT(Adapter) && +#if (AUTO_CHNL_SEL_NHM == 1) + if(IS_AUTO_CHNL_SUPPORT(Adapter) && P2PIsSocialChannel(pHalData->CurrentChannel)) - { + { RT_TRACE(COMP_SCAN, DBG_TRACE, ("[ACS] phy_SwChnlAndSetBwMode8723B(): CurrentChannel %d Reset NHM counter!!\n", pHalData->CurrentChannel)); - RT_TRACE(COMP_SCAN, DBG_TRACE, ("[ACS] phy_SwChnlAndSetBwMode8723B(): AutoChnlSelPeriod(%d)\n", + RT_TRACE(COMP_SCAN, DBG_TRACE, ("[ACS] phy_SwChnlAndSetBwMode8723B(): AutoChnlSelPeriod(%d)\n", GetDefaultAdapter(Adapter)->MgntInfo.AutoChnlSel.AutoChnlSelPeriod)); - // Reset NHM counter + // Reset NHM counter odm_AutoChannelSelectReset(GET_PDM_ODM(Adapter)); - + SET_AUTO_CHNL_STATE(Adapter, ACS_BEFORE_NHM);// Before NHM measurement - } + } #endif #endif //0 pHalData->bSwChnlAndSetBWInProgress= FALSE; @@ -2727,7 +2587,7 @@ PHY_SwChnlAndSetBWModeCallback8814A( // The following procedure is operted according to SwChanlCallback8190Pci(). // However, this procedure is performed synchronously which should be running under // passive level. -// +// VOID PHY_SwChnlSynchronously8814A( // Only called during initialize IN PADAPTER Adapter, @@ -2745,16 +2605,14 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize // Channel Switching is in progress. if(pHalData->bSwChnlAndSetBWInProgress) return; - + //return immediately if it is peudo-phy - if(pHalData->rf_chip == RF_PSEUDO_11N) - { + if(pHalData->rf_chip == RF_PSEUDO_11N) { pHalData->bSwChnlAndSetBWInProgress=FALSE; return; } - switch(pHalData->CurrentWirelessMode) - { + switch(pHalData->CurrentWirelessMode) { case WIRELESS_MODE_A: case WIRELESS_MODE_N_5G: case WIRELESS_MODE_AC_5G: @@ -2762,9 +2620,9 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize //FIX ME!!! if(channel <=14) return; - RT_ASSERT((channel>14), ("WIRELESS_MODE_A but channel<=14")); + RT_ASSERT((channel>14), ("WIRELESS_MODE_A but channel<=14")); break; - + case WIRELESS_MODE_B: case WIRELESS_MODE_G: case WIRELESS_MODE_N_24G: @@ -2779,8 +2637,8 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize default: RT_ASSERT(FALSE, ("Invalid WirelessMode(%#x)!!\n", pHalData->CurrentWirelessMode)); break; - - } + + } pHalData->bSwChnlAndSetBWInProgress = TRUE; if( channel == 0) @@ -2793,7 +2651,7 @@ PHY_SwChnlSynchronously8814A( // Only called during initialize phy_SwChnlAndSetBwMode8814A(Adapter); RT_TRACE(COMP_SCAN | COMP_RM, DBG_LOUD, ("<==PHY_SwChnlSynchronously(), switch from channel %d to channel %d.\n", pHalData->CurrentChannel, channel)); - + } */ @@ -2819,17 +2677,14 @@ PHY_HandleSwChnlAndSetBW8814A( struct mlme_ext_priv *pmlmeext = &Adapter->mlmeextpriv; //check is swchnl or setbw - if(!bSwitchChannel && !bSetBandWidth) - { + if (!bSwitchChannel && !bSetBandWidth) { RTW_INFO("PHY_HandleSwChnlAndSetBW8812: not switch channel and not set bandwidth \n"); return; } //skip change for channel or bandwidth is the same - if(bSwitchChannel) - { - if(pHalData->CurrentChannel != ChannelNum) - { + if (bSwitchChannel) { + if(pHalData->CurrentChannel != ChannelNum) { if (HAL_IsLegalChannel(Adapter, ChannelNum)) pHalData->bSwChnl = _TRUE; else @@ -2837,15 +2692,13 @@ PHY_HandleSwChnlAndSetBW8814A( } } - if(bSetBandWidth) - { - if(pHalData->bChnlBWInitialized == _FALSE) - { + if (bSetBandWidth) { + if (pHalData->bChnlBWInitialized == _FALSE) { pHalData->bChnlBWInitialized = _TRUE; pHalData->bSetChnlBW = _TRUE; } - else if((pHalData->CurrentChannelBW != ChnlWidth) || - (pHalData->nCur40MhzPrimeSC != ChnlOffsetOf40MHz) || + else if ((pHalData->CurrentChannelBW != ChnlWidth) || + (pHalData->nCur40MhzPrimeSC != ChnlOffsetOf40MHz) || (pHalData->nCur80MhzPrimeSC != ChnlOffsetOf80MHz) || (pHalData->CurrentCenterFrequencyIndex1!= CenterFrequencyIndex1)) { @@ -2853,34 +2706,29 @@ PHY_HandleSwChnlAndSetBW8814A( } } - if(!pHalData->bSetChnlBW && !pHalData->bSwChnl) - { + if (!pHalData->bSetChnlBW && !pHalData->bSwChnl) { //RTW_INFO("<= PHY_HandleSwChnlAndSetBW8812: bSwChnl %d, bSetChnlBW %d \n",pHalData->bSwChnl,pHalData->bSetChnlBW); return; } - - if(pHalData->bSwChnl) - { + if (pHalData->bSwChnl) { pHalData->CurrentChannel=ChannelNum; pHalData->CurrentCenterFrequencyIndex1 = ChannelNum; } - - if(pHalData->bSetChnlBW) - { + if (pHalData->bSetChnlBW) { pHalData->CurrentChannelBW = ChnlWidth; #if 0 - if(ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_LOWER) + if (ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_LOWER) pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; - else if(ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_UPPER) + else if (ExtChnlOffsetOf40MHz==EXTCHNL_OFFSET_UPPER) pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; else pHalData->nCur40MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; - if(ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_LOWER) + if (ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_LOWER) pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_UPPER; - else if(ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_UPPER) + else if (ExtChnlOffsetOf80MHz==EXTCHNL_OFFSET_UPPER) pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_LOWER; else pHalData->nCur80MhzPrimeSC = HAL_PRIME_CHNL_OFFSET_DONT_CARE; @@ -2889,20 +2737,18 @@ PHY_HandleSwChnlAndSetBW8814A( pHalData->nCur80MhzPrimeSC = ChnlOffsetOf80MHz; #endif - pHalData->CurrentCenterFrequencyIndex1 = CenterFrequencyIndex1; + pHalData->CurrentCenterFrequencyIndex1 = CenterFrequencyIndex1; } //Switch workitem or set timer to do switch channel or setbandwidth operation if (!RTW_CANNOT_RUN(Adapter)) phy_SwChnlAndSetBwMode8814A(Adapter); else { - if(pHalData->bSwChnl) - { + if (pHalData->bSwChnl) { pHalData->CurrentChannel = tmpChannel; pHalData->CurrentCenterFrequencyIndex1 = tmpChannel; - } - if(pHalData->bSetChnlBW) - { + } + if (pHalData->bSetChnlBW) { pHalData->CurrentChannelBW = tmpBW; pHalData->nCur40MhzPrimeSC = tmpnCur40MhzPrimeSC; pHalData->nCur80MhzPrimeSC = tmpnCur80MhzPrimeSC; @@ -2923,7 +2769,7 @@ PHY_HandleSwChnlAndSetBW8814A( // // Description: // Configure H/W functionality to enable/disable Monitor mode. -// Note, because we possibly need to configure BB and RF in this function, +// Note, because we possibly need to configure BB and RF in this function, // so caller should in PASSIVE_LEVEL. 080118, by rcnjko. // VOID @@ -2936,17 +2782,14 @@ PHY_SetMonitorMode8814A( BOOLEAN bFilterOutNonAssociatedBSSID = FALSE; //2 Note: we may need to stop antenna diversity. - if(bEnableMonitorMode) - { + if(bEnableMonitorMode) { bFilterOutNonAssociatedBSSID = FALSE; RT_TRACE(COMP_RM, DBG_LOUD, ("PHY_SetMonitorMode8814A(): enable monitor mode\n")); pHalData->bInMonitorMode = TRUE; pAdapter->HalFunc.AllowAllDestAddrHandler(pAdapter, TRUE, TRUE); rtw_hal_set_hwreg(pAdapter, HW_VAR_CHECK_BSSID, (u8*)&bFilterOutNonAssociatedBSSID); - } - else - { + } else { bFilterOutNonAssociatedBSSID = TRUE; RT_TRACE(COMP_RM, DBG_LOUD, ("PHY_SetMonitorMode8814A(): disable monitor mode\n")); @@ -3010,4 +2853,3 @@ PHY_SetSwChnlBWMode8814( //RTW_INFO("<==%s()\n",__FUNCTION__); } - diff --git a/hal/rtl8814a/rtl8814a_rf6052.c b/hal/rtl8814a/rtl8814a_rf6052.c index 67091fc63..f1527876a 100644 --- a/hal/rtl8814a/rtl8814a_rf6052.c +++ b/hal/rtl8814a/rtl8814a_rf6052.c @@ -42,8 +42,7 @@ PHY_RF6052SetBandwidth8814A( IN PADAPTER Adapter, IN CHANNEL_WIDTH Bandwidth) //20M or 40M { - switch(Bandwidth) - { + switch (Bandwidth) { case CHANNEL_WIDTH_20: /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 20MHz\n");*/ PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 3); @@ -51,26 +50,26 @@ PHY_RF6052SetBandwidth8814A( PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 3); PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 3); break; - + case CHANNEL_WIDTH_40: /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 40MHz\n");*/ - PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); - PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); - PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); - PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); + PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 1); break; - + case CHANNEL_WIDTH_80: /*RTW_INFO("PHY_RF6052SetBandwidth8814A(), set 80MHz\n");*/ - PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); - PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); - PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); + PHY_SetRFReg(Adapter, RF_PATH_A, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); + PHY_SetRFReg(Adapter, RF_PATH_B, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); + PHY_SetRFReg(Adapter, RF_PATH_C, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); PHY_SetRFReg(Adapter, RF_PATH_D, RF_CHNLBW_Jaguar, BIT11|BIT10, 0); break; - + default: RTW_INFO("PHY_RF6052SetBandwidth8814A(): unknown Bandwidth: %#X\n",Bandwidth ); - break; + break; } } @@ -101,18 +100,16 @@ phy_RF6052_Config_ParaFile_8814A( //3// <2> Initialize RF //3//----------------------------------------------------------------- //for(eRFPath = RF_PATH_A; eRFPath NumTotalRFPath; eRFPath++) - for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) - { + for (eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) { /*----Initialize RF fom connfiguration file----*/ - switch(eRFPath) - { + switch (eRFPath) { case RF_PATH_A: #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE if (PHY_ConfigRFWithParaFile(Adapter, pszRadioAFile, eRFPath) == _FAIL) #endif //CONFIG_LOAD_PHY_PARA_FROM_FILE { #ifdef CONFIG_EMBEDDED_FWIMG - if(HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) + if (HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) rtStatus = _FAIL; #endif //CONFIG_EMBEDDED_FWIMG } @@ -123,7 +120,7 @@ phy_RF6052_Config_ParaFile_8814A( #endif //CONFIG_LOAD_PHY_PARA_FROM_FILE { #ifdef CONFIG_EMBEDDED_FWIMG - if(HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) + if (HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) rtStatus = _FAIL; #endif //CONFIG_EMBEDDED_FWIMG } @@ -134,7 +131,7 @@ phy_RF6052_Config_ParaFile_8814A( #endif //CONFIG_LOAD_PHY_PARA_FROM_FILE { #ifdef CONFIG_EMBEDDED_FWIMG - if(HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) + if (HAL_STATUS_FAILURE ==ODM_ConfigRFWithHeaderFile(&pHalData->odmpriv,CONFIG_RF_RADIO, (ODM_RF_RADIO_PATH_E)eRFPath)) rtStatus = _FAIL; #endif //CONFIG_EMBEDDED_FWIMG } @@ -154,20 +151,20 @@ phy_RF6052_Config_ParaFile_8814A( break; } - if(rtStatus != _SUCCESS){ + if (rtStatus != _SUCCESS) { RTW_INFO("%s():Radio[%d] Fail!!", __FUNCTION__, eRFPath); goto phy_RF6052_Config_ParaFile_Fail; } } - + u4RegValue = PHY_QueryRFReg(Adapter, RF_PATH_A, RF_RCK1_Jaguar, bRFRegOffsetMask); PHY_SetRFReg(Adapter, RF_PATH_B, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); PHY_SetRFReg(Adapter, RF_PATH_C, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); PHY_SetRFReg(Adapter, RF_PATH_D, RF_RCK1_Jaguar, bRFRegOffsetMask, u4RegValue); - + //3 ----------------------------------------------------------------- - //3 Configuration of Tx Power Tracking + //3 Configuration of Tx Power Tracking //3 ----------------------------------------------------------------- #ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE @@ -185,7 +182,6 @@ phy_RF6052_Config_ParaFile_8814A( return rtStatus; } - int PHY_RF6052_Config_8814A( IN PADAPTER Adapter) @@ -205,6 +201,4 @@ PHY_RF6052_Config_8814A( } - /* End of HalRf6052.c */ - diff --git a/hal/rtl8814a/rtl8814a_sreset.c b/hal/rtl8814a/rtl8814a_sreset.c index 5d7e423ce..b9e83fdd8 100644 --- a/hal/rtl8814a/rtl8814a_sreset.c +++ b/hal/rtl8814a/rtl8814a_sreset.c @@ -32,8 +32,8 @@ void rtl8814_sreset_xmit_status_check(_adapter *padapter) struct xmit_priv *pxmitpriv = &padapter->xmitpriv; unsigned int diff_time; u32 txdma_status; - - if( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00){ + + if ( (txdma_status=rtw_read32(padapter, REG_TXDMA_STATUS)) !=0x00) { RTW_INFO("%s REG_TXDMA_STATUS:0x%08x\n", __FUNCTION__, txdma_status); rtw_hal_sreset_reset(padapter); } @@ -51,7 +51,7 @@ void rtl8814_sreset_xmit_status_check(_adapter *padapter) if (psrtpriv->last_tx_complete_time == 0) { psrtpriv->last_tx_complete_time = current_time; } - else{ + else { diff_time = rtw_get_passing_time_ms(psrtpriv->last_tx_complete_time); if (diff_time > 4000) { u32 ability = 0; @@ -84,16 +84,16 @@ void rtl8814_sreset_linked_status_check(_adapter *padapter) u32 rx_dma_status = 0; rx_dma_status = rtw_read32(padapter,REG_RXDMA_STATUS); - if(rx_dma_status!= 0x00){ + if (rx_dma_status!= 0x00) { RTW_INFO("%s REG_RXDMA_STATUS:0x%08x\n",__FUNCTION__,rx_dma_status); - } + } #if 0 u32 regc50,regc58,reg824,reg800; regc50 = rtw_read32(padapter,0xc50); regc58 = rtw_read32(padapter,0xc58); reg824 = rtw_read32(padapter,0x824); reg800 = rtw_read32(padapter,0x800); - if( ((regc50&0xFFFFFF00)!= 0x69543400)|| + if ( ((regc50&0xFFFFFF00)!= 0x69543400)|| ((regc58&0xFFFFFF00)!= 0x69543400)|| (((reg824&0xFFFFFF00)!= 0x00390000)&&(((reg824&0xFFFFFF00)!= 0x80390000)))|| ( ((reg800&0xFFFFFF00)!= 0x03040000)&&((reg800&0xFFFFFF00)!= 0x83040000))) @@ -111,4 +111,3 @@ void rtl8814_sreset_linked_status_check(_adapter *padapter) } } #endif - diff --git a/hal/rtl8814a/rtl8814a_xmit.c b/hal/rtl8814a/rtl8814a_xmit.c index 85bae2800..bb6cdd8f1 100644 --- a/hal/rtl8814a/rtl8814a_xmit.c +++ b/hal/rtl8814a/rtl8814a_xmit.c @@ -28,22 +28,22 @@ void _dbg_dump_tx_info(_adapter *padapter,int frame_tag, u8 *ptxdesc) u8 bDumpTxDesc = _FALSE; rtw_hal_get_def_var(padapter, HAL_DEF_DBG_DUMP_TXPKT, &(bDumpTxPkt)); - if(bDumpTxPkt ==1){//dump txdesc for data frame + if (bDumpTxPkt ==1) { //dump txdesc for data frame RTW_INFO("dump tx_desc for data frame\n"); - if((frame_tag&0x0f) == DATA_FRAMETAG){ - bDumpTxDesc = _TRUE; + if ((frame_tag&0x0f) == DATA_FRAMETAG){ + bDumpTxDesc = _TRUE; } - } - else if(bDumpTxPkt ==2){//dump txdesc for mgnt frame + } + else if (bDumpTxPkt ==2) { //dump txdesc for mgnt frame RTW_INFO("dump tx_desc for mgnt frame\n"); - if((frame_tag&0x0f) == MGNT_FRAMETAG){ - bDumpTxDesc = _TRUE; + if ((frame_tag&0x0f) == MGNT_FRAMETAG) { + bDumpTxDesc = _TRUE; } - } - else if(bDumpTxPkt ==3){//dump early info } - - if(bDumpTxDesc){ + else if (bDumpTxPkt ==3) { //dump early info + } + + if (bDumpTxDesc) { // ptxdesc->txdw4 = cpu_to_le32(0x00001006);//RTS Rate=24M // ptxdesc->txdw6 = 0x6666f800; RTW_INFO("=====================================\n"); @@ -75,7 +75,7 @@ void _dbg_dump_tx_info(_adapter *padapter,int frame_tag, u8 *ptxdesc) //#define DBG_EMINFO -#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 +#if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 #define EARLY_MODE_MAX_PKT_NUM 10 #else #define EARLY_MODE_MAX_PKT_NUM 5 @@ -100,65 +100,65 @@ InsertEMContent_8814( #endif _rtw_memset(VirtualAddress, 0, EARLY_MODE_INFO_SIZE); - if(pEMInfo->EMPktNum==0) + if (pEMInfo->EMPktNum==0) return; #ifdef DBG_EMINFO { int i; RTW_INFO("\n%s ==> pEMInfo->EMPktNum =%d\n",__FUNCTION__,pEMInfo->EMPktNum); - for(i=0;i< EARLY_MODE_MAX_PKT_NUM;i++){ + for (i = 0;i< EARLY_MODE_MAX_PKT_NUM;i++) { RTW_INFO("%s ==> pEMInfo->EMPktLen[%d] =%d\n",__FUNCTION__,i,pEMInfo->EMPktLen[i]); } } #endif - + #if RTL8188E_EARLY_MODE_PKT_NUM_10 == 1 SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum); - if(pEMInfo->EMPktNum == 1){ + if (pEMInfo->EMPktNum == 1) { dwtmp = pEMInfo->EMPktLen[0]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[0]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[1]; } SET_EARLYMODE_LEN0(VirtualAddress, dwtmp); - if(pEMInfo->EMPktNum <= 3){ + if (pEMInfo->EMPktNum <= 3) { dwtmp = pEMInfo->EMPktLen[2]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[2]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[3]; } SET_EARLYMODE_LEN1(VirtualAddress, dwtmp); - if(pEMInfo->EMPktNum <= 5){ + if (pEMInfo->EMPktNum <= 5) { dwtmp = pEMInfo->EMPktLen[4]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[4]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[5]; } SET_EARLYMODE_LEN2_1(VirtualAddress, dwtmp&0xF); SET_EARLYMODE_LEN2_2(VirtualAddress, dwtmp>>4); - if(pEMInfo->EMPktNum <= 7){ + if (pEMInfo->EMPktNum <= 7) { dwtmp = pEMInfo->EMPktLen[6]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[6]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[7]; } SET_EARLYMODE_LEN3(VirtualAddress, dwtmp); - if(pEMInfo->EMPktNum <= 9){ + if (pEMInfo->EMPktNum <= 9) { dwtmp = pEMInfo->EMPktLen[8]; - }else{ + } else { dwtmp = pEMInfo->EMPktLen[8]; dwtmp += ((dwtmp%4)?(4-dwtmp%4):0)+4; dwtmp += pEMInfo->EMPktLen[9]; } SET_EARLYMODE_LEN4(VirtualAddress, dwtmp); -#else +#else SET_EARLYMODE_PKTNUM(VirtualAddress, pEMInfo->EMPktNum); SET_EARLYMODE_LEN0(VirtualAddress, pEMInfo->EMPktLen[0]); SET_EARLYMODE_LEN1(VirtualAddress, pEMInfo->EMPktLen[1]); @@ -166,85 +166,80 @@ InsertEMContent_8814( SET_EARLYMODE_LEN2_2(VirtualAddress, pEMInfo->EMPktLen[2]>>4); SET_EARLYMODE_LEN3(VirtualAddress, pEMInfo->EMPktLen[3]); SET_EARLYMODE_LEN4(VirtualAddress, pEMInfo->EMPktLen[4]); -#endif +#endif //RT_PRINT_DATA(COMP_SEND, DBG_LOUD, "EMHdr:", VirtualAddress, 8); } - void UpdateEarlyModeInfo8814(struct xmit_priv *pxmitpriv,struct xmit_buf *pxmitbuf ) { //_adapter *padapter, struct xmit_frame *pxmitframe,struct tx_servq *ptxservq int index,j; u16 offset,pktlen; PTXDESC_8814 ptxdesc; - + u8 *pmem,*pEMInfo_mem; s8 node_num_0=0,node_num_1=0; struct EMInfo eminfo; struct agg_pkt_info *paggpkt; - struct xmit_frame *pframe = (struct xmit_frame*)pxmitbuf->priv_data; - pmem= pframe->buf_addr; - - #ifdef DBG_EMINFO + struct xmit_frame *pframe = (struct xmit_frame*)pxmitbuf->priv_data; + pmem= pframe->buf_addr; + + #ifdef DBG_EMINFO RTW_INFO("\n%s ==> agg_num:%d\n",__FUNCTION__, pframe->agg_num); - for(index=0;indexagg_num;index++){ + for (index=0;indexagg_num;index++){ offset = pxmitpriv->agg_pkt[index].offset; pktlen = pxmitpriv->agg_pkt[index].pkt_len; RTW_INFO("%s ==> agg_pkt[%d].offset=%d\n",__FUNCTION__,index,offset); RTW_INFO("%s ==> agg_pkt[%d].pkt_len=%d\n",__FUNCTION__,index,pktlen); } #endif - - if( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) - { + + if ( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) { node_num_0 = pframe->agg_num; node_num_1= EARLY_MODE_MAX_PKT_NUM-1; } - - for(index=0;indexagg_num;index++){ + + for (index=0;indexagg_num;index++) { offset = pxmitpriv->agg_pkt[index].offset; - pktlen = pxmitpriv->agg_pkt[index].pkt_len; + pktlen = pxmitpriv->agg_pkt[index].pkt_len; _rtw_memset(&eminfo,0,sizeof(struct EMInfo)); - if( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM){ - if(node_num_0 > EARLY_MODE_MAX_PKT_NUM){ + if ( pframe->agg_num > EARLY_MODE_MAX_PKT_NUM) { + if (node_num_0 > EARLY_MODE_MAX_PKT_NUM) { eminfo.EMPktNum = EARLY_MODE_MAX_PKT_NUM; node_num_0--; - } - else{ + } else{ eminfo.EMPktNum = node_num_1; - node_num_1--; - } + node_num_1--; + } + } else { + eminfo.EMPktNum = pframe->agg_num-(index+1); } - else{ - eminfo.EMPktNum = pframe->agg_num-(index+1); - } - for(j=0;j< eminfo.EMPktNum ;j++){ + for (j = 0;j< eminfo.EMPktNum ;j++) { eminfo.EMPktLen[j] = pxmitpriv->agg_pkt[index+1+j].pkt_len+4;// 4 bytes CRC } - - if(pmem){ - if(index==0){ + + if (pmem) { + if (index==0) { ptxdesc = (PTXDESC_8814)(pmem); - pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; - } - else{ + pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; + } else{ pmem = pmem + pxmitpriv->agg_pkt[index-1].offset; ptxdesc = (PTXDESC_8814)(pmem); - pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; + pEMInfo_mem = ((u8 *)ptxdesc)+TXDESC_SIZE; } - + #ifdef DBG_EMINFO RTW_INFO("%s ==> desc.pkt_len=%d\n",__FUNCTION__,ptxdesc->pktlen); #endif InsertEMContent_8814(&eminfo,pEMInfo_mem); - } - - - } + } + + + } _rtw_memset(pxmitpriv->agg_pkt,0,sizeof(struct agg_pkt_info)*MAX_AGG_PKT_NUM); } @@ -258,7 +253,6 @@ void rtl8814a_cal_txdesc_chksum(u8 *ptxdesc) u32 index; u16 checksum = 0; - usPtr = (u16*)ptxdesc; // checksume is always calculated by first 32 bytes, // and it doesn't depend on TX DESC length. @@ -268,7 +262,7 @@ void rtl8814a_cal_txdesc_chksum(u8 *ptxdesc) // Clear first SET_TX_DESC_TX_DESC_CHECKSUM_8814A(ptxdesc, 0); - for(index = 0 ; index < count ; index++){ + for (index = 0 ; index < count ; index++) { checksum = checksum ^ le16_to_cpu(*(usPtr + index)); } @@ -310,53 +304,47 @@ void rtl8814a_fill_fake_txdesc( } //Set NAVUSEHDR to prevent Ps-poll AId filed to be changed to error vlaue by Hw. - if (IsPsPoll) - { - SET_TX_DESC_NAV_USE_HDR_8814A(pDesc, 1); - } - else - { + if (IsPsPoll) { + SET_TX_DESC_NAV_USE_HDR_8814A(pDesc, 1); + } else { SET_TX_DESC_HWSEQ_EN_8814A(pDesc, 1); // Hw set sequence number } #if 0 //todo - if(IsBTQosNull) - { + if (IsBTQosNull) { SET_TX_DESC_BT_INT_8812(pDesc, 1); } #endif //0 SET_TX_DESC_USE_RATE_8814A(pDesc, 1); - + //8814 no OWN bit? //SET_TX_DESC_OWN_8812(pDesc, 1); // // Encrypt the data frame if under security mode excepct null data. Suggested by CCW. // - if (_TRUE ==bDataFrame) - { + if (_TRUE ==bDataFrame) { u32 EncAlg; EncAlg = padapter->securitypriv.dot11PrivacyAlgrthm; - switch (EncAlg) - { + switch (EncAlg) { case _NO_PRIVACY_: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); break; case _WEP40_: case _WEP104_: case _TKIP_: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x1); + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x1); break; case _SMS4_: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x2); + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x2); break; case _AES_: SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x3); break; default: - SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); - break; + SET_TX_DESC_SEC_TYPE_8814A(pDesc, 0x0); + break; } } SET_TX_DESC_TX_RATE_8814A(pDesc, MRateToHwRate(pmlmeext->tx_rate)); @@ -370,15 +358,13 @@ void rtl8814a_fill_fake_txdesc( void rtl8814a_fill_txdesc_sectype(struct pkt_attrib *pattrib, u8 *ptxdesc) { - if ((pattrib->encrypt > 0) && !pattrib->bswenc) - { - switch (pattrib->encrypt) - { + if ((pattrib->encrypt > 0) && !pattrib->bswenc) { + switch (pattrib->encrypt) { //SEC_TYPE : 0:NO_ENC,1:WEP40/TKIP,2:WAPI,3:AES case _WEP40_: case _WEP104_: case _TKIP_: - case _TKIP_WTMIC_: + case _TKIP_WTMIC_: SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x1); break; #ifdef CONFIG_WAPI_SUPPORT @@ -393,9 +379,9 @@ void rtl8814a_fill_txdesc_sectype(struct pkt_attrib *pattrib, u8 *ptxdesc) default: SET_TX_DESC_SEC_TYPE_8814A(ptxdesc, 0x0); break; - + } - + } } @@ -405,12 +391,11 @@ void rtl8814a_fill_txdesc_vcs(PADAPTER padapter, struct pkt_attrib *pattrib, u8 struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); - //RTW_INFO("vcs_mode=%d\n", pattrib->vcs_mode); + //RTW_INFO("vcs_mode=%d\n", pattrib->vcs_mode); if (pattrib->vcs_mode) { - switch(pattrib->vcs_mode) - { + switch (pattrib->vcs_mode) { case RTS_CTS: SET_TX_DESC_RTS_ENABLE_8814A(ptxdesc, 1); break; @@ -428,12 +413,12 @@ void rtl8814a_fill_txdesc_vcs(PADAPTER padapter, struct pkt_attrib *pattrib, u8 SET_TX_DESC_RTS_RATE_8814A(ptxdesc, 0x8);//RTS Rate=24M SET_TX_DESC_RTS_RATE_FB_LIMIT_8814A(ptxdesc, 0xf); - + } } -u8 +u8 BWMapping_8814( IN PADAPTER Adapter, IN struct pkt_attrib *pattrib @@ -444,18 +429,16 @@ BWMapping_8814( //RTW_INFO("BWMapping pHalData->CurrentChannelBW %d, pattrib->bwmode %d \n",pHalData->CurrentChannelBW,pattrib->bwmode); - if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) - { - if(pattrib->bwmode == CHANNEL_WIDTH_80) + if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_80) { + if (pattrib->bwmode == CHANNEL_WIDTH_80) BWSettingOfDesc= 2; - else if(pattrib->bwmode == CHANNEL_WIDTH_40) + else if (pattrib->bwmode == CHANNEL_WIDTH_40) BWSettingOfDesc = 1; else BWSettingOfDesc = 0; } - else if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) - { - if((pattrib->bwmode == CHANNEL_WIDTH_40) || (pattrib->bwmode == CHANNEL_WIDTH_80)) + else if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) { + if ((pattrib->bwmode == CHANNEL_WIDTH_40) || (pattrib->bwmode == CHANNEL_WIDTH_80)) BWSettingOfDesc = 1; else BWSettingOfDesc = 0; @@ -466,7 +449,7 @@ BWMapping_8814( return BWSettingOfDesc; } -u8 +u8 SCMapping_8814( IN PADAPTER Adapter, IN struct pkt_attrib *pattrib @@ -475,63 +458,48 @@ SCMapping_8814( u8 SCSettingOfDesc = 0; PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); //RTW_INFO("SCMapping: pHalData->CurrentChannelBW %d, pHalData->nCur80MhzPrimeSC %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur80MhzPrimeSC,pHalData->nCur40MhzPrimeSC); - - if(pHalData->CurrentChannelBW == CHANNEL_WIDTH_80) - { - if(pattrib->bwmode == CHANNEL_WIDTH_80) - { + + if (pHalData->CurrentChannelBW == CHANNEL_WIDTH_80) { + if (pattrib->bwmode == CHANNEL_WIDTH_80) { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } - else if(pattrib->bwmode == CHANNEL_WIDTH_40) - { - if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) + else if (pattrib->bwmode == CHANNEL_WIDTH_40) { + if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) SCSettingOfDesc = VHT_DATA_SC_40_LOWER_OF_80MHZ; - else if(pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) + else if (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) SCSettingOfDesc = VHT_DATA_SC_40_UPPER_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); - } - else - { - if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + } else { + if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOfDesc = VHT_DATA_SC_20_LOWEST_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER)) SCSettingOfDesc = VHT_DATA_SC_20_LOWER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOfDesc = VHT_DATA_SC_20_UPPER_OF_80MHZ; - else if((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) + else if ((pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) && (pHalData->nCur80MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER)) SCSettingOfDesc = VHT_DATA_SC_20_UPPERST_OF_80MHZ; else RTW_INFO("SCMapping: DONOT CARE Mode Setting\n"); } } - else if(pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) - { + else if (pHalData->CurrentChannelBW== CHANNEL_WIDTH_40) { //RTW_INFO("SCMapping: HT Case: pHalData->CurrentChannelBW %d, pHalData->nCur40MhzPrimeSC %d \n",pHalData->CurrentChannelBW,pHalData->nCur40MhzPrimeSC); - if(pattrib->bwmode == CHANNEL_WIDTH_40) - { + if (pattrib->bwmode == CHANNEL_WIDTH_40) { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } - else if(pattrib->bwmode == CHANNEL_WIDTH_20) - { - if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) - { + else if (pattrib->bwmode == CHANNEL_WIDTH_20) { + if (pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_UPPER) { SCSettingOfDesc = VHT_DATA_SC_20_UPPER_OF_80MHZ; } - else if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) - { + else if(pHalData->nCur40MhzPrimeSC == HAL_PRIME_CHNL_OFFSET_LOWER) { SCSettingOfDesc = VHT_DATA_SC_20_LOWER_OF_80MHZ; - } - else - { + } else { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } - } - } - else - { + } else { SCSettingOfDesc = VHT_DATA_SC_DONOT_CARE; } @@ -543,13 +511,10 @@ void rtl8814a_fill_txdesc_phy(PADAPTER padapter, struct pkt_attrib *pattrib, u8 { //RTW_INFO("bwmode=%d, ch_off=%d\n", pattrib->bwmode, pattrib->ch_offset); - if(pattrib->ht_en) - { + if (pattrib->ht_en) { // Set Bandwidth and sub-channel settings. SET_TX_DESC_DATA_BW_8814A(ptxdesc, BWMapping_8814(padapter,pattrib)); SET_TX_DESC_DATA_SC_8814A(ptxdesc, SCMapping_8814(padapter,pattrib)); } } - - diff --git a/hal/rtl8814a/usb/rtl8814au_led.c b/hal/rtl8814a/usb/rtl8814au_led.c index 7bfc3ba76..776cb21fb 100644 --- a/hal/rtl8814a/usb/rtl8814au_led.c +++ b/hal/rtl8814a/usb/rtl8814au_led.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -33,7 +33,7 @@ //================================================================================ -// LED_819xUsb routines. +// LED_819xUsb routines. //================================================================================ // @@ -42,7 +42,7 @@ // static void SwLedOn_8814AU( - PADAPTER padapter, + PADAPTER padapter, PLED_USB pLed ) { @@ -73,7 +73,7 @@ SwLedOn_8814AU( // static void SwLedOff_8814AU( - PADAPTER padapter, + PADAPTER padapter, PLED_USB pLed ) { @@ -144,4 +144,3 @@ rtl8814au_DeInitSwLeds( DeInitLed( &(ledpriv->SwLed1) ); DeInitLed( &(ledpriv->SwLed2) ); } - diff --git a/hal/rtl8814a/usb/rtl8814au_recv.c b/hal/rtl8814a/usb/rtl8814au_recv.c index 4d381791b..81193e724 100644 --- a/hal/rtl8814a/usb/rtl8814au_recv.c +++ b/hal/rtl8814a/usb/rtl8814au_recv.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -31,4 +31,3 @@ void rtl8814au_free_recv_priv(_adapter *padapter) { usb_free_recv_priv(padapter, INTERRUPT_MSG_FORMAT_LEN); } - diff --git a/hal/rtl8814a/usb/rtl8814au_xmit.c b/hal/rtl8814a/usb/rtl8814au_xmit.c index 8ac5268b5..0f4d3e1ff 100644 --- a/hal/rtl8814a/usb/rtl8814au_xmit.c +++ b/hal/rtl8814a/usb/rtl8814au_xmit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -22,7 +22,6 @@ //#include #include - s32 rtl8814au_init_xmit_priv(_adapter *padapter) { struct xmit_priv *pxmitpriv = &padapter->xmitpriv; @@ -45,26 +44,24 @@ void rtl8814au_free_xmit_priv(_adapter *padapter) } static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bagg_pkt) -{ +{ int pull=0; uint qsel; u8 data_rate,pwr_status,offset; _adapter *padapter = pxmitframe->padapter; - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct pkt_attrib *pattrib = &pxmitframe->attrib; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); u8 *ptxdesc = pmem; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); sint bmcst = IS_MCAST(pattrib->ra); - u16 SWDefineContent = 0x0; + u16 SWDefineContent = 0x0; u8 DriverFixedRate = 0x0; -#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX - if (padapter->registrypriv.mp_mode == 0) - { - if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE)) - { +#ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX + if (padapter->registrypriv.mp_mode == 0) { + if ((PACKET_OFFSET_SZ != 0) && (!bagg_pkt) &&(rtw_usb_bulk_size_boundary(padapter,TXDESC_SIZE+sz)==_FALSE)) { ptxdesc = (pmem+PACKET_OFFSET_SZ); //RTW_INFO("==> non-agg-pkt,shift pointer...\n"); pull = 1; @@ -73,20 +70,20 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag #endif // CONFIG_USE_USB_BUFFER_ALLOC_TX _rtw_memset(ptxdesc, 0, TXDESC_SIZE); - + //4 offset 0 //SET_TX_DESC_FIRST_SEG_8812(ptxdesc, 1); SET_TX_DESC_LAST_SEG_8814A(ptxdesc, 1); //SET_TX_DESC_OWN_8812(ptxdesc, 1); - + //RTW_INFO("%s==> pkt_len=%d,bagg_pkt=%02x\n",__FUNCTION__,sz,bagg_pkt); SET_TX_DESC_PKT_SIZE_8814A(ptxdesc, sz); - - offset = TXDESC_SIZE + OFFSET_SZ; -#ifdef CONFIG_TX_EARLY_MODE - if(bagg_pkt){ - offset += EARLY_MODE_INFO_SIZE ;//0x28 + offset = TXDESC_SIZE + OFFSET_SZ; + +#ifdef CONFIG_TX_EARLY_MODE + if (bagg_pkt) { + offset += EARLY_MODE_INFO_SIZE ;//0x28 } #endif //RTW_INFO("%s==>offset(0x%02x) \n",__FUNCTION__,offset); @@ -97,14 +94,13 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } #ifndef CONFIG_USE_USB_BUFFER_ALLOC_TX - if (padapter->registrypriv.mp_mode == 0) - { - if((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)){ - if((pull) && (pxmitframe->pkt_offset>0)) { - pxmitframe->pkt_offset = pxmitframe->pkt_offset -1; + if (padapter->registrypriv.mp_mode == 0) { + if ((PACKET_OFFSET_SZ != 0) && (!bagg_pkt)) { + if ((pull) && (pxmitframe->pkt_offset>0)) { + pxmitframe->pkt_offset = pxmitframe->pkt_offset -1; } } - } + } #endif //RTW_INFO("%s, pkt_offset=0x%02x\n",__FUNCTION__,pxmitframe->pkt_offset); @@ -130,9 +126,8 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_SEQ_8814A(ptxdesc, pattrib->seqnum); } - if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) - { - //RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); + if ((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) { + //RTW_INFO("pxmitframe->frame_tag == DATA_FRAMETAG\n"); rtl8814a_fill_txdesc_sectype(pattrib, ptxdesc); @@ -162,8 +157,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_MAX_AGG_NUM_8814A(ptxdesc, 0x1f); // Set A-MPDU aggregation. SET_TX_DESC_AMPDU_DENSITY_8814A(ptxdesc, pattrib->ampdu_spacing); - } - else { + } else { SET_TX_DESC_BK_8814A(ptxdesc, 1); } @@ -171,19 +165,16 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag //DATA Rate FB LMT //SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 0x1f); - if(pHalData->CurrentBandType == BAND_ON_5G) - { + if (pHalData->CurrentBandType == BAND_ON_5G) { SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 4); - } - else - { + } else { SET_TX_DESC_DATA_RATE_FB_LIMIT_8814A(ptxdesc, 0); } if (pHalData->fw_ractrl == _FALSE) { SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); DriverFixedRate = 0x01; - + if(pHalData->INIDATA_RATE[pattrib->mac_id] & BIT(7)) SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); @@ -192,8 +183,8 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (padapter->fix_rate != 0xFF) { // modify data rate by iwpriv SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); - DriverFixedRate = 0x01; - if(padapter->fix_rate & BIT(7)) + DriverFixedRate = 0x01; + if (padapter->fix_rate & BIT(7)) SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); SET_TX_DESC_TX_RATE_8814A(ptxdesc, (padapter->fix_rate & 0x7F)); @@ -203,15 +194,13 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag if (pattrib->ldpc) SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 1); - if (pattrib->stbc) + if (pattrib->stbc) SET_TX_DESC_DATA_STBC_8814A(ptxdesc, 1); - - //work arond before fixing RA + + //work around before fixing RA //SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); //SET_TX_DESC_TX_RATE_8814A(ptxdesc, 0x10); - } - else - { + } else { // EAP data packet and ARP packet and DHCP. // Use the 1M data rate to send the EAP/ARP packet. // This will maybe make the handshake smooth. @@ -229,15 +218,14 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } } - else if((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) - { - //RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); + else if ((pxmitframe->frame_tag&0x0f)== MGNT_FRAMETAG) { + //RTW_INFO("pxmitframe->frame_tag == MGNT_FRAMETAG\n"); SET_TX_DESC_USE_RATE_8814A(ptxdesc, 1); DriverFixedRate = 0x01; #ifdef CONFIG_INTEL_PROXIM - if((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ + if ((padapter->proximity.proxim_on==_TRUE)&&(pattrib->intel_proxim==_TRUE)){ RTW_INFO("\n %s pattrib->rate=%d\n",__FUNCTION__,pattrib->rate); SET_TX_DESC_TX_RATE_8814A(ptxdesc, pattrib->rate); } @@ -248,7 +236,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } // VHT NDPA or HT NDPA Packet for Beamformer. - if((pattrib->subtype == WIFI_NDPA) || + if ((pattrib->subtype == WIFI_NDPA) || ((pattrib->subtype == WIFI_ACTION_NOACK) && (pattrib->order == 1))) { SET_TX_DESC_NAV_USE_HDR_8814A(ptxdesc, 1); @@ -260,17 +248,15 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 5); SET_TX_DESC_DISABLE_FB_8814A(ptxdesc, 1); - //if(pattrib->rts_cca) + //if (pattrib->rts_cca) //{ // SET_TX_DESC_NDPA_8812(ptxdesc, 2); - //} + //} //else { SET_TX_DESC_NDPA_8814A(ptxdesc, 1); } - } - else - { + } else { SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); if (pattrib->retry_ctrl == _TRUE) { SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 6); @@ -289,8 +275,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } #endif //CONFIG_XMIT_ACK } - else if((pxmitframe->frame_tag&0x0f) == TXAGG_FRAMETAG) - { + else if ((pxmitframe->frame_tag&0x0f) == TXAGG_FRAMETAG) { RTW_INFO("pxmitframe->frame_tag == TXAGG_FRAMETAG\n"); } #ifdef CONFIG_MP_INCLUDED @@ -313,17 +298,17 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_SW_DEFINE_8814A(ptxdesc, SWDefineContent); SET_TX_DESC_GID_8814A(ptxdesc, pattrib->txbf_g_id); - SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); + SET_TX_DESC_PAID_8814A(ptxdesc, pattrib->txbf_p_aid); /* injected frame */ - if(pattrib->inject == 0xa5) { + if (pattrib->inject == 0xa5) { SET_TX_DESC_RETRY_LIMIT_ENABLE_8814A(ptxdesc, 1); if (pattrib->retry_ctrl == _TRUE) { SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 6); } else { SET_TX_DESC_DATA_RETRY_LIMIT_8814A(ptxdesc, 0); } - if(pattrib->sgi == _TRUE) { + if (pattrib->sgi == _TRUE) { SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 1); } else { SET_TX_DESC_DATA_SHORT_8814A(ptxdesc, 0); @@ -332,7 +317,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag SET_TX_DESC_TX_RATE_8814A(ptxdesc, MRateToHwRate(pattrib->rate)); if (pattrib->ldpc) { SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 1); - } else { + } else { SET_TX_DESC_DATA_LDPC_8814A(ptxdesc, 0); } SET_TX_DESC_DATA_STBC_8814A(ptxdesc, pattrib->stbc & 3); @@ -340,7 +325,7 @@ static s32 update_txdesc(struct xmit_frame *pxmitframe, u8 *pmem, s32 sz ,u8 bag } rtl8814a_cal_txdesc_chksum(ptxdesc); - _dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc); + _dbg_dump_tx_info(padapter,pxmitframe->frame_tag,ptxdesc); return pull; } @@ -381,7 +366,7 @@ s32 rtl8814au_xmit_buf_handler(PADAPTER padapter) return _FAIL; } - if(check_pending_xmitbuf(pxmitpriv) == _FALSE) + if (check_pending_xmitbuf(pxmitpriv) == _FALSE) return _SUCCESS; #ifdef CONFIG_LPS_LCLK @@ -435,39 +420,32 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) mem_addr = pxmitframe->buf_addr; //RTW_INFO("rtw_dump_xframe()\n"); - - for (t = 0; t < pattrib->nr_frags; t++) - { + + for (t = 0; t < pattrib->nr_frags; t++) { if (inner_ret != _SUCCESS && ret == _SUCCESS) ret = _FAIL; - - if (t != (pattrib->nr_frags - 1)) - { + + if (t != (pattrib->nr_frags - 1)) { RT_TRACE(_module_rtl871x_xmit_c_,_drv_err_,("pattrib->nr_frags=%d\n", pattrib->nr_frags)); sz = pxmitpriv->frag_len; - sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len); - } - else //no frag - { + sz = sz - 4 - (psecuritypriv->sw_encrypt ? 0 : pattrib->icv_len); + } else { //no frag sz = pattrib->last_txcmdsz; } pull = update_txdesc(pxmitframe, mem_addr, sz, _FALSE); - - if(pull) - { + + if (pull) { mem_addr += PACKET_OFFSET_SZ; //pull txdesc head - - //pxmitbuf ->pbuf = mem_addr; + + //pxmitbuf ->pbuf = mem_addr; pxmitframe->buf_addr = mem_addr; w_sz = sz + TXDESC_SIZE; - } - else - { + } else { w_sz = sz + TXDESC_SIZE + PACKET_OFFSET_SZ; - } + } ff_hwaddr = rtw_get_ff_hwaddr(pxmitframe); @@ -481,19 +459,19 @@ static s32 rtw_dump_xframe(_adapter *padapter, struct xmit_frame *pxmitframe) rtw_count_tx_stats(padapter, pxmitframe, sz); //RTW_INFO("rtw_write_port, w_sz=%d\n", w_sz); - //RTW_INFO("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority); + //RTW_INFO("rtw_write_port, w_sz=%d, sz=%d, txdesc_sz=%d, tid=%d\n", w_sz, sz, w_sz-sz, pattrib->priority); mem_addr += w_sz; mem_addr = (u8 *)RND4(((SIZE_PTR)(mem_addr))); } - + rtw_free_xmitframe(pxmitpriv, pxmitframe); - + if (ret != _SUCCESS) rtw_sctx_done_err(&pxmitbuf->sctx, RTW_SCTX_DONE_UNKNOWN); - + return ret; } @@ -510,7 +488,7 @@ static u32 xmitframe_need_length(struct xmit_frame *pxmitframe) pattrib->pktlen + ((pattrib->bswenc) ? pattrib->icv_len : 0); - if(pattrib->encrypt ==_TKIP_) + if (pattrib->encrypt ==_TKIP_) len += 8; return len; @@ -565,7 +543,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv //3 1. pick up first frame do { rtw_free_xmitframe(pxmitpriv, pxmitframe); - + pxmitframe = rtw_dequeue_xframe(pxmitpriv, pxmitpriv->hwxmits, pxmitpriv->hwxmit_entry); if (pxmitframe == NULL) { // no more xmit frame, release xmit buffer @@ -626,9 +604,10 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // check pkt amount in one bulk descCount = 0; bulkPtr = bulkSize; - if (pbuf < bulkPtr) + if (pbuf < bulkPtr) { descCount++; - if (descCount == pHalData->UsbTxAggDescNum) + } + if (descCount == pHalData->UsbTxAggDescNum) goto agg_end; else { descCount = 0; @@ -675,31 +654,30 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv xmitframe_phead = get_list_head(&ptxservq->sta_pending); xmitframe_plist = get_next(xmitframe_phead); - - while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) - { + + while (rtw_end_of_queue_search(xmitframe_phead, xmitframe_plist) == _FALSE) { pxmitframe = LIST_CONTAINOR(xmitframe_plist, struct xmit_frame, list); xmitframe_plist = get_next(xmitframe_plist); - if(_FAIL == rtw_hal_busagg_qsel_check(padapter,pfirstframe->attrib.qsel,pxmitframe->attrib.qsel)) + if (_FAIL == rtw_hal_busagg_qsel_check(padapter,pfirstframe->attrib.qsel,pxmitframe->attrib.qsel)) break; - + pxmitframe->agg_num = 0; // not first frame of aggregation #ifdef CONFIG_TX_EARLY_MODE pxmitframe->pkt_offset = 1;// not first frame of aggregation,reserve offset for EM Info #else pxmitframe->pkt_offset = 0; // not first frame of aggregation, no need to reserve offset - #endif + #endif len = xmitframe_need_length(pxmitframe) + TXDESC_SIZE +(pxmitframe->pkt_offset*PACKET_OFFSET_SZ); - + if (_RND8(pbuf + len) > MAX_XMITBUF_SZ) //if (_RND8(pbuf + len) > (MAX_XMITBUF_SZ/2))//to do : for TX TP finial tune , Georgia 2012-0323 { //RTW_INFO("%s....len> MAX_XMITBUF_SZ\n",__FUNCTION__); pxmitframe->agg_num = 1; - pxmitframe->pkt_offset = 1; - break; + pxmitframe->pkt_offset = 1; + break; } rtw_list_delete(&pxmitframe->list); ptxservq->qcnt--; @@ -728,7 +706,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf + pbuf; - + if (rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe) == _FALSE) { RTW_INFO("%s coalesce failed \n",__FUNCTION__); rtw_free_xmitframe(pxmitpriv, pxmitframe); @@ -741,7 +719,7 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv // (len - TXDESC_SIZE) == pxmitframe->attrib.last_txcmdsz update_txdesc(pxmitframe, pxmitframe->buf_addr, pxmitframe->attrib.last_txcmdsz,_TRUE); - + // don't need xmitframe any more rtw_free_xmitframe(pxmitpriv, pxmitframe); @@ -751,9 +729,9 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv pfirstframe->agg_num++; -#ifdef CONFIG_TX_EARLY_MODE - pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len); - pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz; +#ifdef CONFIG_TX_EARLY_MODE + pxmitpriv->agg_pkt[pfirstframe->agg_num-1].offset = _RND8(len); + pxmitpriv->agg_pkt[pfirstframe->agg_num-1].pkt_len = pxmitframe->attrib.last_txcmdsz; #endif if (MAX_TX_AGG_PACKET_NUMBER == pfirstframe->agg_num) break; @@ -798,27 +776,25 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv #endif // CONFIG_USE_USB_BUFFER_ALLOC_TX update_txdesc(pfirstframe, pfirstframe->buf_addr, pfirstframe->attrib.last_txcmdsz,_TRUE); - + #ifdef CONFIG_TX_EARLY_MODE //prepare EM info for first frame, agg_num value start from 1 pxmitpriv->agg_pkt[0].offset = _RND8(pfirstframe->attrib.last_txcmdsz +TXDESC_SIZE +(pfirstframe->pkt_offset*PACKET_OFFSET_SZ)); - pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce + pxmitpriv->agg_pkt[0].pkt_len = pfirstframe->attrib.last_txcmdsz;//get from rtw_xmitframe_coalesce UpdateEarlyModeInfo8812(pxmitpriv,pxmitbuf ); #endif - + //3 4. write xmit buffer to USB FIFO ff_hwaddr = rtw_get_ff_hwaddr(pfirstframe); //RTW_INFO("%s ===================================== write port,buf_size(%d) \n",__FUNCTION__,pbuf_tail); // xmit address == ((xmit_frame*)pxmitbuf->priv_data)->buf_addr rtw_write_port(padapter, ff_hwaddr, pbuf_tail, (u8*)pxmitbuf); - //3 5. update statisitc pbuf_tail -= (pfirstframe->agg_num * TXDESC_SIZE); pbuf_tail -= (pfirstframe->pkt_offset * PACKET_OFFSET_SZ); - - + rtw_count_tx_stats(padapter, pfirstframe, pbuf_tail); rtw_free_xmitframe(pxmitpriv, pfirstframe); @@ -829,11 +805,11 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv #else //CONFIG_USB_TX_AGGREGATION s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv, struct xmit_buf *pxmitbuf) -{ +{ struct hw_xmit *phwxmits; sint hwentry; - struct xmit_frame *pxmitframe=NULL; + struct xmit_frame *pxmitframe=NULL; int res=_SUCCESS, xcnt = 0; phwxmits = pxmitpriv->hwxmits; @@ -841,72 +817,57 @@ s32 rtl8814au_xmitframe_complete(_adapter *padapter, struct xmit_priv *pxmitpriv RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete()\n")); - if(pxmitbuf==NULL) - { - pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); - if(!pxmitbuf) - { + if (pxmitbuf==NULL) { + pxmitbuf = rtw_alloc_xmitbuf(pxmitpriv); + if (!pxmitbuf) { return _FALSE; - } - } - + } + } do - { + { pxmitframe = rtw_dequeue_xframe(pxmitpriv, phwxmits, hwentry); - - if(pxmitframe) - { - pxmitframe->pxmitbuf = pxmitbuf; + + if (pxmitframe) { + pxmitframe->pxmitbuf = pxmitbuf; pxmitframe->buf_addr = pxmitbuf->pbuf; - pxmitbuf->priv_data = pxmitframe; + pxmitbuf->priv_data = pxmitframe; - if((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) - { - if(pxmitframe->attrib.priority<=15)//TID0~15 - { + if ((pxmitframe->frame_tag&0x0f) == DATA_FRAMETAG) { + if (pxmitframe->attrib.priority<=15) { //TID0~15 res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); - } + } //RTW_INFO("==> pxmitframe->attrib.priority:%d\n",pxmitframe->attrib.priority); - rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce + rtw_os_xmit_complete(padapter, pxmitframe);//always return ndis_packet after rtw_xmitframe_coalesce } - RT_TRACE(_module_rtl871x_xmit_c_,_drv_info_,("xmitframe_complete(): rtw_dump_xframe\n")); - - if(res == _SUCCESS) - { - rtw_dump_xframe(padapter, pxmitframe); - } - else - { + if (res == _SUCCESS) { + rtw_dump_xframe(padapter, pxmitframe); + } else { rtw_free_xmitbuf(pxmitpriv, pxmitbuf); - rtw_free_xmitframe(pxmitpriv, pxmitframe); + rtw_free_xmitframe(pxmitpriv, pxmitframe); } - + xcnt++; - - } - else - { + + } else { rtw_free_xmitbuf(pxmitpriv, pxmitbuf); return _FALSE; } break; - - }while(0/*xcnt < (NR_XMITFRAME >> 3)*/); + + } while (0/*xcnt < (NR_XMITFRAME >> 3)*/); return _TRUE; - + } #endif - - static s32 xmitframe_direct(_adapter *padapter, struct xmit_frame *pxmitframe) { s32 res = _SUCCESS; @@ -915,8 +876,7 @@ static s32 xmitframe_direct(_adapter *padapter, struct xmit_frame *pxmitframe) res = rtw_xmitframe_coalesce(padapter, pxmitframe->pkt, pxmitframe); if (res == _SUCCESS) { rtw_dump_xframe(padapter, pxmitframe); - } - else{ + } else { RTW_INFO("==> %s xmitframe_coalsece failed\n",__FUNCTION__); } @@ -940,8 +900,7 @@ static s32 pre_xmitframe(_adapter *padapter, struct xmit_frame *pxmitframe) _enter_critical_bh(&pxmitpriv->lock, &irqL); - if (rtw_txframes_sta_ac_pending(padapter, pattrib) > 0) - { + if (rtw_txframes_sta_ac_pending(padapter, pattrib) > 0) { //RTW_INFO("enqueue AC(%d)\n",pattrib->priority); goto enqueue; } @@ -1003,59 +962,54 @@ s32 rtl8814au_hal_xmitframe_enqueue(_adapter *padapter, struct xmit_frame *pxmi { struct xmit_priv *pxmitpriv = &padapter->xmitpriv; s32 err; - - if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS) - { + + if ((err=rtw_xmitframe_enqueue(padapter, pxmitframe)) != _SUCCESS) { rtw_free_xmitframe(pxmitpriv, pxmitframe); - pxmitpriv->tx_drop++; - } - else - { + pxmitpriv->tx_drop++; + } else { #ifdef PLATFORM_LINUX tasklet_hi_schedule(&pxmitpriv->xmit_tasklet); #endif } - + return err; - -} +} #ifdef CONFIG_HOSTAPD_MLME static void rtl8814au_hostap_mgnt_xmit_cb(struct urb *urb) -{ +{ #ifdef PLATFORM_LINUX struct sk_buff *skb = (struct sk_buff *)urb->context; //RTW_INFO("%s\n", __FUNCTION__); rtw_skb_free(skb); -#endif +#endif } s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) { #ifdef PLATFORM_LINUX u16 fc; - int rc, len, pipe; + int rc, len, pipe; unsigned int bmcst, tid, qsel; struct sk_buff *skb, *pxmit_skb; struct urb *urb; unsigned char *pxmitbuf; struct tx_desc *ptxdesc; struct rtw_ieee80211_hdr *tx_hdr; - struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; + struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; struct net_device *pnetdev = padapter->pnetdev; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); - struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); + struct dvobj_priv *pdvobj = adapter_to_dvobj(padapter); - //RTW_INFO("%s\n", __FUNCTION__); skb = pkt; - + len = skb->len; tx_hdr = (struct rtw_ieee80211_hdr *)(skb->data); fc = le16_to_cpu(tx_hdr->frame_ctl); @@ -1066,7 +1020,7 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) pxmit_skb = rtw_skb_alloc(len + TXDESC_SIZE); - if(!pxmit_skb) + if (!pxmit_skb) goto _exit; pxmitbuf = pxmit_skb->data; @@ -1076,42 +1030,39 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) goto _exit; } - // ----- fill tx desc ----- - ptxdesc = (struct tx_desc *)pxmitbuf; + // ----- fill tx desc ----- + ptxdesc = (struct tx_desc *)pxmitbuf; _rtw_memset(ptxdesc, 0, sizeof(*ptxdesc)); - - //offset 0 - ptxdesc->txdw0 |= cpu_to_le32(len&0x0000ffff); + + //offset 0 + ptxdesc->txdw0 |= cpu_to_le32(len&0x0000ffff); ptxdesc->txdw0 |= cpu_to_le32(((TXDESC_SIZE+OFFSET_SZ)<txdw0 |= cpu_to_le32(OWN | FSG | LSG); - if(bmcst) - { + if (bmcst) { ptxdesc->txdw0 |= cpu_to_le32(BIT(24)); - } + } - //offset 4 + //offset 4 ptxdesc->txdw1 |= cpu_to_le32(0x00);//MAC_ID ptxdesc->txdw1 |= cpu_to_le32((0x12<txdw1 |= cpu_to_le32((0x06<< 16) & 0x000f0000);//b mode - //offset 8 + //offset 8 - //offset 12 + //offset 12 ptxdesc->txdw3 |= cpu_to_le32((le16_to_cpu(tx_hdr->seq_ctl)<<16)&0xffff0000); - //offset 16 + //offset 16 ptxdesc->txdw4 |= cpu_to_le32(BIT(8));//driver uses rate - - //offset 20 + //offset 20 //HW append seq ptxdesc->txdw4 |= cpu_to_le32(BIT(7)); // Hw set sequence number ptxdesc->txdw3 |= cpu_to_le32((8 <<28)); //set bit3 to 1. Suugested by TimChen. 2009.12.29. - rtl8188eu_cal_txdesc_chksum(ptxdesc); // ----- end of fill tx desc ----- @@ -1123,16 +1074,15 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) //RTW_INFO("mgnt_xmit, len=%x\n", pxmit_skb->len); - // ----- prepare urb for submit ----- - + //translate DMA FIFO addr to pipehandle //pipe = ffaddr2pipehdl(pdvobj, MGT_QUEUE_INX); pipe = usb_sndbulkpipe(pdvobj->pusbdev, pHalData->Queue2EPNum[(u8)MGT_QUEUE_INX]&0x0f); - + usb_fill_bulk_urb(urb, pdvobj->pusbdev, pipe, pxmit_skb->data, pxmit_skb->len, rtl8192cu_hostap_mgnt_xmit_cb, pxmit_skb); - + urb->transfer_flags |= URB_ZERO_PACKET; usb_anchor_urb(urb, &phostapdpriv->anchored); rc = usb_submit_urb(urb, GFP_ATOMIC); @@ -1142,9 +1092,8 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) } usb_free_urb(urb); - -_exit: - +_exit: + rtw_skb_free(skb); #endif @@ -1153,4 +1102,3 @@ s32 rtl8814au_hostap_mgnt_xmit_entry(_adapter *padapter, _pkt *pkt) } #endif - diff --git a/hal/rtl8814a/usb/usb_halinit.c b/hal/rtl8814a/usb/usb_halinit.c index eadea8462..e9a5c6895 100644 --- a/hal/rtl8814a/usb/usb_halinit.c +++ b/hal/rtl8814a/usb/usb_halinit.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -28,14 +28,12 @@ #endif - static void _dbg_dump_macreg(_adapter *padapter) { u32 offset = 0; u32 val32 = 0; u32 index =0 ; - for(index=0;index<64;index++) - { + for (index=0;index<64;index++) { offset = index*4; val32 = rtw_read32(padapter,offset); RTW_INFO("offset : 0x%02x ,val:0x%08x\n",offset,val32); @@ -50,15 +48,14 @@ _ConfigChipOutEP_8814( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - pHalData->OutEpQueueSel = 0; pHalData->OutEpNumber = 0; - switch(NumOutPipe){ + switch (NumOutPipe) { case 4: pHalData->OutEpQueueSel=TX_SELE_HQ| TX_SELE_LQ|TX_SELE_NQ; pHalData->OutEpNumber=4; - break; + break; case 3: pHalData->OutEpQueueSel=TX_SELE_HQ| TX_SELE_LQ|TX_SELE_NQ; pHalData->OutEpNumber=3; @@ -71,9 +68,9 @@ _ConfigChipOutEP_8814( pHalData->OutEpQueueSel=TX_SELE_HQ; pHalData->OutEpNumber=1; break; - default: + default: break; - + } RTW_INFO("%s OutEpQueueSel(0x%02x), OutEpNumber(%d) \n",__FUNCTION__,pHalData->OutEpQueueSel,pHalData->OutEpNumber ); @@ -89,10 +86,10 @@ static BOOLEAN HalUsbSetQueuePipeMapping8814AUsb( BOOLEAN result = _FALSE; _ConfigChipOutEP_8814(pAdapter, NumOutPipe); - + // Normal chip with one IN and one OUT doesn't have interrupt IN EP. - if(1 == pHalData->OutEpNumber){ - if(1 != NumInPipe){ + if (1 == pHalData->OutEpNumber) { + if (1 != NumInPipe) { return result; } } @@ -103,7 +100,7 @@ static BOOLEAN HalUsbSetQueuePipeMapping8814AUsb( //} result = Hal_MappingOutPipe(pAdapter, NumOutPipe); - + return result; } @@ -114,17 +111,11 @@ void rtl8814au_interface_configure(_adapter *padapter) struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(padapter); if (IS_SUPER_SPEED_USB(padapter)) - { pHalData->UsbBulkOutSize = USB_SUPER_SPEED_BULK_SIZE;//1024 bytes - } else if (IS_HIGH_SPEED_USB(padapter)) - { pHalData->UsbBulkOutSize = USB_HIGH_SPEED_BULK_SIZE;//512 bytes - } else - { pHalData->UsbBulkOutSize = USB_FULL_SPEED_BULK_SIZE;//64 bytes - } pHalData->interfaceIndex = pdvobjpriv->InterfaceNumber; @@ -181,67 +172,56 @@ _InitBurstPktLen(IN PADAPTER Adapter) { u8 u1bTmp; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + //yx_qi 131128 move to 0x1448, 144c rtw_write32(Adapter, REG_FAST_EDCA_VOVI_SETTING_8814A, 0x08070807); //yx_qi 131128 rtw_write32(Adapter, REG_FAST_EDCA_BEBK_SETTING_8814A, 0x08070807); //yx_qi 131128 - + u1bTmp = rtw_read8(Adapter, 0xff); //check device operation speed: SS 0xff bit7 - - if(u1bTmp & BIT7) //USB2/1.1 Mode - { + + if (u1bTmp & BIT7) { //USB2/1.1 Mode pHalData->bSupportUSB3 = FALSE; - } - else //USB3 Mode - { + } else { //USB3 Mode pHalData->bSupportUSB3 = TRUE; } - - if(pHalData->bSupportUSB3 == _FALSE) //USB2/1.1 Mode - { - if(pHalData->UsbBulkOutSize == 512) - { + + if (pHalData->bSupportUSB3 == _FALSE) { //USB2/1.1 Mode + if (pHalData->UsbBulkOutSize == 512) { //set burst pkt len=512B rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x1e); - } - else - { + } else { //set burst pkt len=64B - rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x2e); + rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x2e); } rtw_write16(Adapter, REG_RXDMA_AGG_PG_TH_8814A,0x2005); //dmc agg th 20K - } - else //USB3 Mode - { + } else { //USB3 Mode //set burst pkt len=1k - rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x0e); + rtw_write8(Adapter, REG_RXDMA_MODE_8814A, 0x0e); rtw_write16(Adapter, REG_RXDMA_AGG_PG_TH_8814A,0x0a05); //dmc agg th 20K - + // set Reg 0xf008[3:4] to 2'00 to disable U1/U2 Mode to avoid 2.5G spur in USB3.0. added by page, 20120712 rtw_write8(Adapter, 0xf008, rtw_read8(Adapter, 0xf008)&0xE7); //to avoid usb 3.0 H2C fail rtw_write16(Adapter, 0xf002, 0); - + rtw_write8(Adapter, REG_SW_AMPDU_BURST_MODE_CTRL_8814A, rtw_read8(Adapter, REG_SW_AMPDU_BURST_MODE_CTRL_8814A) & ~BIT(6)); RTW_INFO("turn off the LDPC pre-TX\n"); - - } - if(pHalData->AMPDUBurstMode) - { + } + + if (pHalData->AMPDUBurstMode) { rtw_write8(Adapter,REG_SW_AMPDU_BURST_MODE_CTRL_8814A, 0x5F); } } - VOID _InitQueueReservedPage_8814AUsb( IN PADAPTER Adapter ) { struct registry_priv *pregistrypriv = &Adapter->registrypriv; - u16 txpktbuf_bndy; + u16 txpktbuf_bndy; RTW_INFO("===>_InitQueueReservedPage_8814AUsb()\n"); @@ -255,7 +235,7 @@ _InitQueueReservedPage_8814AUsb( rtw_write32(Adapter, REG_RQPN_CTRL_2_8814A, 0x80000000); - if(!pregistrypriv->wifi_spec) + if (!pregistrypriv->wifi_spec) txpktbuf_bndy = TX_PAGE_BOUNDARY_8814A; else // for WMM txpktbuf_bndy = WMM_NORMAL_TX_PAGE_BOUNDARY_8814A; @@ -269,11 +249,10 @@ _InitQueueReservedPage_8814AUsb( rtw_write16(Adapter,REG_FIFOPAGE_CTRL_2_8814A, txpktbuf_bndy); //The head page of packet of Bcnq1 rtw_write16(Adapter,REG_FIFOPAGE_CTRL_2_8814A+2,txpktbuf_bndy); - + RTW_INFO("<===_InitQueueReservedPage_8814AUsb()\n"); } - static u32 _InitPowerOn_8814AU(_adapter *padapter) { int status = _SUCCESS; @@ -283,10 +262,9 @@ static u32 _InitPowerOn_8814AU(_adapter *padapter) u8 u1btmp = rtw_read8(padapter, 0x10C2); rtw_write8(padapter, 0x10C2, (u1btmp | BIT1)); - if(!HalPwrSeqCmdParsing(padapter, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, Rtl8814A_NIC_ENABLE_FLOW)) + if (!HalPwrSeqCmdParsing(padapter, ~PWR_CUT_TESTCHIP_MSK, PWR_FAB_ALL_MSK, PWR_INTF_USB_MSK, Rtl8814A_NIC_ENABLE_FLOW)) return _FAIL; - // Enable MAC DMA/WMAC/SCHEDULE/SEC block // Set CR bit10 to enable 32k calibration. Suggested by SD1 Gimmy. Added by tynli. 2011.08.31. rtw_write16(padapter, REG_CR_8814A, 0x00); //suggseted by zhouzhou, by page, 20111230 @@ -299,10 +277,6 @@ static u32 _InitPowerOn_8814AU(_adapter *padapter) return status; } - - - - //--------------------------------------------------------------- // // MAC init functions @@ -335,11 +309,10 @@ _InitPageBoundary_8814AUsb( { //20130416 KaiYuan modified for 8814 HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + rtw_write16(Adapter, REG_RXFF_PTR_8814A, RX_DMA_BOUNDARY_8814A); //yx_qi 20140331 - -} +} static VOID _InitNormalChipRegPriority_8814AUsb( @@ -369,12 +342,11 @@ _InitNormalChipTwoOutEpPriority_8814AUsb( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct registry_priv *pregistrypriv = &Adapter->registrypriv; u16 beQ,bkQ,viQ,voQ,mgtQ,hiQ; - u16 valueHi = 0; u16 valueLow = 0; - - switch(pHalData->OutEpQueueSel) + + switch (pHalData->OutEpQueueSel) { case (TX_SELE_HQ | TX_SELE_LQ): valueHi = QUEUE_HIGH; @@ -390,27 +362,27 @@ _InitNormalChipTwoOutEpPriority_8814AUsb( break; default: valueHi = QUEUE_HIGH; - valueLow = QUEUE_NORMAL; + valueLow = QUEUE_NORMAL; break; } - if(!pregistrypriv->wifi_spec){ + if (!pregistrypriv->wifi_spec) { beQ = valueLow; bkQ = valueLow; viQ = valueHi; voQ = valueHi; - mgtQ = valueHi; - hiQ = valueHi; + mgtQ = valueHi; + hiQ = valueHi; } - else{//for WMM ,CONFIG_OUT_EP_WIFI_MODE + else { //for WMM ,CONFIG_OUT_EP_WIFI_MODE beQ = valueLow; bkQ = valueHi; viQ = valueHi; voQ = valueLow; mgtQ = valueHi; - hiQ = valueHi; + hiQ = valueHi; } - + _InitNormalChipRegPriority_8814AUsb(Adapter,beQ,bkQ,viQ,voQ,mgtQ,hiQ); } @@ -422,21 +394,20 @@ _InitNormalChipThreeOutEpPriority_8814AUsb( struct registry_priv *pregistrypriv = &Adapter->registrypriv; u16 beQ,bkQ,viQ,voQ,mgtQ,hiQ; - if(!pregistrypriv->wifi_spec){// typical setting + if (!pregistrypriv->wifi_spec) { // typical setting beQ = QUEUE_LOW; bkQ = QUEUE_LOW; viQ = QUEUE_NORMAL; voQ = QUEUE_HIGH; mgtQ = QUEUE_HIGH; - hiQ = QUEUE_HIGH; - } - else{// for WMM + hiQ = QUEUE_HIGH; + } else { // for WMM beQ = QUEUE_LOW; bkQ = QUEUE_NORMAL; viQ = QUEUE_NORMAL; voQ = QUEUE_HIGH; mgtQ = QUEUE_HIGH; - hiQ = QUEUE_HIGH; + hiQ = QUEUE_HIGH; } _InitNormalChipRegPriority_8814AUsb(Adapter,beQ,bkQ,viQ,voQ,mgtQ,hiQ); } @@ -448,7 +419,7 @@ _InitQueuePriority_8814AUsb( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - switch(pHalData->OutEpNumber) + switch (pHalData->OutEpNumber) { case 2: _InitNormalChipTwoOutEpPriority_8814AUsb(Adapter); @@ -463,8 +434,6 @@ _InitQueuePriority_8814AUsb( } } - - static VOID _InitHardwareDropIncorrectBulkOut_8814A( IN PADAPTER Adapter @@ -518,8 +487,8 @@ _InitWMACSetting_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); //pHalData->ReceiveConfig = AAP | APM | AM | AB | APP_ICV | ADF | AMF | APP_FCS | HTC_LOC_CTRL | APP_MIC | APP_PHYSTS; - pHalData->ReceiveConfig = - RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; + pHalData->ReceiveConfig = + RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; #if (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) pHalData->ReceiveConfig |= ACRC32; @@ -558,7 +527,7 @@ _InitWMACSetting_8814A( //rtw_write16(Adapter, REG_RXFLTMAP0, value16); //enable RX_SHIFT bits - //rtw_write8(Adapter, REG_TRXDMA_CTRL, rtw_read8(Adapter, REG_TRXDMA_CTRL)|BIT(1)); + //rtw_write8(Adapter, REG_TRXDMA_CTRL, rtw_read8(Adapter, REG_TRXDMA_CTRL)|BIT(1)); } */ @@ -572,21 +541,21 @@ _InitMacConfigure_8814A( u16 value16; u32 regRRSR; HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - + switch (Adapter->registrypriv.wireless_mode) { case WIRELESS_11B: regRRSR = RATE_ALL_CCK; break; - + case WIRELESS_11G: case WIRELESS_11A: case WIRELESS_11_5N: - case WIRELESS_11A_5N://Todo: no basic rate for ofdm ? + case WIRELESS_11A_5N: //Todo: no basic rate for ofdm ? case WIRELESS_11_5AC: regRRSR = RATE_ALL_OFDM_AG; break; - + case WIRELESS_11BG: case WIRELESS_11G_24N: case WIRELESS_11_24N: @@ -594,7 +563,7 @@ _InitMacConfigure_8814A( default: regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; break; - + } // Init value for RRSR. @@ -603,7 +572,7 @@ _InitMacConfigure_8814A( // Retry Limit value16 = _LRL(0x30) | _SRL(0x30); rtw_write16(Adapter, REG_RETRY_LIMIT_8814A, value16); - + pHalData->ReceiveConfig = RCR_APM | RCR_AM | RCR_AB |RCR_CBSSID_DATA| RCR_CBSSID_BCN| RCR_APP_ICV | RCR_AMF | RCR_HTC_LOC_CTRL | RCR_APP_MIC | RCR_APP_PHYST_RXFF; pHalData->ReceiveConfig |= FORCEACK; #if (1 == RTL8812A_RX_PACKET_INCLUDE_CRC) @@ -627,8 +596,8 @@ _InitMacConfigure_8814A( // 201409/25 MH When RA is enabled, we need to reduce the value. rtw_write8(Adapter, REG_MAX_AGGR_NUM_8814A, 0x36); - rtw_write8(Adapter, REG_RTS_MAX_AGGR_NUM_8814A,0x36); - + rtw_write8(Adapter, REG_RTS_MAX_AGGR_NUM_8814A,0x36); + } /* @@ -662,7 +631,7 @@ _InitAdaptiveCtrl_8812AUsb( // Retry Limit value16 = _LRL(0x30) | _SRL(0x30); rtw_write16(Adapter, REG_RL, value16); - + }*/ static VOID @@ -675,7 +644,7 @@ _InitEDCA_8814AUsb( rtw_write16(Adapter,REG_MAC_SPEC_SIFS, 0x100a); // Set SIFS for CCK - rtw_write16(Adapter,REG_SIFS_CTX, 0x100a); + rtw_write16(Adapter,REG_SIFS_CTX, 0x100a); // Set SIFS for OFDM rtw_write16(Adapter,REG_SIFS_TRX, 0x100a); @@ -691,7 +660,6 @@ _InitEDCA_8814AUsb( //rtw_write8(Adapter, REG_USTIME_EDCA, 0x50); } - static VOID _InitBeaconMaxError_8814A( IN PADAPTER Adapter, @@ -699,23 +667,22 @@ _InitBeaconMaxError_8814A( ) { #ifdef CONFIG_ADHOC_WORKAROUND_SETTING - rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); + rtw_write8(Adapter, REG_BCN_MAX_ERR, 0xFF); #else - //rtw_write8(Adapter, REG_BCN_MAX_ERR, (InfraMode ? 0xFF : 0x10)); + //rtw_write8(Adapter, REG_BCN_MAX_ERR, (InfraMode ? 0xFF : 0x10)); #endif } - #ifdef CONFIG_LED static void _InitHWLed(PADAPTER Adapter) { struct led_priv *pledpriv = &(Adapter->ledpriv); - - if( pledpriv->LedStrategy != HW_LED) + + if ( pledpriv->LedStrategy != HW_LED) return; - + // HW led control -// to do .... +// to do .... //must consider cases of antenna diversity/ commbo card/solo card/mini card } @@ -738,7 +705,7 @@ _InitRetryFunction_8814A( ) { u8 value8; - + value8 = rtw_read8(Adapter, REG_FWHW_TXQ_CTRL); value8 |= EN_AMPDU_RTY_NEW; rtw_write8(Adapter, REG_FWHW_TXQ_CTRL, value8); @@ -751,7 +718,7 @@ _InitRetryFunction_8814A( /*----------------------------------------------------------------------------- * Function: usb_AggSettingTxUpdate() * - * Overview: Seperate TX/RX parameters update independent for TP detection and + * Overview: Seperate TX/RX parameters update independent for TP detection and * dynamic TX/RX aggreagtion parameters update. * * Input: PADAPTER @@ -772,26 +739,25 @@ usb_AggSettingTxUpdate_8814A( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u32 value32; - if(Adapter->registrypriv.wifi_spec) + if (Adapter->registrypriv.wifi_spec) pHalData->UsbTxAggDescNum = 1; - if(pHalData->UsbTxAggMode){ + if (pHalData->UsbTxAggMode){ value32 = rtw_read32(Adapter, REG_TDECTRL); value32 = value32 & ~(BLK_DESC_NUM_MASK << BLK_DESC_NUM_SHIFT); value32 |= ((pHalData->UsbTxAggDescNum & BLK_DESC_NUM_MASK) << BLK_DESC_NUM_SHIFT); - + rtw_write32(Adapter, REG_TDECTRL, value32); rtw_write8(Adapter, REG_TDECTRL+3, pHalData->UsbTxAggDescNum<<1); } - + #endif //CONFIG_USB_TX_AGGREGATION } // usb_AggSettingTxUpdate - /*----------------------------------------------------------------------------- * Function: usb_AggSettingRxUpdate() * - * Overview: Seperate TX/RX parameters update independent for TP detection and + * Overview: Seperate TX/RX parameters update independent for TP detection and * dynamic TX/RX aggreagtion parameters update. * * Input: PADAPTER @@ -815,7 +781,7 @@ usb_AggSettingRxUpdate_8814A( valueDMA = rtw_read8(Adapter, REG_TRXDMA_CTRL_8814A); valueUSB = rtw_read8(Adapter, REG_RXDMA_AGG_PG_TH_8814A+3); - switch(pHalData->rxagg_mode) + switch (pHalData->rxagg_mode) { case RX_AGG_DMA: valueDMA |= RXDMA_AGG_EN; @@ -875,7 +841,7 @@ init_UsbAggregationSetting_8814A( * * Revised History: * When Who Remark - * 12/10/2010 MHC Create Version 0. + * 12/10/2010 MHC Create Version 0. * *---------------------------------------------------------------------------*/ VOID @@ -888,39 +854,33 @@ USB_AggModeSwitch( PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); //pHalData->UsbRxHighSpeedMode = _FALSE; - // How to measure the RX speed? We assume that when traffic is more than + // How to measure the RX speed? We assume that when traffic is more than if (pMgntInfo->bRegAggDMEnable == _FALSE) { return; // Inf not support. } - - - if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _TRUE && + + if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _TRUE && pHalData->UsbRxHighSpeedMode == _FALSE) { pHalData->UsbRxHighSpeedMode = _TRUE; RT_TRACE(COMP_INIT, DBG_LOUD, ("UsbAggModeSwitchCheck to HIGH\n")); } - else if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _FALSE && + else if (pMgntInfo->LinkDetectInfo.bHigherBusyRxTraffic == _FALSE && pHalData->UsbRxHighSpeedMode == _TRUE) { pHalData->UsbRxHighSpeedMode = _FALSE; RT_TRACE(COMP_INIT, DBG_LOUD, ("UsbAggModeSwitchCheck to LOW\n")); + } else { + return; } - else - { - return; - } - #if USB_RX_AGGREGATION_92C - if (pHalData->UsbRxHighSpeedMode == _TRUE) - { + if (pHalData->UsbRxHighSpeedMode == _TRUE) { // 2010/12/10 MH The parameter is tested by SD1 engineer and SD3 channel emulator. // USB mode #if (RT_PLATFORM == PLATFORM_LINUX) - if (pMgntInfo->LinkDetectInfo.bTxBusyTraffic) - { + if (pMgntInfo->LinkDetectInfo.bTxBusyTraffic) { pHalData->RxAggBlockCount = 16; pHalData->RxAggBlockTimeout = 7; } @@ -932,23 +892,20 @@ USB_AggModeSwitch( } // Mix mode pHalData->RxAggPageCount = 72; - pHalData->RxAggPageTimeout = 6; - } - else - { + pHalData->RxAggPageTimeout = 6; + } else { // USB mode pHalData->RxAggBlockCount = pMgntInfo->RegRxAggBlockCount; - pHalData->RxAggBlockTimeout = pMgntInfo->RegRxAggBlockTimeout; + pHalData->RxAggBlockTimeout = pMgntInfo->RegRxAggBlockTimeout; // Mix mode pHalData->RxAggPageCount = pMgntInfo->RegRxAggPageCount; - pHalData->RxAggPageTimeout = pMgntInfo->RegRxAggPageTimeout; + pHalData->RxAggPageTimeout = pMgntInfo->RegRxAggPageTimeout; } if (pHalData->RxAggBlockCount > MAX_RX_AGG_BLKCNT) pHalData->RxAggBlockCount = MAX_RX_AGG_BLKCNT; #if (OS_WIN_FROM_VISTA(OS_VERSION)) || (RT_PLATFORM == PLATFORM_LINUX) // do not support WINXP to prevent usbehci.sys BSOD - if (IS_WIRELESS_MODE_N_24G(Adapter) || IS_WIRELESS_MODE_N_5G(Adapter)) - { + if (IS_WIRELESS_MODE_N_24G(Adapter) || IS_WIRELESS_MODE_N_5G(Adapter)) { // // 2010/12/24 MH According to V1012 QC IOT test, XP BSOD happen when running chariot test // with the aggregation dynamic change!! We need to disable the function to prevent it is broken @@ -957,12 +914,12 @@ USB_AggModeSwitch( usb_AggSettingRxUpdate_8188E(Adapter); // 2010/12/27 MH According to designer's suggstion, we can only modify Timeout value. Otheriwse - // there might many HW incorrect behavior, the XP BSOD at usbehci.sys may be relative to the + // there might many HW incorrect behavior, the XP BSOD at usbehci.sys may be relative to the // issue. Base on the newest test, we can not enable block cnt > 30, otherwise XP usbehci.sys may // BSOD. } #endif - + #endif #endif } // USB_AggModeSwitch @@ -977,12 +934,11 @@ _InitOperationMode_8814A( u8 regBwOpMode = 0; u32 regRATR = 0, regRRSR = 0; - //1 This part need to modified according to the rate set we filtered!! // // Set RRSR, RATR, and REG_BWOPMODE registers // - switch(Adapter->RegWirelessMode) + switch (Adapter->RegWirelessMode) { case WIRELESS_MODE_B: regBwOpMode = BW_OPMODE_20MHZ; @@ -1000,14 +956,11 @@ _InitOperationMode_8814A( regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; break; case WIRELESS_MODE_AUTO: - if (Adapter->bInHctTest) - { + if (Adapter->bInHctTest) { regBwOpMode = BW_OPMODE_20MHZ; regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; - } - else - { + } else { regBwOpMode = BW_OPMODE_20MHZ; regRATR = RATE_ALL_CCK | RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; regRRSR = RATE_ALL_CCK | RATE_ALL_OFDM_AG; @@ -1025,7 +978,7 @@ _InitOperationMode_8814A( regRATR = RATE_ALL_OFDM_AG | RATE_ALL_OFDM_1SS | RATE_ALL_OFDM_2SS; regRRSR = RATE_ALL_OFDM_AG; break; - + default: //for MacOSX compiler warning. break; } @@ -1064,20 +1017,19 @@ static VOID _RfPowerSave( return; #endif - if(pMgntInfo->RegRfOff == _TRUE){ // User disable RF via registry. + if (pMgntInfo->RegRfOff == _TRUE) { // User disable RF via registry. RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): Turn off RF for RegRfOff.\n")); MgntActSet_RF_State(Adapter, eRfOff, RF_CHANGE_BY_SW); // Those action will be discard in MgntActSet_RF_State because off the same state for(eRFPath = 0; eRFPath NumTotalRFPath; eRFPath++) PHY_SetRFReg(Adapter, eRFPath, 0x4, 0xC00, 0x0); } - else if(pMgntInfo->RfOffReason > RF_CHANGE_BY_PS){ // H/W or S/W RF OFF before sleep. + else if (pMgntInfo->RfOffReason > RF_CHANGE_BY_PS) { // H/W or S/W RF OFF before sleep. RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): Turn off RF for RfOffReason(%ld).\n", pMgntInfo->RfOffReason)); MgntActSet_RF_State(Adapter, eRfOff, pMgntInfo->RfOffReason); - } - else{ + } else { pHalData->eRFPowerState = eRfOn; - pMgntInfo->RfOffReason = 0; + pMgntInfo->RfOffReason = 0; if(Adapter->bInSetPower || Adapter->bResetInProgress) PlatformUsbEnableInPipes(Adapter); RT_TRACE((COMP_INIT|COMP_RF), DBG_LOUD, ("InitializeAdapter8192CUsb(): RF is on.\n")); @@ -1087,7 +1039,7 @@ static VOID _RfPowerSave( */ enum { Antenna_Lfet = 1, - Antenna_Right = 2, + Antenna_Right = 2, }; static VOID @@ -1096,21 +1048,21 @@ _InitAntenna_Selection_8814A(IN PADAPTER Adapter) HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if(pHalData->AntDivCfg==0) + if (pHalData->AntDivCfg==0) return; -/* - RTW_INFO("==> %s ....\n",__FUNCTION__); +/* + RTW_INFO("==> %s ....\n",__FUNCTION__); rtw_write8(Adapter, REG_LEDCFG2, 0x82); PHY_SetBBReg(Adapter, rFPGA0_XAB_RFParameter, BIT13, 0x01); - + if(PHY_QueryBBReg(Adapter, rFPGA0_XA_RFInterfaceOE, 0x300) == MAIN_ANT) pHalData->CurAntenna = MAIN_ANT; else pHalData->CurAntenna = AUX_ANT; RTW_INFO("%s,Cur_ant:(%x)%s\n",__FUNCTION__,pHalData->CurAntenna,(pHalData->CurAntenna == MAIN_ANT)?"MAIN_ANT":"AUX_ANT"); - + */ } @@ -1129,28 +1081,24 @@ HalDetectSelectiveSuspendMode( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct dvobj_priv *pdvobjpriv = adapter_to_dvobj(Adapter); - // If support HW radio detect, we need to enable WOL ability, otherwise, we + // If support HW radio detect, we need to enable WOL ability, otherwise, we // can not use FW to notify host the power state switch. - + EFUSE_ShadowRead(Adapter, 1, EEPROM_USB_OPTIONAL1, (u32 *)&tmpvalue); DBG_8192C("HalDetectSelectiveSuspendMode(): SS "); - if(tmpvalue & BIT1) - { + if (tmpvalue & BIT1) { DBG_8192C("Enable\n"); - } - else - { + } else { DBG_8192C("Disable\n"); pdvobjpriv->RegUsbSS = _FALSE; } // 2010/09/01 MH According to Dongle Selective Suspend INF. We can switch SS mode. - if (pdvobjpriv->RegUsbSS && !SUPPORT_HW_RADIO_DETECT(pHalData)) - { + if (pdvobjpriv->RegUsbSS && !SUPPORT_HW_RADIO_DETECT(pHalData)) { //PMGNT_INFO pMgntInfo = &(Adapter->MgntInfo); - //if (!pMgntInfo->bRegDongleSS) + //if (!pMgntInfo->bRegDongleSS) //{ // RT_TRACE(COMP_INIT, DBG_LOUD, ("Dongle disable SS\n")); pdvobjpriv->RegUsbSS = _FALSE; @@ -1176,18 +1124,16 @@ void _ps_close_RF(_adapter *padapter){ //phy_SsPwrSwitch92CU(padapter, rf_off, 1); } - /* A lightweight deinit function */ static void rtl8814au_hw_reset(_adapter *Adapter) { #if 0 u8 reg_val=0; - if(rtw_read8(Adapter, REG_MCUFWDL)&BIT7) - { - _8051Reset8812(Adapter); + if (rtw_read8(Adapter, REG_MCUFWDL)&BIT7) { + _8051Reset8812(Adapter); rtw_write8(Adapter, REG_MCUFWDL, 0x00); //before BB reset should do clock gated - rtw_write32(Adapter, rFPGA0_XCD_RFPara, + rtw_write32(Adapter, rFPGA0_XCD_RFPara, rtw_read32(Adapter, rFPGA0_XCD_RFPara)|(BIT6)); //reset BB reg_val = rtw_read8(Adapter, REG_SYS_FUNC_EN); @@ -1198,16 +1144,16 @@ static void rtl8814au_hw_reset(_adapter *Adapter) //reset TRX path rtw_write16(Adapter, REG_CR, 0); //reset MAC - reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); + reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); reg_val |= BIT(1); reg_val = rtw_write8(Adapter, REG_APS_FSMCO+1, reg_val); //reg0x5[1] ,auto FSM off reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); - + //check if reg0x5[1] auto cleared - while(reg_val & BIT(1)){ + while (reg_val & BIT(1)) { rtw_udelay_os(1); - reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); + reg_val = rtw_read8(Adapter, REG_APS_FSMCO+1); } reg_val |= BIT(0); reg_val = rtw_write8(Adapter, REG_APS_FSMCO+1, reg_val); //reg0x5[0] ,auto FSM on @@ -1237,7 +1183,6 @@ u32 rtl8814au_hal_init(PADAPTER Adapter) u32 init_start_time = rtw_get_current_time(); - #ifdef DBG_HAL_INIT_PROFILING enum HAL_INIT_STAGES { @@ -1299,7 +1244,7 @@ u32 rtl8814au_hal_init(PADAPTER Adapter) int hal_init_profiling_i; u32 hal_init_stages_timestamp[HAL_INIT_STAGES_NUM]; //used to record the time of each stage's starting point - for(hal_init_profiling_i=0;hal_init_profiling_ibkeepfwalive) - { + if (pwrctrlpriv->bkeepfwalive) { _ps_open_RF(Adapter); - if(pHalData->bIQKInitialized){ + if (pHalData->bIQKInitialized) { //PHY_IQCalibrate_8812A(Adapter,_TRUE); - } - else - { + } else { //PHY_IQCalibrate_8812A(Adapter,_FALSE); //pHalData->bIQKInitialized = _TRUE; } @@ -1328,16 +1270,13 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); } // Check if MAC has already power on. by tynli. 2011.05.27. - value8 = rtw_read8(Adapter, REG_SYS_CLKR+1); + value8 = rtw_read8(Adapter, REG_SYS_CLKR+1); u1bRegCR = rtw_read8(Adapter, REG_CR); RTW_INFO(" power-on :REG_SYS_CLKR 0x09=0x%02x. REG_CR 0x100=0x%02x.\n", value8, u1bRegCR); - if((value8&BIT3) && (u1bRegCR != 0 && u1bRegCR != 0xEA)) - { + if ((value8&BIT3) && (u1bRegCR != 0 && u1bRegCR != 0xEA)) { //pHalData->bMACFuncEnable = _TRUE; RTW_INFO(" MAC has already power on.\n"); - } - else - { + } else { //pHalData->bMACFuncEnable = _FALSE; // Set FwPSState to ALL_ON mode to prevent from the I/O be return because of 32k // state which is set before sleep under wowlan mode. 2012.01.04. by tynli. @@ -1359,25 +1298,23 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BEGIN); }*/ /* - If HW didn't go through a complete de-initial procedure, + If HW didn't go through a complete de-initial procedure, it probably occurs some problem for double initial procedure. Like "CONFIG_DEINIT_BEFORE_INIT" in 92du chip */ rtl8814au_hw_reset(Adapter); //todo - - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PW_ON); status = _InitPowerOn_8814AU(Adapter); - if(status == _FAIL){ + if (status == _FAIL) { RTW_INFO("Failed to init power on!\n"); goto exit; } HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_LLTT); - + status = InitLLTTable8814A(Adapter); - if(status == _FAIL){ + if (status == _FAIL) { RTW_INFO("Failed to init LLT table\n"); goto exit; } @@ -1404,8 +1341,8 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_DOWNLOAD_FW); } InitializeFirmwareVars8814(Adapter); - - if(pwrctrlpriv->reg_rfoff == _TRUE){ + + if (pwrctrlpriv->reg_rfoff == _TRUE) { pwrctrlpriv->rf_pwrstate = rf_off; } @@ -1422,16 +1359,15 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_DOWNLOAD_FW); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MAC); #if (HAL_MAC_ENABLE == 1) status = PHY_MACConfig8814(Adapter); - if(status == _FAIL) - { + if (status == _FAIL) { goto exit; } #endif //HAL_MAC_ENABLE - + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC01); - + _InitQueuePriority_8814AUsb(Adapter); - _InitPageBoundary_8814AUsb(Adapter); + _InitPageBoundary_8814AUsb(Adapter); _InitTransferPageSize_8814AUsb(Adapter); @@ -1440,8 +1376,8 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); _InitDriverInfoSize_8814A(Adapter, DRVINFO_SZ); _InitInterrupt_8814AU(Adapter); - _InitID_8814A(Adapter);//set mac_address - _InitNetworkType_8814A(Adapter);//set msr + _InitID_8814A(Adapter); //set mac_address + _InitNetworkType_8814A(Adapter); //set msr _InitMacConfigure_8814A(Adapter); //_InitWMACSetting_8814A(Adapter); //_InitAdaptiveCtrl_8814AUsb(Adapter); @@ -1457,7 +1393,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); // // Init CR MACTXEN, MACRXEN after setting RxFF boundary REG_TRXFF_BNDY to patch - // Hw bug which Hw initials RxFF boundry size to a value which is larger than the real Rx buffer size in 88E. + // Hw bug which Hw initials RxFF boundry size to a value which is larger than the real Rx buffer size in 88E. // 2011.08.05. by tynli. // value8 = rtw_read8(Adapter, REG_CR); @@ -1478,7 +1414,6 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); rtw_write16(Adapter, REG_PKT_BE_BK_LIFE_TIME, 0x3000); // unit: 256us. 3s #endif // CONFIG_TX_MCAST2UNI #endif // CONFIG_CONCURRENT_MODE || CONFIG_TX_MCAST2UNI - #ifdef CONFIG_LED _InitHWLed(Adapter); @@ -1491,8 +1426,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC02); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BB); #if (HAL_BB_ENABLE == 1) status = PHY_BBConfig8814(Adapter); - if(status == _FAIL) - { + if (status == _FAIL) { goto exit; } #endif //HAL_BB_ENABLE @@ -1502,9 +1436,8 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BB); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_RF); #if (HAL_RF_ENABLE == 1) - status = PHY_RFConfig8814A(Adapter); - if(status == _FAIL) - { + status = PHY_RFConfig8814A(Adapter); + if (status == _FAIL) { goto exit; } @@ -1515,12 +1448,12 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_RF); PHY_ConfigBB_8814A(Adapter); - if(Adapter->registrypriv.channel <= 14) + if (Adapter->registrypriv.channel <= 14) PHY_SwitchWirelessBand8814A(Adapter, BAND_ON_2_4G); else PHY_SwitchWirelessBand8814A(Adapter, BAND_ON_5G); - rtw_hal_set_chnl_bw(Adapter, Adapter->registrypriv.channel, + rtw_hal_set_chnl_bw(Adapter, Adapter->registrypriv.channel, CHANNEL_WIDTH_20, HAL_PRIME_CHNL_OFFSET_DONT_CARE, HAL_PRIME_CHNL_OFFSET_DONT_CARE); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_TURN_ON_BLOCK); @@ -1533,9 +1466,9 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); // HW SEQ CTRL //set 0x0 to 0xFF by tynli. Default enable HW SEQ NUM. - rtw_write8(Adapter,REG_HWSEQ_CTRL, 0xFF); - - // + rtw_write8(Adapter,REG_HWSEQ_CTRL, 0xFF); + + // // Disable BAR, suggested by Scott // 2010.04.09 add by hpfan // @@ -1543,7 +1476,7 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); rtw_write8(Adapter,REG_SECONDARY_CCA_CTRL_8814A,0x03); - if(pregistrypriv->wifi_spec) + if (pregistrypriv->wifi_spec) rtw_write16(Adapter,REG_FAST_EDCA_CTRL ,0); //adjust EDCCA to avoid collision /*if(pregistrypriv->wifi_spec) @@ -1555,21 +1488,21 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC11); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); rtl8814_InitHalDm(Adapter); - + // // 2010/08/11 MH Merge from 8192SE for Minicard init. We need to confirm current radio status - // and then decide to enable RF or not.!!!??? For Selective suspend mode. We may not + // and then decide to enable RF or not.!!!??? For Selective suspend mode. We may not // call init_adapter. May cause some problem?? // - // Fix the bug that Hw/Sw radio off before S3/S4, the RF off action will not be executed - // in MgntActSet_RF_State() after wake up, because the value of pHalData->eRFPowerState + // Fix the bug that Hw/Sw radio off before S3/S4, the RF off action will not be executed + // in MgntActSet_RF_State() after wake up, because the value of pHalData->eRFPowerState // is the same as eRfOff, we should change it to eRfOn after we config RF parameters. // Added by tynli. 2010.03.30. pwrctrlpriv->rf_pwrstate = rf_on; PHY_IQCalibrate_8814A_Init(&pHalData->odmpriv); -#if (HAL_BB_ENABLE == 1) +#if (HAL_BB_ENABLE == 1) PHY_SetRFEReg8814A(Adapter, _TRUE, pHalData->CurrentBandType); #endif //HAL_BB_ENABLE @@ -1591,13 +1524,12 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_HAL_DM); // Reset USB mode switch setting rtw_write8(Adapter, REG_SDIO_CTRL_8814A, 0x0); rtw_write8(Adapter, REG_ACLK_MON, 0x0); - + //RT_TRACE(COMP_INIT, DBG_TRACE, ("InitializeAdapter8188EUsb() <====\n")); - + HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); // 2010/08/26 MH Merge from 8192CE. - if(pwrctrlpriv->rf_pwrstate == rf_on) - { + if (pwrctrlpriv->rf_pwrstate == rf_on) { /* if(IS_HARDWARE_TYPE_8812AU(Adapter)) { #if (RTL8812A_SUPPORT == 1) @@ -1614,23 +1546,19 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_IQK); //this should be done by rf team using phydm code //PHY_IQCalibrate_8814A(&pHalData->odmpriv, _FALSE); HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_PW_TRACK); - + //ODM_TXPowerTrackingCheck(&pHalData->odmpriv ); - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_LCK); //PHY_LCCalibrate_8812A(Adapter); } - HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC21); - //HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_INIT_PABIAS); // _InitPABias(Adapter); #if (MP_DRIVER == 1) - if (Adapter->registrypriv.mp_mode == 1) - { + if (Adapter->registrypriv.mp_mode == 1) { Adapter->mppriv.channel = pHalData->CurrentChannel; MPT_InitializeAdapter(Adapter, Adapter->mppriv.channel); } @@ -1643,13 +1571,10 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_BT_COEXIST); // suspend mode automatically. //HwSuspendModeEnable92Cu(Adapter, _FALSE); - if ( _TRUE == pHalData->EEPROMBluetoothCoexist) - { - // Init BT hw config. - rtw_btcoex_HAL_Initialize(Adapter, _FALSE); - } - else - { + if ( _TRUE == pHalData->EEPROMBluetoothCoexist) { + // Init BT hw config. + rtw_btcoex_HAL_Initialize(Adapter, _FALSE); + } else { // In combo card run wifi only , must setting some hardware reg. rtl8812a_combo_card_WifiOnlyHwInit(Adapter); } @@ -1666,18 +1591,18 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_MISC31); //misc { - int i; + int i; u8 mac_addr[6]; - for(i=0; i<6; i++) - { + for (i=0; i<6; i++) + { #ifdef CONFIG_CONCURRENT_MODE - if(Adapter->iface_type == IFACE_PORT1) + if (Adapter->iface_type == IFACE_PORT1) mac_addr[i] = rtw_read8(Adapter, REG_MACID1+i); else #endif - mac_addr[i] = rtw_read8(Adapter, REG_MACID+i); + mac_addr[i] = rtw_read8(Adapter, REG_MACID+i); } - + RTW_INFO("MAC Address from REG_MACID = "MAC_FMT"\n", MAC_ARG(mac_addr)); } @@ -1689,46 +1614,45 @@ HAL_INIT_PROFILE_TAG(HAL_INIT_STAGES_END); #ifdef DBG_HAL_INIT_PROFILING hal_init_stages_timestamp[HAL_INIT_STAGES_END]=rtw_get_current_time(); - for(hal_init_profiling_i=0;hal_init_profiling_ibFWReady = _FALSE; - + } static void rtl8814au_hw_power_down(_adapter *padapter) { // 2010/-8/09 MH For power down module, we need to enable register block contrl reg at 0x1c. // Then enable power down control bit of register 0x04 BIT4 and BIT15 as 1. - + // Enable register area 0x0-0xc. - rtw_write8(padapter,REG_RSV_CTRL, 0x0); + rtw_write8(padapter,REG_RSV_CTRL, 0x0); rtw_write16(padapter, REG_APS_FSMCO, 0x8812); } @@ -1739,8 +1663,7 @@ u32 rtl8814au_hal_deinit(PADAPTER Adapter) RTW_INFO("==> %s \n",__FUNCTION__); #ifdef CONFIG_BT_COEXIST - if (hal_btcoex_IsBtExist(Adapter)) - { + if (hal_btcoex_IsBtExist(Adapter)) { RTW_INFO("BT module enable SIC\n"); // Only under WIN7 we can support selective suspend and enter D3 state when system call halt adapter. @@ -1754,8 +1677,7 @@ u32 rtl8814au_hal_deinit(PADAPTER Adapter) rtw_write16(Adapter, REG_GPIO_MUXCFG, rtw_read16(Adapter, REG_GPIO_MUXCFG)&(~BIT12)); } - if(pHalData->bSupportUSB3 == _TRUE) - { + if (pHalData->bSupportUSB3 == _TRUE) { // set Reg 0xf008[3:4] to 2'11 to eable U1/U2 Mode in USB3.0. added by page, 20120712 rtw_write8(Adapter, 0xf008, rtw_read8(Adapter, 0xf008)|0x18); } @@ -1767,34 +1689,32 @@ u32 rtl8814au_hal_deinit(PADAPTER Adapter) #ifdef SUPPORT_HW_RFOFF_DETECTED RTW_INFO("bkeepfwalive(%x)\n", pwrctl->bkeepfwalive); - if(pwrctl->bkeepfwalive) - { - _ps_close_RF(Adapter); - if((pwrctl->bHWPwrPindetect) && (pwrctl->bHWPowerdown)) + if (pwrctl->bkeepfwalive) { + _ps_close_RF(Adapter); + if ((pwrctl->bHWPwrPindetect) && (pwrctl->bHWPowerdown)) rtl8814au_hw_power_down(Adapter); } else #endif - { + { if (rtw_is_hw_init_completed(Adapter)) { hal_carddisable_8814(Adapter); - if((pwrctl->bHWPwrPindetect ) && (pwrctl->bHWPowerdown)) + if ((pwrctl->bHWPwrPindetect ) && (pwrctl->bHWPowerdown)) rtl8814au_hw_power_down(Adapter); } - } + } return _SUCCESS; } - unsigned int rtl8814au_inirp_init(PADAPTER Adapter) -{ - u8 i; +{ + u8 i; struct recv_buf *precvbuf; uint status; struct dvobj_priv *pdev= adapter_to_dvobj(Adapter); struct intf_hdl * pintfhdl=&Adapter->iopriv.intf; - struct recv_priv *precvpriv = &(Adapter->recvpriv); + struct recv_priv *precvpriv = &(Adapter->recvpriv); u32 (*_read_port)(struct intf_hdl *pintfhdl, u32 addr, u32 cnt, u8 *pmem); #ifdef CONFIG_USB_INTERRUPT_IN_PIPE HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); @@ -1805,22 +1725,20 @@ unsigned int rtl8814au_inirp_init(PADAPTER Adapter) status = _SUCCESS; - RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("===> usb_inirp_init \n")); - + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("===> usb_inirp_init \n")); + precvpriv->ff_hwaddr = RECV_BULK_IN_ADDR; - //issue Rx irp to receive data - precvbuf = (struct recv_buf *)precvpriv->precv_buf; - for(i=0; iff_hwaddr, 0, (unsigned char *)precvbuf) == _FALSE ) - { + //issue Rx irp to receive data + precvbuf = (struct recv_buf *)precvpriv->precv_buf; + for (i=0; iff_hwaddr, 0, (unsigned char *)precvbuf) == _FALSE ) { RT_TRACE(_module_hci_hal_init_c_,_drv_err_,("usb_rx_init: usb_read_port error \n")); status = _FAIL; goto exit; } - - precvbuf++; + + precvbuf++; precvpriv->free_recv_buf_queue_cnt--; } @@ -1829,17 +1747,16 @@ unsigned int rtl8814au_inirp_init(PADAPTER Adapter) status = _FAIL; RTW_INFO("%s =>Warning !! Have not USB Int-IN pipe, RtIntInPipe(%d)!!!\n", __func__, pdev->RtInPipe[REALTEK_USB_IN_INT_EP_IDX]); goto exit; - } + } _read_interrupt = pintfhdl->io_ops._read_interrupt; - if(_read_interrupt(pintfhdl, RECV_INT_IN_ADDR) == _FALSE ) - { + if (_read_interrupt(pintfhdl, RECV_INT_IN_ADDR) == _FALSE ) { RT_TRACE(_module_hci_hal_init_c_,_drv_err_,("usb_rx_init: usb_read_interrupt error \n")); status = _FAIL; } #endif exit: - + RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("<=== usb_inirp_init \n")); return status; @@ -1847,9 +1764,9 @@ unsigned int rtl8814au_inirp_init(PADAPTER Adapter) } unsigned int rtl8814au_inirp_deinit(PADAPTER Adapter) -{ +{ RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("\n ===> usb_rx_deinit \n")); - + rtw_read_port_cancel(Adapter); RT_TRACE(_module_hci_hal_init_c_,_drv_info_,("\n <=== usb_rx_deinit \n")); @@ -1871,25 +1788,22 @@ hal_ReadIDs_8814AU( { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - if( !AutoloadFail ) - { + if ( !AutoloadFail ) { pHalData->EEPROMVID = EF2Byte( *(pu2Byte)&PROMContent[EEPROM_VID_8814AU] ); - pHalData->EEPROMPID = EF2Byte( *(pu2Byte)&PROMContent[EEPROM_PID_8814AU] ); - - // Customer ID, 0x00 and 0xff are reserved for Realtek. + pHalData->EEPROMPID = EF2Byte( *(pu2Byte)&PROMContent[EEPROM_PID_8814AU] ); + + // Customer ID, 0x00 and 0xff are reserved for Realtek. pHalData->EEPROMCustomerID = *(pu1Byte)&PROMContent[EEPROM_CustomID_8814]; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; - } - else - { + } else { pHalData->EEPROMVID = EEPROM_Default_VID; pHalData->EEPROMPID = EEPROM_Default_PID; - // Customer ID, 0x00 and 0xff are reserved for Realtek. + // Customer ID, 0x00 and 0xff are reserved for Realtek. pHalData->EEPROMCustomerID = EEPROM_Default_CustomerID; pHalData->EEPROMSubCustomerID = EEPROM_Default_SubCustomerID; } - + RTW_INFO("VID = 0x%04X, PID = 0x%04X\n", pHalData->EEPROMVID, pHalData->EEPROMPID); RTW_INFO("Customer ID: 0x%02X, SubCustomer ID: 0x%02X\n", pHalData->EEPROMCustomerID, pHalData->EEPROMSubCustomerID); } @@ -1904,18 +1818,15 @@ hal_InitPGData_8814A( u32 i; u16 value16; - if(_FALSE == pHalData->bautoload_fail_flag) - { // autoload OK. + if (_FALSE == pHalData->bautoload_fail_flag) { // autoload OK. // hal_ReadeFuse_8814A is FW offload read efuse, todo //#if ((DEV_BUS_TYPE==RT_USB_INTERFACE || DEV_BUS_TYPE==RT_SDIO_INTERFACE)) && (MP_DRIVER != 1) //if(hal_ReadeFuse_8814A(pAdapter) == _FAIL) //#endif - + // Read EFUSE real map to shadow. EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); - } - else - {//autoload fail + } else { //autoload fail RTW_INFO("AutoLoad Fail reported from CR9346!!\n"); //update to default value 0xFF EFUSE_ShadowMapUpdate(padapter, EFUSE_WIFI, _FALSE); @@ -1934,12 +1845,11 @@ hal_CustomizedBehavior_8814AU( IN PADAPTER Adapter ) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); struct led_priv *pledpriv = &(Adapter->ledpriv); - // Led mode - switch(pHalData->CustomerID) + switch (pHalData->CustomerID) { case RT_CID_DEFAULT: pledpriv->LedStrategy = SW_LED_MODE9; @@ -1958,48 +1868,48 @@ hal_CustomizeByCustomerID_8814AU( ) { HAL_DATA_TYPE *pHalData = GET_HAL_DATA(pAdapter); - + RTW_INFO("PID= 0x%x, VID= %x\n",pHalData->EEPROMPID,pHalData->EEPROMVID); - + // Decide CustomerID according to VID/DID or EEPROM - switch(pHalData->EEPROMCustomerID) + switch (pHalData->EEPROMCustomerID) { case EEPROM_CID_DEFAULT: - if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3308)) + if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3308)) pHalData->CustomerID = RT_CID_DLINK; - else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3309)) + else if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x3309)) pHalData->CustomerID = RT_CID_DLINK; - else if((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330a)) + else if ((pHalData->EEPROMVID == 0x2001) && (pHalData->EEPROMPID == 0x330a)) pHalData->CustomerID = RT_CID_DLINK; - else if((pHalData->EEPROMVID == 0x0BFF) && (pHalData->EEPROMPID == 0x8160)) + else if ((pHalData->EEPROMVID == 0x0BFF) && (pHalData->EEPROMPID == 0x8160)) { pHalData->CustomerID = RT_CID_CHINA_MOBILE; - } - else if((pHalData->EEPROMVID == 0x0BDA) && (pHalData->EEPROMPID == 0x5088)) + } + else if ((pHalData->EEPROMVID == 0x0BDA) && (pHalData->EEPROMPID == 0x5088)) pHalData->CustomerID = RT_CID_CC_C; - + break; case EEPROM_CID_WHQL: //padapter->bInHctTest = _TRUE; - + //pMgntInfo->bSupportTurboMode = _FALSE; //pMgntInfo->bAutoTurboBy8186 = _FALSE; - + //pMgntInfo->PowerSaveControl.bInactivePs = _FALSE; //pMgntInfo->PowerSaveControl.bIPSModeBackup = _FALSE; //pMgntInfo->PowerSaveControl.bLeisurePs = _FALSE; //pMgntInfo->PowerSaveControl.bLeisurePsModeBackup = _FALSE; //pMgntInfo->keepAliveLevel = 0; - + //padapter->bUnloadDriverwhenS3S4 = _FALSE; - break; + break; default: pHalData->CustomerID = RT_CID_DEFAULT; break; - + } RTW_INFO("Customer ID: 0x%2x\n", pHalData->CustomerID); - + hal_CustomizedBehavior_8814AU(pAdapter); } @@ -2010,21 +1920,18 @@ hal_ReadUsbModeSwitch_8814AU( IN BOOLEAN AutoloadFail ) { -#if 0 - if(AutoloadFail) - { - UsbModeSwitch_SetUsbModeMechOn(Adapter, _FALSE); - } + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + + if (AutoloadFail) + pHalData->EEPROMUsbSwitch = _FALSE; else - { - UsbModeSwitch_SetUsbModeMechOn(Adapter, ((PROMContent[8]&BIT1)>>1)); - } -#endif + /* check efuse 0x0E bit2 */ + pHalData->EEPROMUsbSwitch = (PROMContent[EEPROM_USB_MODE_8814A] & BIT1) >> 1; } static VOID ReadLEDSetting_8814AU( - IN PADAPTER Adapter, + IN PADAPTER Adapter, IN u8* PROMContent, IN BOOLEAN AutoloadFail ) @@ -2054,19 +1961,19 @@ InitAdapterVariablesByPROM_8814AU( hal_ReadTxPowerInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadBoardType8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_Read_TRX_antenna_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + // // Read Bluetooth co-exist and initialize // hal_EfuseParseBTCoexistInfo8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + hal_ReadChannelPlan8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_EfuseParseXtal_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadThermalMeter_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadRemoteWakeup_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadAntennaDiversity8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadRFEType_8814A(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); - + ReadLEDSetting_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); hal_ReadUsbModeSwitch_8814AU(Adapter, pHalData->efuse_eeprom_data, pHalData->bautoload_fail_flag); @@ -2080,7 +1987,7 @@ InitAdapterVariablesByPROM_8814AU( static void hal_ReadPROMContent_8814A( IN PADAPTER Adapter ) -{ +{ PHAL_DATA_TYPE pHalData = GET_HAL_DATA(Adapter); u8 eeValue; @@ -2103,7 +2010,7 @@ ReadAdapterInfo8814AU( ) { Hal_InitEfuseVars_8814A(Adapter); - + // Read all content in Efuse/EEPROM. hal_ReadPROMContent_8814A(Adapter); @@ -2118,21 +2025,21 @@ void UpdateInterruptMask8814AU(PADAPTER padapter,u8 bHIMR0 ,u32 AddMSR, u32 Remo u32 *himr; pHalData = GET_HAL_DATA(padapter); - if(bHIMR0) + if (bHIMR0) himr = &(pHalData->IntrMask[0]); else himr = &(pHalData->IntrMask[1]); - + if (AddMSR) *himr |= AddMSR; if (RemoveMSR) *himr &= (~RemoveMSR); - if(bHIMR0) + if (bHIMR0) rtw_write32(padapter, REG_HIMR0_8814A, *himr); else - rtw_write32(padapter, REG_HIMR1_8814A, *himr); + rtw_write32(padapter, REG_HIMR1_8814A, *himr); } @@ -2142,7 +2049,7 @@ void SetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(Adapter); struct registry_priv *registry_par = &Adapter->registrypriv; - switch(variable) + switch (variable) { case HW_VAR_RXDMA_AGG_PG_TH: #ifdef CONFIG_USB_RX_AGGREGATION @@ -2224,9 +2131,9 @@ void SetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) void GetHwReg8814AU(PADAPTER Adapter, u8 variable, u8* val) { - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); - switch(variable) + switch (variable) { default: GetHwReg8814A(Adapter,variable,val); @@ -2249,7 +2156,7 @@ SetHalDefVar8814AUsb( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 bResult = _SUCCESS; - switch(eVariable) + switch (eVariable) { default: SetHalDefVar8814A(Adapter,eVariable,pValue); @@ -2260,7 +2167,7 @@ SetHalDefVar8814AUsb( } // -// Description: +// Description: // Query setting of specified variable. // u8 @@ -2273,7 +2180,7 @@ GetHalDefVar8814AUsb( HAL_DATA_TYPE *pHalData = GET_HAL_DATA(Adapter); u8 bResult = _SUCCESS; - switch(eVariable) + switch (eVariable) { default: GetHalDefVar8814A(Adapter,eVariable,pValue); @@ -2341,9 +2248,9 @@ static void rtl8814au_init_default_value(_adapter * padapter) } static u8 rtl8814au_ps_func(PADAPTER Adapter,HAL_INTF_PS_FUNC efunc_id, u8 *val) -{ +{ u8 bResult = _TRUE; - switch(efunc_id){ + switch (efunc_id) { #if defined(CONFIG_AUTOSUSPEND) && defined(SUPPORT_HW_RFOFF_DETECTED) case HAL_USB_SELECT_SUSPEND: @@ -2366,7 +2273,7 @@ void rtl8814au_set_hal_ops(_adapter * padapter) pHalFunc->hal_power_on = _InitPowerOn_8814AU; pHalFunc->hal_power_off = hal_carddisable_8814; - + pHalFunc->hal_init = &rtl8814au_hal_init; pHalFunc->hal_deinit = &rtl8814au_hal_deinit; @@ -2384,12 +2291,12 @@ void rtl8814au_set_hal_ops(_adapter * padapter) #else //case of hw led or no led pHalFunc->InitSwLeds = NULL; pHalFunc->DeInitSwLeds = NULL; -#endif//CONFIG_SW_LED - +#endif //CONFIG_SW_LED + pHalFunc->init_default_value = &rtl8814au_init_default_value; pHalFunc->intf_chip_configure = &rtl8814au_interface_configure; pHalFunc->read_adapter_info = &ReadAdapterInfo8814AU; - + pHalFunc->SetHwRegHandler = &SetHwReg8814AU; pHalFunc->GetHwRegHandler = &GetHwReg8814AU; pHalFunc->GetHalDefVarHandler = &GetHalDefVar8814AUsb; @@ -2414,4 +2321,3 @@ void rtl8814au_set_hal_ops(_adapter * padapter) rtl8814_set_hal_ops(pHalFunc); } - diff --git a/hal/rtl8814a/usb/usb_ops_linux.c b/hal/rtl8814a/usb/usb_ops_linux.c index 59281f9e4..d2fea8714 100644 --- a/hal/rtl8814a/usb/usb_ops_linux.c +++ b/hal/rtl8814a/usb/usb_ops_linux.c @@ -1,7 +1,7 @@ /****************************************************************************** * * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * + * * This program is free software; you can redistribute it and/or modify it * under the terms of version 2 of the GNU General Public License as * published by the Free Software Foundation. @@ -24,17 +24,16 @@ #ifdef CONFIG_SUPPORT_USB_INT void interrupt_handler_8814au(_adapter *padapter,u16 pkt_len,u8 *pbuf) -{ +{ HAL_DATA_TYPE *pHalData=GET_HAL_DATA(padapter); struct reportpwrstate_parm pwr_rpt; - - if ( pkt_len != INTERRUPT_MSG_FORMAT_LEN ) - { + + if ( pkt_len != INTERRUPT_MSG_FORMAT_LEN ) { RTW_INFO("%s Invalid interrupt content length (%d)!\n", __FUNCTION__, pkt_len); return ; } - // HISR + // HISR _rtw_memcpy(&(pHalData->IntArray[0]), &(pbuf[USB_INTR_CONTENT_HISR_OFFSET]), 4); _rtw_memcpy(&(pHalData->IntArray[1]), &(pbuf[USB_INTR_CONTENT_HISRE_OFFSET]), 4); @@ -42,25 +41,24 @@ void interrupt_handler_8814au(_adapter *padapter,u16 pkt_len,u8 *pbuf) { u32 hisr=0 ,hisr_ex=0; _rtw_memcpy(&hisr,&(pHalData->IntArray[0]),4); - hisr = le32_to_cpu(hisr); - + hisr = le32_to_cpu(hisr); + _rtw_memcpy(&hisr_ex,&(pHalData->IntArray[1]),4); hisr_ex = le32_to_cpu(hisr_ex); - - if((hisr != 0) || (hisr_ex!=0)) + + if ((hisr != 0) || (hisr_ex!=0)) RTW_INFO("===> %s hisr:0x%08x ,hisr_ex:0x%08x \n",__FUNCTION__,hisr,hisr_ex); } #endif #ifdef CONFIG_LPS_LCLK - if( pHalData->IntArray[0] & IMR_CPWM_88E ) - { + if ( pHalData->IntArray[0] & IMR_CPWM_88E ) { _rtw_memcpy(&pwr_rpt.state, &(pbuf[USB_INTR_CONTENT_CPWM1_OFFSET]), 1); //_rtw_memcpy(&pwr_rpt.state2, &(pbuf[USB_INTR_CONTENT_CPWM2_OFFSET]), 1); - //88e's cpwm value only change BIT0, so driver need to add PS_STATE_S2 for LPS flow. - pwr_rpt.state |= PS_STATE_S2; + //88e's cpwm value only change BIT0, so driver need to add PS_STATE_S2 for LPS flow. + pwr_rpt.state |= PS_STATE_S2; _set_workitem(&(adapter_to_pwrctl(padapter)->cpwm_event)); } #endif//CONFIG_LPS_LCLK @@ -72,40 +70,38 @@ void interrupt_handler_8814au(_adapter *padapter,u16 pkt_len,u8 *pbuf) #endif #ifdef CONFIG_INTERRUPT_BASED_TXBCN_BCN_OK_ERR if (pHalData->IntArray[0] & (IMR_TBDER_88E|IMR_TBDOK_88E)) - #endif - { + #endif + { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; #if 0 - if(pHalData->IntArray[0] & IMR_BCNDMAINT0_88E) + if (pHalData->IntArray[0] & IMR_BCNDMAINT0_88E) RTW_INFO("%s: HISR_BCNERLY_INT\n", __func__); - if(pHalData->IntArray[0] & IMR_TBDOK_88E) + if (pHalData->IntArray[0] & IMR_TBDOK_88E) RTW_INFO("%s: HISR_TXBCNOK\n", __func__); - if(pHalData->IntArray[0] & IMR_TBDER_88E) + if (pHalData->IntArray[0] & IMR_TBDER_88E) RTW_INFO("%s: HISR_TXBCNERR\n", __func__); #endif - - if(check_fwstate(pmlmepriv, WIFI_AP_STATE)) - { + + if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { //send_beacon(padapter); - if(pmlmepriv->update_bcn == _TRUE) + if (pmlmepriv->update_bcn == _TRUE) { //tx_beacon_hdl(padapter, NULL); set_tx_beacon_cmd(padapter); } } #ifdef CONFIG_CONCURRENT_MODE - if(check_buddy_fwstate(padapter, WIFI_AP_STATE)) - { + if (check_buddy_fwstate(padapter, WIFI_AP_STATE)) { //send_beacon(padapter); - if(padapter->pbuddy_adapter->mlmepriv.update_bcn == _TRUE) + if (padapter->pbuddy_adapter->mlmepriv.update_bcn == _TRUE) { //tx_beacon_hdl(padapter, NULL); set_tx_beacon_cmd(padapter->pbuddy_adapter); } } #endif - + } #endif //CONFIG_INTERRUPT_BASED_TXBCN @@ -361,8 +357,9 @@ int recvbuf2recvframe(PADAPTER padapter, void *ptr) } #ifdef CONFIG_RX_PACKET_APPEND_FCS - if(pattrib->pkt_rpt_type == NORMAL_RX) - pattrib->pkt_len -= IEEE80211_FCS_LEN; + if (check_fwstate(&padapter->mlmepriv, WIFI_MONITOR_STATE) == _FALSE) + if ((pattrib->pkt_rpt_type == NORMAL_RX) && (pHalData->ReceiveConfig & RCR_APPFCS)) + pattrib->pkt_len -= IEEE80211_FCS_LEN; #endif if(rtw_os_alloc_recvframe(padapter, precvframe, (pbuf + pattrib->shift_sz + pattrib->drvinfo_sz + RXDESC_SIZE), pskb) == _FAIL) diff --git a/ifcfg-wlan0 b/ifcfg-wlan0 deleted file mode 100644 index 20dcbec2b..000000000 --- a/ifcfg-wlan0 +++ /dev/null @@ -1,4 +0,0 @@ -#DHCP client -DEVICE=wlan0 -BOOTPROTO=dhcp -ONBOOT=yes \ No newline at end of file diff --git a/include/autoconf.h b/include/autoconf.h index 2e1c61442..3c1713f19 100644 --- a/include/autoconf.h +++ b/include/autoconf.h @@ -309,7 +309,6 @@ #endif /* !CONFIG_BT_COEXIST */ - #ifdef CONFIG_USB_TX_AGGREGATION /* #define CONFIG_TX_EARLY_MODE */ #endif @@ -347,12 +346,11 @@ /* #define DBG_RX_SIGNAL_DISPLAY_SSID_MONITORED "jeff-ap" */ - /* #define DBG_SHOW_MCUFWDL_BEFORE_51_ENABLE */ /* #define DBG_ROAMING_TEST */ /* #define DBG_HAL_INIT_PROFILING */ -/*#define DBG_MEMORY_LEAK*/ +/* #define DBG_MEMORY_LEAK*/ #define DBG_RX_DFRAME_RAW_DATA -/*#define CONFIG_USE_EXTERNAL_POWER */ /* NOT USB2.0 power, so no 500mA power constraint, no limitation in Power by Rate*/ +/* #define CONFIG_USE_EXTERNAL_POWER */ /* NOT USB2.0 power, so no 500mA power constraint, no limitation in Power by Rate */ diff --git a/include/drv_types.h b/include/drv_types.h index 7a081381b..9d03776fa 100644 --- a/include/drv_types.h +++ b/include/drv_types.h @@ -73,10 +73,6 @@ typedef struct _ADAPTER _adapter, ADAPTER, *PADAPTER; #include #endif -#ifdef CONFIG_INTEL_WIDI - #include -#endif - #include #include #include @@ -397,6 +393,10 @@ struct registry_priv { u8 trx_share_mode; #endif u8 check_hw_status; + +#ifdef CONFIG_SW_LED + u8 led_ctrl; +#endif }; /* For registry parameters */ diff --git a/include/hal_data.h b/include/hal_data.h old mode 100755 new mode 100644 diff --git a/include/hal_data.h.edited b/include/hal_data.h.edited deleted file mode 100755 index ec59ebb2c..000000000 --- a/include/hal_data.h.edited +++ /dev/null @@ -1,652 +0,0 @@ -/****************************************************************************** - * - * Copyright(c) 2007 - 2011 Realtek Corporation. All rights reserved. - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of version 2 of the GNU General Public License 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. - * - * 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., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110, USA - * - * - ******************************************************************************/ -#ifndef __HAL_DATA_H__ -#define __HAL_DATA_H__ - -#if 1//def CONFIG_SINGLE_IMG - -#include "../hal/phydm/phydm_precomp.h" -#ifdef CONFIG_BT_COEXIST -#include -#endif - -#ifdef CONFIG_SDIO_HCI -#include -#endif -#ifdef CONFIG_GSPI_HCI -#include -#endif -// -// For RTL8723 WiFi/BT/GPS multi-function configuration. 2010.10.06. -// -typedef enum _RT_MULTI_FUNC{ - RT_MULTI_FUNC_NONE = 0x00, - RT_MULTI_FUNC_WIFI = 0x01, - RT_MULTI_FUNC_BT = 0x02, - RT_MULTI_FUNC_GPS = 0x04, -}RT_MULTI_FUNC,*PRT_MULTI_FUNC; -// -// For RTL8723 WiFi PDn/GPIO polarity control configuration. 2010.10.08. -// -typedef enum _RT_POLARITY_CTL { - RT_POLARITY_LOW_ACT = 0, - RT_POLARITY_HIGH_ACT = 1, -} RT_POLARITY_CTL, *PRT_POLARITY_CTL; - -// For RTL8723 regulator mode. by tynli. 2011.01.14. -typedef enum _RT_REGULATOR_MODE { - RT_SWITCHING_REGULATOR = 0, - RT_LDO_REGULATOR = 1, -} RT_REGULATOR_MODE, *PRT_REGULATOR_MODE; - -// -// Interface type. -// -typedef enum _INTERFACE_SELECT_PCIE{ - INTF_SEL0_SOLO_MINICARD = 0, // WiFi solo-mCard - INTF_SEL1_BT_COMBO_MINICARD = 1, // WiFi+BT combo-mCard - INTF_SEL2_PCIe = 2, // PCIe Card -} INTERFACE_SELECT_PCIE, *PINTERFACE_SELECT_PCIE; - - -typedef enum _INTERFACE_SELECT_USB{ - INTF_SEL0_USB = 0, // USB - INTF_SEL1_USB_High_Power = 1, // USB with high power PA - INTF_SEL2_MINICARD = 2, // Minicard - INTF_SEL3_USB_Solo = 3, // USB solo-Slim module - INTF_SEL4_USB_Combo = 4, // USB Combo-Slim module - INTF_SEL5_USB_Combo_MF = 5, // USB WiFi+BT Multi-Function Combo, i.e., Proprietary layout(AS-VAU) which is the same as SDIO card -} INTERFACE_SELECT_USB, *PINTERFACE_SELECT_USB; - -typedef enum _RT_AMPDU_BRUST_MODE{ - RT_AMPDU_BRUST_NONE = 0, - RT_AMPDU_BRUST_92D = 1, - RT_AMPDU_BRUST_88E = 2, - RT_AMPDU_BRUST_8812_4 = 3, - RT_AMPDU_BRUST_8812_8 = 4, - RT_AMPDU_BRUST_8812_12 = 5, - RT_AMPDU_BRUST_8812_15 = 6, - RT_AMPDU_BRUST_8723B = 7, -}RT_AMPDU_BRUST,*PRT_AMPDU_BRUST_MODE; - -/* -#define CHANNEL_MAX_NUMBER 14+24+21 // 14 is the max channel number -*/ -#define CHANNEL_GROUP_MAX (3 + 9) /* ch1~3, ch4~9, ch10~14 total three groups */ -#define MAX_PG_GROUP 13 - -// Tx Power Limit Table Size -#define MAX_REGULATION_NUM 4 -#define MAX_RF_PATH_NUM_IN_POWER_LIMIT_TABLE 4 -#define MAX_2_4G_BANDWIDTH_NUM 2 -#define MAX_RATE_SECTION_NUM 10 -#define MAX_5G_BANDWIDTH_NUM 4 - -#define MAX_BASE_NUM_IN_PHY_REG_PG_2_4G 10 // CCK:1,OFDM:1, HT:4, VHT:4 -#define MAX_BASE_NUM_IN_PHY_REG_PG_5G 9 // OFDM:1, HT:4, VHT:4 - - -//###### duplicate code,will move to ODM ######### -//#define IQK_MAC_REG_NUM 4 -//#define IQK_ADDA_REG_NUM 16 - -//#define IQK_BB_REG_NUM 10 -#define IQK_BB_REG_NUM_92C 9 -#define IQK_BB_REG_NUM_92D 10 -#define IQK_BB_REG_NUM_test 6 - -#define IQK_Matrix_Settings_NUM_92D 1+24+21 - -//#define HP_THERMAL_NUM 8 -//###### duplicate code,will move to ODM ######### - -#ifdef CONFIG_USB_RX_AGGREGATION -typedef enum _USB_RX_AGG_MODE{ - USB_RX_AGG_DISABLE, - USB_RX_AGG_DMA, - USB_RX_AGG_USB, - USB_RX_AGG_MIX -}USB_RX_AGG_MODE; - -//#define MAX_RX_DMA_BUFFER_SIZE 10240 // 10K for 8192C RX DMA buffer - -#endif - -/* For store initial value of BB register */ -typedef struct _BB_INIT_REGISTER { - u16 offset; - u32 value; - -} BB_INIT_REGISTER, *PBB_INIT_REGISTER; - -#define PAGE_SIZE_128 128 -#define PAGE_SIZE_256 256 -#define PAGE_SIZE_512 512 - -#define HCI_SUS_ENTER 0 -#define HCI_SUS_LEAVING 1 -#define HCI_SUS_LEAVE 2 -#define HCI_SUS_ENTERING 3 -#define HCI_SUS_ERR 4 - -#ifdef CONFIG_AUTO_CHNL_SEL_NHM -typedef enum _ACS_OP { - ACS_INIT, /*ACS - Variable init*/ - ACS_RESET, /*ACS - NHM Counter reset*/ - ACS_SELECT, /*ACS - NHM Counter Statistics */ -} ACS_OP; - -typedef enum _ACS_STATE { - ACS_DISABLE, - ACS_ENABLE, -} ACS_STATE; - -struct auto_chan_sel { - ATOMIC_T state; - u8 ch; /* previous channel*/ -}; -#endif /*CONFIG_AUTO_CHNL_SEL_NHM*/ - -#define EFUSE_FILE_UNUSED 0 -#define EFUSE_FILE_FAILED 1 -#define EFUSE_FILE_LOADED 2 - -#define MACADDR_FILE_UNUSED 0 -#define MACADDR_FILE_FAILED 1 -#define MACADDR_FILE_LOADED 2 - -#define KFREE_FLAG_ON BIT0 -#define KFREE_FLAG_THERMAL_K_ON BIT1 - -struct kfree_data_t { - u8 flag; - s8 bb_gain[BB_GAIN_NUM][RF_PATH_MAX]; - -#ifdef CONFIG_IEEE80211_BAND_5GHZ - s8 pa_bias_5g[RF_PATH_MAX]; - s8 pad_bias_5g[RF_PATH_MAX]; -#endif - s8 thermal; -}; - -bool kfree_data_is_bb_gain_empty(struct kfree_data_t *data); - -struct hal_spec_t { - u8 macid_num; - - u8 sec_cam_ent_num; - u8 sec_cap; - - u8 nss_num; - u8 band_cap; /* value of BAND_CAP_XXX */ - u8 bw_cap; /* value of BW_CAP_XXX */ - - u8 wl_func; /* value of WL_FUNC_XXX */ -}; - -typedef struct hal_com_data -{ - HAL_VERSION VersionID; - RT_MULTI_FUNC MultiFunc; // For multi-function consideration. - RT_POLARITY_CTL PolarityCtl; // For Wifi PDn Polarity control. - RT_REGULATOR_MODE RegulatorMode; // switching regulator or LDO - u8 hw_init_completed; - /****** FW related ******/ - u16 FirmwareVersion; - u16 FirmwareVersionRev; - u16 FirmwareSubVersion; - u16 FirmwareSignature; - u8 RegFWOffload; - u8 fw_ractrl; - u8 FwRsvdPageStartOffset; /* 2010.06.23. Added by tynli. Reserve page start offset except beacon in TxQ.*/ - u8 LastHMEBoxNum; /* H2C - for host message to fw */ - - /****** current WIFI_PHY values ******/ - WIRELESS_MODE CurrentWirelessMode; - CHANNEL_WIDTH CurrentChannelBW; - BAND_TYPE CurrentBandType; /* 0:2.4G, 1:5G */ - BAND_TYPE BandSet; - u8 CurrentChannel; - u8 CurrentCenterFrequencyIndex1; - u8 nCur40MhzPrimeSC; /* Control channel sub-carrier */ - u8 nCur80MhzPrimeSC; /* used for primary 40MHz of 80MHz mode */ - BOOLEAN bSwChnlAndSetBWInProgress; - u8 bDisableSWChannelPlan; /* flag of disable software change channel plan */ - u16 BasicRateSet; - u32 ReceiveConfig; - BOOLEAN bSwChnl; - BOOLEAN bSetChnlBW; - BOOLEAN bChnlBWInitialized; -#ifdef CONFIG_AUTO_CHNL_SEL_NHM - struct auto_chan_sel acs; -#endif - /****** rf_ctrl *****/ - u8 rf_chip; - u8 rf_type; - u8 PackageType; - u8 NumTotalRFPath; - - /****** Debug ******/ - u16 ForcedDataRate; /* Force Data Rate. 0: Auto, 0x02: 1M ~ 0x6C: 54M. */ - u8 u1ForcedIgiLb; /* forced IGI lower bound */ - u8 bDumpRxPkt; - u8 bDumpTxPkt; - u8 bDisableTXPowerTraining; - - - /****** EEPROM setting.******/ - u8 bautoload_fail_flag; - u8 efuse_file_status; - u8 macaddr_file_status; - u8 EepromOrEfuse; - u8 efuse_eeprom_data[EEPROM_MAX_SIZE]; /*92C:256bytes, 88E:512bytes, we use union set (512bytes)*/ - u8 InterfaceSel; /* board type kept in eFuse */ - u16 CustomerID; - - u16 EEPROMVID; - u16 EEPROMSVID; -#ifdef CONFIG_USB_HCI - u16 EEPROMPID; - u16 EEPROMSDID; -#endif -#ifdef CONFIG_PCI_HCI - u16 EEPROMDID; - u16 EEPROMSMID; -#endif - - u8 EEPROMCustomerID; - u8 EEPROMSubCustomerID; - u8 EEPROMVersion; - u8 EEPROMRegulatory; - u8 EEPROMThermalMeter; - u8 EEPROMBluetoothCoexist; - u8 EEPROMBluetoothType; - u8 EEPROMBluetoothAntNum; - u8 EEPROMBluetoothAntIsolation; - u8 EEPROMBluetoothRadioShared; - u8 bTXPowerDataReadFromEEPORM; - u8 EEPROMMACAddr[ETH_ALEN]; - -#ifdef CONFIG_RF_GAIN_OFFSET - u8 EEPROMRFGainOffset; - u8 EEPROMRFGainVal; - struct kfree_data_t kfree_data; -#endif /*CONFIG_RF_GAIN_OFFSET*/ - -#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B) - u8 adjuseVoltageVal; -#endif - u8 EfuseUsedPercentage; - u16 EfuseUsedBytes; - /*u8 EfuseMap[2][HWSET_MAX_SIZE_JAGUAR];*/ - EFUSE_HAL EfuseHal; - - /*---------------------------------------------------------------------------------*/ - //3 [2.4G] - u8 Index24G_CCK_Base[MAX_RF_PATH][CENTER_CH_2G_NUM]; - u8 Index24G_BW40_Base[MAX_RF_PATH][CENTER_CH_2G_NUM]; - //If only one tx, only BW20 and OFDM are used. - s8 CCK_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 OFDM_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW20_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW40_24G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - //3 [5G] - u8 Index5G_BW40_Base[MAX_RF_PATH][CENTER_CH_5G_ALL_NUM]; - u8 Index5G_BW80_Base[MAX_RF_PATH][CENTER_CH_5G_80M_NUM]; - s8 OFDM_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW20_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW40_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - s8 BW80_5G_Diff[MAX_RF_PATH][MAX_TX_COUNT]; - - u8 Regulation2_4G; - u8 Regulation5G; - - u8 TxPwrInPercentage; - - /******************************** - * TX power by rate table at most 4RF path. - * The register is - * - * VHT TX power by rate off setArray = - * Band:-2G&5G = 0 / 1 - * RF: at most 4*4 = ABCD=0/1/2/3 - * CCK=0 OFDM=1/2 HT-MCS 0-15=3/4/56 VHT=7/8/9/10/11 - **********************************/ - u8 TxPwrByRateTable; - u8 TxPwrByRateBand; - s8 TxPwrByRateOffset[TX_PWR_BY_RATE_NUM_BAND] - [TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RATE]; - //---------------------------------------------------------------------------------// - - /* - //2 Power Limit Table - u8 TxPwrLevelCck[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; - u8 TxPwrLevelHT40_1S[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr - u8 TxPwrLevelHT40_2S[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; // For HT 40MHZ pwr - s8 TxPwrHt20Diff[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];// HT 20<->40 Pwr diff - u8 TxPwrLegacyHtDiff[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER];// For HT<->legacy pwr diff - */ - - u8 tx_pwr_lmt_5g_20_40_ref; - - // Power Limit Table for 2.4G - s8 TxPwrLimit_2_4G[MAX_REGULATION_NUM] - [MAX_2_4G_BANDWIDTH_NUM] - [MAX_RATE_SECTION_NUM] - [CENTER_CH_2G_NUM] - [MAX_RF_PATH]; - - // Power Limit Table for 5G - s8 TxPwrLimit_5G[MAX_REGULATION_NUM] - [MAX_5G_BANDWIDTH_NUM] - [MAX_RATE_SECTION_NUM] - [CENTER_CH_5G_ALL_NUM] - [MAX_RF_PATH]; - - - // Store the original power by rate value of the base of each rate section of rf path A & B - u8 TxPwrByRateBase2_4G[TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RF] - [MAX_BASE_NUM_IN_PHY_REG_PG_2_4G]; - u8 TxPwrByRateBase5G[TX_PWR_BY_RATE_NUM_RF] - [TX_PWR_BY_RATE_NUM_RF] - [MAX_BASE_NUM_IN_PHY_REG_PG_5G]; - -<<<<<<< .mine - u8 TxPwrShadow[MAX_RF_PATH][DESC_RATEMAX]; -======= - u8 txpwr_by_rate_loaded:1; - u8 txpwr_by_rate_from_file:1; - u8 txpwr_limit_loaded:1; - u8 txpwr_limit_from_file:1; - ->>>>>>> .r15056 - // For power group - /* - u8 PwrGroupHT20[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; - u8 PwrGroupHT40[RF_PATH_MAX_92C_88E][CHANNEL_MAX_NUMBER]; - */ - u8 PGMaxGroup; - - // The current Tx Power Level - u8 CurrentCckTxPwrIdx; - u8 CurrentOfdm24GTxPwrIdx; - u8 CurrentBW2024GTxPwrIdx; - u8 CurrentBW4024GTxPwrIdx; - - // Read/write are allow for following hardware information variables - u8 pwrGroupCnt; - u32 MCSTxPowerLevelOriginalOffset[MAX_PG_GROUP][16]; - u32 CCKTxPowerLevelOriginalOffset; - - u8 CrystalCap; - - u8 PAType_2G; - u8 PAType_5G; - u8 LNAType_2G; - u8 LNAType_5G; - u8 ExternalPA_2G; - u8 ExternalLNA_2G; - u8 ExternalPA_5G; - u8 ExternalLNA_5G; - u16 TypeGLNA; - u16 TypeGPA; - u16 TypeALNA; - u16 TypeAPA; - u16 RFEType; - - u8 bLedOpenDrain; /* Support Open-drain arrangement for controlling the LED. Added by Roger, 2009.10.16. */ - u32 AcParam_BE; /* Original parameter for BE, use for EDCA turbo. */ - - BB_REGISTER_DEFINITION_T PHYRegDef[MAX_RF_PATH]; //Radio A/B/C/D - - u32 RfRegChnlVal[MAX_RF_PATH]; - - //RDG enable - BOOLEAN bRDGEnable; - - u8 RegTxPause; - // Beacon function related global variable. - u8 RegBcnCtrlVal; - u8 RegFwHwTxQCtrl; - u8 RegReg542; - u8 RegCR_1; - u8 Reg837; - u16 RegRRSR; - - /****** antenna diversity ******/ - u8 CurAntenna; - u8 AntDivCfg; - u8 AntDetection; - u8 TRxAntDivType; - u8 ant_path; //for 8723B s0/s1 selection - u32 AntennaTxPath; /* Antenna path Tx */ - u32 AntennaRxPath; /* Antenna path Rx */ - - /******** PHY DM & DM Section **********/ - u8 DM_Type; - _lock IQKSpinLock; - u8 INIDATA_RATE[MACID_NUM_SW_LIMIT]; - /* Upper and Lower Signal threshold for Rate Adaptive*/ - int EntryMinUndecoratedSmoothedPWDB; - int EntryMaxUndecoratedSmoothedPWDB; - int MinUndecoratedPWDBForDM; - DM_ODM_T odmpriv; - u8 bIQKInitialized; - u8 bNeedIQK; - /******** PHY DM & DM Section **********/ - - - - // 2010/08/09 MH Add CU power down mode. - BOOLEAN pwrdown; - - // Add for dual MAC 0--Mac0 1--Mac1 - u32 interfaceIndex; - -#ifdef CONFIG_P2P - u8 p2p_ps_offload; -#endif - /* Auto FSM to Turn On, include clock, isolation, power control for MAC only */ - u8 bMacPwrCtrlOn; - u8 hci_sus_state; - - u8 RegIQKFWOffload; - struct submit_ctx iqk_sctx; - - RT_AMPDU_BRUST AMPDUBurstMode; //92C maybe not use, but for compile successfully - - u8 OutEpQueueSel; - u8 OutEpNumber; - -#if defined (CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) - // - // For SDIO Interface HAL related - // - - // - // SDIO ISR Related - // -// u32 IntrMask[1]; -// u32 IntrMaskToSet[1]; -// LOG_INTERRUPT InterruptLog; - u32 sdio_himr; - u32 sdio_hisr; - - // - // SDIO Tx FIFO related. - // - // HIQ, MID, LOW, PUB free pages; padapter->xmitpriv.free_txpg - u8 SdioTxFIFOFreePage[SDIO_TX_FREE_PG_QUEUE]; - _lock SdioTxFIFOFreePageLock; - u8 SdioTxOQTMaxFreeSpace; - u8 SdioTxOQTFreeSpace; - - // - // SDIO Rx FIFO related. - // - u8 SdioRxFIFOCnt; - u16 SdioRxFIFOSize; - - u32 sdio_tx_max_len[SDIO_MAX_TX_QUEUE];// H, N, L, used for sdio tx aggregation max length per queue -#endif //CONFIG_SDIO_HCI - -#ifdef CONFIG_USB_HCI - - // 2010/12/10 MH Add for USB aggreation mode dynamic shceme. - BOOLEAN UsbRxHighSpeedMode; - BOOLEAN UsbTxVeryHighSpeedMode; - u32 UsbBulkOutSize; - BOOLEAN bSupportUSB3; - - // Interrupt relatd register information. - u32 IntArray[3];//HISR0,HISR1,HSISR - u32 IntrMask[3]; - u8 C2hArray[16]; - #ifdef CONFIG_USB_TX_AGGREGATION - u8 UsbTxAggMode; - u8 UsbTxAggDescNum; - #endif // CONFIG_USB_TX_AGGREGATION - - #ifdef CONFIG_USB_RX_AGGREGATION - u16 HwRxPageSize; // Hardware setting - u32 MaxUsbRxAggBlock; - - USB_RX_AGG_MODE UsbRxAggMode; - u8 UsbRxAggBlockCount; /* FOR USB Mode, USB Block count. Block size is 512-byte in hight speed and 64-byte in full speed */ - u8 UsbRxAggBlockTimeout; - u8 UsbRxAggPageCount; /* FOR DMA Mode, 8192C DMA page count*/ - u8 UsbRxAggPageTimeout; - - u8 RegAcUsbDmaSize; - u8 RegAcUsbDmaTime; - #endif//CONFIG_USB_RX_AGGREGATION -#endif //CONFIG_USB_HCI - - -#ifdef CONFIG_PCI_HCI - // - // EEPROM setting. - // - u32 TransmitConfig; - u32 IntrMaskToSet[2]; - u32 IntArray[2]; - u32 IntrMask[2]; - u32 SysIntArray[1]; - u32 SysIntrMask[1]; - u32 IntrMaskReg[2]; - u32 IntrMaskDefault[2]; - - BOOLEAN bL1OffSupport; - BOOLEAN bSupportBackDoor; - - u8 bDefaultAntenna; - - u8 bInterruptMigration; - u8 bDisableTxInt; - - u16 RxTag; -#endif //CONFIG_PCI_HCI - - -#ifdef DBG_CONFIG_ERROR_DETECT - struct sreset_priv srestpriv; -#endif //#ifdef DBG_CONFIG_ERROR_DETECT - -#ifdef CONFIG_BT_COEXIST - // For bluetooth co-existance - BT_COEXIST bt_coexist; -#endif // CONFIG_BT_COEXIST - -#if defined(CONFIG_RTL8723B) || defined(CONFIG_RTL8703B) || defined(CONFIG_RTL8188F) - #ifndef CONFIG_PCI_HCI // mutual exclusive with PCI -- so they're SDIO and GSPI - // Interrupt relatd register information. - u32 SysIntrStatus; - u32 SysIntrMask; - #endif -#endif /*endif CONFIG_RTL8723B */ - -#ifdef CONFIG_LOAD_PHY_PARA_FROM_FILE - char para_file_buf[MAX_PARA_FILE_BUF_LEN]; - char *mac_reg; - u32 mac_reg_len; - char *bb_phy_reg; - u32 bb_phy_reg_len; - char *bb_agc_tab; - u32 bb_agc_tab_len; - char *bb_phy_reg_pg; - u32 bb_phy_reg_pg_len; - char *bb_phy_reg_mp; - u32 bb_phy_reg_mp_len; - char *rf_radio_a; - u32 rf_radio_a_len; - char *rf_radio_b; - u32 rf_radio_b_len; - char *rf_tx_pwr_track; - u32 rf_tx_pwr_track_len; - char *rf_tx_pwr_lmt; - u32 rf_tx_pwr_lmt_len; -#endif - -#ifdef CONFIG_BACKGROUND_NOISE_MONITOR - s16 noise[ODM_MAX_CHANNEL_NUM]; -#endif - - struct hal_spec_t hal_spec; - - u8 RfKFreeEnable; - u8 RfKFree_ch_group; - BOOLEAN bCCKinCH14; - BB_INIT_REGISTER RegForRecover[5]; - -} HAL_DATA_COMMON, *PHAL_DATA_COMMON; - - - -typedef struct hal_com_data HAL_DATA_TYPE, *PHAL_DATA_TYPE; -#define GET_HAL_DATA(__pAdapter) ((HAL_DATA_TYPE *)((__pAdapter)->HalData)) -#define GET_HAL_SPEC(__pAdapter) (&(GET_HAL_DATA((__pAdapter))->hal_spec)) - -#define GET_HAL_RFPATH_NUM(__pAdapter) (((HAL_DATA_TYPE *)((__pAdapter)->HalData))->NumTotalRFPath ) -#define RT_GetInterfaceSelection(_Adapter) (GET_HAL_DATA(_Adapter)->InterfaceSel) -#define GET_RF_TYPE(__pAdapter) (GET_HAL_DATA(__pAdapter)->rf_type) -#define GET_KFREE_DATA(_adapter) (&(GET_HAL_DATA((_adapter))->kfree_data)) - -#define SUPPORT_HW_RADIO_DETECT(Adapter) ( RT_GetInterfaceSelection(Adapter) == INTF_SEL2_MINICARD ||\ - RT_GetInterfaceSelection(Adapter) == INTF_SEL3_USB_Solo ||\ - RT_GetInterfaceSelection(Adapter) == INTF_SEL4_USB_Combo) - -#define get_hal_mac_addr(adapter) (GET_HAL_DATA(adapter)->EEPROMMACAddr) -#define is_boot_from_eeprom(adapter) (GET_HAL_DATA(adapter)->EepromOrEfuse) -#define rtw_get_hw_init_completed(adapter) (GET_HAL_DATA(adapter)->hw_init_completed) -#define rtw_is_hw_init_completed(adapter) (GET_HAL_DATA(adapter)->hw_init_completed == _TRUE) -#endif - -#ifdef CONFIG_AUTO_CHNL_SEL_NHM -#define GET_ACS_STATE(padapter) (ATOMIC_READ(&GET_HAL_DATA(padapter)->acs.state)) -#define SET_ACS_STATE(padapter, set_state) (ATOMIC_SET(&GET_HAL_DATA(padapter)->acs.state, set_state)) -#define rtw_get_acs_channel(padapter) (GET_HAL_DATA(padapter)->acs.ch) -#define rtw_set_acs_channel(padapter, survey_ch) (GET_HAL_DATA(padapter)->acs.ch = survey_ch) -#endif /*CONFIG_AUTO_CHNL_SEL_NHM*/ - -#endif //__HAL_DATA_H__ - diff --git a/include/ieee80211_ext.h b/include/ieee80211_ext.h index 03cc33058..6ac3b76de 100644 --- a/include/ieee80211_ext.h +++ b/include/ieee80211_ext.h @@ -63,7 +63,7 @@ struct rsn_ie_hdr { } __attribute__((packed)); struct wme_ac_parameter { -#if defined(CONFIG_LITTLE_ENDIAN) +#if defined(__LITTLE_ENDIAN) /* byte 1 */ u8 aifsn:4, acm:1, @@ -73,7 +73,7 @@ struct wme_ac_parameter { /* byte 2 */ u8 eCWmin:4, eCWmax:4; -#elif defined(CONFIG_BIG_ENDIAN) +#else /* byte 1 */ u8 reserved:1, aci:2, @@ -83,8 +83,6 @@ struct wme_ac_parameter { /* byte 2 */ u8 eCWmax:4, eCWmin:4; -#else -#error "Please fix " #endif /* bytes 3 & 4 */ diff --git a/include/osdep_service.h b/include/osdep_service.h index c2c290532..8f3e9656d 100644 --- a/include/osdep_service.h +++ b/include/osdep_service.h @@ -321,8 +321,12 @@ extern void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc); __inline static unsigned char _cancel_timer_ex(_timer *ptimer) { #ifdef PLATFORM_LINUX +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + return del_timer_sync(&ptimer->t); +#else return del_timer_sync(ptimer); #endif +#endif #ifdef PLATFORM_FREEBSD _cancel_timer(ptimer, 0); return 0; diff --git a/include/osdep_service_linux.h b/include/osdep_service_linux.h index f371343f4..26bb1f29b 100644 --- a/include/osdep_service_linux.h +++ b/include/osdep_service_linux.h @@ -137,7 +137,15 @@ typedef spinlock_t _lock; #else typedef struct semaphore _mutex; #endif -typedef struct timer_list _timer; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + typedef struct legacy_timer_emu { + struct timer_list t; + void (*function)(unsigned long); + unsigned long data; + } _timer; +#else + typedef struct timer_list _timer; +#endif struct __queue { struct list_head queue; @@ -269,23 +277,41 @@ __inline static void rtw_list_delete(_list *plist) } #define RTW_TIMER_HDL_ARGS void *FunctionContext - +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) +static void legacy_timer_emu_func(struct timer_list *t) +{ + struct legacy_timer_emu *lt = from_timer(lt, t, t); + lt->function(lt->data); +} +#endif __inline static void _init_timer(_timer *ptimer, _nic_hdl nic_hdl, void *pfunc, void *cntx) { /* setup_timer(ptimer, pfunc,(u32)cntx); */ ptimer->function = pfunc; ptimer->data = (unsigned long)cntx; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + timer_setup(&ptimer->t, legacy_timer_emu_func, 0); +#else init_timer(ptimer); +#endif } __inline static void _set_timer(_timer *ptimer, u32 delay_time) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + mod_timer(&ptimer->t, (jiffies+(delay_time*HZ/1000))); +#else mod_timer(ptimer , (jiffies + (delay_time * HZ / 1000))); +#endif } __inline static void _cancel_timer(_timer *ptimer, u8 *bcancelled) { +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 15, 0)) + del_timer_sync(&ptimer->t); +#else del_timer_sync(ptimer); +#endif *bcancelled = 1; } @@ -429,5 +455,4 @@ extern struct net_device *rtw_alloc_etherdev(int sizeof_priv); #define STRUCT_PACKED __attribute__ ((packed)) - #endif diff --git a/include/rtl8723b_hal.h b/include/rtl8723b_hal.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_led.h b/include/rtl8723b_led.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_recv.h b/include/rtl8723b_recv.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_spec.h b/include/rtl8723b_spec.h old mode 100755 new mode 100644 diff --git a/include/rtl8723b_xmit.h b/include/rtl8723b_xmit.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_cmd.h b/include/rtl8814a_cmd.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_hal.h b/include/rtl8814a_hal.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_recv.h b/include/rtl8814a_recv.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_spec.h b/include/rtl8814a_spec.h old mode 100755 new mode 100644 diff --git a/include/rtl8814a_xmit.h b/include/rtl8814a_xmit.h old mode 100755 new mode 100644 diff --git a/include/rtl8822be_hal.h b/include/rtl8822be_hal.h old mode 100755 new mode 100644 diff --git a/include/rtw_byteorder.h b/include/rtw_byteorder.h index 70482d26b..0755d5221 100644 --- a/include/rtw_byteorder.h +++ b/include/rtw_byteorder.h @@ -21,18 +21,10 @@ #define _RTL871X_BYTEORDER_H_ -#if defined(CONFIG_LITTLE_ENDIAN) && defined (CONFIG_BIG_ENDIAN) - #error "Shall be CONFIG_LITTLE_ENDIAN or CONFIG_BIG_ENDIAN, but not both!\n" -#endif - -#if defined(CONFIG_LITTLE_ENDIAN) - #ifndef CONFIG_PLATFORM_MSTAR389 - #include - #endif -#elif defined (CONFIG_BIG_ENDIAN) - #include +#if defined(__LITTLE_ENDIAN) +#include #else - # error "Must be LITTLE/BIG Endian Host" +#include #endif #endif /* _RTL871X_BYTEORDER_H_ */ diff --git a/include/rtw_io.h b/include/rtw_io.h index 44a17491a..1cfd44d6e 100644 --- a/include/rtw_io.h +++ b/include/rtw_io.h @@ -197,7 +197,7 @@ struct intf_hdl { struct reg_protocol_rd { -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN /* DW1 */ u32 NumOfTrans:4; @@ -255,7 +255,7 @@ struct reg_protocol_rd { struct reg_protocol_wt { -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN /* DW1 */ u32 NumOfTrans:4; diff --git a/include/rtw_mlme.h b/include/rtw_mlme.h index 1761f9723..669d8f6c8 100644 --- a/include/rtw_mlme.h +++ b/include/rtw_mlme.h @@ -20,7 +20,6 @@ #ifndef __RTW_MLME_H_ #define __RTW_MLME_H_ - #define MAX_BSS_CNT 128 /* #define MAX_JOIN_TIMEOUT 2000 */ /* #define MAX_JOIN_TIMEOUT 2500 */ @@ -162,7 +161,6 @@ enum SCAN_RESULT_TYPE { }; /* - there are several "locks" in mlme_priv, since mlme_priv is a shared resource between many threads, like ISR/Call-Back functions, the OID handlers, and even timer functions. @@ -173,10 +171,8 @@ Other items are protected by mlme_priv.lock. To avoid possible dead lock, any thread trying to modifiying mlme_priv SHALL not lock up more than one locks at a time! - */ - #define traffic_threshold 10 #define traffic_scan_period 500 @@ -710,33 +706,6 @@ struct mlme_priv { _workitem Linkup_workitem; _workitem Linkdown_workitem; #endif - -#ifdef CONFIG_INTEL_WIDI - int widi_state; - int listen_state; - _timer listen_timer; - ATOMIC_T rx_probe_rsp; /* 1:receive probe respone from RDS source. */ - u8 *l2sdTaBuffer; - u8 channel_idx; - u8 group_cnt; /* In WiDi 3.5, they specified another scan algo. for WFD/RDS co-existed */ - u8 sa_ext[L2SDTA_SERVICE_VE_LEN]; - - u8 widi_enable; - /** - * For WiDi 4; upper layer would set - * p2p_primary_device_type_category_id - * p2p_primary_device_type_sub_category_id - * p2p_secondary_device_type_category_id - * p2p_secondary_device_type_sub_category_id - */ - u16 p2p_pdt_cid; - u16 p2p_pdt_scid; - u8 num_p2p_sdt; - u16 p2p_sdt_cid[MAX_NUM_P2P_SDT]; - u16 p2p_sdt_scid[MAX_NUM_P2P_SDT]; - u8 p2p_reject_disable; /* When starting NL80211 wpa_supplicant/hostapd, it will call netdev_close */ - /* such that it will cause p2p disabled. Use this flag to reject. */ -#endif /* CONFIG_INTEL_WIDI */ u32 lastscantime; #ifdef CONFIG_CONCURRENT_MODE u8 scanning_via_buddy_intf; @@ -788,7 +757,6 @@ extern int hostapd_mode_init(_adapter *padapter); extern void hostapd_mode_unload(_adapter *padapter); #endif - extern void rtw_joinbss_event_prehandle(_adapter *adapter, u8 *pbuf); extern void rtw_survey_event_callback(_adapter *adapter, u8 *pbuf); extern void rtw_surveydone_event_callback(_adapter *adapter, u8 *pbuf); @@ -802,6 +770,7 @@ extern void rtw_wmm_event_callback(PADAPTER padapter, u8 *pbuf); #ifdef CONFIG_IEEE80211W void rtw_sta_timeout_event_callback(_adapter *adapter, u8 *pbuf); #endif /* CONFIG_IEEE80211W */ + extern void rtw_join_timeout_handler(RTW_TIMER_HDL_ARGS); extern void _rtw_scan_timeout_handler(RTW_TIMER_HDL_ARGS); @@ -983,16 +952,13 @@ void rtw_free_mlme_priv_ie_data(struct mlme_priv *pmlmepriv); int rtw_mlme_update_wfd_ie_data(struct mlme_priv *mlme, u8 type, u8 *ie, u32 ie_len); #endif - /* extern struct wlan_network* _rtw_dequeue_network(_queue *queue); */ extern struct wlan_network *_rtw_alloc_network(struct mlme_priv *pmlmepriv); - extern void _rtw_free_network(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork, u8 isfreeall); extern void _rtw_free_network_nolock(struct mlme_priv *pmlmepriv, struct wlan_network *pnetwork); - extern struct wlan_network *_rtw_find_network(_queue *scanned_queue, u8 *addr); extern void _rtw_free_network_queue(_adapter *padapter, u8 isfreeall); @@ -1005,7 +971,6 @@ u8 *rtw_get_capability_from_ie(u8 *ie); u8 *rtw_get_timestampe_from_ie(u8 *ie); u8 *rtw_get_beacon_interval_from_ie(u8 *ie); - void rtw_joinbss_reset(_adapter *padapter); #ifdef CONFIG_80211N_HT diff --git a/include/rtw_mlme_ext.h b/include/rtw_mlme_ext.h index 850eccba1..a7bc112c2 100644 --- a/include/rtw_mlme_ext.h +++ b/include/rtw_mlme_ext.h @@ -27,7 +27,7 @@ * So, this driver tried to extend the dwell time for each scanning channel. * This will increase the chance to receive the probe response from SoftAP. */ -#define SURVEY_TO (100) +#define SURVEY_TO (0) #define REAUTH_TO (300) /* (50) */ #define REASSOC_TO (300) /* (50) */ /* #define DISCONNECT_TO (3000) */ @@ -1153,22 +1153,18 @@ struct cmd_hdl wlancmds[] = { struct C2HEvent_Header { -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN unsigned int len:16; unsigned int ID:8; unsigned int seq:8; -#elif defined(CONFIG_BIG_ENDIAN) +#else unsigned int seq:8; unsigned int ID:8; unsigned int len:16; -#else - -# error "Must be LITTLE or BIG Endian" - #endif unsigned int rsvd; diff --git a/include/rtw_recv.h b/include/rtw_recv.h index ef3886f3b..475aca738 100644 --- a/include/rtw_recv.h +++ b/include/rtw_recv.h @@ -68,7 +68,6 @@ #define PHY_RSSI_SLID_WIN_MAX 100 #define PHY_LINKQUALITY_SLID_WIN_MAX 20 - #define SNAP_SIZE sizeof(struct ieee80211_snap_hdr) #define RX_MPDU_QUEUE 0 @@ -125,7 +124,6 @@ struct stainfo_rxcache { #endif }; - struct smooth_rssi_data { u32 elements[100]; /* array to store values */ u32 index; /* index to current array to store */ @@ -218,7 +216,6 @@ struct rx_raw_rssi { u8 ofdm_snr[4]; }; - struct rx_pkt_attrib { u16 pkt_len; u8 physt; @@ -283,7 +280,6 @@ struct rx_pkt_attrib { struct phy_info phy_info; }; - /* These definition is used for Rx packet reordering. */ #define SN_LESS(a, b) (((a-b) & 0x800) != 0) #define SN_EQUAL(a, b) (a == b) @@ -359,8 +355,6 @@ struct rtw_rx_ring { }; #endif - - /* accesser of recv_priv: rtw_recv_entry(dispatch / passive level); recv_thread(passive) ; returnpkt(dispatch) ; halt(passive) ; @@ -507,7 +501,6 @@ struct sta_recv_priv { }; - struct recv_buf { _list list; @@ -565,7 +558,6 @@ struct recv_buf { tail -----> - end -----> len = (unsigned int )(tail - data); @@ -597,7 +589,6 @@ struct recv_frame_hdr { void *precvbuf; - /* */ struct sta_info *psta; @@ -614,7 +605,6 @@ struct recv_frame_hdr { }; - union recv_frame { union { @@ -699,7 +689,6 @@ __inline static u8 *recvframe_push(union recv_frame *precvframe, sint sz) if (precvframe == NULL) return NULL; - precvframe->u.hdr.rx_data -= sz ; if (precvframe->u.hdr.rx_data < precvframe->u.hdr.rx_head) { precvframe->u.hdr.rx_data += sz ; @@ -712,18 +701,15 @@ __inline static u8 *recvframe_push(union recv_frame *precvframe, sint sz) } - __inline static u8 *recvframe_pull(union recv_frame *precvframe, sint sz) { /* rx_data += sz; move rx_data sz bytes hereafter */ /* used for extract sz bytes from rx_data, update rx_data and return the updated rx_data to the caller */ - if (precvframe == NULL) return NULL; - precvframe->u.hdr.rx_data += sz; if (precvframe->u.hdr.rx_data > precvframe->u.hdr.rx_tail) { @@ -765,8 +751,6 @@ __inline static u8 *recvframe_put(union recv_frame *precvframe, sint sz) } - - __inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) { /* rmv data from rx_tail (by yitsen) */ @@ -790,8 +774,6 @@ __inline static u8 *recvframe_pull_tail(union recv_frame *precvframe, sint sz) } - - __inline static _buffer *get_rxbuf_desc(union recv_frame *precvframe) { _buffer *buf_desc; @@ -805,7 +787,6 @@ __inline static _buffer *get_rxbuf_desc(union recv_frame *precvframe) return buf_desc; } - __inline static union recv_frame *rxmem_to_recvframe(u8 *rxmem) { /* due to the design of 2048 bytes alignment of recv_frame, we can reference the union recv_frame */ @@ -876,7 +857,6 @@ __inline static s32 translate_percentage_to_dbm(u32 SignalStrengthIndex) return SignalPower; } - struct sta_info; extern void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv); diff --git a/include/rtw_rf.h b/include/rtw_rf.h index 6b30b870b..ebbb4e3dc 100644 --- a/include/rtw_rf.h +++ b/include/rtw_rf.h @@ -116,7 +116,6 @@ enum _REG_PREAMBLE_MODE { PREAMBLE_SHORT = 3, }; - enum _RTL8712_RF_MIMO_CONFIG_ { RTL8712_RFCONFIG_1T = 0x10, RTL8712_RFCONFIG_2T = 0x20, @@ -203,7 +202,7 @@ typedef enum _PROTECTION_MODE { PROTECTION_MODE_FORCE_DISABLE = 2, } PROTECTION_MODE, *PPROTECTION_MODE; -typedef enum _RT_RF_TYPE_DEFINITION { +enum rt_rf_types { RF_1T2R = 0, RF_2T4R = 1, RF_2T2R = 2, @@ -215,7 +214,7 @@ typedef enum _RT_RF_TYPE_DEFINITION { RF_4T4R = 8, RF_MAX_TYPE = 0xF, /* u1Byte */ -} RT_RF_TYPE_DEF_E; +}; int rtw_ch2freq(int chan); int rtw_freq2ch(int freq); diff --git a/include/rtw_security.h b/include/rtw_security.h index ae651e0f1..2defb2ded 100644 --- a/include/rtw_security.h +++ b/include/rtw_security.h @@ -20,7 +20,6 @@ #ifndef __RTW_SECURITY_H_ #define __RTW_SECURITY_H_ - #define _NO_PRIVACY_ 0x0 #define _WEP40_ 0x1 #define _TKIP_ 0x2 @@ -63,7 +62,6 @@ typedef enum { ENCRYP_PROTOCOL_MAX } ENCRYP_PROTOCOL_E; - #ifndef Ndis802_11AuthModeWPA2 #define Ndis802_11AuthModeWPA2 (Ndis802_11AuthModeWPANone + 1) #endif @@ -76,7 +74,7 @@ union pn48 { u64 val; -#ifdef CONFIG_LITTLE_ENDIAN +#ifdef __LITTLE_ENDIAN struct { u8 TSC0; @@ -89,7 +87,7 @@ struct { u8 TSC7; } _byte_; -#elif defined(CONFIG_BIG_ENDIAN) +#else struct { u8 TSC7; @@ -111,7 +109,6 @@ union Keytype { u32 lkey[4]; }; - typedef struct _RT_PMKID_LIST { u8 bUsed; u8 Bssid[6]; @@ -121,7 +118,6 @@ typedef struct _RT_PMKID_LIST { u16 ssid_length; } RT_PMKID_LIST, *PRT_PMKID_LIST; - struct security_priv { u32 dot11AuthAlgrthm; /* 802.11 auth, could be open, shared, 8021x and authswitch */ u32 dot11PrivacyAlgrthm; /* This specify the privacy for shared auth. algorithm. */ @@ -162,7 +158,6 @@ struct security_priv { u8 wps_ie[MAX_WPS_IE_LEN];/* added in assoc req */ int wps_ie_len; - u8 binstallGrpkey; #ifdef CONFIG_GTK_OL u8 binstallKCK_KEK; @@ -182,7 +177,6 @@ struct security_priv { s32 hw_decrypted;/* if the rx packets is hw_decrypted==_FALSE, it means the hw has not been ready. */ - /* keeps the auth_type & enc_status from upper layer ioctl(wpa_supplicant or wzc) */ u32 ndisauthtype; /* NDIS_802_11_AUTHENTICATION_MODE */ u32 ndisencryptstatus; /* NDIS_802_11_ENCRYPTION_STATUS */ @@ -198,7 +192,6 @@ struct security_priv { u8 authenticator_ie[256]; /* store ap security information element */ u8 supplicant_ie[256]; /* store sta security information element */ - /* for tkip countermeasure */ u32 last_mic_err_time; u8 btkip_countermeasure; @@ -297,7 +290,6 @@ struct sha256_state { } \ } while (0) - #define GET_TKIP_PN(iv, dot11txpn)\ do {\ dot11txpn._byte_.TSC0 = iv[2];\ @@ -308,7 +300,6 @@ struct sha256_state { dot11txpn._byte_.TSC5 = iv[7];\ } while (0) - #define ROL32(A, n) (((A) << (n)) | (((A)>>(32-(n))) & ((1UL << (n)) - 1))) #define ROR32(A, n) ROL32((A), 32-(n)) @@ -425,7 +416,6 @@ static const unsigned long K[64] = { 0x90befffaUL, 0xa4506cebUL, 0xbef9a3f7UL, 0xc67178f2UL }; - /* Various logical functions */ #define RORc(x, y) \ (((((unsigned long) (x) & 0xFFFFFFFFUL) >> (unsigned long) ((y) & 31)) | \ diff --git a/include/rtw_wifi_regd.h b/include/rtw_wifi_regd.h index 249a89427..696ee9215 100644 --- a/include/rtw_wifi_regd.h +++ b/include/rtw_wifi_regd.h @@ -30,3 +30,4 @@ void rtw_reg_notify_by_driver(_adapter *adapter); #endif #endif /* __RTW_WIFI_REGD_H__ */ + diff --git a/include/rtw_xmit.h b/include/rtw_xmit.h index 1fc2d6f70..6b5ea4302 100644 --- a/include/rtw_xmit.h +++ b/include/rtw_xmit.h @@ -421,6 +421,7 @@ struct pkt_attrib { u8 rate; u8 intel_proxim; u8 retry_ctrl; + //u8 sw_seq; // Add support for pre-configured SeqNum via RadioTap u8 mbssid; u8 ldpc; u8 stbc; diff --git a/include/wifi.h b/include/wifi.h index 504dce90f..040a310cc 100644 --- a/include/wifi.h +++ b/include/wifi.h @@ -990,6 +990,42 @@ typedef enum _HT_CAP_AMPDU_DENSITY { #define IEEE80211_HT_IE_NON_GF_STA_PRSNT 0x0004 #define IEEE80211_HT_IE_NON_HT_STA_PRSNT 0x0010 +/* 802.11ac VHT Capabilities */ +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895 0x00000000 +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991 0x00000001 +#define IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454 0x00000002 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ 0x00000004 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ 0x00000008 +#define IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_MASK 0x0000000C +#define IEEE80211_VHT_CAP_RXLDPC 0x00000010 +#define IEEE80211_VHT_CAP_SHORT_GI_80 0x00000020 +#define IEEE80211_VHT_CAP_SHORT_GI_160 0x00000040 +#define IEEE80211_VHT_CAP_TXSTBC 0x00000080 +#define IEEE80211_VHT_CAP_RXSTBC_1 0x00000100 +#define IEEE80211_VHT_CAP_RXSTBC_2 0x00000200 +#define IEEE80211_VHT_CAP_RXSTBC_3 0x00000300 +#define IEEE80211_VHT_CAP_RXSTBC_4 0x00000400 +#define IEEE80211_VHT_CAP_RXSTBC_MASK 0x00000700 +#define IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE 0x00000800 +#define IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE 0x00001000 +#define IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT 13 +#define IEEE80211_VHT_CAP_BEAMFORMEE_STS_MASK \ + (7 << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT) +#define IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT 16 +#define IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_MASK \ + (7 << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT) +#define IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE 0x00080000 +#define IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE 0x00100000 +#define IEEE80211_VHT_CAP_VHT_TXOP_PS 0x00200000 +#define IEEE80211_VHT_CAP_HTC_VHT 0x00400000 +#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT 23 +#define IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_MASK \ + (7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT) +#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_UNSOL_MFB 0x08000000 +#define IEEE80211_VHT_CAP_VHT_LINK_ADAPTATION_VHT_MRQ_MFB 0x0c000000 +#define IEEE80211_VHT_CAP_RX_ANTENNA_PATTERN 0x10000000 +#define IEEE80211_VHT_CAP_TX_ANTENNA_PATTERN 0x20000000 + /* block-ack parameters */ #define IEEE80211_ADDBA_PARAM_POLICY_MASK 0x0002 #define IEEE80211_ADDBA_PARAM_TID_MASK 0x003C @@ -1002,7 +1038,8 @@ typedef enum _HT_CAP_AMPDU_DENSITY { * According to IEEE802.11n spec size varies from 8K to 64K (in powers of 2) */ #define IEEE80211_MIN_AMPDU_BUF 0x8 -#define IEEE80211_MAX_AMPDU_BUF 0x40 +#define IEEE80211_MAX_AMPDU_BUF_HT 0x40 +#define IEEE80211_MAX_AMPDU_BUF 0x100 /* Spatial Multiplexing Power Save Modes */ diff --git a/os_dep/linux/ioctl_cfg80211.c b/os_dep/linux/ioctl_cfg80211.c index ccb931047..4540822f3 100644 --- a/os_dep/linux/ioctl_cfg80211.c +++ b/os_dep/linux/ioctl_cfg80211.c @@ -27,9 +27,23 @@ #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) #define STATION_INFO_SIGNAL BIT(NL80211_STA_INFO_SIGNAL) #define STATION_INFO_TX_BITRATE BIT(NL80211_STA_INFO_TX_BITRATE) +#define STATION_INFO_TX_BITRATE_BW_5 BIT(RATE_INFO_BW_5) +#define STATION_INFO_TX_BITRATE_BW_10 BIT(RATE_INFO_BW_10) +#define STATION_INFO_TX_BITRATE_BW_20 BIT(RATE_INFO_BW_20) +#define STATION_INFO_TX_BITRATE_BW_40 BIT(RATE_INFO_BW_40) +#define STATION_INFO_TX_BITRATE_BW_80 BIT(RATE_INFO_BW_80) +#define STATION_INFO_TX_BITRATE_BW_160 BIT(RATE_INFO_BW_160) #define STATION_INFO_RX_PACKETS BIT(NL80211_STA_INFO_RX_PACKETS) #define STATION_INFO_TX_PACKETS BIT(NL80211_STA_INFO_TX_PACKETS) +#define STATION_INFO_RX_BYTES BIT(NL80211_STA_INFO_RX_BYTES) +#define STATION_INFO_TX_BYTES BIT(NL80211_STA_INFO_TX_BYTES) #define STATION_INFO_ASSOC_REQ_IES 0 +#define STATION_INFO_BSS_PARAM BIT(NL80211_STA_INFO_BSS_PARAM) +#define STATION_INFO_BSS_PARAM_CTS_PROT BIT(NL80211_STA_BSS_PARAM_CTS_PROT) +#define STATION_INFO_BSS_PARAM_SHORT_PREAMBLE BIT(NL80211_STA_BSS_PARAM_SHORT_PREAMBLE) +#define STATION_INFO_BSS_PARAM_SHORT_SLOT_TIME BIT(NL80211_STA_BSS_PARAM_SHORT_SLOT_TIME) +#define STATION_INFO_BSS_PARAM_DTIM_PERIOD BIT(NL80211_STA_BSS_PARAM_DTIM_PERIOD) +#define STATION_INFO_BSS_PARAM_BEACON_INTERVAL BIT(NL80211_STA_BSS_PARAM_BEACON_INTERVAL) #endif /* Linux kernel >= 4.0.0 */ #include @@ -63,7 +77,6 @@ #endif /* CONFIG_WAPI_SUPPORT */ - static const u32 rtw_cipher_suites[] = { WLAN_CIPHER_SUITE_WEP40, WLAN_CIPHER_SUITE_WEP104, @@ -182,7 +195,6 @@ static struct ieee80211_channel rtw_5ghz_a_channels[] = { CHAN5G(216, 0), }; - void rtw_2g_channels_init(struct ieee80211_channel *channels) { _rtw_memcpy((void *)channels, (void *)rtw_2ghz_channels, @@ -330,7 +342,11 @@ static const struct ieee80211_txrx_stypes static u64 rtw_get_systime_us(void) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 20, 0)) + struct timespec64 ts; + ktime_get_boottime_ts64(&ts); + return ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 39)) struct timespec ts; get_monotonic_boottime(&ts); return ((u64)ts.tv_sec * 1000000) + ts.tv_nsec / 1000; @@ -457,7 +473,6 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_net } /* _exit_critical_bh(&pwdev_priv->scan_req_lock, &irqL); */ - channel = pnetwork->network.Configuration.DSConfig; freq = rtw_ch2freq(channel); notify_channel = ieee80211_get_channel(wiphy, freq); @@ -510,7 +525,6 @@ struct cfg80211_bss *rtw_cfg80211_inform_bss(_adapter *padapter, struct wlan_net _rtw_memcpy(pwlanhdr->addr2, pnetwork->network.MacAddress, ETH_ALEN); _rtw_memcpy(pwlanhdr->addr3, pnetwork->network.MacAddress, ETH_ALEN); - /* pbuf += sizeof(struct rtw_ieee80211_hdr_3addr); */ len = sizeof(struct rtw_ieee80211_hdr_3addr); _rtw_memcpy((pbuf + len), pnetwork->network.IEs, pnetwork->network.IELength); @@ -648,8 +662,10 @@ void rtw_cfg80211_ibss_indicate_connect(_adapter *padapter) return ; } } else { - if (scanned == NULL) + if (scanned == NULL) { rtw_warn_on(1); + return; + } if (_rtw_memcmp(&(scanned->network.Ssid), &(pnetwork->Ssid), sizeof(NDIS_802_11_SSID)) == _TRUE && _rtw_memcmp(scanned->network.MacAddress, pnetwork->MacAddress, sizeof(NDIS_802_11_MAC_ADDRESS)) == _TRUE @@ -747,12 +763,28 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) struct ieee80211_channel *notify_channel; u32 freq; u16 channel = cur_network->network.Configuration.DSConfig; + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) + struct cfg80211_roam_info roam_info = {}; + #endif freq = rtw_ch2freq(channel); notify_channel = ieee80211_get_channel(wiphy, freq); #endif RTW_INFO(FUNC_ADPT_FMT" call cfg80211_roamed\n", FUNC_ADPT_ARG(padapter)); + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) + roam_info.channel = notify_channel; + roam_info.bssid = cur_network->network.MacAddress; + roam_info.req_ie = + pmlmepriv->assoc_req+sizeof(struct rtw_ieee80211_hdr_3addr)+2; + roam_info.req_ie_len = + pmlmepriv->assoc_req_len-sizeof(struct rtw_ieee80211_hdr_3addr)-2; + roam_info.resp_ie = + pmlmepriv->assoc_rsp+sizeof(struct rtw_ieee80211_hdr_3addr)+6; + roam_info.resp_ie_len = + pmlmepriv->assoc_rsp_len-sizeof(struct rtw_ieee80211_hdr_3addr)-6; + cfg80211_roamed(padapter->pnetdev, &roam_info, GFP_ATOMIC); + #else cfg80211_roamed(padapter->pnetdev #if LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 39) || defined(COMPAT_KERNEL_RELEASE) , notify_channel @@ -763,16 +795,20 @@ void rtw_cfg80211_indicate_connect(_adapter *padapter) , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6 , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6 , GFP_ATOMIC); + #endif } else { #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO("pwdev->sme_state(b)=%d\n", pwdev->sme_state); #endif + + if (NULL != pmlmepriv->assoc_req && NULL != pmlmepriv->assoc_rsp) cfg80211_connect_result(padapter->pnetdev, cur_network->network.MacAddress , pmlmepriv->assoc_req + sizeof(struct rtw_ieee80211_hdr_3addr) + 2 , pmlmepriv->assoc_req_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 2 , pmlmepriv->assoc_rsp + sizeof(struct rtw_ieee80211_hdr_3addr) + 6 , pmlmepriv->assoc_rsp_len - sizeof(struct rtw_ieee80211_hdr_3addr) - 6 , WLAN_STATUS_SUCCESS, GFP_ATOMIC); + #if LINUX_VERSION_CODE < KERNEL_VERSION(3, 11, 0) || defined(COMPAT_KERNEL_RELEASE) RTW_INFO("pwdev->sme_state(a)=%d\n", pwdev->sme_state); #endif @@ -861,7 +897,6 @@ void rtw_cfg80211_indicate_disconnect(_adapter *padapter, u16 reason, u8 locally } } - #ifdef CONFIG_AP_MODE static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_param *param, u32 param_len) { @@ -890,7 +925,7 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) { if (param->u.crypt.idx >= WEP_KEYS #ifdef CONFIG_IEEE80211W - && param->u.crypt.idx > BIP_MAX_KEYID + || param->u.crypt.idx >= BIP_MAX_KEYID #endif /* CONFIG_IEEE80211W */ ) { ret = -EINVAL; @@ -913,7 +948,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa goto exit; } - if (strcmp(param->u.crypt.alg, "WEP") == 0 && (psta == NULL)) { RTW_INFO("r871x_set_encryption, crypt.alg = WEP\n"); @@ -956,7 +990,6 @@ static int rtw_cfg80211_ap_set_encryption(struct net_device *dev, struct ieee_pa } - if (!psta && check_fwstate(pmlmepriv, WIFI_AP_STATE)) { /* group key */ if (param->u.crypt.set_tx == 0) { /* group key */ if (strcmp(param->u.crypt.alg, "WEP") == 0) { @@ -1136,7 +1169,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param struct wifidirect_info *pwdinfo = &padapter->wdinfo; #endif /* CONFIG_P2P */ - RTW_INFO("%s\n", __func__); param->u.crypt.err = 0; @@ -1152,7 +1184,7 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param param->sta_addr[4] == 0xff && param->sta_addr[5] == 0xff) { if (param->u.crypt.idx >= WEP_KEYS #ifdef CONFIG_IEEE80211W - && param->u.crypt.idx > BIP_MAX_KEYID + || param->u.crypt.idx >= BIP_MAX_KEYID #endif /* CONFIG_IEEE80211W */ ) { ret = -EINVAL; @@ -1221,7 +1253,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param if (strcmp(param->u.crypt.alg, "none") != 0) psta->ieee8021x_blocked = _FALSE; - if ((padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption2Enabled) || (padapter->securitypriv.ndisencryptstatus == Ndis802_11Encryption3Enabled)) psta->dot118021XPrivacy = padapter->securitypriv.dot11PrivacyAlgrthm; @@ -1359,7 +1390,6 @@ static int rtw_cfg80211_set_encryption(struct net_device *dev, struct ieee_param } #endif - exit: RTW_INFO("%s, ret=%d\n", __func__, ret); @@ -1456,7 +1486,6 @@ static int cfg80211_rtw_add_key(struct wiphy *wiphy, struct net_device *ndev, param->u.crypt.set_tx = 1; /* for wpa/wpa2 pairwise key */ } - /* param->u.crypt.idx = key_index - 1; */ param->u.crypt.idx = key_index; @@ -1603,6 +1632,7 @@ static int cfg80211_rtw_set_default_key(struct wiphy *wiphy, return 0; } + #if defined(CONFIG_GTK_OL) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 1, 0)) static int cfg80211_rtw_set_rekey_data(struct wiphy *wiphy, struct net_device *ndev, @@ -1677,7 +1707,8 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, && check_fwstate(pmlmepriv, _FW_LINKED) ) { struct wlan_network *cur_network = &(pmlmepriv->cur_network); - + struct pwrctrl_priv *pwrctl = adapter_to_pwrctl(padapter); + if (_rtw_memcmp((u8 *)mac, cur_network->network.MacAddress, ETH_ALEN) == _FALSE) { RTW_INFO("%s, mismatch bssid="MAC_FMT"\n", __func__, MAC_ARG(cur_network->network.MacAddress)); ret = -ENOENT; @@ -1690,12 +1721,58 @@ static int cfg80211_rtw_get_station(struct wiphy *wiphy, sinfo->filled |= STATION_INFO_TX_BITRATE; sinfo->txrate.legacy = rtw_get_cur_max_rate(padapter); + /* to-do set the txrate flags */ + // for example something like: + //sinfo->txrate.flags |= NL80211_RATE_INFO_VHT_NSS; + //sinfo->txrate.nss = rtw_vht_mcsmap_to_nss(psta->vhtpriv.vht_mcs_map); + + + /* bw_mode is more delicate + sinfo->txrate.bw is flagged + psta->bw_mode */ + + /* + sinfo->txrate.bw = psta->bw_mode; + sinfo->txrate.flags |= psta->bw_mode; + printk("rtw_get_current_tx_sgi: %i", rtw_get_current_tx_sgi(padapter, mac)); + printk("NSS: %i", rtw_vht_mcsmap_to_nss(psta->vhtpriv.vht_mcs_map)); + printk("BW MODE: %i", psta->bw_mode); + printk("5 10 20 40 80 160: %i %i %i %i %i %i", STATION_INFO_TX_BITRATE_BW_5, STATION_INFO_TX_BITRATE_BW_10, STATION_INFO_TX_BITRATE_BW_20, STATION_INFO_TX_BITRATE_BW_40, STATION_INFO_TX_BITRATE_BW_80, STATION_INFO_TX_BITRATE_BW_160); + printk("5 10 20 40 80 160: %i %i %i %i %i %i", RATE_INFO_BW_5, RATE_INFO_BW_10, RATE_INFO_BW_20, RATE_INFO_BW_40, RATE_INFO_BW_80, RATE_INFO_BW_160); + */ + + sinfo->filled |= STATION_INFO_RX_BYTES; + sinfo->rx_bytes = psta->sta_stats.rx_bytes; + + sinfo->filled |= STATION_INFO_TX_BYTES; + sinfo->tx_bytes = psta->sta_stats.tx_bytes; + sinfo->filled |= STATION_INFO_RX_PACKETS; sinfo->rx_packets = sta_rx_data_pkts(psta); sinfo->filled |= STATION_INFO_TX_PACKETS; sinfo->tx_packets = psta->sta_stats.tx_pkts; + sinfo->filled |= STATION_INFO_BSS_PARAM; + +#if defined (LINUX_VERSION_CODE) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 20, 0)) + if (!psta->no_short_preamble_set) + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_SHORT_PREAMBLE; + + if (!psta->no_short_slot_time_set) + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_SHORT_SLOT_TIME; + + /* no idea how to check this yet */ + if (0) + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_CTS_PROT; + + /* is this actually the dtim_period? */ + sinfo->bss_param.flags |= STATION_INFO_BSS_PARAM_DTIM_PERIOD; + sinfo->bss_param.dtim_period = pwrctl->dtim; + + sinfo->bss_param.beacon_interval = get_beacon_interval(&cur_network->network); +#endif + } /* for Ad-Hoc/AP mode */ @@ -1730,10 +1807,17 @@ enum nl80211_iftype { NL80211_IFTYPE_MAX = NUM_NL80211_IFTYPES - 1 }; #endif +#if LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0) +static int cfg80211_rtw_change_iface(struct wiphy *wiphy, + struct net_device *ndev, + enum nl80211_iftype type, + struct vif_params *params) +#else static int cfg80211_rtw_change_iface(struct wiphy *wiphy, struct net_device *ndev, enum nl80211_iftype type, u32 *flags, struct vif_params *params) +#endif { enum nl80211_iftype old_type; NDIS_802_11_NETWORK_INFRASTRUCTURE networkType; @@ -2282,7 +2366,6 @@ static int cfg80211_rtw_scan(struct wiphy *wiphy } #endif /* CONFIG_P2P */ - _rtw_memset(ssid, 0, sizeof(NDIS_802_11_SSID) * RTW_SSID_SCAN_AMOUNT); /* parsing request ssids, n_ssids */ for (i = 0; i < request->n_ssids && i < RTW_SSID_SCAN_AMOUNT; i++) { @@ -2379,8 +2462,6 @@ static int cfg80211_rtw_set_wiphy_params(struct wiphy *wiphy, u32 changed) return 0; } - - static int rtw_cfg80211_set_wpa_version(struct security_priv *psecuritypriv, u32 wpa_version) { RTW_INFO("%s, wpa_version=%d\n", __func__, wpa_version); @@ -2390,7 +2471,6 @@ static int rtw_cfg80211_set_wpa_version(struct security_priv *psecuritypriv, u32 return 0; } - if (wpa_version & (NL80211_WPA_VERSION_1 | NL80211_WPA_VERSION_2)) psecuritypriv->ndisauthtype = Ndis802_11AuthModeWPAPSK; @@ -2439,7 +2519,6 @@ static int rtw_cfg80211_set_auth_type(struct security_priv *psecuritypriv, psecuritypriv->ndisencryptstatus = Ndis802_11Encryption1Enabled; - break; default: psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_Open; @@ -2528,7 +2607,6 @@ static int rtw_cfg80211_set_key_mgt(struct security_priv *psecuritypriv, u32 key psecuritypriv->dot11AuthAlgrthm = dot11AuthAlgrthm_WAPI; #endif - else { RTW_INFO("Invalid key mgt: 0x%x\n", key_mgt); /* return -EINVAL; */ @@ -2724,7 +2802,6 @@ static int rtw_cfg80211_set_wpa_ie(_adapter *padapter, u8 *pie, size_t ielen) /* || check_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS) == _TRUE) */ rtw_hal_set_hwreg(padapter, HW_VAR_OFF_RCR_AM, null_addr); - exit: if (buf) rtw_mfree(buf, ielen); @@ -2787,7 +2864,6 @@ static int cfg80211_rtw_join_ibss(struct wiphy *wiphy, struct net_device *ndev, rtw_mi_buddy_scan_abort(padapter, _TRUE); /* OR rtw_mi_scan_abort(padapter, _TRUE);*/ #endif /*CONFIG_CONCURRENT_MODE*/ - _rtw_memset(&ndis_ssid, 0, sizeof(NDIS_802_11_SSID)); ndis_ssid.SsidLength = params->ssid_len; _rtw_memcpy(ndis_ssid.Ssid, (u8 *)params->ssid, params->ssid_len); @@ -2947,11 +3023,9 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, RTW_INFO("ssid=%s, len=%zu\n", ndis_ssid.Ssid, sme->ssid_len); - if (sme->bssid) RTW_INFO("bssid="MAC_FMT"\n", MAC_ARG(sme->bssid)); - psecuritypriv->ndisencryptstatus = Ndis802_11EncryptionDisabled; psecuritypriv->dot11PrivacyAlgrthm = _NO_PRIVACY_; psecuritypriv->dot118021XGrpPrivacy = _NO_PRIVACY_; @@ -2981,7 +3055,6 @@ static int cfg80211_rtw_connect(struct wiphy *wiphy, struct net_device *ndev, padapter->mlmeextpriv.mlmext_info.auth_algo = psecuritypriv->dot11AuthAlgrthm; #endif - if (ret < 0) goto cancel_ps_deny; @@ -3139,6 +3212,27 @@ static int cfg80211_rtw_set_txpower(struct wiphy *wiphy, enum tx_power_setting type, int dbm) #endif { + + _adapter *padapter = wiphy_to_adapter(wiphy); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + int value; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)) || defined(COMPAT_KERNEL_RELEASE) + value = mbm/100; +#else + value = dbm; +#endif + + if(value < 0) + value = 0; + if(value > 40) + value = 40; + + if(type == NL80211_TX_POWER_FIXED) { + pHalData->CurrentTxPwrIdx = value; + rtw_hal_set_tx_power_level(padapter, pHalData->CurrentChannel); + } else + return -EOPNOTSUPP; + #if 0 struct iwm_priv *iwm = wiphy_to_iwm(wiphy); int ret; @@ -3175,9 +3269,13 @@ static int cfg80211_rtw_get_txpower(struct wiphy *wiphy, #endif int *dbm) { + _adapter *padapter = wiphy_to_adapter(wiphy); + HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); + RTW_INFO("%s\n", __func__); - *dbm = (12); + *dbm = pHalData->CurrentTxPwrIdx; + //*dbm = (12); return 0; } @@ -3446,8 +3544,10 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de RTW_INFO(FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); - if (skb) - rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); + if (!skb) + goto fail; + + rtw_mstat_update(MSTAT_TYPE_SKB, MSTAT_ALLOC_SUCCESS, skb->truesize); if (unlikely(skb->len < sizeof(struct ieee80211_radiotap_header))) goto fail; @@ -3562,7 +3662,6 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de pattrib->seqnum = pmlmeext->mgnt_seq; pmlmeext->mgnt_seq++; - pattrib->last_txcmdsz = pattrib->pktlen; dump_mgntframe(padapter, pmgntframe); @@ -3570,7 +3669,6 @@ static int rtw_cfg80211_monitor_if_xmit_entry(struct sk_buff *skb, struct net_de } else RTW_INFO("frame_ctl=0x%x\n", frame_ctl & (RTW_IEEE80211_FCTL_FTYPE | RTW_IEEE80211_FCTL_STYPE)); - fail: rtw_skb_free(skb); @@ -3636,7 +3734,19 @@ static int rtw_cfg80211_add_monitor_if(_adapter *padapter, char *name, struct ne mon_ndev->type = ARPHRD_IEEE80211_RADIOTAP; strncpy(mon_ndev->name, name, IFNAMSIZ); mon_ndev->name[IFNAMSIZ - 1] = 0; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12 ,0)) + mon_ndev->needs_free_netdev = true; +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 9)) + mon_ndev->priv_destructor = rtw_ndev_destructor; +#else mon_ndev->destructor = rtw_ndev_destructor; +#endif +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 11, 9)) + mon_ndev->needs_free_netdev = false; + mon_ndev->priv_destructor = rtw_ndev_destructor; +#else + mon_ndev->destructor = rtw_ndev_destructor; +#endif #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 29)) mon_ndev->netdev_ops = &rtw_cfg80211_monitor_if_ops; @@ -3702,7 +3812,11 @@ static int #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) unsigned char name_assign_type, #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 12, 0)) + enum nl80211_iftype type, struct vif_params *params) + #else enum nl80211_iftype type, u32 *flags, struct vif_params *params) + #endif { int ret = 0; struct net_device *ndev = NULL; @@ -3798,22 +3912,18 @@ static int rtw_add_beacon(_adapter *adapter, const u8 *head, size_t head_len, co struct mlme_priv *pmlmepriv = &(adapter->mlmepriv); /* struct sta_priv *pstapriv = &padapter->stapriv; */ - RTW_INFO("%s beacon_head_len=%zu, beacon_tail_len=%zu\n", __FUNCTION__, head_len, tail_len); - if (check_fwstate(pmlmepriv, WIFI_AP_STATE) != _TRUE) return -EINVAL; if (head_len < 24) return -EINVAL; - pbuf = rtw_zmalloc(head_len + tail_len); if (!pbuf) return -ENOMEM; - /* _rtw_memcpy(&pstapriv->max_num_sta, param->u.bcn_ie.reserved, 2); */ /* if((pstapriv->max_num_sta>NUM_STA) || (pstapriv->max_num_sta<=0)) */ @@ -3874,7 +3984,6 @@ static int rtw_add_beacon(_adapter *adapter, const u8 *head, size_t head_len, co } else ret = -EINVAL; - rtw_mfree(pbuf, head_len + tail_len); return ret; @@ -4068,7 +4177,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev RTW_INFO("+"FUNC_NDEV_FMT"\n", FUNC_NDEV_ARG(ndev)); - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 19, 0)) target_mac = mac; #else @@ -4080,7 +4188,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev return -EINVAL; } - if (!target_mac) { RTW_INFO("flush all sta, and cam_entry\n"); @@ -4091,7 +4198,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev return ret; } - RTW_INFO("free sta macaddr =" MAC_FMT "\n", MAC_ARG(target_mac)); if (target_mac[0] == 0xff && target_mac[1] == 0xff && @@ -4099,7 +4205,6 @@ static int cfg80211_rtw_del_station(struct wiphy *wiphy, struct net_device *ndev target_mac[4] == 0xff && target_mac[5] == 0xff) return -EINVAL; - _enter_critical_bh(&pstapriv->asoc_list_lock, &irqL); phead = &pstapriv->asoc_list; @@ -4272,9 +4377,9 @@ static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wd _adapter *padapter= wiphy_to_adapter(wiphy); int channel; int control_freq; - int center_freq; - int center_freq2 = 0; - int width = NL80211_CHAN_WIDTH_20; + int center_freq=0; + int center_freq2=0; + int width=0; int band; int bandWidth; int offset; @@ -4286,7 +4391,7 @@ static int cfg80211_rtw_get_channel(struct wiphy *wiphy, struct wireless_dev *wd return -ENODEV; offset = rtw_get_oper_choffset(padapter); - center_freq = channel = adapter_to_dvobj(padapter)->oper_channel; + channel = adapter_to_dvobj(padapter)->oper_channel; if(channel >= 1){ switch(pHalData->CurrentBandType){ @@ -4650,7 +4755,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, u8 *frame_body = (unsigned char *)(buf + sizeof(struct rtw_ieee80211_hdr_3addr)); size_t frame_body_len = len - sizeof(struct rtw_ieee80211_hdr_3addr); - RTW_INFO("[%s] In\n", __FUNCTION__); /* prepare for building provision_request frame */ @@ -4684,7 +4788,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, break; } - if (rtw_get_p2p_ie(frame_body + _PUBLIC_ACTION_IE_OFFSET_, frame_body_len - _PUBLIC_ACTION_IE_OFFSET_, p2p_ie, &p2p_ielen)) { rtw_get_p2p_attr_content(p2p_ie, p2p_ielen, P2P_ATTR_DEVICE_INFO, devinfo_content, &devinfo_contentlen); @@ -4692,7 +4795,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, } - /* start to build provision_request frame */ _rtw_memset(wpsie, 0, sizeof(wpsie)); _rtw_memset(p2p_ie, 0, sizeof(p2p_ie)); @@ -4702,7 +4804,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, if (pmgntframe == NULL) return; - /* update attribute */ pattrib = &pmgntframe->attrib; update_mgntframe_attrib(padapter, pattrib); @@ -4732,7 +4833,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, pframe = rtw_set_fixed_ie(pframe, 1, &(oui_subtype), &(pattrib->pktlen)); pframe = rtw_set_fixed_ie(pframe, 1, &(dialogToken), &(pattrib->pktlen)); - /* build_prov_disc_request_p2p_ie */ /* P2P OUI */ p2pielen = 0; @@ -4762,7 +4862,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, _rtw_memcpy(p2p_ie + p2pielen, &capability, 2); p2pielen += 2; - /* Device Info ATTR */ /* Type: */ p2p_ie[p2pielen++] = P2P_ATTR_DEVICE_INFO; @@ -4778,7 +4877,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, _rtw_memcpy(p2p_ie + p2pielen, devinfo_content, devinfo_contentlen); p2pielen += devinfo_contentlen; - pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, p2pielen, (unsigned char *) p2p_ie, &p2p_ielen); /* p2pielen = build_prov_disc_request_p2p_ie( pwdinfo, pframe, NULL, 0, pwdinfo->tx_prov_disc_info.peerDevAddr); */ /* pframe += p2pielen; */ @@ -4816,7 +4914,6 @@ void rtw_cfg80211_issue_p2p_provision_request(_adapter *padapter, const u8 *buf, pframe = rtw_set_ie(pframe, _VENDOR_SPECIFIC_IE_, wpsielen, (unsigned char *) wpsie, &pattrib->pktlen); - #ifdef CONFIG_WFD wfdielen = build_provdisc_req_wfd_ie(pwdinfo, pframe); pframe += wfdielen; @@ -4998,7 +5095,6 @@ static s32 cfg80211_rtw_remain_on_channel(struct wiphy *wiphy, } else RTW_INFO("%s remain_ch:%u not in channel plan!!!!\n", __FUNCTION__, remain_ch); - /* call this after other things have been done */ #ifdef CONFIG_CONCURRENT_MODE if (ATOMIC_READ(&pwdev_priv->ro_ch_to) == 1 || @@ -5766,7 +5862,6 @@ static int rtw_cfg80211_set_beacon_wpsp2pie(struct net_device *ndev, char *buf, } #endif /* CONFIG_P2P */ - #ifdef CONFIG_WFD wfd_ie = rtw_get_wfd_ie(buf, len, NULL, &wfd_ielen); if (wfd_ie) { @@ -5892,7 +5987,6 @@ static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *bu RTW_INFO("Got P2P Capability Attr, grp_cap=0x%x, is_GO\n", grp_cap); } - if (is_GO == _FALSE) { if (pmlmepriv->p2p_probe_resp_ie) { u32 free_len = pmlmepriv->p2p_probe_resp_ie_len; @@ -5930,7 +6024,6 @@ static int rtw_cfg80211_set_probe_resp_wpsp2pie(struct net_device *net, char *bu } #endif /* CONFIG_P2P */ - #ifdef CONFIG_WFD wfd_ie = rtw_get_wfd_ie(buf, len, NULL, &wfd_ielen); if (wfd_ie) { @@ -6101,7 +6194,13 @@ static void rtw_cfg80211_init_ht_capab(_adapter *padapter, struct ieee80211_sta_ ht_cap->ht_supported = _TRUE; - ht_cap->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 | + /* According to the comment in rtw_ap.c: + * "Note: currently we switch to the MIXED op mode if HT non-greenfield + * station is associated. Probably it's a theoretical case, since + * it looks like all known HT STAs support greenfield." + * Therefore Greenfield is added to ht_cap + */ + ht_cap->cap = IEEE80211_HT_CAP_SUP_WIDTH_20_40 | IEEE80211_HT_CAP_GRN_FLD | IEEE80211_HT_CAP_SGI_40 | IEEE80211_HT_CAP_SGI_20 | IEEE80211_HT_CAP_DSSSCCK40 | IEEE80211_HT_CAP_MAX_AMSDU; rtw_cfg80211_init_ht_capab_ex(padapter, ht_cap, band, rf_type); @@ -6158,37 +6257,125 @@ void rtw_cfg80211_init_wdev_data(_adapter *padapter) #endif } -static void rtw_cfg80211_create_vht_cap(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap) +static void rtw_cfg80211_init_vht_capab(_adapter *padapter, struct ieee80211_sta_vht_cap *vht_cap, u8 rf_type) { -#ifdef CONFIG_80211AC_VHT - static int highest_rates[] = {433, 866, 1300, 1733}; // 80 MHz - u16 mcs_map; - int i; - HAL_DATA_TYPE *pHalData = GET_HAL_DATA(padapter); - struct mlme_priv *pmlmepriv = &padapter->mlmepriv; + struct registry_priv *pregistrypriv = &padapter->registrypriv; + struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct vht_priv *pvhtpriv = &pmlmepriv->vhtpriv; + u8 bw, rf_num, rx_stbc_nss = 0; + u16 HighestRate; + u32 rx_packet_offset, max_recvbuf_sz; - vht_cap->vht_supported = 1; - vht_cap->cap = IEEE80211_VHT_CAP_RXLDPC|IEEE80211_VHT_CAP_SHORT_GI_80|IEEE80211_VHT_CAP_TXSTBC| - IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; + vht_cap->vht_supported = _TRUE; + rtw_vht_use_default_setting(padapter); - mcs_map = 0; - for (i = 0; i < 8; i++) { - if(i < pHalData->NumTotalRFPath) - mcs_map |= IEEE80211_VHT_MCS_SUPPORT_0_9 << (i*2); - else - mcs_map |= IEEE80211_VHT_MCS_NOT_SUPPORTED << (i*2); + /* Reference: core/rtw_vht.c */ + /* MCS map */ + vht_cap->vht_mcs.tx_mcs_map = pvhtpriv->vht_mcs_map[0] | (pvhtpriv->vht_mcs_map[1] << 8); + vht_cap->vht_mcs.rx_mcs_map = vht_cap->vht_mcs.tx_mcs_map; + + /* B0 B1 Maximum MPDU Length */ + rtw_hal_get_def_var(padapter, HAL_DEF_RX_PACKET_OFFSET, &rx_packet_offset); + rtw_hal_get_def_var(padapter, HAL_DEF_MAX_RECVBUF_SZ, &max_recvbuf_sz); + + if ((max_recvbuf_sz - rx_packet_offset) >= 11454) { + vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_11454; + } else if ((max_recvbuf_sz - rx_packet_offset) >= 7991) { + vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_7991; + } else if ((max_recvbuf_sz - rx_packet_offset) >= 3895) { + vht_cap->cap |= IEEE80211_VHT_CAP_MAX_MPDU_LENGTH_3895; } - vht_cap->vht_mcs.tx_mcs_map = - vht_cap->vht_mcs.rx_mcs_map = cpu_to_le16(mcs_map); - vht_cap->vht_mcs.tx_highest = - vht_cap->vht_mcs.rx_highest = cpu_to_le16(highest_rates[pHalData->NumTotalRFPath-1]); -#else - vht_cap->vht_supported = 0; -#endif -} + /* B2 B3 Supported Channel Width Set */ + if (hal_chk_bw_cap(padapter, BW_CAP_160M) && REGSTY_IS_BW_5G_SUPPORT(pregistrypriv, CHANNEL_WIDTH_160)) { + if (hal_chk_bw_cap(padapter, BW_CAP_80_80M) && REGSTY_IS_BW_5G_SUPPORT(pregistrypriv, CHANNEL_WIDTH_80_80)) + vht_cap->cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160_80PLUS80MHZ; + else + vht_cap->cap |= IEEE80211_VHT_CAP_SUPP_CHAN_WIDTH_160MHZ; + } + + /* B4 Rx LDPC */ + if(TEST_FLAG(pvhtpriv->ldpc_cap, LDPC_VHT_ENABLE_RX)) { + vht_cap->cap |= IEEE80211_VHT_CAP_RXLDPC; + } + + /* B5 ShortGI for 80MHz */ + if (pvhtpriv->sgi_80m) + vht_cap->cap |= IEEE80211_VHT_CAP_SHORT_GI_80; + + /* B6 ShortGI for 160MHz */ + // todo + + /* B7 Tx STBC */ + if(TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_TX)) { + vht_cap->cap |= IEEE80211_VHT_CAP_TXSTBC; + } + /* B8 B9 B10 Rx STBC */ + if (TEST_FLAG(pvhtpriv->stbc_cap, STBC_VHT_ENABLE_RX)) { + switch (rf_type) { + case RF_1T1R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_1;/*RX STBC One spatial stream*/ + break; + case RF_2T2R: + case RF_1T2R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_2;/*RX STBC Two spatial streams*/ + break; + case RF_3T3R: + case RF_3T4R: + case RF_4T4R: + vht_cap->cap |= IEEE80211_VHT_CAP_RXSTBC_3;/*RX STBC Three spatial streams*/ + break; + default: + /* DBG_871X("[warning] rf_type %d is not expected\n", rf_type); */ + break; + } + } + + /* B11 SU Beamformer Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_BEAMFORMER_ENABLE)) { + vht_cap->cap |= IEEE80211_VHT_CAP_SU_BEAMFORMER_CAPABLE; + /* B16 17 18 Number of Sounding Dimensions */ + rtw_hal_get_def_var(padapter, HAL_DEF_BEAMFORMER_CAP, (u8 *)&rf_num); + vht_cap->cap |= rf_num << IEEE80211_VHT_CAP_SOUNDING_DIMENSIONS_SHIFT; + /* B19 MU Beamformer Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_MU_MIMO_AP_ENABLE)) + vht_cap->cap |= IEEE80211_VHT_CAP_MU_BEAMFORMER_CAPABLE; + } + + /* B12 SU Beamformee Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_BEAMFORMEE_ENABLE)) { + vht_cap->cap |= IEEE80211_VHT_CAP_SU_BEAMFORMEE_CAPABLE; + // B13 14 15 Compressed Steering Number of Beamformer Antennas Supported + rtw_hal_get_def_var(padapter, HAL_DEF_BEAMFORMEE_CAP, (u8 *)&rf_num); + vht_cap->cap |= rf_num << IEEE80211_VHT_CAP_BEAMFORMEE_STS_SHIFT; + /* B20 MU Beamformee Capable */ + if (TEST_FLAG(pvhtpriv->beamform_cap, BEAMFORMING_VHT_MU_MIMO_STA_ENABLE)) + vht_cap->cap |= IEEE80211_VHT_CAP_MU_BEAMFORMEE_CAPABLE; + } + + // TXOP PS disabled or not supported + /* B21 VHT TXOP PS */ + + /* B22 +HTC-VHT Capable */ + vht_cap->cap |= IEEE80211_VHT_CAP_HTC_VHT; + + /* B23 24 25 Maximum A-MPDU Length Exponent */ + if (pregistrypriv->ampdu_factor != 0xFE) + vht_cap->cap |= pregistrypriv->ampdu_factor << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT; + else + vht_cap->cap |= 7 << IEEE80211_VHT_CAP_MAX_A_MPDU_LENGTH_EXPONENT_SHIFT; + + /* B26 27 VHT Link Adaptation Capable */ + /* find the largest bw supported by both registry and hal */ + /* this is taken from core/rtw_vht.c */ + bw = hal_largest_bw(padapter, REGSTY_BW_5G(pregistrypriv)); + HighestRate = rtw_vht_mcs_to_data_rate(bw, pvhtpriv->sgi_80m, pvhtpriv->vht_highest_rate); + HighestRate = (HighestRate+1) >> 1; + + vht_cap->vht_mcs.tx_highest = HighestRate; + vht_cap->vht_mcs.rx_highest = HighestRate; +} void rtw_cfg80211_init_wiphy(_adapter *padapter) { @@ -6212,7 +6399,7 @@ void rtw_cfg80211_init_wiphy(_adapter *padapter) bands = wiphy->bands[IEEE80211_BAND_5GHZ]; if (bands) { rtw_cfg80211_init_ht_capab(padapter, &bands->ht_cap, IEEE80211_BAND_5GHZ, rf_type); - rtw_cfg80211_create_vht_cap(padapter, &bands->vht_cap); + rtw_cfg80211_init_vht_capab(padapter, &bands->vht_cap, rf_type); } } #endif @@ -6315,6 +6502,10 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy) wiphy->bands[IEEE80211_BAND_5GHZ] = rtw_spt_band_alloc(IEEE80211_BAND_5GHZ); #endif +#if defined(CONFIG_NET_NS) + wiphy->flags |= WIPHY_FLAG_NETNS_OK; +#endif //CONFIG_NET_NS + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 38) && LINUX_VERSION_CODE < KERNEL_VERSION(3, 0, 0)) #if defined(CONFIG_NET_NS) wiphy->flags |= WIPHY_FLAG_NETNS_OK; @@ -6330,7 +6521,11 @@ static void rtw_cfg80211_preinit_wiphy(_adapter *adapter, struct wiphy *wiphy) #endif #if defined(CONFIG_PM) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 0, 0)) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(4, 12 ,0)) wiphy->flags |= WIPHY_FLAG_SUPPORTS_SCHED_SCAN; + #else // kernel >= 4.12 + wiphy->max_sched_scan_reqs = 1; + #endif #ifdef CONFIG_PNO_SUPPORT wiphy->max_sched_scan_ssids = MAX_PNO_LIST_COUNT; #endif @@ -6411,6 +6606,7 @@ static struct cfg80211_ops rtw_cfg80211_ops = { #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 6, 0)) .set_channel = cfg80211_rtw_set_channel, #endif + /* .auth = cfg80211_rtw_auth, */ /* .assoc = cfg80211_rtw_assoc, */ #endif /* CONFIG_AP_MODE */ diff --git a/os_dep/linux/ioctl_linux.c b/os_dep/linux/ioctl_linux.c index 0827a0895..3cc32bc3d 100644 --- a/os_dep/linux/ioctl_linux.c +++ b/os_dep/linux/ioctl_linux.c @@ -33,7 +33,6 @@ extern int rtw_ht_enable; #endif - #define RTL_IOCTL_WPA_SUPPLICANT (SIOCIWFIRSTPRIV+30) #define SCAN_ITEM_SIZE 768 @@ -57,7 +56,6 @@ extern int ui_pid[3]; #define WEXT_CSCAN_HOME_DWELL_SECTION 'H' #define WEXT_CSCAN_TYPE_SECTION 'T' - extern u8 key_2char2num(u8 hch, u8 lch); extern u8 str_2char2num(u8 hch, u8 lch); extern void macstr2num(u8 *dst, u8 *src); @@ -148,7 +146,6 @@ static void indicate_wx_custom_event(_adapter *padapter, char *msg) } - static void request_wps_pbc_event(_adapter *padapter) { u8 *buff, *p; @@ -219,7 +216,6 @@ void indicate_wx_scan_complete_event(_adapter *padapter) #endif } - void rtw_indicate_wx_assoc_event(_adapter *padapter) { union iwreq_data wrqu; @@ -586,7 +582,6 @@ static inline char *iwe_stream_wpa_wpa2_process(_adapter *padapter, u8 *p; sint out_len = 0; - if (pbuf) { p = pbuf; @@ -694,7 +689,6 @@ static inline char *iwe_stream_wapi_process(_adapter *padapter, RTW_INFO("rtw_wx_get_scan: %s ", pnetwork->network.Ssid.Ssid); RTW_INFO("rtw_wx_get_scan: ssid = %d ", wapi_len); - if (wapi_len > 0) { p = buf_wapi; /* _rtw_memset(buf_wapi, 0, MAX_WAPI_IE_LEN*2); */ @@ -746,7 +740,6 @@ static inline char *iwe_stream_rssi_process(_adapter *padapter, sq = pnetwork->network.PhyInfo.SignalQuality; } - #ifdef CONFIG_SIGNAL_DISPLAY_DBM iwe->u.qual.level = (u8) translate_percentage_to_dbm(ss); /* dbm */ #else @@ -1103,7 +1096,6 @@ static char *translate_scan(_adapter *padapter, RTW_INFO("rtw_wx_get_scan: %s ", pnetwork->network.Ssid.Ssid); RTW_INFO("rtw_wx_get_scan: ssid = %d ", wapi_len); - if (wapi_len > 0) { p = buf_wapi; _rtw_memset(buf_wapi, 0, MAX_WAPI_IE_LEN * 2); @@ -1150,7 +1142,6 @@ static char *translate_scan(_adapter *padapter, sq = pnetwork->network.PhyInfo.SignalQuality; } - #ifdef CONFIG_SIGNAL_DISPLAY_DBM iwe.u.qual.level = (u8) translate_percentage_to_dbm(ss); /* dbm */ #else @@ -1262,7 +1253,6 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, struct wifidirect_info *pwdinfo = &padapter->wdinfo; #endif /* CONFIG_P2P */ - param->u.crypt.err = 0; param->u.crypt.alg[IEEE_CRYPT_ALG_NAME_LEN - 1] = '\0'; @@ -1484,7 +1474,6 @@ static int wpa_set_encryption(struct net_device *dev, struct ieee_param *param, exit: - return ret; } @@ -1645,7 +1634,6 @@ static int rtw_set_wpa_ie(_adapter *padapter, char *pie, unsigned short ielen) * || check_fwstate(&padapter->mlmepriv, WIFI_UNDER_WPS) == _TRUE) */ rtw_hal_set_hwreg(padapter, HW_VAR_OFF_RCR_AM, null_addr); - exit: if (buf) @@ -1667,8 +1655,6 @@ static int rtw_wx_get_name(struct net_device *dev, WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; NDIS_802_11_RATES_EX *prates = NULL; - - if (check_fwstate(pmlmepriv, _FW_LINKED | WIFI_ADHOC_MASTER_STATE) == _TRUE) { /* parsing HT_CAP_IE */ p = rtw_get_ie(&pcur_bss->IEs[12], _HT_CAPABILITY_IE_, &ht_ielen, pcur_bss->IELength - 12); @@ -1718,7 +1704,6 @@ static int rtw_wx_get_name(struct net_device *dev, snprintf(wrqu->name, IFNAMSIZ, "unassociated"); } - return 0; } @@ -1733,8 +1718,6 @@ static int rtw_wx_set_freq(struct net_device *dev, struct wlan_network *cur_network = &(pmlmepriv->cur_network); int exp = 1, freq = 0, div = 0; - - if (wrqu->freq.m <= 1000) { if (wrqu->freq.flags == IW_FREQ_AUTO) { if (rtw_ch_set_search_ch(padapter->mlmeextpriv.channel_set, wrqu->freq.m) > 0) { @@ -1778,7 +1761,6 @@ static int rtw_wx_set_freq(struct net_device *dev, set_channel_bwmode(padapter, padapter->mlmeextpriv.cur_channel, HAL_PRIME_CHNL_OFFSET_DONT_CARE, CHANNEL_WIDTH_20); - return 0; } @@ -1891,7 +1873,6 @@ static int rtw_wx_set_mode(struct net_device *dev, struct iw_request_info *a, exit: - return ret; } @@ -1902,8 +1883,6 @@ static int rtw_wx_get_mode(struct net_device *dev, struct iw_request_info *a, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); - - if (check_fwstate(pmlmepriv, WIFI_STATION_STATE) == _TRUE) wrqu->mode = IW_MODE_INFRA; else if ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE) || @@ -1922,7 +1901,6 @@ static int rtw_wx_get_mode(struct net_device *dev, struct iw_request_info *a, } - static int rtw_wx_set_pmkid(struct net_device *dev, struct iw_request_info *a, union iwreq_data *wrqu, char *extra) @@ -2043,8 +2021,6 @@ static int rtw_wx_get_range(struct net_device *dev, u16 val; int i; - - wrqu->data.length = sizeof(*range); _rtw_memset(range, 0, sizeof(*range)); @@ -2182,8 +2158,6 @@ static int rtw_wx_get_range(struct net_device *dev, IW_SCAN_CAPA_CHANNEL | IW_SCAN_CAPA_MODE | IW_SCAN_CAPA_RATE; #endif - - return 0; } @@ -2318,8 +2292,6 @@ static int rtw_wx_get_wap(struct net_device *dev, _rtw_memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN); - - if (((check_fwstate(pmlmepriv, _FW_LINKED)) == _TRUE) || ((check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE)) == _TRUE) || ((check_fwstate(pmlmepriv, WIFI_AP_STATE)) == _TRUE)) @@ -2328,7 +2300,6 @@ static int rtw_wx_get_wap(struct net_device *dev, else _rtw_memset(wrqu->ap_addr.sa_data, 0, ETH_ALEN); - return 0; } @@ -2351,7 +2322,6 @@ static int rtw_wx_set_mlme(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); struct iw_mlme *mlme = (struct iw_mlme *) extra; - if (mlme == NULL) return -1; @@ -2359,10 +2329,8 @@ static int rtw_wx_set_mlme(struct net_device *dev, reason = cpu_to_le16(mlme->reason_code); - RTW_INFO("%s, cmd=%d, reason=%d\n", __FUNCTION__, mlme->cmd, reason); - switch (mlme->cmd) { case IW_MLME_DEAUTH: if (!rtw_set_802_11_disassociate(padapter)) @@ -2395,7 +2363,6 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, struct wifidirect_info *pwdinfo = &(padapter->wdinfo); #endif /* CONFIG_P2P */ - #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d\n", __FUNCTION__, __LINE__); #endif @@ -2522,7 +2489,6 @@ static int rtw_wx_set_scan(struct net_device *dev, struct iw_request_info *a, len -= sec_len; break; - case WEXT_CSCAN_CHANNEL_SECTION: /* RTW_INFO("WEXT_CSCAN_CHANNEL_SECTION\n"); */ pos += 1; @@ -2603,7 +2569,6 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, struct wifidirect_info *pwdinfo = &padapter->wdinfo; #endif /* CONFIG_P2P */ - #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d\n", __FUNCTION__, __LINE__); #endif @@ -2683,7 +2648,6 @@ static int rtw_wx_get_scan(struct net_device *dev, struct iw_request_info *a, exit: - #ifdef DBG_IOCTL RTW_INFO("DBG_IOCTL %s:%d return %d\n", __FUNCTION__, __LINE__, ret); #endif @@ -2732,8 +2696,6 @@ static int rtw_wx_set_essid(struct net_device *dev, goto exit; } - - rtw_ps_deny(padapter, PS_DENY_JOIN); if (_FAIL == rtw_pwr_wakeup(padapter)) { ret = -1; @@ -2845,7 +2807,6 @@ static int rtw_wx_set_essid(struct net_device *dev, RTW_INFO("DBG_IOCTL %s:%d return %d\n", __FUNCTION__, __LINE__, ret); #endif - return ret; } @@ -2858,8 +2819,6 @@ static int rtw_wx_get_essid(struct net_device *dev, struct mlme_priv *pmlmepriv = &(padapter->mlmepriv); WLAN_BSSID_EX *pcur_bss = &pmlmepriv->cur_network.network; - - if ((check_fwstate(pmlmepriv, _FW_LINKED) == _TRUE) || (check_fwstate(pmlmepriv, WIFI_ADHOC_MASTER_STATE) == _TRUE)) { len = pcur_bss->Ssid.SsidLength; @@ -2876,7 +2835,6 @@ static int rtw_wx_get_essid(struct net_device *dev, exit: - return ret; } @@ -2893,8 +2851,6 @@ static int rtw_wx_set_rate(struct net_device *dev, u32 ratevalue = 0; u8 mpdatarate[NumRates] = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0, 0xff}; - - if (target_rate == -1) { ratevalue = 11; goto set_rate; @@ -2959,7 +2915,6 @@ static int rtw_wx_set_rate(struct net_device *dev, ret = -1; } - return ret; } @@ -3051,7 +3006,6 @@ static int rtw_wx_get_frag(struct net_device *dev, { _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - RTW_INFO("%s, frag_len=%d\n", __func__, padapter->xmitpriv.frag_len); wrqu->frag.value = padapter->xmitpriv.frag_len; @@ -3068,7 +3022,6 @@ static int rtw_wx_get_retry(struct net_device *dev, { /* _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); */ - wrqu->retry.value = 7; wrqu->retry.fixed = 0; /* no auto select */ wrqu->retry.disabled = 1; @@ -3118,7 +3071,6 @@ static int rtw_wx_set_enc(struct net_device *dev, key = erq->flags & IW_ENCODE_INDEX; - if (erq->flags & IW_ENCODE_DISABLED) { RTW_INFO("EncryptionDisabled\n"); padapter->securitypriv.ndisencryptstatus = Ndis802_11EncryptionDisabled; @@ -3225,7 +3177,6 @@ static int rtw_wx_set_enc(struct net_device *dev, exit: - return ret; } @@ -3248,7 +3199,6 @@ static int rtw_wx_get_enc(struct net_device *dev, } } - key = erq->flags & IW_ENCODE_INDEX; if (key) { @@ -3310,7 +3260,6 @@ static int rtw_wx_get_enc(struct net_device *dev, } - return ret; } @@ -3448,7 +3397,6 @@ static int rtw_wx_set_auth(struct net_device *dev, } #endif - ret = wpa_set_auth_algs(dev, (u32)param->value); break; @@ -3509,7 +3457,6 @@ static int rtw_wx_set_enc_ext(struct net_device *dev, param->cmd = IEEE_CMD_SET_ENCRYPTION; _rtw_memset(param->sta_addr, 0xff, ETH_ALEN); - switch (pext->alg) { case IW_ENCODE_ALG_NONE: /* todo: remove key */ @@ -3593,7 +3540,6 @@ static int rtw_wx_set_enc_ext(struct net_device *dev, return ret; } - static int rtw_wx_get_nick(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) @@ -3636,7 +3582,6 @@ static int rtw_wx_get_nick(struct net_device *dev, RTW_INFO("dbg(0x664)=0x%x\n", rtw_read32(padapter, 0x664)); - RTW_INFO("\n"); RTW_INFO("dbg(0x430)=0x%x\n", rtw_read32(padapter, 0x430)); @@ -3672,7 +3617,6 @@ static int rtw_wx_read32(struct net_device *dev, u8 *ptmp; int ret; - ret = 0; padapter = (PADAPTER)rtw_netdev_priv(dev); p = &wrqu->data; @@ -3778,7 +3722,6 @@ static int rtw_wx_read_rf(struct net_device *dev, _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); u32 path, addr, data32; - path = *(u32 *)extra; addr = *((u32 *)extra + 1); data32 = rtw_hal_read_rfreg(padapter, path, addr, 0xFFFFF); @@ -3917,7 +3860,6 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, goto _rtw_drvext_hdl_exit; } - bset = (u8)(p->flags & 0xFFFF); len = p->length; pparmbuf = (u8 *)rtw_malloc(len); @@ -3936,25 +3878,20 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, } - /* */ poidparam = (struct drvext_oidparam *)pparmbuf; - - /* check subcode */ if (poidparam->subcode >= MAX_DRVEXT_HANDLERS) { ret = -EINVAL; goto _rtw_drvext_hdl_exit; } - if (poidparam->subcode >= MAX_DRVEXT_OID_SUBCODES) { ret = -EINVAL; goto _rtw_drvext_hdl_exit; } - phandler = drvextoidhandlers + poidparam->subcode; if (poidparam->len != phandler->parmsize) { @@ -3962,7 +3899,6 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, goto _rtw_drvext_hdl_exit; } - res = phandler->handler(&padapter->drvextpriv, bset, poidparam->data); if (res == 0) { @@ -3976,7 +3912,6 @@ static int rtw_drvext_hdl(struct net_device *dev, struct iw_request_info *info, } else ret = -EFAULT; - _rtw_drvext_hdl_exit: return ret; @@ -4224,7 +4159,6 @@ static int rtw_get_ap_info(struct net_device *dev, break; } - /* pdata->length = 0; */ /* ? */ pdata->flags = 0; if (pdata->length >= 32) { @@ -4246,7 +4180,6 @@ static int rtw_get_ap_info(struct net_device *dev, if (rtw_end_of_queue_search(phead, plist) == _TRUE) break; - pnetwork = LIST_CONTAINOR(plist, struct wlan_network, list); /* if(hwaddr_aton_i(pdata->pointer, bssid)) */ @@ -4256,7 +4189,6 @@ static int rtw_get_ap_info(struct net_device *dev, return -EINVAL; } - if (_rtw_memcmp(bssid, pnetwork->network.MacAddress, ETH_ALEN) == _TRUE) { /* BSSID match, then check if supporting wpa/wpa2 */ RTW_INFO("BSSID:" MAC_FMT "\n", MAC_ARG(bssid)); @@ -4353,10 +4285,6 @@ static int rtw_wps_start(struct net_device *dev, else if (u32wps_start == 3) /* WPS Stop because of wps fail */ rtw_led_control(padapter, LED_CTL_STOP_WPS_FAIL); -#ifdef CONFIG_INTEL_WIDI - process_intel_widi_wps_status(padapter, u32wps_start); -#endif /* CONFIG_INTEL_WIDI */ - exit: return ret; @@ -4450,7 +4378,6 @@ static int rtw_p2p_set_go_nego_ssid(struct net_device *dev, } - static int rtw_p2p_set_intent(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) @@ -4526,7 +4453,6 @@ static int rtw_p2p_set_op_ch(struct net_device *dev, } - static int rtw_p2p_profilefound(struct net_device *dev, struct iw_request_info *info, union iwreq_data *wrqu, char *extra) @@ -5254,13 +5180,6 @@ static int rtw_p2p_connect(struct net_device *dev, return ret; } -#ifdef CONFIG_INTEL_WIDI - if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { - RTW_INFO("[%s] WiFi is under survey!\n", __FUNCTION__); - return ret; - } -#endif /* CONFIG_INTEL_WIDI */ - if (pwdinfo->ui_got_wps_info == P2P_NO_WPSINFO) return -1; @@ -5343,19 +5262,6 @@ static int rtw_p2p_connect(struct net_device *dev, } else { RTW_INFO("[%s] Not Found in Scanning Queue~\n", __FUNCTION__); -#ifdef CONFIG_INTEL_WIDI - _cancel_timer_ex(&pwdinfo->restore_p2p_state_timer); - rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); - rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); - rtw_free_network_queue(padapter, _TRUE); - /** - * For WiDi, if we can't find candidate device in scanning queue, - * driver will do scanning itself - */ - _enter_critical_bh(&pmlmepriv->lock, &irqL); - rtw_sitesurvey_cmd(padapter, NULL, 0, NULL, 0); - _exit_critical_bh(&pmlmepriv->lock, &irqL); -#endif /* CONFIG_INTEL_WIDI */ ret = -1; } exit: @@ -5924,13 +5830,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev, RTW_INFO("[%s] WiFi Direct is disable!\n", __FUNCTION__); return ret; } else { -#ifdef CONFIG_INTEL_WIDI - if (check_fwstate(pmlmepriv, _FW_UNDER_SURVEY) == _TRUE) { - RTW_INFO("[%s] WiFi is under survey!\n", __FUNCTION__); - return ret; - } -#endif /* CONFIG_INTEL_WIDI */ - /* Reset the content of struct tx_provdisc_req_info excluded the wps_config_method_request. */ _rtw_memset(pwdinfo->tx_prov_disc_info.peerDevAddr, 0x00, ETH_ALEN); _rtw_memset(pwdinfo->tx_prov_disc_info.peerIFAddr, 0x00, ETH_ALEN); @@ -6000,18 +5899,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev, } -#ifdef CONFIG_INTEL_WIDI - /* Some Intel WiDi source may not provide P2P IE, */ - /* so we could only compare mac addr by 802.11 Source Address */ - if (pmlmepriv->widi_state == INTEL_WIDI_STATE_WFD_CONNECTION - && uintPeerChannel == 0) { - if (_rtw_memcmp(pnetwork->network.MacAddress, peerMAC, ETH_ALEN)) { - uintPeerChannel = pnetwork->network.Configuration.DSConfig; - break; - } - } -#endif /* CONFIG_INTEL_WIDI */ - plist = get_next(plist); } @@ -6101,15 +5988,6 @@ static int rtw_p2p_prov_disc(struct net_device *dev, } else { RTW_INFO("[%s] NOT Found in the Scanning Queue!\n", __FUNCTION__); -#ifdef CONFIG_INTEL_WIDI - _cancel_timer_ex(&pwdinfo->restore_p2p_state_timer); - rtw_p2p_set_state(pwdinfo, P2P_STATE_FIND_PHASE_SEARCH); - rtw_p2p_findphase_ex_set(pwdinfo, P2P_FINDPHASE_EX_NONE); - rtw_free_network_queue(padapter, _TRUE); - _enter_critical_bh(&pmlmepriv->lock, &irqL); - rtw_sitesurvey_cmd(padapter, NULL, 0, NULL, 0); - _exit_critical_bh(&pmlmepriv->lock, &irqL); -#endif /* CONFIG_INTEL_WIDI */ } exit: @@ -11597,46 +11475,6 @@ static int rtw_tdls_get(struct net_device *dev, return ret; } - - - - -#ifdef CONFIG_INTEL_WIDI -static int rtw_widi_set(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - int ret = 0; - _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - - process_intel_widi_cmd(padapter, extra); - - return ret; -} - -static int rtw_widi_set_probe_request(struct net_device *dev, - struct iw_request_info *info, - union iwreq_data *wrqu, char *extra) -{ - int ret = 0; - u8 *pbuf = NULL; - _adapter *padapter = (_adapter *)rtw_netdev_priv(dev); - - pbuf = rtw_malloc(sizeof(l2_msg_t)); - if (pbuf) { - if (copy_from_user(pbuf, wrqu->data.pointer, wrqu->data.length)) - ret = -EFAULT; - /* _rtw_memcpy(pbuf, wrqu->data.pointer, wrqu->data.length); */ - - if (wrqu->data.flags == 0) - intel_widi_wk_cmd(padapter, INTEL_WIDI_ISSUE_PROB_WK, pbuf, sizeof(l2_msg_t)); - else if (wrqu->data.flags == 1) - rtw_set_wfd_rds_sink_info(padapter, (l2_msg_t *)pbuf); - } - return ret; -} -#endif /* CONFIG_INTEL_WIDI */ - #ifdef CONFIG_MAC_LOOPBACK_DRIVER #if defined(CONFIG_RTL8188E) @@ -11938,7 +11776,6 @@ static void freeloopbackpkt(PADAPTER padapter, struct xmit_frame *pframe) struct xmit_priv *pxmitpriv; struct xmit_buf *pxmitbuf; - pxmitpriv = &padapter->xmitpriv; pxmitbuf = pframe->pxmitbuf; @@ -11950,7 +11787,6 @@ static void printdata(u8 *pbuf, u32 len) { u32 i, val; - for (i = 0; (i + 4) <= len; i += 4) { printk("%08X", *(u32 *)(pbuf + i)); if ((i + 4) & 0x1F) @@ -11960,10 +11796,10 @@ static void printdata(u8 *pbuf, u32 len) } if (i < len) { -#ifdef CONFIG_BIG_ENDIAN +#ifdef __BIG_ENDIAN for (; i < len, i++) printk("%02X", pbuf + i); -#else /* CONFIG_LITTLE_ENDIAN */ +#else /* __LITTLE_ENDIAN */ #if 0 val = 0; _rtw_memcpy(&val, pbuf + i, len - i); @@ -11978,7 +11814,7 @@ static void printdata(u8 *pbuf, u32 len) n = (4 - n) * 2; printk("%8s", str + n); #endif -#endif /* CONFIG_LITTLE_ENDIAN */ +#endif /* __LITTLE_ENDIAN */ } printk("\n"); } @@ -12483,18 +12319,6 @@ static const struct iw_priv_args rtw_private_args[] = { SIOCIWFIRSTPRIV + 0x1D, IW_PRIV_TYPE_CHAR | 40, IW_PRIV_TYPE_CHAR | 0x7FF, "test" }, - -#ifdef CONFIG_INTEL_WIDI - { - SIOCIWFIRSTPRIV + 0x1E, - IW_PRIV_TYPE_CHAR | 1024, 0, "widi_set" - }, - { - SIOCIWFIRSTPRIV + 0x1F, - IW_PRIV_TYPE_CHAR | 128, 0, "widi_prob_req" - }, -#endif /* CONFIG_INTEL_WIDI */ - { SIOCIWFIRSTPRIV + 0x0E, IW_PRIV_TYPE_CHAR | 1024, 0 , ""}, /* set */ { SIOCIWFIRSTPRIV + 0x0F, IW_PRIV_TYPE_CHAR | 1024, IW_PRIV_TYPE_CHAR | IW_PRIV_SIZE_MASK , ""},/* get * --- sub-ioctls definitions --- */ @@ -12619,10 +12443,6 @@ static iw_handler rtw_private_handler[] = { #endif NULL, /* 0x1C is reserved for hostapd */ rtw_test, /* 0x1D */ -#ifdef CONFIG_INTEL_WIDI - rtw_widi_set, /* 0x1E */ - rtw_widi_set_probe_request, /* 0x1F */ -#endif /* CONFIG_INTEL_WIDI */ }; #if WIRELESS_EXT >= 17 diff --git a/os_dep/linux/mlme_linux.c b/os_dep/linux/mlme_linux.c index b2b85cb02..daaa81548 100644 --- a/os_dep/linux/mlme_linux.c +++ b/os_dep/linux/mlme_linux.c @@ -18,20 +18,16 @@ * ******************************************************************************/ - #define _MLME_OSDEP_C_ #include - #ifdef RTK_DMP_PLATFORM void Linkup_workitem_callback(struct work_struct *work) { struct mlme_priv *pmlmepriv = container_of(work, struct mlme_priv, Linkup_workitem); _adapter *padapter = container_of(pmlmepriv, _adapter, mlmepriv); - - #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 12)) kobject_uevent(&padapter->pnetdev->dev.kobj, KOBJ_LINKUP); #else @@ -45,8 +41,6 @@ void Linkdown_workitem_callback(struct work_struct *work) struct mlme_priv *pmlmepriv = container_of(work, struct mlme_priv, Linkdown_workitem); _adapter *padapter = container_of(pmlmepriv, _adapter, mlmepriv); - - #if (LINUX_VERSION_CODE > KERNEL_VERSION(2, 6, 12)) kobject_uevent(&padapter->pnetdev->dev.kobj, KOBJ_LINKDOWN); #else @@ -56,7 +50,6 @@ void Linkdown_workitem_callback(struct work_struct *work) } #endif - /* void sitesurvey_ctrl_handler(void *FunctionContext) { @@ -74,14 +67,12 @@ void rtw_join_timeout_handler(void *FunctionContext) _rtw_join_timeout_handler(adapter); } - void _rtw_scan_timeout_handler(void *FunctionContext) { _adapter *adapter = (_adapter *)FunctionContext; rtw_scan_timeout_handler(adapter); } - void _dynamic_check_timer_handlder(void *FunctionContext) { struct dvobj_priv *pdvobj = (struct dvobj_priv *)FunctionContext; @@ -108,7 +99,6 @@ void _rtw_set_scan_deny_timer_hdl(void *FunctionContext) } #endif - void rtw_init_mlme_timer(_adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -157,7 +147,6 @@ void rtw_os_indicate_connect(_adapter *adapter) _set_workitem(&adapter->mlmepriv.Linkup_workitem); #endif - } extern void indicate_wx_scan_complete_event(_adapter *padapter); @@ -237,7 +226,6 @@ void rtw_os_indicate_disconnect(_adapter *adapter, u16 reason, u8 locally_gener { /* RT_PMKID_LIST backupPMKIDList[NUM_PMKID_CACHE]; */ - netif_carrier_off(adapter->pnetdev); /* Do it first for tx broadcast pkt after disconnection issue! */ #ifdef CONFIG_IOCTL_CFG80211 @@ -252,7 +240,6 @@ void rtw_os_indicate_disconnect(_adapter *adapter, u16 reason, u8 locally_gener /* modify for CONFIG_IEEE80211W, none 11w also can use the same command */ rtw_reset_securitypriv_cmd(adapter); - } void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie) @@ -261,8 +248,6 @@ void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie) u8 *buff, *p, i; union iwreq_data wrqu; - - buff = NULL; if (authmode == _WPA_IE_ID_) { @@ -297,7 +282,6 @@ void rtw_report_sec_ie(_adapter *adapter, u8 authmode, u8 *sec_ie) rtw_mfree(buff, IW_CUSTOM_MAX); } - } void _survey_timer_hdl(void *FunctionContext) @@ -384,7 +368,6 @@ void rtw_indicate_sta_assoc_event(_adapter *padapter, struct sta_info *psta) if (pstapriv->sta_aid[psta->aid - 1] != psta) return; - wrqu.addr.sa_family = ARPHRD_ETHER; _rtw_memcpy(wrqu.addr.sa_data, psta->hwaddr, ETH_ALEN); @@ -411,7 +394,6 @@ void rtw_indicate_sta_disassoc_event(_adapter *padapter, struct sta_info *psta) if (pstapriv->sta_aid[psta->aid - 1] != psta) return; - wrqu.addr.sa_family = ARPHRD_ETHER; _rtw_memcpy(wrqu.addr.sa_data, psta->hwaddr, ETH_ALEN); @@ -424,7 +406,6 @@ void rtw_indicate_sta_disassoc_event(_adapter *padapter, struct sta_info *psta) } - #ifdef CONFIG_HOSTAPD_MLME static int mgnt_xmit_entry(struct sk_buff *skb, struct net_device *pnetdev) @@ -443,7 +424,6 @@ static int mgnt_netdev_open(struct net_device *pnetdev) RTW_INFO("mgnt_netdev_open: MAC Address:" MAC_FMT "\n", MAC_ARG(pnetdev->dev_addr)); - init_usb_anchor(&phostapdpriv->anchored); rtw_netif_wake_queue(pnetdev); @@ -536,15 +516,11 @@ int hostapd_mode_init(_adapter *padapter) pnetdev->features |= NETIF_F_IP_CSUM; #endif - - if (dev_alloc_name(pnetdev, "mgnt.wlan%d") < 0) RTW_INFO("hostapd_mode_init(): dev_alloc_name, fail!\n"); - /* SET_NETDEV_DEV(pnetdev, pintfpriv->udev); */ - mac[0] = 0x00; mac[1] = 0xe0; mac[2] = 0x4c; @@ -554,10 +530,8 @@ int hostapd_mode_init(_adapter *padapter) _rtw_memcpy(pnetdev->dev_addr, mac, ETH_ALEN); - netif_carrier_off(pnetdev); - /* Tell the network stack we exist */ if (register_netdev(pnetdev) != 0) { RTW_INFO("hostapd_mode_init(): register_netdev fail!\n"); diff --git a/os_dep/linux/os_intfs.c b/os_dep/linux/os_intfs.c index 0a9bdfded..5f6f8e972 100644 --- a/os_dep/linux/os_intfs.c +++ b/os_dep/linux/os_intfs.c @@ -227,7 +227,7 @@ int rtw_antdiv_type = 0 int rtw_drv_ant_band_switch = 1; /* 0:OFF , 1:ON, Driver control antenna band switch*/ /* 0: doesn't switch, 1: switch from usb2.0 to usb 3.0 2: switch from usb3.0 to usb 2.0 */ -int rtw_switch_usb_mode = 0; +int rtw_switch_usb_mode = 1; #ifdef CONFIG_USB_AUTOSUSPEND int rtw_enusbss = 1;/* 0:disable,1:enable */ @@ -622,6 +622,12 @@ module_param(rtw_mcc_sta_bw40_target_tx_tp, int, 0644); module_param(rtw_mcc_sta_bw80_target_tx_tp, int, 0644); #endif /*CONFIG_MCC_MODE */ +#ifdef CONFIG_SW_LED +int rtw_led_ctrl = 1; /* Default to normal blink */ +module_param(rtw_led_ctrl, int, 0644); +MODULE_PARM_DESC(rtw_led_ctrl,"Led Control: 0=Always off, 1=Normal blink, 2=Always on"); +#endif /* CONFIG_SW_LED */ + void rtw_regsty_load_target_tx_power(struct registry_priv *regsty) { int path, rs; @@ -820,9 +826,6 @@ uint loadparam(_adapter *padapter) #ifdef CONFIG_LAYER2_ROAMING registry_par->max_roaming_times = (u8)rtw_max_roaming_times; -#ifdef CONFIG_INTEL_WIDI - registry_par->max_roaming_times = (u8)rtw_max_roaming_times + 2; -#endif /* CONFIG_INTEL_WIDI */ #endif #ifdef CONFIG_IOL @@ -913,7 +916,10 @@ uint loadparam(_adapter *padapter) registry_par->trx_share_mode = rtw_trx_share_mode; #endif - +#ifdef CONFIG_SW_LED + registry_par->led_ctrl = (u8)rtw_led_ctrl; +#endif /* CONFIG_SW_LED */ + return status; } @@ -1052,11 +1058,14 @@ unsigned int rtw_classify8021d(struct sk_buff *skb) return dscp >> 5; } - static u16 rtw_select_queue(struct net_device *dev, struct sk_buff *skb #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 13, 0) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(4,19,0)) , void *accel_priv - #if LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) + #else + , struct net_device *sb_dev + #endif + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0) && LINUX_VERSION_CODE < KERNEL_VERSION(5, 2, 0)) , select_queue_fallback_t fallback #endif #endif @@ -1826,14 +1835,11 @@ u8 rtw_reset_drv_sw(_adapter *padapter) return ret8; } - u8 rtw_init_drv_sw(_adapter *padapter) { u8 ret8 = _SUCCESS; - - _rtw_init_listhead(&padapter->list); ret8 = rtw_init_default_value(padapter); @@ -1939,14 +1945,6 @@ u8 rtw_init_drv_sw(_adapter *padapter) rtw_hal_sreset_init(padapter); #endif -#ifdef CONFIG_INTEL_WIDI - if (rtw_init_intel_widi(padapter) == _FAIL) { - RTW_INFO("Can't rtw_init_intel_widi\n"); - ret8 = _FAIL; - goto exit; - } -#endif /* CONFIG_INTEL_WIDI */ - #ifdef CONFIG_WAPI_SUPPORT padapter->WapiSupport = true; /* set true temp, will revise according to Efuse or Registry value later. */ rtw_wapi_init(padapter); @@ -1958,8 +1956,6 @@ u8 rtw_init_drv_sw(_adapter *padapter) exit: - - return ret8; } @@ -2046,10 +2042,6 @@ u8 rtw_free_drv_sw(_adapter *padapter) _rtw_spinlock_free(&padapter->br_ext_lock); #endif /* CONFIG_BR_EXT */ -#ifdef CONFIG_INTEL_WIDI - rtw_free_intel_widi(padapter); -#endif /* CONFIG_INTEL_WIDI */ - free_mlme_ext_priv(&padapter->mlmeextpriv); #ifdef CONFIG_TDLS @@ -2080,7 +2072,6 @@ u8 rtw_free_drv_sw(_adapter *padapter) rtw_hal_free_data(padapter); - /* free the old_pnetdev */ if (padapter->rereg_nd_name_priv.old_pnetdev) { free_netdev(padapter->rereg_nd_name_priv.old_pnetdev); @@ -2284,7 +2275,6 @@ _adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, padapter->hw_port = HW_PORT1; #endif - /****** hook vir if into dvobj ******/ pdvobjpriv = adapter_to_dvobj(padapter); padapter->iface_id = pdvobjpriv->iface_nums; @@ -2302,7 +2292,6 @@ _adapter *rtw_drv_add_vir_if(_adapter *primary_padapter, if (rtw_init_drv_sw(padapter) != _SUCCESS) goto free_drv_sw; - /*get mac address from primary_padapter*/ _rtw_memcpy(mac, adapter_mac_addr(primary_padapter), ETH_ALEN); @@ -2783,7 +2772,6 @@ int ips_netdrv_open(_adapter *padapter) return _FAIL; } - int rtw_ips_pwr_up(_adapter *padapter) { int result; @@ -2847,7 +2835,6 @@ void rtw_ips_dev_unload(_adapter *padapter) } - int pm_netdev_open(struct net_device *pnetdev, u8 bnormal) { int status = 0; @@ -3308,7 +3295,6 @@ void rtw_dev_unload(PADAPTER padapter) rtw_intf_stop(padapter); - if (!pwrctl->bInternalAutoSuspend) rtw_stop_drv_threads(padapter); @@ -3323,7 +3309,6 @@ void rtw_dev_unload(PADAPTER padapter) } } - /* check the status of IPS */ if (rtw_hal_check_ips_status(padapter) == _TRUE || pwrctl->rf_pwrstate == rf_off) { /* check HW status and SW state */ RTW_PRINT("%s: driver in IPS-FWLPS\n", __func__); @@ -3435,7 +3420,6 @@ int rtw_suspend_wow(_adapter *padapter) RTW_INFO("==> "FUNC_ADPT_FMT" entry....\n", FUNC_ADPT_ARG(padapter)); - RTW_INFO("wowlan_mode: %d\n", pwrpriv->wowlan_mode); RTW_INFO("wowlan_pno_enable: %d\n", pwrpriv->wowlan_pno_enable); #ifdef CONFIG_P2P_WOWLAN @@ -3645,7 +3629,6 @@ int rtw_suspend_ap_wow(_adapter *padapter) } #endif /* #ifdef CONFIG_AP_WOWLAN */ - int rtw_suspend_normal(_adapter *padapter) { struct mlme_priv *pmlmepriv = &padapter->mlmepriv; @@ -3664,7 +3647,6 @@ int rtw_suspend_normal(_adapter *padapter) || (adapter_to_pwrctl(padapter)->rf_pwrstate == rf_off)) RTW_PRINT("%s: ### ERROR #### driver in IPS ####ERROR###!!!\n", __FUNCTION__); - #ifdef CONFIG_CONCURRENT_MODE rtw_mi_buddy_dev_unload(padapter); #endif @@ -3765,7 +3747,6 @@ int rtw_suspend_common(_adapter *padapter) } else rtw_suspend_normal(padapter); - RTW_PRINT("rtw suspend success in %d ms\n", rtw_get_passing_time_ms(start_time)); @@ -3847,7 +3828,6 @@ int rtw_resume_process_wow(_adapter *padapter) if (psta) set_sta_rate(padapter, psta); - rtw_clr_drv_stopped(padapter); RTW_INFO("%s: wowmode resuming, DriverStopped:%s\n", __func__, rtw_is_drv_stopped(padapter) ? "True" : "False"); @@ -3969,7 +3949,6 @@ int rtw_resume_process_ap_wow(_adapter *padapter) goto exit; } - #ifdef CONFIG_LPS rtw_set_ps_mode(padapter, PS_MODE_ACTIVE, 0, 0, "AP-WOWLAN"); #endif /* CONFIG_LPS */ @@ -4197,7 +4176,6 @@ int rtw_resume_common(_adapter *padapter) RTW_PRINT("%s:%d in %d ms\n", __FUNCTION__ , ret, rtw_get_passing_time_ms(start_time)); - return ret; } diff --git a/os_dep/linux/recv_linux.c b/os_dep/linux/recv_linux.c index a534c4b38..a802a9d77 100644 --- a/os_dep/linux/recv_linux.c +++ b/os_dep/linux/recv_linux.c @@ -73,7 +73,6 @@ int rtw_os_alloc_recvframe(_adapter *padapter, union recv_frame *precvframe, u8 return res; } - /* Modified by Albert 20101213 */ /* For 8 bytes IP header alignment. */ shift_sz = pattrib->qos ? 6 : 0; /* Qos data, wireless lan header length is 26 */ @@ -398,7 +397,6 @@ void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, struct rx_pkt_attri rcu_read_unlock(); #endif /* (LINUX_VERSION_CODE <= KERNEL_VERSION(2, 6, 35)) */ - if (br_port && (check_fwstate(pmlmepriv, WIFI_STATION_STATE | WIFI_ADHOC_STATE) == _TRUE)) { int nat25_handle_frame(_adapter *priv, struct sk_buff *skb); if (nat25_handle_frame(padapter, pkt) == -1) { @@ -447,10 +445,11 @@ void rtw_os_recv_indicate_pkt(_adapter *padapter, _pkt *pkt, struct rx_pkt_attri #endif /* CONFIG_TCP_CSUM_OFFLOAD_RX */ ret = rtw_netif_rx(padapter->pnetdev, pkt); - if (ret == NET_RX_SUCCESS) + if (ret == NET_RX_SUCCESS) { DBG_COUNTER(padapter->rx_logs.os_netif_ok); - else + } else { DBG_COUNTER(padapter->rx_logs.os_netif_err); + } } } @@ -511,7 +510,6 @@ void rtw_hostapd_mlme_rx(_adapter *padapter, union recv_frame *precv_frame) struct hostapd_priv *phostapdpriv = padapter->phostapdpriv; struct net_device *pmgnt_netdev = phostapdpriv->pmgnt_netdev; - skb = precv_frame->u.hdr.pkt; if (skb == NULL) @@ -667,7 +665,6 @@ int rtw_recv_indicatepkt(_adapter *padapter, union recv_frame *precv_frame) goto _recv_indicatepkt_drop; } - skb->data = precv_frame->u.hdr.rx_data; skb_set_tail_pointer(skb, precv_frame->u.hdr.len); @@ -750,8 +747,6 @@ int rtw_recv_indicatepkt(_adapter *padapter, union recv_frame *precv_frame) rtw_free_recvframe(precv_frame, pfree_recv_queue); - - return _SUCCESS; _recv_indicatepkt_drop: @@ -789,6 +784,7 @@ void rtw_os_read_port(_adapter *padapter, struct recv_buf *precvbuf) #endif } + void _rtw_reordering_ctrl_timeout_handler(void *FunctionContext); void _rtw_reordering_ctrl_timeout_handler(void *FunctionContext) { @@ -801,5 +797,4 @@ void rtw_init_recv_timer(struct recv_reorder_ctrl *preorder_ctrl) _adapter *padapter = preorder_ctrl->padapter; _init_timer(&(preorder_ctrl->reordering_ctrl_timer), padapter->pnetdev, _rtw_reordering_ctrl_timeout_handler, preorder_ctrl); - } diff --git a/os_dep/linux/rtw_android.c b/os_dep/linux/rtw_android.c index 9066990d3..d17233df5 100644 --- a/os_dep/linux/rtw_android.c +++ b/os_dep/linux/rtw_android.c @@ -357,10 +357,14 @@ int rtw_android_cmdstr_to_num(char *cmdstr) { int cmd_num; for (cmd_num = 0 ; cmd_num < ANDROID_WIFI_CMD_MAX; cmd_num++) - if (0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num]))) - break; +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 0, 0)) + if(0 == strncasecmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) +#else + if(0 == strnicmp(cmdstr , android_wifi_cmd_str[cmd_num], strlen(android_wifi_cmd_str[cmd_num])) ) +#endif + break; - return cmd_num; + return cmd_num; } int rtw_android_get_rssi(struct net_device *net, char *command, int total_len) @@ -626,7 +630,11 @@ int rtw_android_priv_cmd(struct net_device *net, struct ifreq *ifr, int cmd) goto exit; } + #if (LINUX_VERSION_CODE >= KERNEL_VERSION(5, 0, 0)) + if (!access_ok(priv_cmd.buf, priv_cmd.total_len)) { + #else if (!access_ok(VERIFY_READ, priv_cmd.buf, priv_cmd.total_len)) { + #endif RTW_INFO("%s: failed to access memory\n", __FUNCTION__); ret = -EFAULT; goto exit; diff --git a/os_dep/linux/rtw_radiotap.c b/os_dep/linux/rtw_radiotap.c index b8df1ae84..56cf92f12 100644 --- a/os_dep/linux/rtw_radiotap.c +++ b/os_dep/linux/rtw_radiotap.c @@ -183,8 +183,6 @@ static void find_ns(struct ieee80211_radiotap_iterator *iterator, } } - - /** * ieee80211_radiotap_iterator_next - return next radiotap parser iterator arg * @iterator: radiotap_iterator to move to next arg (if any) @@ -366,4 +364,3 @@ int rtw_ieee80211_radiotap_iterator_next( return 0; } } - diff --git a/os_dep/linux/usb_intf.c b/os_dep/linux/usb_intf.c index 224e6047f..732cc56e0 100644 --- a/os_dep/linux/usb_intf.c +++ b/os_dep/linux/usb_intf.c @@ -42,12 +42,10 @@ extern int rtw_ampdu_enable;/* for enable tx_ampdu */ int ui_pid[3] = {0, 0, 0}; #endif - extern int pm_netdev_open(struct net_device *pnetdev, u8 bnormal); static int rtw_suspend(struct usb_interface *intf, pm_message_t message); static int rtw_resume(struct usb_interface *intf); - static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device_id *pdid); static void rtw_dev_remove(struct usb_interface *pusb_intf); @@ -85,13 +83,11 @@ static void rtw_dev_shutdown(struct device *dev) #define USB_DEVICE_ID_MATCH_INT_PROTOCOL 0x0200 #define USB_DEVICE_ID_MATCH_INT_NUMBER 0x0400 - #define USB_DEVICE_ID_MATCH_INT_INFO \ (USB_DEVICE_ID_MATCH_INT_CLASS | \ USB_DEVICE_ID_MATCH_INT_SUBCLASS | \ USB_DEVICE_ID_MATCH_INT_PROTOCOL) - #define USB_DEVICE_AND_INTERFACE_INFO(vend, prod, cl, sc, pr) \ .match_flags = USB_DEVICE_ID_MATCH_INT_INFO \ | USB_DEVICE_ID_MATCH_DEVICE, \ @@ -125,10 +121,8 @@ static void rtw_dev_shutdown(struct device *dev) /* ----------------------------------------------------------------------- */ #endif - #define USB_VENDER_ID_REALTEK 0x0BDA - /* DID_USB_v916_20130116 */ static struct usb_device_id rtw_usb_id_tbl[] = { #ifdef CONFIG_RTL8188E @@ -148,7 +142,6 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x881C), .driver_info = RTL8812}, /* Default ID */ /*=== Customer ID ===*/ {USB_DEVICE(0x050D, 0x1106), .driver_info = RTL8812}, /* Belkin - sercomm */ - {USB_DEVICE(0x2001, 0x330E), .driver_info = RTL8812}, /* D-Link - ALPHA */ {USB_DEVICE(0x7392, 0xA822), .driver_info = RTL8812}, /* Edimax - Edimax */ {USB_DEVICE(0x0DF6, 0x0074), .driver_info = RTL8812}, /* Sitecom - Edimax */ {USB_DEVICE(0x04BB, 0x0952), .driver_info = RTL8812}, /* I-O DATA - Edimax */ @@ -158,18 +151,31 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x0E66, 0x0022), .driver_info = RTL8812}, /* HAWKING - Edimax */ {USB_DEVICE(0x0586, 0x3426), .driver_info = RTL8812}, /* ZyXEL - */ {USB_DEVICE(0x2001, 0x3313), .driver_info = RTL8812}, /* D-Link - ALPHA */ - {USB_DEVICE(0x1058, 0x0632), .driver_info = RTL8812}, /* WD - Cybertan*/ + {USB_DEVICE(0x1058, 0x0632), .driver_info = RTL8812}, /* WD - Cybertan */ {USB_DEVICE(0x1740, 0x0100), .driver_info = RTL8812}, /* EnGenius - EnGenius */ {USB_DEVICE(0x2019, 0xAB30), .driver_info = RTL8812}, /* Planex - Abocom */ {USB_DEVICE(0x07B8, 0x8812), .driver_info = RTL8812}, /* Abocom - Abocom */ + {USB_DEVICE(0x0846, 0x9051), .driver_info = RTL8812}, /* Netgear A6200 v2 */ + {USB_DEVICE(0x2001, 0x330E), .driver_info = RTL8812}, /* D-Link - ALPHA */ + {USB_DEVICE(0x2001, 0x3313), .driver_info = RTL8812}, /* D-Link - ALPHA */ {USB_DEVICE(0x2001, 0x3315), .driver_info = RTL8812}, /* D-Link - Cameo */ {USB_DEVICE(0x2001, 0x3316), .driver_info = RTL8812}, /* D-Link - Cameo */ - {USB_DEVICE(0x13b1, 0x003f), .driver_info = RTL8812}, /* Linksys - WUSB6300 */ - {USB_DEVICE(0x2357, 0x0101), .driver_info = RTL8812}, /* TP-Link - Archer T4U */ + {USB_DEVICE(0x13B1, 0x003F), .driver_info = RTL8812}, /* Linksys - WUSB6300 */ + {USB_DEVICE(0x2357, 0x0101), .driver_info = RTL8812}, /* TP-Link - Archer T4U AC1200 */ {USB_DEVICE(0x2357, 0x0103), .driver_info = RTL8812}, /* TP-Link - T4UH */ - {USB_DEVICE(0x20f4, 0x805b), .driver_info = RTL8812}, /* TRENDnet - */ - {USB_DEVICE(0x0411, 0x025d), .driver_info = RTL8812}, /* Buffalo - WI-U3-866D */ + {USB_DEVICE(0x2357, 0x010D), .driver_info = RTL8812}, /* TP-Link - Archer T4U AC1300 */ + {USB_DEVICE(0x2357, 0x010E), .driver_info = RTL8812}, /* TP-Link - Archer T4UH AC1300 */ + {USB_DEVICE(0x2357, 0x010F), .driver_info = RTL8812}, /* TP-Link - T4UHP */ + {USB_DEVICE(0x2357, 0x0122), .driver_info = RTL8812}, /* TP-Link - T4UHP (other) */ + {USB_DEVICE(0x20F4, 0x805B), .driver_info = RTL8812}, /* TRENDnet - */ + {USB_DEVICE(0x0411, 0x025D), .driver_info = RTL8812}, /* Buffalo - WI-U3-866D */ {USB_DEVICE(0x050D, 0x1109), .driver_info = RTL8812}, /* Belkin F9L1109 - SerComm */ + {USB_DEVICE(0x148F, 0x9097), .driver_info = RTL8812}, /* Amped Wireless ACA1 */ + {USB_DEVICE(0x0BDA, 0x8812), .driver_info = RTL8812}, /* Alfa - AWUS036AC, AWUS036ACH & AWUS036EAC */ + {USB_DEVICE(0x2604, 0x0012), .driver_info = RTL8812}, /* Tenda U12 */ + {USB_DEVICE(0x0BDA, 0x881A), .driver_info = RTL8812}, /* Unex DAUK-W8812 */ + {USB_DEVICE(0x0BDA, 0xb812), .driver_info = RTL8812}, /* Unsure... */ + #endif #ifdef CONFIG_RTL8821A @@ -177,7 +183,7 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0811), .driver_info = RTL8821}, /* Default ID */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x0821), .driver_info = RTL8821}, /* Default ID */ {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8822), .driver_info = RTL8821}, /* Default ID */ - {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xA811) , .driver_info = RTL8821},/* Default ID */ + {USB_DEVICE(USB_VENDER_ID_REALTEK, 0xA811), .driver_info = RTL8821}, /* Default ID */ {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0x0820, 0xff, 0xff, 0xff), .driver_info = RTL8821}, /* 8821AU */ {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0x0823, 0xff, 0xff, 0xff), .driver_info = RTL8821}, /* 8821AU */ /*=== Customer ID ===*/ @@ -193,6 +199,8 @@ static struct usb_device_id rtw_usb_id_tbl[] = { {USB_DEVICE(0x0411, 0x0242), .driver_info = RTL8821}, /* ELECOM - WDC-433DU2H */ {USB_DEVICE(0x2019, 0xAB32), .driver_info = RTL8821}, /* Planex - GW-450S */ {USB_DEVICE(0x0846, 0x9052), .driver_info = RTL8821}, /* Netgear - A6100 */ + {USB_DEVICE(0x0411, 0x029B), .driver_info = RTL8821}, /* Buffalo - WI-U2-433DHP */ + {USB_DEVICE(0x056E, 0x4007), .driver_info = RTL8821}, /* Elecom - WDC-433DU2HBK */ #endif #ifdef CONFIG_RTL8192E @@ -215,16 +223,20 @@ static struct usb_device_id rtw_usb_id_tbl[] = { #ifdef CONFIG_RTL8814A {USB_DEVICE(USB_VENDER_ID_REALTEK, 0x8813), .driver_info = RTL8814A}, - {USB_DEVICE(0x2001, 0x331a), .driver_info = RTL8814A}, /* D-Link - D-Link */ - {USB_DEVICE(0x0b05, 0x1817), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ + {USB_DEVICE(0x2001, 0x331A), .driver_info = RTL8814A}, /* D-Link - D-Link */ + {USB_DEVICE(0x0B05, 0x1817), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ + {USB_DEVICE(0x0B05, 0x1852), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ + {USB_DEVICE(0x0B05, 0x1853), .driver_info = RTL8814A}, /* ASUS - ASUSTeK */ {USB_DEVICE(0x056E, 0x400B), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x056E, 0x400D), .driver_info = RTL8814A}, /* ELECOM - ELECOM */ {USB_DEVICE(0x7392, 0xA834), .driver_info = RTL8814A}, /* Edimax - Edimax */ - {USB_DEVICE(0x7392, 0xA833), .driver_info = RTL8814A}, /* Edimax - Edimax */ + {USB_DEVICE(0x7392, 0xA833), .driver_info = RTL8814A}, /* Edimax - AC1750 */ + {USB_DEVICE(0x0BDA, 0x8813), .driver_info = RTL8814A}, /* Edimax - EDUP Adapters */ {USB_DEVICE(0x2357, 0x0106), .driver_info = RTL8814A}, /* TP-LINK Archer T9UH */ - {USB_DEVICE(0x20f4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ - - + {USB_DEVICE(0x20F4, 0x809A), .driver_info = RTL8814A}, /* TRENDnet - TRENDnet */ + {USB_DEVICE(0x20F4, 0x809B), .driver_info = RTL8814A}, /* TRENDnet TEW-809UB */ + {USB_DEVICE(0x0846, 0x9054), .driver_info = RTL8814A}, /* Netgear A7000 */ + {USB_DEVICE(0x0E66, 0x0026), .driver_info = RTL8814A}, /* Hawking HW17ACU 1750AC */ #endif /* CONFIG_RTL8814A */ #ifdef CONFIG_RTL8188F @@ -244,8 +256,8 @@ static struct usb_device_id rtw_usb_id_tbl[] = { #ifdef CONFIG_RTL8821C /*=== Realtek demoboard ===*/ - {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xb82b, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ - {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xb820, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ + {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xB82B, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ + {USB_DEVICE_AND_INTERFACE_INFO(USB_VENDER_ID_REALTEK, 0xB820, 0xff, 0xff, 0xff), .driver_info = RTL8821C}, /* 8821CU */ /*=== Customer ID ===*/ #endif @@ -259,7 +271,7 @@ int const rtw_usb_id_len = sizeof(rtw_usb_id_tbl) / sizeof(struct usb_device_id) static struct specific_device_id specific_device_id_tbl[] = { {.idVendor = USB_VENDER_ID_REALTEK, .idProduct = 0x8177, .flags = SPEC_DEV_ID_DISABLE_HT}, /* 8188cu 1*1 dongole, (b/g mode only) */ {.idVendor = USB_VENDER_ID_REALTEK, .idProduct = 0x817E, .flags = SPEC_DEV_ID_DISABLE_HT}, /* 8188CE-VAU USB minCard (b/g mode only) */ - {.idVendor = 0x0b05, .idProduct = 0x1791, .flags = SPEC_DEV_ID_DISABLE_HT}, + {.idVendor = 0x0B05, .idProduct = 0x1791, .flags = SPEC_DEV_ID_DISABLE_HT}, {.idVendor = 0x13D3, .idProduct = 0x3311, .flags = SPEC_DEV_ID_DISABLE_HT}, {.idVendor = 0x13D3, .idProduct = 0x3359, .flags = SPEC_DEV_ID_DISABLE_HT}, /* Russian customer -Azwave (8188CE-VAU g mode) */ #ifdef RTK_DMP_PLATFORM @@ -344,7 +356,6 @@ static u8 rtw_init_intf_priv(struct dvobj_priv *dvobj) _rtw_mutex_init(&dvobj->usb_vendor_req_mutex); #endif - #ifdef CONFIG_USB_VENDOR_REQ_BUFFER_PREALLOC dvobj->usb_alloc_vendor_req_buf = rtw_zmalloc(MAX_USB_IO_CTL_SIZE); if (dvobj->usb_alloc_vendor_req_buf == NULL) { @@ -446,13 +457,10 @@ static struct dvobj_priv *usb_dvobj_init(struct usb_interface *usb_intf, const s struct usb_endpoint_descriptor *pendp_desc; struct usb_device *pusbd; - - pdvobjpriv = devobj_init(); if (pdvobjpriv == NULL) goto exit; - pdvobjpriv->pusbintf = usb_intf ; pusbd = pdvobjpriv->pusbdev = interface_to_usbdev(usb_intf); usb_set_intfdata(usb_intf, pdvobjpriv); @@ -657,7 +665,6 @@ static int usb_reprobe_switch_usb_mode(PADAPTER Adapter) goto exit; rtw_hal_set_hwreg(Adapter, HW_VAR_USB_MODE, &ret); - exit: return ret; } @@ -711,7 +718,6 @@ u8 rtw_set_hal_ops(_adapter *padapter) rtl8723du_set_hal_ops(padapter); #endif /* CONFIG_RTL8723D */ - #ifdef CONFIG_RTL8821C if (rtw_get_chip_type(padapter) == RTL8821C) { if (rtl8821cu_set_hal_ops(padapter) == _FAIL) @@ -893,7 +899,6 @@ int rtw_hw_resume(_adapter *padapter) pwrpriv->bips_processing = _FALSE; _exit_pwrlock(&pwrpriv->lock); - return 0; error_exit: RTW_INFO("%s, Open net dev failed\n", __FUNCTION__); @@ -909,7 +914,6 @@ static int rtw_suspend(struct usb_interface *pusb_intf, pm_message_t message) PADAPTER padapter; int ret = 0; - dvobj = usb_get_intfdata(pusb_intf); pwrpriv = dvobj_to_pwrctl(dvobj); pdbgpriv = &dvobj->drv_dbg; @@ -949,7 +953,6 @@ int rtw_resume_process(_adapter *padapter) struct dvobj_priv *pdvobj = padapter->dvobj; struct debug_priv *pdbgpriv = &pdvobj->drv_dbg; - if (pwrpriv->bInSuspend == _FALSE) { pdbgpriv->dbg_resume_error_cnt++; RTW_INFO("%s bInSuspend = %d\n", __FUNCTION__, pwrpriv->bInSuspend); @@ -1009,7 +1012,6 @@ int rtw_resume_process(_adapter *padapter) } #endif/* CONFIG_AUTOSUSPEND */ - return ret; } @@ -1022,7 +1024,6 @@ static int rtw_resume(struct usb_interface *pusb_intf) struct mlme_ext_priv *pmlmeext; int ret = 0; - dvobj = usb_get_intfdata(pusb_intf); pwrpriv = dvobj_to_pwrctl(dvobj); pdbgpriv = &dvobj->drv_dbg; @@ -1061,8 +1062,6 @@ static int rtw_resume(struct usb_interface *pusb_intf) return ret; } - - #ifdef CONFIG_AUTOSUSPEND void autosuspend_enter(_adapter *padapter) { @@ -1208,7 +1207,6 @@ _adapter *rtw_usb_primary_adapter_init(struct dvobj_priv *dvobj, padapter->dvobj = dvobj; - rtw_set_drv_stopped(padapter);/*init*/ dvobj->padapters[dvobj->iface_nums++] = padapter; @@ -1231,7 +1229,6 @@ _adapter *rtw_usb_primary_adapter_init(struct dvobj_priv *dvobj, if (rtw_set_hal_ops(padapter) == _FAIL) goto free_hal_data; - padapter->intf_start = &usb_intf_start; padapter->intf_stop = &usb_intf_stop; @@ -1455,7 +1452,6 @@ static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device rtd2885_wlan_netlink_sendMsg("linkup", "8712"); #endif - status = _SUCCESS; #if 0 /* not used now */ @@ -1494,7 +1490,6 @@ static void rtw_dev_remove(struct usb_interface *pusb_intf) struct net_device *pnetdev = padapter->pnetdev; struct mlme_priv *pmlmepriv = &padapter->mlmepriv; - RTW_INFO("+rtw_dev_remove\n"); dvobj->processing_dev_remove = _TRUE; @@ -1547,12 +1542,10 @@ static void rtw_dev_remove(struct usb_interface *pusb_intf) RTW_INFO("-r871xu_dev_remove, done\n"); - #ifdef CONFIG_INTEL_PROXIM rtw_sw_export = NULL; #endif - return; } @@ -1619,7 +1612,6 @@ static void __exit rtw_drv_halt(void) rtw_mstat_dump(RTW_DBGDUMP); } - module_init(rtw_drv_entry); module_exit(rtw_drv_halt); diff --git a/os_dep/linux/wifi_regd.c b/os_dep/linux/wifi_regd.c index b2c605252..a967b8c49 100644 --- a/os_dep/linux/wifi_regd.c +++ b/os_dep/linux/wifi_regd.c @@ -14,7 +14,7 @@ static struct country_code_to_enum_rd allCountries[] = { {COUNTRY_CODE_USER, "RD"}, }; -/* +/* * REG_RULE(freq start, freq end, bandwidth, max gain, eirp, reg_flags) */ @@ -35,12 +35,12 @@ static struct country_code_to_enum_rd allCountries[] = { /* 2G chan 12 - chan 13, PASSIV SCAN */ #define RTW_2GHZ_CH12_13 \ REG_RULE(2467-10, 2472+10, 40, 0, 20, \ - NL80211_RRF_PASSIVE_SCAN) + NL80211_RRF_PASSIVE_SCAN) /* 2G chan 14, PASSIVS SCAN, NO OFDM (B only) */ #define RTW_2GHZ_CH14 \ REG_RULE(2484-10, 2484+10, 40, 0, 20, \ - NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM) + NL80211_RRF_PASSIVE_SCAN | NL80211_RRF_NO_OFDM) /* 5G chan 36 - chan 64 */ #define RTW_5GHZ_5150_5350 \ @@ -66,69 +66,69 @@ static const struct ieee80211_regdomain rtw_regdom_rd = { .n_reg_rules = 4, .alpha2 = "99", .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - RTW_5GHZ_5150_5850, - } + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + RTW_5GHZ_5150_5850, + } }; #if 0 static const struct ieee80211_regdomain rtw_regdom_11 = { .n_reg_rules = 1, .alpha2 = "99", .reg_rules = { - RTW_2GHZ_CH01_11, - } + RTW_2GHZ_CH01_11, + } }; static const struct ieee80211_regdomain rtw_regdom_12_13 = { .n_reg_rules = 2, .alpha2 = "99", .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - } + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + } }; static const struct ieee80211_regdomain rtw_regdom_no_midband = { .n_reg_rules = 3, .alpha2 = "99", .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_5GHZ_5150_5350, - RTW_5GHZ_5725_5850, - } + RTW_2GHZ_CH01_11, + RTW_5GHZ_5150_5350, + RTW_5GHZ_5725_5850, + } }; static const struct ieee80211_regdomain rtw_regdom_60_64 = { .n_reg_rules = 3, .alpha2 = "99", .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_5GHZ_5725_5850, - } + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_5GHZ_5725_5850, + } }; static const struct ieee80211_regdomain rtw_regdom_14_60_64 = { .n_reg_rules = 4, .alpha2 = "99", .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - RTW_5GHZ_5725_5850, - } + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + RTW_5GHZ_5725_5850, + } }; static const struct ieee80211_regdomain rtw_regdom_14 = { .n_reg_rules = 3, .alpha2 = "99", .reg_rules = { - RTW_2GHZ_CH01_11, - RTW_2GHZ_CH12_13, - RTW_2GHZ_CH14, - } + RTW_2GHZ_CH01_11, + RTW_2GHZ_CH12_13, + RTW_2GHZ_CH14, + } }; #endif #if 0 @@ -137,12 +137,12 @@ static struct rtw_regulatory *rtw_regd; static bool _rtw_is_radar_freq(u16 center_freq) { - return center_freq >= 5260 && center_freq <= 5700; + return (center_freq >= 5260 && center_freq <= 5700); } -#if 0 /* not_yet */ +#if 0 // not_yet static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator initiator) + enum nl80211_reg_initiator initiator) { enum ieee80211_band band; struct ieee80211_supported_band *sband; @@ -185,11 +185,11 @@ static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy, (reg_rule->flags & NL80211_RRF_PASSIVE_SCAN)) ch->flags &= - ~IEEE80211_CHAN_PASSIVE_SCAN; + ~IEEE80211_CHAN_PASSIVE_SCAN; } else { if (ch->beacon_found) ch->flags &= ~(IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_PASSIVE_SCAN); + IEEE80211_CHAN_PASSIVE_SCAN); } } } @@ -197,8 +197,8 @@ static void _rtw_reg_apply_beaconing_flags(struct wiphy *wiphy, /* Allows active scan scan on Ch 12 and 13 */ static void _rtw_reg_apply_active_scan_flags(struct wiphy *wiphy, - enum nl80211_reg_initiator - initiator) + enum nl80211_reg_initiator + initiator) { struct ieee80211_supported_band *sband; struct ieee80211_channel *ch; @@ -269,17 +269,17 @@ static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy) if (!_rtw_is_radar_freq(ch->center_freq)) continue; #ifdef CONFIG_DFS - #if !defined(CONFIG_DFS_MASTER) + #if defined(CONFIG_DFS_MASTER) && (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 14, 0)) if (!(ch->flags & IEEE80211_CHAN_DISABLED)) { ch->flags |= IEEE80211_CHAN_RADAR; - #if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) - ch->flags |= (IEEE80211_CHAN_NO_IBSS | IEEE80211_CHAN_PASSIVE_SCAN); + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) + ch->flags |= (IEEE80211_CHAN_NO_IBSS|IEEE80211_CHAN_PASSIVE_SCAN); #else ch->flags |= IEEE80211_CHAN_NO_IR; #endif } #endif -#endif /* CONFIG_DFS */ +#endif //CONFIG_DFS #if 0 /* @@ -295,15 +295,15 @@ static void _rtw_reg_apply_radar_flags(struct wiphy *wiphy) */ if (!(ch->flags & IEEE80211_CHAN_DISABLED)) ch->flags |= IEEE80211_CHAN_RADAR | - IEEE80211_CHAN_NO_IBSS | - IEEE80211_CHAN_PASSIVE_SCAN; + IEEE80211_CHAN_NO_IBSS | + IEEE80211_CHAN_PASSIVE_SCAN; #endif } } static void _rtw_reg_apply_flags(struct wiphy *wiphy) { -#if 1 /* by channel plan */ +#if 1 // by channel plan _adapter *padapter = wiphy_to_adapter(wiphy); struct ieee80211_supported_band *sband; @@ -311,7 +311,7 @@ static void _rtw_reg_apply_flags(struct wiphy *wiphy) unsigned int i, j; u16 channel; - /* all channels disable */ + // all channels disable for (i = 0; i < IEEE80211_NUM_BANDS; i++) { sband = wiphy->bands[i]; @@ -322,12 +322,7 @@ static void _rtw_reg_apply_flags(struct wiphy *wiphy) if (ch) ch->flags &= ~(IEEE80211_CHAN_DISABLED|IEEE80211_CHAN_NO_HT40PLUS| IEEE80211_CHAN_NO_HT40MINUS|IEEE80211_CHAN_NO_80MHZ| - IEEE80211_CHAN_NO_160MHZ| -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) - IEEE80211_CHAN_NO_IBSS|IEEE80211_CHAN_PASSIVE_SCAN); -#else - IEEE80211_CHAN_NO_IR); -#endif + IEEE80211_CHAN_NO_160MHZ); } } } @@ -336,8 +331,8 @@ static void _rtw_reg_apply_flags(struct wiphy *wiphy) struct ieee80211_supported_band *sband; struct ieee80211_channel *ch; unsigned int i, j; - u16 channels[37] = { - 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, + u16 channels[37] = + { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 36, 40, 44, 48, 52, 56, 60, 64, 100, 104, 108, 112, 116, 120, 124, 128, 132, 136, 140, 149, 153, 157, 161, 165 @@ -366,9 +361,9 @@ static void _rtw_reg_apply_flags(struct wiphy *wiphy) if (channel <= 11) ch->flags = 0; else - ch->flags = 0; /* IEEE80211_CHAN_PASSIVE_SCAN; */ + ch->flags = 0; //IEEE80211_CHAN_PASSIVE_SCAN; } - /* printk("%s: freq %d(%d) flag 0x%02X\n", __func__, freq, channel, ch->flags); */ + //printk("%s: freq %d(%d) flag 0x%02X \n", __func__, freq, channel, ch->flags); } #endif } @@ -377,8 +372,8 @@ static void _rtw_reg_apply_world_flags(struct wiphy *wiphy, enum nl80211_reg_initiator initiator, struct rtw_regulatory *reg) { - /* _rtw_reg_apply_beaconing_flags(wiphy, initiator); */ - /* _rtw_reg_apply_active_scan_flags(wiphy, initiator); */ + //_rtw_reg_apply_beaconing_flags(wiphy, initiator); + //_rtw_reg_apply_active_scan_flags(wiphy, initiator); return; } @@ -395,25 +390,25 @@ static int _rtw_reg_notifier_apply(struct wiphy *wiphy, switch (request->initiator) { case NL80211_REGDOM_SET_BY_DRIVER: - RTW_INFO("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_DRIVER"); + RTW_DBG("%s: %s\n", __func__, "NL80211_REGDOM_SET_BY_DRIVER"); _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); break; case NL80211_REGDOM_SET_BY_CORE: - RTW_INFO("%s: %s\n", __func__, - "NL80211_REGDOM_SET_BY_CORE to DRV"); + RTW_DBG("%s: %s\n", __func__, + "NL80211_REGDOM_SET_BY_CORE to DRV"); _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); break; case NL80211_REGDOM_SET_BY_USER: - RTW_INFO("%s: %s\n", __func__, - "NL80211_REGDOM_SET_BY_USER to DRV"); + RTW_DBG("%s: %s\n", __func__, + "NL80211_REGDOM_SET_BY_USER to DRV"); _rtw_reg_apply_world_flags(wiphy, NL80211_REGDOM_SET_BY_DRIVER, reg); break; case NL80211_REGDOM_SET_BY_COUNTRY_IE: - RTW_INFO("%s: %s\n", __func__, - "NL80211_REGDOM_SET_BY_COUNTRY_IE"); + RTW_DBG("%s: %s\n", __func__, + "NL80211_REGDOM_SET_BY_COUNTRY_IE"); _rtw_reg_apply_world_flags(wiphy, request->initiator, reg); break; } @@ -422,8 +417,8 @@ static int _rtw_reg_notifier_apply(struct wiphy *wiphy, } static const struct ieee80211_regdomain *_rtw_regdomain_select(struct - rtw_regulatory - *reg) + rtw_regulatory + *reg) { #if 0 switch (reg->country_code) { @@ -440,21 +435,21 @@ void _rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) { struct rtw_regulatory *reg = NULL; - RTW_INFO("%s\n", __func__); + RTW_DBG("%s\n", __func__); _rtw_reg_notifier_apply(wiphy, request, reg); } -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) +#if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) int rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) #else void rtw_reg_notifier(struct wiphy *wiphy, struct regulatory_request *request) #endif { _rtw_reg_notifier(wiphy, request); -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 9, 0)) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,9,0)) return 0; -#endif + #endif } void rtw_reg_notify_by_driver(_adapter *adapter) @@ -472,16 +467,16 @@ static void _rtw_regd_init_wiphy(struct rtw_regulatory *reg, struct wiphy *wiphy wiphy->reg_notifier = rtw_reg_notifier; -#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 14, 0)) + #if (LINUX_VERSION_CODE < KERNEL_VERSION(3,14,0)) wiphy->flags |= WIPHY_FLAG_CUSTOM_REGULATORY; wiphy->flags &= ~WIPHY_FLAG_STRICT_REGULATORY; wiphy->flags &= ~WIPHY_FLAG_DISABLE_BEACON_HINTS; -#else + #else wiphy->regulatory_flags |= REGULATORY_CUSTOM_REG; wiphy->regulatory_flags &= ~REGULATORY_STRICT_REG; wiphy->regulatory_flags &= ~REGULATORY_DISABLE_BEACON_HINTS; -#endif - + #endif + regd = _rtw_regdomain_select(reg); wiphy_apply_custom_regulatory(wiphy, regd); @@ -502,14 +497,15 @@ static struct country_code_to_enum_rd *_rtw_regd_find_country(u16 countrycode) return NULL; } -int rtw_regd_init(_adapter *padapter) +int rtw_regd_init(_adapter * padapter) { +#ifndef CONFIG_DISABLE_REGD_C struct wiphy *wiphy = padapter->rtw_wdev->wiphy; #if 0 if (rtw_regd == NULL) { rtw_regd = (struct rtw_regulatory *) - rtw_malloc(sizeof(struct rtw_regulatory)); + rtw_malloc(sizeof(struct rtw_regulatory)); rtw_regd->alpha2[0] = '9'; rtw_regd->alpha2[1] = '9'; @@ -517,12 +513,13 @@ int rtw_regd_init(_adapter *padapter) rtw_regd->country_code = COUNTRY_CODE_USER; } - RTW_INFO("%s: Country alpha2 being used: %c%c\n", - __func__, rtw_regd->alpha2[0], rtw_regd->alpha2[1]); + DBG_8192C("%s: Country alpha2 being used: %c%c\n", + __func__, rtw_regd->alpha2[0], rtw_regd->alpha2[1]); #endif _rtw_regd_init_wiphy(NULL, wiphy); +#endif return 0; } -#endif /* CONFIG_IOCTL_CFG80211 */ +#endif //CONFIG_IOCTL_CFG80211 \ No newline at end of file diff --git a/os_dep/osdep_service.c b/os_dep/osdep_service.c index 7fb0b4bc8..0bfb93a38 100644 --- a/os_dep/osdep_service.c +++ b/os_dep/osdep_service.c @@ -18,7 +18,6 @@ * ******************************************************************************/ - #define _OSDEP_SERVICE_C_ #include @@ -32,7 +31,6 @@ atomic_t _malloc_size = ATOMIC_INIT(0); #endif #endif /* DBG_MEMORY_LEAK */ - #if defined(PLATFORM_LINUX) /* * Translate the OS dependent @param error_code to OS independent RTW_STATUS_CODE @@ -1011,6 +1009,7 @@ void rtw_init_timer(_timer *ptimer, void *padapter, void *pfunc) #ifdef PLATFORM_WINDOWS _init_timer(ptimer, adapter->hndis_adapter, pfunc, adapter->mlmepriv.nic_hdl); #endif + } /* @@ -1019,7 +1018,6 @@ Caller must check if the list is empty before calling rtw_list_delete */ - void _rtw_init_sema(_sema *sema, int init_val) { @@ -1212,7 +1210,6 @@ void rtw_mtx_unlock(_lock *plock) } #endif /* PLATFORM_FREEBSD */ - void _rtw_spinlock(_lock *plock) { @@ -1288,8 +1285,6 @@ void _rtw_spinunlock_ex(_lock *plock) #endif } - - void _rtw_init_queue(_queue *pqueue) { _rtw_init_listhead(&(pqueue->queue)); @@ -1389,7 +1384,6 @@ inline s32 rtw_get_time_interval_ms(u32 start, u32 end) #endif } - void rtw_sleep_schedulable(int ms) { @@ -1420,7 +1414,6 @@ void rtw_sleep_schedulable(int ms) } - void rtw_msleep_os(int ms) { @@ -1445,7 +1438,6 @@ void rtw_msleep_os(int ms) #endif - } void rtw_usleep_os(int us) { @@ -1474,10 +1466,8 @@ void rtw_usleep_os(int us) #endif - } - #ifdef DBG_DELAY_OS void _rtw_mdelay_os(int ms, const char *func, const int line) { @@ -1488,7 +1478,6 @@ void _rtw_mdelay_os(int ms, const char *func, const int line) return; #endif - RTW_INFO("%s:%d %s(%d)\n", func, line, __FUNCTION__, ms); #if defined(PLATFORM_LINUX) @@ -1501,7 +1490,6 @@ void _rtw_mdelay_os(int ms, const char *func, const int line) #endif - } void _rtw_udelay_os(int us, const char *func, const int line) { @@ -1517,7 +1505,6 @@ void _rtw_udelay_os(int us, const char *func, const int line) RTW_INFO("%s:%d %s(%d)\n", func, line, __FUNCTION__, us); - #if defined(PLATFORM_LINUX) udelay((unsigned long)us); @@ -1548,7 +1535,6 @@ void rtw_mdelay_os(int ms) #endif - } void rtw_udelay_os(int us) { @@ -1872,7 +1858,6 @@ inline int ATOMIC_DEC_RETURN(ATOMIC_T *v) #endif } - #ifdef PLATFORM_LINUX /* * Open a file with the specific @param path, @param flag, @param mode @@ -1919,7 +1904,9 @@ static int readFile(struct file *fp, char *buf, int len) return -EPERM; while (sum < len) { -#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) +#if (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 14, 0)) + rlen = kernel_read(fp, buf + sum, len - sum, &fp->f_pos); +#elif (LINUX_VERSION_CODE >= KERNEL_VERSION(4, 1, 0)) rlen = __vfs_read(fp, buf + sum, len - sum, &fp->f_pos); #else rlen = fp->f_op->read(fp, buf + sum, len - sum, &fp->f_pos); @@ -1974,7 +1961,7 @@ static int isFileReadable(char *path) ret = PTR_ERR(fp); else { oldfs = get_fs(); - set_fs(get_ds()); + set_fs(KERNEL_DS); if (1 != readFile(fp, &buf, 1)) ret = PTR_ERR(fp); @@ -2004,7 +1991,7 @@ static int retriveFromFile(char *path, u8 *buf, u32 sz) RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); oldfs = get_fs(); - set_fs(get_ds()); + set_fs(KERNEL_DS); ret = readFile(fp, buf, sz); set_fs(oldfs); closeFile(fp); @@ -2039,7 +2026,7 @@ static int storeToFile(char *path, u8 *buf, u32 sz) RTW_INFO("%s openFile path:%s fp=%p\n", __FUNCTION__, path , fp); oldfs = get_fs(); - set_fs(get_ds()); + set_fs(KERNEL_DS); ret = writeFile(fp, buf, sz); set_fs(oldfs); closeFile(fp); @@ -2278,7 +2265,6 @@ copy_to_user(void *to, const void *from, unsigned long n) return 0; } - /* * The usb_register and usb_deregister functions are used to register * usb drivers with the usb subsystem. In this compatibility layer @@ -2294,7 +2280,6 @@ usb_register(struct usb_driver *driver) return 0; } - int usb_deregister(struct usb_driver *driver) { @@ -2410,7 +2395,6 @@ void rtw_buf_update(u8 **buf, u32 *buf_len, u8 *src, u32 src_len) rtw_mfree(ori, ori_len); } - /** * rtw_cbuf_full - test if cbuf is full * @cbuf: pointer of struct rtw_cbuf diff --git a/platform/platform_sprd_sdio.c b/platform/platform_sprd_sdio.c index c5ffd149f..1a64842c4 100644 --- a/platform/platform_sprd_sdio.c +++ b/platform/platform_sprd_sdio.c @@ -33,7 +33,6 @@ int platform_wifi_power_on(void) { int ret = 0; - #ifdef CONFIG_RTL8188E rtw_wifi_gpio_wlan_ctrl(WLAN_POWER_ON); #endif /* CONFIG_RTL8188E */ diff --git a/realtek-leds.conf b/realtek-leds.conf new file mode 100644 index 000000000..f8820ff51 --- /dev/null +++ b/realtek-leds.conf @@ -0,0 +1,20 @@ +# Place this file in directory /etc/modprobe.d/ +# Uncomment one options line so when modprobe occurs either manually or +# automatically (e.g., after boot with wifi usb adapter connected) it +# will set that option value. Manual modprobe will override this file +# if option value also included at the command line, e.g., +# $ sudo modprobe -r 8812au +# $ sudo modprobe 8812au rtw_led_ctrl=1 +# +# Led always off +#options 8812au rtw_led_ctrl=0 +#options 8814au rtw_led_ctrl=0 +# +# Default: normal blink of led (all options lines commented causes normal +# blink too). +options 8812au rtw_led_ctrl=1 +options 8814au rtw_led_ctrl=1 +# +# Led always on +#options 8812au rtw_led_ctrl=2 +#options 8814au rtw_led_ctrl=2 diff --git a/runwpa b/runwpa deleted file mode 100644 index f825e8bdb..000000000 --- a/runwpa +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/bash - -if [ "`which iwconfig`" = "" ] ; then - echo "WARNING:Wireless tool not exist!" - echo " Please install it!" - exit -else - if [ `uname -r | cut -d. -f2` -eq 4 ]; then - wpa_supplicant -D ipw -c wpa1.conf -i wlan0 - else - if [ `iwconfig -v |awk '{print $4}' | head -n 1` -lt 18 ] ; then - wpa_supplicant -D ipw -c wpa1.conf -i wlan0 - else - wpa_supplicant -D wext -c wpa1.conf -i wlan0 - fi - - fi -fi - - diff --git a/wlan0dhcp b/wlan0dhcp deleted file mode 100644 index 60433829c..000000000 --- a/wlan0dhcp +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash - -var0=`ps aux|awk '/dhclient wlan0/'|awk '$11!="awk"{print $2}'` - -kill $var0 -cp ifcfg-wlan0 /etc/sysconfig/network-scripts/ - -dhclient wlan0 - -var1=`ifconfig wlan0 |awk '/inet/{print $2}'|awk -F: '{print $2}'` - - -rm -f /etc/sysconfig/network-scripts/ifcfg-wlan0 - -echo "get ip: $var1" -